Differences

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

Link to this comparison view

en:examples:digi:sound [2015/03/26 17:32] – created heikopikneren:examples:digi:sound [2026/02/19 11:30] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~ +<pagebreak> 
-====== Sound Generator ====== +====== Sound generator ====== 
-<note>Needs translation</note> +//Required knowledge: 
- +[HW][[et:hardware:homelab:digi]], 
-//Necessary knowledge: +[AVR][[et:avr:timers]],\\ [AVR][[et:avr:dac]],  
-[HW][[en:hardware:homelab:digi]], +[LIB][[et:software:homelab:library:buzzer]] //
-[AVR][[en:avr:timers]],\\ [AVR][[et:avr:dac]],  +
-[LIB][[en:software:homelab:library:buzzer]] //+
  
 ===== Theory ===== ===== Theory =====
  
-[{{ :examples:sound:piezo.jpg?200|Piesoheligeneraator}}] +[{{ :examples:sound:piezo.jpg?200|Piezo sounder}}] 
-[{{ :examples:sound:kingstate-kssg3108.jpg?200|Kõlar}}]+[{{ :examples:sound:kingstate-kssg3108.jpg?200|Speaker}}]
  
-Taimerite üheks praktiliseks rakenduseks on heligeneraatori või kõlari juhtimineHeligeneraator on tihti kasutusel juhtpaneelidesalarmseadmetes ja mujal nupuvajutuste või signaalhelide kuuldavaks toomiseksSellist heligeneraatorit kutsutakse tihti lihtsalt kõlarikspiiksujaksvõi siis //buzzeriks//, mis on üle võetud inglise keelestTööpõhimõttelt võib heligeneraatorid jagada kaheks: piesoelektrilisteks ja elektromagnetilisteks+One practical use of timers is driving a sounder or a speakerSounders are often used in control panelsalarm devices, and elsewhere to make button presses or signal tones audibleSuch a sounder is often simply called a speakera beeperor a //buzzer//. 
 +By operating principle, sounders can be divided into piezoelectric and electromagnetic
  
-Piesoelektriline heligeneraator koosneb metallplaadist ja sellele kinnitatud piesokeraamilisest materjalist elemendistPiesokeraamiline element muudab vastavalt pinge suurusele oma mõõtmeidmille tagajärjel metallplaat paindubRakendades heligeneraatorile nelikantsignaali või vahelduvvoolu tekib võnkumine ehk heli.+A piezoelectric sounder consists of a metal plate with a piezoceramic element attachedThe piezoceramic element changes its dimensions according to the applied voltagecausing the metal plate to bendApplying a square wave or AC signal produces vibration and thus sound.
  
-Elektromagnetiline heligeneraator sarnaneb oma tööpõhimõttelt valjuhääldile ehk kõlarileKa siin on magnetväljas pool, mille kohale on paigutatud metallist membraanKui lasta helisageduslik vool läbi poolihakkab membraan tekkiva magnetvälja ja püsimagneti välja koosmõjul liikumaAnaloogselt piesoelektrilisele heligeneraatorile tekib heli.+An electromagnetic sounder is similar in principle to a loudspeakerA coil is placed in a magnetic field with a metal diaphragm above itWhen audio-frequency current flows through the coilthe diaphragm moves due to the magnetic fields of the coil and permanent magnetLike the piezoelectric sounder, this produces sound.
  
-Üldiselt on piesoelektrilised heligeneraatorid võrdluses elektromagnetilistega suurema helirõhuväiksema voolutarbe ja kõrgema võimaliku helisagedusega. Kõige tugevama heli kõige väiksema voolutugevuse korral saab siiskui heligeneraator töötab oma resonantssageduselSellisel juhul on membraani amplituud kõige suuremElektromagnetiline heligeneraator ehk kõlar omab võrreldes piesoelektrilise heligeneraatoriga oluliselt paremat tonaalsust ja sobib lisaks lihtsate signaalhelide genereerimiseks ka muusika ja kõne edastamiseks+In generalpiezoelectric sounders have higher sound pressurelower current consumption, and higher possible frequencies compared to electromagnetic onesThe loudest sound with the smallest current occurs when the sounder operates at its resonance frequency, where diaphragm amplitude is highestThe electromagnetic sounder (speaker) has better tonal quality and is suitable not only for simple signal tones but also for music and speech.
  
