This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:digi:sound [2015/02/26 12:31] – raivo.sell | et:examples:digi:sound [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~PB~~ | + | < |
====== Heligeneraator ====== | ====== Heligeneraator ====== | ||
//Vajalikud teadmised: | //Vajalikud teadmised: | ||
[HW][[et: | [HW][[et: | ||
- | [AVR][[et: | + | [AVR][[et: |
[LIB][[et: | [LIB][[et: | ||
Line 11: | Line 11: | ||
[{{ : | [{{ : | ||
- | Taimerite üheks praktiliseks rakenduseks on heligeneraatori või kõlari juhtimine. Heligeneraator on tihti kasutusel juhtpaneelides, | + | Taimerite üheks praktiliseks rakenduseks on heligeneraatori või kõlari juhtimine. Heligeneraator on tihti kasutusel juhtpaneelides, |
Piesoelektriline heligeneraator koosneb metallplaadist ja sellele kinnitatud piesokeraamilisest materjalist elemendist. Piesokeraamiline element muudab vastavalt pinge suurusele oma mõõtmeid, mille tagajärjel metallplaat paindub. Rakendades heligeneraatorile nelikantsignaali või vahelduvvoolu tekib võnkumine ehk heli. | Piesoelektriline heligeneraator koosneb metallplaadist ja sellele kinnitatud piesokeraamilisest materjalist elemendist. Piesokeraamiline element muudab vastavalt pinge suurusele oma mõõtmeid, mille tagajärjel metallplaat paindub. Rakendades heligeneraatorile nelikantsignaali või vahelduvvoolu tekib võnkumine ehk heli. | ||
Line 19: | Line 19: | ||
Üldiselt on piesoelektrilised heligeneraatorid võrdluses elektromagnetilistega suurema helirõhu, väiksema voolutarbe ja kõrgema võimaliku helisagedusega. Kõige tugevama heli kõige väiksema voolutugevuse korral saab siis, kui heligeneraator töötab oma resonantssagedusel. Sellisel juhul on membraani amplituud kõige suurem. Elektromagnetiline heligeneraator ehk kõlar omab võrreldes piesoelektrilise heligeneraatoriga oluliselt paremat tonaalsust ja sobib lisaks lihtsate signaalhelide genereerimiseks ka muusika ja kõne edastamiseks. | Üldiselt on piesoelektrilised heligeneraatorid võrdluses elektromagnetilistega suurema helirõhu, väiksema voolutarbe ja kõrgema võimaliku helisagedusega. Kõige tugevama heli kõige väiksema voolutugevuse korral saab siis, kui heligeneraator töötab oma resonantssagedusel. Sellisel juhul on membraani amplituud kõige suurem. Elektromagnetiline heligeneraator ehk kõlar omab võrreldes piesoelektrilise heligeneraatoriga oluliselt paremat tonaalsust ja sobib lisaks lihtsate signaalhelide genereerimiseks ka muusika ja kõne edastamiseks. | ||
- | ~~PB~~ | + | Kõlarite juhtimiseks ei piisa tavaliselt digitaalväljundist vaid vaja on analoogsignaali. Selleks on kõige mugavam rakendada digitaal-analoog muundurit (inglise keeles // |
+ | |||
+ | < | ||
===== Praktika ===== | ===== Praktika ===== | ||
Line 26: | Line 28: | ||
<code c> | <code c> | ||
- | // Valitud sageduse ja pikkusega helisignaali genereerimine. | + | // Valitud sageduse ja pikkusega helisignaali genereerimine |
void buzzer_sound (unsigned char freq, unsigned int length) | void buzzer_sound (unsigned char freq, unsigned int length) | ||
{ | { | ||
Line 65: | Line 67: | ||
if( CH1_Output == 1) | if( CH1_Output == 1) | ||
{ | { | ||
- | // Sea väljundpinge | + | // Väljundpinge määramine |
DAC_Channel_Write( &DACB, volume, CH1); | DAC_Channel_Write( &DACB, volume, CH1); | ||
CH1_Output = 0; | CH1_Output = 0; | ||
} | } | ||
+ | |||
else | else | ||
{ | { | ||
- | // Sea väljundpinge 0V | + | // Väljundpinge määramine 0 V |
DAC_Channel_Write( &DACB, 0, CH1); | DAC_Channel_Write( &DACB, 0, CH1); | ||
CH1_Output = 1; | CH1_Output = 1; | ||
Line 78: | Line 81: | ||
// Genereeritakse heli sagedusega freq (8 Hz - 500 kHz) ja pikkusega length (ms) | // Genereeritakse heli sagedusega freq (8 Hz - 500 kHz) ja pikkusega length (ms) | ||
- | // kui length = 0, siis jäädaksega | + | // kui length = 0, siis jäädaksegi |
void buzzer_sound (uint16_t freq, unsigned int length) | void buzzer_sound (uint16_t freq, unsigned int length) | ||
{ | { | ||
// DAC seadistamine | // DAC seadistamine | ||
- | // AVCC Pingereferentsiks | + | // AVCC on pingereferentsiks |
DACB.CTRLC = ( DACB.CTRLC & ~DAC_REFSEL_gm) | DAC_REFSEL_AVCC_gc; | DACB.CTRLC = ( DACB.CTRLC & ~DAC_REFSEL_gm) | DAC_REFSEL_AVCC_gc; | ||
- | // Kanali | + | // Kanali |
DACB.CTRLB = ( DACB.CTRLB & ~DAC_CHSEL_gm ) | DAC_CHSEL_DUAL_gc; | DACB.CTRLB = ( DACB.CTRLB & ~DAC_CHSEL_gm ) | DAC_CHSEL_DUAL_gc; | ||
// Kanal 1 ning DACB mooduli käivitamine | // Kanal 1 ning DACB mooduli käivitamine |