Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:digi:sound [2015/02/26 12:46] raivo.sellet:examples:digi:sound [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~+<pagebreak>
 ====== Heligeneraator ====== ====== Heligeneraator ======
 //Vajalikud teadmised: //Vajalikud teadmised:
 [HW][[et:hardware:homelab:digi]], [HW][[et:hardware:homelab:digi]],
-[AVR][[et:avr:timers]], [AVR][[et:avr:dac]], \\+[AVR][[et:avr:timers]],\\ [AVR][[et:avr:dac]], 
 [LIB][[et:software:homelab:library:buzzer]] // [LIB][[et:software:homelab:library:buzzer]] //
  
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. 
  
-Kõlarite juhtimiseks ei piisa tavaliselt digitaalväljundist vaid vaja on analoogsignaali. Selleks on kõige mugavam rakendada digitaal-analoog muundurit (inglise keeles //digital-analog converter//, lühend DAC). Digitaal-analoog muundur töötab vastupidiselt analoog-digitaal muundurile ja võimaldab mikrokontrolleril tekitada ka analoogväljundsignaali. Odavamatel ja lihtsamatel mikrokontrolleritel (sh ka ATmega128 ja ATmega2560) ei ole digitaal-analoog muundurit kiipi integreeritud. Sellisel juhul võib kasutada välist eraldiseisvat kiipi või tekitada analoogsignaal RC filtri ja võimendustransistori abil. See nõuab aga mitmeid lisakomponente ja seetõttu on kõlari kasutamine koos mikrokontrolleriga mõnevõrra keerukam võrreldes muude digitaalsignaalidega opereerivate komponentige (nt lülitid, LED-id, andurid, jms).+Kõlarite juhtimiseks ei piisa tavaliselt digitaalväljundist vaid vaja on analoogsignaali. Selleks on kõige mugavam rakendada digitaal-analoog muundurit (inglise keeles //digital-analog converter//, lühend DAC). Digitaal-analoog muundur töötab vastupidiselt analoog-digitaal muundurile ja võimaldab mikrokontrolleril tekitada ka analoogväljundsignaali. Odavamatel ja lihtsamatel mikrokontrolleritel (sh ka ATmega128 ja ATmega2560) ei ole digitaal-analoog muundurit kiipi integreeritud. Sellisel juhul võib kasutada välist eraldiseisvat kiipi või tekitada analoogsignaal RC filtri ja võimendusskeemi abil. See nõuab aga mitmeid lisakomponente ja seetõttu on kõlari kasutamine koos mikrokontrolleriga mõnevõrra keerukam võrreldes muude digitaalsignaalidega opereerivate komponentige (nt lülitid, LED-id, andurid, jms).
  
-~~PB~~+<pagebreak>
 ===== Praktika ===== ===== Praktika =====
  
Line 28: 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 67: Line 67:
  if( CH1_Output == 1)  if( CH1_Output == 1)
  {  {
- // Sea väljundpinge vastavalt volüümile 1+ // Väljundpinge määramine vastavalt volume-ile 1
  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 80: 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 heli väljastama+// kui length = 0, siis jäädaksegi heli väljastama
 void buzzer_sound (uint16_t freq, unsigned int length) void buzzer_sound (uint16_t freq, unsigned int length)
 { {
  // DAC seadistamine  // DAC seadistamine
- // AVCC Pingereferentsiks DAC moodulile+ // AVCC on pingereferentsiks DAC moodulile
  DACB.CTRLC = ( DACB.CTRLC & ~DAC_REFSEL_gm) | DAC_REFSEL_AVCC_gc;  DACB.CTRLC = ( DACB.CTRLC & ~DAC_REFSEL_gm) | DAC_REFSEL_AVCC_gc;
- // Kanali valmine+ // Kanali valimine
  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
et/examples/digi/sound.1424954773.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0