Buzzer am Olimexboard LPC2148

Gast #316718
Lesenswert?
• ▲
▼
Hallo,

okay irgendwie stelle ich hier glaube ich die dümmsten Fragen ^^ aber
ich bin dankbar das sich trotzdem immer jemand Zeit nimmt und meistens
komme ich dann auch alleine zurecht.

Also ich lerne (üb) gerade am hier Angebotene OLIMEX LPC2148 Board.
Bin zufrieden. Speichertest prog war erfolgreich, UART tut, LEDs und
Buttons kein problem. Aber der Buzzer macht mir zu schaffen ^^

Ich finde die Beschreibung von OLIMEX aber auch wirklich mager. Das
einzigste was ich weiß kam vom Schaltplan und da ich kein Elektroniker
bin weiß ich net wirklich was ich tun soll. PWM puls ist nicht das
problem sondern : WARUM GEHEN 2 PORTS auf den Buzzer??? sollte es nicht
1ner sein und der ausgang geht auf Masse?? Welchen soll ich den nun
Pulsen? Beide? ich blicks einfach net.
Angehängte Dateien:
Gast #316720
Lesenswert?
• ▲
▼
Um den Buzzer anzusteuern gibt man immer abwechselnd low und high auf
die beiden Pins, der Buzzer wird also jedesmal umgepolt. Dadurch
bekommt der Buzzer im Mittel eine doppelt so hohe Spannung wie wenn man
nur einen Pin schalten würde. Er wird also lauter.

Man kann mit dieser Beschaltung auch nur einen Pin schalten. Damit hat
man zwei Lautstärkestufen.
Gast #316721
Lesenswert?
• ▲
▼
>> Dadurch bekommt der Buzzer im Mittel eine doppelt so hohe Spannung
>>wie wenn man nur einen Pin schalten würde.

im Mittel ist die Spannung 0. Das soll ja auch bezweckt werden.
Der DCWert an einem Lautsprecher sollte auch 0 sein.
Wie schon gesagt die Spannung wird jeweils umgepolt.
Also HIGH ->LOW spannung +Vtarget, Membran beim Buzzer wird
rausgedrückt
LOW->HIGH spannung -Vtarget, Membran wird reingedrückt
der Widerstand dient zur Strombegrenzung. Durch das Umpolen wird
jeweils die Stromrichtung geändert.
Gast #316722
Lesenswert?
• ▲
▼
Hallo,

danke für die Antworten. Marko seine hab ich zuerst probiert und
festgestellt es klappt net ^^ aber das hat mich auch schon auf die
richtige Spur gebracht ---> Versuch es umzupolen ^^ von daher hat
Wolfram hier recht behalten. Ich spiel gerade mit den Tönen rum aber
naja ein Datenbaltt währe mir schon recht. Hier mal mein kleiner Code
ausschnitt:

<CODE>
#define fnBUZZ1()  {  IO0CLR = 0x00002000;  \
        IO0SET = 0x00001000;  }
#define fnBUZZ2()  {  IO0CLR = 0x00001000;  \
        IO0SET = 0x00002000;  }
...

f_ton = 2000;

for( k=0; k<10; i++)       //Anzahl wiederholungen = k * T
{
  fnBUZZ1();
      while( f_ton > 0){ --f_ton;  }
  fnBUZZ2();
      while( f_ton < 2000){ ++f_ton;  }
}

</CODE>

Frage: da kein Datenblatt enthalten ist weiß ich nicht welche
Frequenzen ich abspiele.
Meine Theorie: Disassembly --> die Dauer der Befehle zusammenaddiere
und Ein/Ausschaltzeiten PIN, in Abhängigeit der CPU Frequenz
(hier 60 MHz). Währe das richtig?? oder gibt es einen einfacheren Weg?

Trotzdem jetzt schon vielen dank
Gast #316723
Lesenswert?
• ▲
▼
Also prinzipiell geht das schon das du im Disassembly die befehlzeiten
addierst, wird halt nur sehr unschön wenn du einen Befehl (in C)
änderst.
Entweder nimmst du eine delay funktion (wenn vorhanden) oder du benutzt
die Unterstützung in der Hardware. Stichwort: Timer
Da stellst du die Anzahl von Takten ein die gezählt werden soll und
überprüfst deinen Zähler oder läßt dir nach Ablauf der Zählzeit ein
Flag setzen, dass du abfragst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren