Der Calliope-Lautsprecher              

           
Elektronik-Labor   Projekte   Microbit 



Alle Befehle aus der Musik-Gruppe erzeugen Signale am Piezo-Lautsprecher des Calliope. Allerdings ist die Ausgabe sehr leise, sodass man den Sound nur nahe an der Platine hört.  Das Rechteck-Signal erscheint am Pin 2 des Motor-Headers (OUT2). Der Ausgang OUT1 ist dagegen auf GND-Potential geschaltet.



Der Klingelton ist eine Dauersignal, das auch für Messzwecke verwendet werden kann. Es hat eine hohe Präzision, da es über einen Teiler vom quarzgenauen Systemtakt abgeleitet ist.



Für mehr Lautstärke kann man einen Lautsprecher zwischen Pin 2 und 3 des Motor-Headers anschließen. Bei einem 8-Ohm-Lautsprecher fließen dann aber fast 200 mA, die Lautstärke ist viel höher als nötig. Man sollte daher einen Widerstand von 470 R in Reihe schalten. Aber man kann auch einen Port als Widerstand nutzen. Hier wurde zu diesem Zweck P1 als Ausgang geschaltet. Wenn der Lautsprecher  zwischen OUT2 und P1 liegt, ist der Spitzenstrom auf etwa 15 mA begrenzt. Dem Port tut es nicht weh, und der Motortreiber sagt danke.




Gegentakt-Sound



Um einen gut hörbaren Ton zu erzeugen, kann man eine eigene Rechteckschwingung über beide Ausgänge des Motortreibers erzeugen. Damit erhält man ein Gegentaktsignal mit doppelter Signalspannung am Lautsprecher. Hier wird ein Signal von 500 Hz programmiert. Es ist hörbar, aber immer noch nicht sehr laut. Das Oszilloskop zeigt, dass der Schallgeber eine wesentlich höhere Eigenresonanz bei rund 5 kHz hat.



Wenn man die Impulslänge auf 100 µs einstellt, wird der Lautsprecher mit 5 kHz bei seiner Resonanz angeregt. Man sieht, dass die Amplitude höher wird. Und tatsächlich wird es nun lauter.



Dann noch die Ansteuerung auf 100%, fertig ist der gut hörbare Ton. Mit jedem Druck auf Taste A gibt es einen Ton von 0,2 s Länge




let index = 0
input.onButtonPressed(Button.A, () => {
for (let index = 0; index <= 1000; index++) {
motors.motorPower(100)
control.waitMicros(100)
motors.motorPower(-100)
control.waitMicros(100)
}
})



Anwendung: Automatische Morsetaste



Mit der Taste A werden Punkte gemorst, mit der Taste B Striche. Punkte und Pausen dauern 100 ms, Striche 300 ms. Die Morsegeschwindigkeit ist also 60 Bpm. Das Programm eignet sich als Morsetrainer.

let index = 0
basic.forever(() => {
if (input.buttonIsPressed(Button.A)) {
for (let index = 0; index <= 500; index++) {
motors.motorPower(100)
control.waitMicros(100)
motors.motorPower(-100)
control.waitMicros(100)
}
basic.pause(100)
}
if (input.buttonIsPressed(Button.B)) {
for (let index = 0; index <= 1500; index++) {
motors.motorPower(100)
control.waitMicros(100)
motors.motorPower(-100)
control.waitMicros(100)
}
basic.pause(100)
}
})




Elektronik-Labor   Projekte   Microbit