logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak podłączyć głośnik lub buzzer do ATMEGA32 przez kondensator 1uF?

jackantenna 17 Wrz 2006 20:34 1507 7
REKLAMA
  • #1 3030032
    jackantenna
    Poziom 16  
    Posty: 211
    Pomógł: 15
    Ocena: 12
    Ktoś powiedział mi, aby w układzie (poniżej) dodać na 15 nogę głośniczek przez kondensator 1 uF. Co to da w tym układzie ?
    Czy zamiast głośnika może być buzzer?
    Jack
    Załączniki:
    • Jak podłączyć głośnik lub buzzer do ATMEGA32 przez kondensator 1uF? ipana23.gif (21.55 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 3030489
    przemek20
    Poziom 21  
    Posty: 328
    Pomógł: 41
    Ocena: 25
    Będzie piszczał jak napiszesz taki program żeby piszczał. A jak dasz głośniczek i napiszesz odpowiedni program to ci może nawet melodyjki grać.
  • REKLAMA
  • #3 3032483
    DosinskY
    Poziom 19  
    Posty: 332
    Pomógł: 24
    Ocena: 9
    Moj gral kiedys temat z "TopGun" Fragment w zalaczniku ;) Wybaczcie rozmiar ale nie mam pod reka programu do kompresji mp3.
    Załączniki:
    • top_gun.rar (802.77 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 3032509
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Dżwięk jak z komórki w latach 90-tych ubiegłego wieku :)

    Może podziel się kodem, albo chociaż opisz jak twój uC wie co grać
  • REKLAMA
  • #5 3032872
    jackantenna
    Poziom 16  
    Posty: 211
    Pomógł: 15
    Ocena: 12
    Przepraszam koledzy podałem wam niepełne dane. Układ z ATMEGA32 wizualizuje wykresy z analizatora antenowego:

    A w ATMEG-u siedzi poniższy program w Baskomie:
    Jack
    Załączniki:
    • baskomprogram1.doc (82.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #6 3033063
    DosinskY
    Poziom 19  
    Posty: 332
    Pomógł: 24
    Ocena: 9
    Prosze bardzo:
    Sprzet: uC: Mega16 z 16MHz, audio: TDA2030.

    Program utworzony w C w celu prob z generacja czestotliwosci z okreslonego zakresu i jest niesamowicie nieskomplikowany ;) ...az wstyd pokazywac hehe.
    Generacja fali prostokatnej przy wykorzystaniu przerwania od przepelnienia licznika 16-to bitowego bez preskalera.
    
    interrupt [TIM1_OVF] void timer1_ovf_isr(void)
    {                   
      PORTB.2 = !PORTB.2;
      TCNT1H = licznik1;
      TCNT1L = licznik0;    
    }


    Oczywiscie mozna wykorzystac CTC, co chyba bedzie rozwiazaniem sprytniejszym. Takze zamiana pinu POTRB.2 na OC1 po odpowiedniej konfiguracji zredukuje kod o linie PORTB.2 = !PORTB.2 ale to juz szczegol.

    Zaleznosc miedzy wartoscia licznika a generowana czestotliwoscia przy tej konfiguracji jest nieliniowa (herce.rar). Znajac zaleznosc f=f(T1) i tabele czestotliwosci dzwiekow mozna pi*oko wyznaczyc sobie wartosci licznika dla poszczegolnych dzwiekow. Potem wystarczy tylko znac kolejne dzwieki jakiejs piosnki, toche sie pobawic i polifonia gotowa ;) Dla TopGuna wyglada to jakos tak (PORTB.1 wycisza dzwieki):

    
    #asm("sei") 
    licznik0 = 1;
    licznik1 = 255;
    while (1)
      {
        delay_ms(1000);
        PORTB.1 = 0;  
            
        licznik1 = 162; // E
        delay_ms(500);  
             
        licznik1 = 193; // H
        delay_ms(500);      
        PORTB.1 = 1;    
        delay_ms(50);
        PORTB.1 = 0; 
        
        licznik1 = 193; // H
        delay_ms(500);   
         
        licznik1 = 185; // A
        delay_ms(250);   
                 
        licznik1 = 181; // G#
        delay_ms(250); 
         
        licznik1 = 185; // A
        delay_ms(250);  
                      
        licznik1 = 181; // G#
        delay_ms(250);  
            
        licznik1 = 172; // F#
        delay_ms(450); 
        PORTB.1 = 1;    
        delay_ms(50);
        PORTB.1 = 0;  
                   
        licznik1 = 172; // F#
        delay_ms(500);            
    
        licznik1 = 162; // E
        delay_ms(250);  
    
        licznik1 = 172; // F#
        delay_ms(250);               
    
        licznik1 = 181; // G#
        delay_ms(500); 
    
        licznik1 = 172; // F#
        delay_ms(250);               
    
        licznik1 = 181; // G#
        delay_ms(250);
        
        licznik1 = 185; // A
        delay_ms(500);  
        
        licznik1 = 181; // G#
        delay_ms(250); 
        
        licznik1 = 162; // E
        delay_ms(250); 
        
        licznik1 = 181; // G#
        delay_ms(500);  
        
        licznik1 = 172; // F#
        delay_ms(1400);                            
        PORTB.1 = 1;  
        delay_ms(50);
        PORTB.1 = 0;     
    //-------------
        licznik1 = 162; // E
        delay_ms(500);  
             
        licznik1 = 193; // H
        delay_ms(500);      
        PORTB.1 = 1;    
        delay_ms(50);
        PORTB.1 = 0; 
        
        licznik1 = 193; // H
        delay_ms(500);   
         
        licznik1 = 185; // A
        delay_ms(250);   
                 
        licznik1 = 181; // G#
        delay_ms(250); 
         
        licznik1 = 185; // A
        delay_ms(250);  
                      
        licznik1 = 181; // G#
        delay_ms(250);  
            
        licznik1 = 172; // F#
        delay_ms(450); 
        PORTB.1 = 1;    
        delay_ms(50);
        PORTB.1 = 0;  
                   
        licznik1 = 172; // F#
        delay_ms(500);            
    
        licznik1 = 162; // E
        delay_ms(250);  
    
        licznik1 = 172; // F#
        delay_ms(250);               
    
        licznik1 = 181; // G#
        delay_ms(500); 
    
        licznik1 = 172; // F#
        delay_ms(250);               
    
        licznik1 = 181; // G#
        delay_ms(250);
        
        licznik1 = 185; // A
        delay_ms(500);  
        
        licznik1 = 181; // G#
        delay_ms(250); 
        
        licznik1 = 162; // E
        delay_ms(250); 
        
        licznik1 = 193; // H
        delay_ms(1600);                            
        PORTB.1 = 1;  
             
        delay_ms(1000);   
      };
    


    Sprzet wygladal o ile pamietam tak (sory za painta):
    Jak podłączyć głośnik lub buzzer do ATMEGA32 przez kondensator 1uF?

    Pozdrawiam
    Załączniki:
    • herce.rar (232.95 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • Pomocny post
    #8 3033392
    DosinskY
    Poziom 19  
    Posty: 332
    Pomógł: 24
    Ocena: 9
    Fakt...zrobilismy maly off-topic ;)
    Nie znam BASCOM AVR ale z tego co widze program generuje rozne dziwieki podczas wciskania klawiszy, podczas zlego wyboru pewnych opcji, w przypadku osiagniecia DDS frequency low/high limit i moze jeszcze w kilku inncyh przypadkach.

Podsumowanie tematu

✨ Podłączenie głośnika do pinu 15 mikrokontrolera ATMEGA32 przez kondensator 1 µF umożliwia generowanie dźwięków, które mogą być sterowane programowo, np. do odtwarzania prostych melodyjek lub sygnałów dźwiękowych. Kondensator pełni rolę elementu separującego prąd stały, co chroni układ i poprawia jakość sygnału audio. Zamiast głośnika można zastosować buzzer, który również będzie emitował dźwięk przy odpowiednim sterowaniu. Przykładowy program generuje falę prostokątną o określonej częstotliwości, wykorzystując przerwania od przepełnienia 16-bitowego licznika bez preskalera, co pozwala na prostą syntezę dźwięku. W dyskusji pojawił się schemat układu z ATMEGA32 oraz przykład implementacji w BASCOM AVR i C, a także wzmianka o zastosowaniu wzmacniacza TDA2030 w innym projekcie z mikrokontrolerem Mega16. Dźwięki generowane są podczas naciskania klawiszy i innych zdarzeń w programie, co potwierdza praktyczne zastosowanie podłączenia głośnika przez kondensator.
Wygenerowane przez model językowy.
REKLAMA