-Kõlarite juhtimiseks ei piisa tavaliselt digitaalväljundist vaid vaja on analoogsignaaliSelleks 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äljundsignaaliOdavamatel ja lihtsamatel mikrokontrolleritel (sh ka ATmega128 ja ATmega2560) ei ole digitaal-analoog muundurit kiipi integreeritudSellisel juhul võib kasutada välist eraldiseisvat kiipi või tekitada analoogsignaal RC filtri ja võimendusskeemi abilSee 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ülitidLED-idanduridjms).+To drive speakers, a digital output is usually not enough; you need an analog signalThe easiest way is to use a digital-to-analog converter (DAC). A DAC works opposite to an ADC and allows a microcontroller to generate an analog outputCheaper and simpler microcontrollers (including ATmega128 and ATmega2560) do not have an integrated DACIn that case you can use an external chip or generate an analog signal using an RC filter and amplification circuitryThis requires additional components and therefore makes using a speaker with a microcontroller more complex compared to other digital components (switchesLEDssensorsetc.).
  
-~~PB~~+<pagebreak>
 ===== Practice ===== ===== Practice =====
  
-Kodulabor II Kasutajaliidese moodulil asub piesoelektriline heligeneraator koos võimenduslülitusegaHeligeneraatorit juhitakse viiguga PG5. +The HomeLab II User Interface module includes a piezo sounder with an amplifier circuitThe sounder is driven by pin PG5. 
-Heligeneraatori kasutamiseks on Kodulabori teegis olemas funktsioon //buzzer_sound//, mis toob kuuldavale valitud pikkuse ja sagedusega helisignaaliHeli sagedus antakse ette suhtelistes ühikutes 1-255. Heli kestvus on millisekundites.+To use the sounder, the HomeLab library provides the function //buzzer_sound//, which generates a sound signal with a chosen length and frequencyFrequency is specified in relative units 1-255 and duration in milliseconds.
  
 <code c> <code c>
-// Valitud sageduse ja pikkusega helisignaali genereerimine+// Generate a sound signal with selected frequency and length
 void buzzer_sound (unsigned char freq, unsigned int length) void buzzer_sound (unsigned char freq, unsigned int length)
 { {
- // Heligeneraatori viigu määramine+ // Select the sounder pin
  pin buzzer = PIN(G,5);  pin buzzer = PIN(G,5);
  
- // Heligeneraatori viigu väljundiks seadistamine+ // Configure the sounder pin as output
  pin_setup_output(buzzer);  pin_setup_output(buzzer);
  
- // Timer 0 kiire PWM režiimi seadistamine koos OCR0A ja COM0B1 väljundiga+ // Timer 0 fast PWM mode with OCR0A and COM0B1 output
  TCCR0A |= (1 << COM0B1);  TCCR0A |= (1 << COM0B1);
  TCCR0A |= ((1 << WGM01)|(1 << WGM00));  TCCR0A |= ((1 << WGM01)|(1 << WGM00));
  TCCR0B |= (1 << WGM02);  TCCR0B |= (1 << WGM02);
  OCR0A = freq;  OCR0A = freq;
- // Timer 0 käivitamine koos jaguriga 1024+ // Start Timer 0 with prescaler 1024
  TCCR0B |= ((1 << CS02)|(1 << CS00));  TCCR0B |= ((1 << CS02)|(1 << CS00));
  
- // Heli pikkus+ // Sound length
  sw_delay_ms(length);  sw_delay_ms(length);
  
- // Taimeri ehk heli genereerimise peatamine+ // Stop timer and sound generation
  timer0_stop();  timer0_stop();
 } }
 </code> </code>
  
-Kodulabor III Kasutajaliidese moodulil asub koos lihtsa võimendiga kõlar, mis on ühendatud kontrolleri DAC1 kanaliga 1.+The HomeLab III User Interface module includes a speaker with a simple amplifier connected to controller DAC1 channel 1.
  
-Kõlari kasutamiseks Kodulabori teegis olev funktsioon //buzzer_sound// toob kuuldavale valitud pikkuse ja sagedusega helisignaaliHelisagedus andtakse ette hertsides ning kestvus millisekunditesLisaks on võimalik käsuga //buzzer_volume// muuta heli valjusust vahemikus 0-4095, mis on realiseeritud DACi amplituudiga.+To use the speaker, the HomeLab library function //buzzer_sound// generates a sound signal with selected length and frequencyFrequency is specified in hertz and duration in millisecondsIn addition, //buzzer_volume// can be used to change volume in the range 0-4095, implemented by DAC amplitude.
  
-Xmega kontrolleriga genereeritakse tarkvaraline PWM signaalmillega juhitakse DAC mooduli pingeväljundit 0 V ja //buzzer_volume// funktsiooni parameetriga määratud pingenivoo vahel.+With an Xmega controllera software PWM signal is generated to drive the DAC module output between 0 V and the voltage level specified by //buzzer_volume//.
  
 <code c> <code c>
-// Taimer E0 ületäituvuse katkestus+// Timer E0 overflow interrupt
 ISR(TCE0_OVF_vect) ISR(TCE0_OVF_vect)
 { {
Line 69: Line 68:
  if( CH1_Output == 1)  if( CH1_Output == 1)
  {  {
- // Väljundpinge määramine vastavalt volume-ile 1+ // Set output voltage according to volume 1
  DAC_Channel_Write( &DACB, volume, CH1);  DAC_Channel_Write( &DACB, volume, CH1);
  CH1_Output = 0;  CH1_Output = 0;
Line 76: Line 75:
  else  else
  {  {
- // Väljundpinge määramine 0 V+ // Set output voltage to 0 V
  DAC_Channel_Write( &DACB, 0, CH1);  DAC_Channel_Write( &DACB, 0, CH1);
  CH1_Output = 1;  CH1_Output = 1;
Line 82: Line 81:
 } }
  
-// Genereeritakse heli sagedusega freq (8 Hz - 500 kHz) ja pikkusega length (ms) +// Generate sound with frequency freq (8 Hz - 500 kHz) and length length (ms) 
-// kui length = 0, siis jäädaksegi heli väljastama+// if length = 0, sound is generated continuously
 void buzzer_sound (uint16_t freq, unsigned int length) void buzzer_sound (uint16_t freq, unsigned int length)
 { {
- // DAC seadistamine + // DAC setup 
- // AVCC on pingereferentsiks DAC moodulile+ // AVCC as DAC reference
  DACB.CTRLC = ( DACB.CTRLC & ~DAC_REFSEL_gm) | DAC_REFSEL_AVCC_gc;  DACB.CTRLC = ( DACB.CTRLC & ~DAC_REFSEL_gm) | DAC_REFSEL_AVCC_gc;
- // Kanali valimine+ // Select channel
  DACB.CTRLB = ( DACB.CTRLB & ~DAC_CHSEL_gm ) | DAC_CHSEL_DUAL_gc;  DACB.CTRLB = ( DACB.CTRLB & ~DAC_CHSEL_gm ) | DAC_CHSEL_DUAL_gc;
- // Kanal ning DACB mooduli käivitamine+ // Enable channel and DACB module
  DACB.CTRLA = DAC_CH1EN_bm | DAC_ENABLE_bm;  DACB.CTRLA = DAC_CH1EN_bm | DAC_ENABLE_bm;
  
- // Taimeri E0 seadistamine + // Timer E0 setup 
- // Ületäituvuse katkestus lubamine keskmise prioriteediga+ // Enable overflow interrupt with medium priority
  TCE0.INTCTRLA = ( TCE0.INTCTRLA & ~TC0_OVFINTLVL_gm ) | TC_OVFINTLVL_MED_gc;  TCE0.INTCTRLA = ( TCE0.INTCTRLA & ~TC0_OVFINTLVL_gm ) | TC_OVFINTLVL_MED_gc;
- // Taimeri E0 seadistamine sagedusega 32 MHz/64 = 500 kHz+ // Set Timer E0 frequency to 32 MHz/64 = 500 kHz
  TCE0.CTRLA = ( TCE0.CTRLA & ~TC0_CLKSEL_gm ) | TC_CLKSEL_DIV64_gc;  TCE0.CTRLA = ( TCE0.CTRLA & ~TC0_CLKSEL_gm ) | TC_CLKSEL_DIV64_gc;
- // Keskmise taseme katkestuste lubamine+ // Enable medium-level interrupts
  PMIC.CTRL |= PMIC_MEDLVLEN_bm;  PMIC.CTRL |= PMIC_MEDLVLEN_bm;
  sei();  sei();
   
- // Taimeri tekitatava sageduse lubamine+ // Set timer frequency
  TCE0.PER = (uint32_t)250000/freq;  TCE0.PER = (uint32_t)250000/freq;
   
- // Kontrollkas on vaja taimer välja lülitada, ning vajadusel oodata+ // Check if timer should be stoppedand wait if needed
  if(length)  if(length)
  {  {
Line 115: Line 114:
 </code> </code>
  
-Järgmine näide illustreerib heligeneraatori teegi kasutamistKuuldavale tuuakse 500 millisekundi pikkune piiksatus.+The next example illustrates use of the sounder libraryIt generates a 500 millisecond beep.
 <code c> <code c>
-// Kodulabori heligeneraatori kasutamise näidisprogramm +// HomeLab sounder usage example program 
-// Genereeritakse 500 ms pikkune piiksatus+// Generate a 500 ms beep
 #include <homelab/module/buzzer.h> #include <homelab/module/buzzer.h>
  
-// Põhiprogramm +// Main program 
 int main (void) int main (void)
 { {
- // Kodulabor III helivaljususe määramine+ // Set HomeLab III volume
  buzzer_volume(1000);  buzzer_volume(1000);
  
- // 1 kHz 0,5 s pikkuse heli genereerimine+ // Generate 1 kHz tone for 0.5 s
  buzzer_sound(1000,500);  buzzer_sound(1000,500);
 } }
 </code> </code>
 +
en/examples/digi/sound.1427383952.txt.gz · Last modified: (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