Active Buzzer Piezo an Microcontoller während deep sleep

Hallo in die Runde,

mir ist bei einem bereits fertig gestellten PCB design ein kleiner Denkfehler unterlaufen. Mein design funktioniert ganz hervorragend, nur ist es so, dass ich in meinem design einen Piezo Buzzer https://www.digikey.de/de/products/detail/pui-audio-inc/SMT-0952-T-5V-R/6021766 verwende, den ich direkt über einen Pin vom Microcontroller ansteure. Das funktioniert auch ganz hervorragend.
Nun möchte ich das ganze aber so haben, dass ich den Microcontroller schlafen lege und genau in der Zeit soll der Buzzer über einen Pin am Microcontroller "HIGH" geschalten werden. Jetzt wird das mit dem verlinkten Buzzer nicht funktionieren, da es sich um einen passiven Buzzer handelt. Soweit so gut, habe ich mich also mal mit der Thematik aktiv und passiv Buzzer etwas genauer auseinandergesetzt und musste zu meinem Entsetzen feststellen, das die aktiven Buzzer einen Stromverbrauch jenseits von gut und böse haben und ich diese dann auch nicht mehr direkt über einen digital Pin am Microcontroller betreiben könnte. Das Projekt ist Akku betrieben und das ganze soll so Stromsparend wie möglich sein, deswegen hatte ich mich auch für den oben verlinkten Buzzer mit einem Verbrauch von 3mA entschieden.

Nach etwas längerem suchen bin ich auf folgenden Buzzer gestoßen https://www.mouser.de/ProductDetail/CUI-Devices/CPT-7502-65-SMT-TR?qs=HoCaDK9Nz5cKdJajIU0%2Fjw%3D%3D werde aber nicht ganz schlau aus den Angaben. Dort steht etwas von "no driving circuit" was soll mir das jetzt sagen? Ist das ein aktiv Buzzer oder ein passiver?

Kennt einer von euch evtl. etwas passendes? Meine Anforderungen wären:

  • Abmessungen max 9x9 mm
  • Höhe max 5 mm
  • Stromverbrauch max 5 mA
  • Oberflächenmontage
  • aktiv zu betreiben

der Rest wäre erstmal Nebensache

vielen Dank

Da sehe ich kein Problem!
Welches siehst du da?

Welcher µC?
Und ja, das macht einen Unterschied.

Wozu überhaupt unbedingt HIGH?
Einem Piezo ist das doch völlig wurscht.

Das ganze läuft auf einem SAMD21G18 auf einer custom PCB. Der Controller ist aber von einem Seeeduino Xiao runtergelötet und somit nutze ich auch das Pinout / Bootloader vom Seeeduino Xiao.

Sicher ich könnte das ganze jetzt live am Objekt ausprobieren, allerdings komme ich erst wieder frühestens am WE dazu, dort weiterzubasteln. Und mir ist die "Problematik" gestern Abend in den Kopf geschossen und lässt mir seitdem keine Ruhe.

Um den Buzzer anzutreiben / anzusprechen nutze ich die https://evert-arias.github.io/EasyBuzzer/ library. Und laut meinen Verständnis gebe ich dem Buzzer ja eine Frequenz und eine duration / beeps. Das Funktioniert auch anstandslos. Nur laut meinem Verständnis kann ich das ja nicht mehr machen, wenn der Microcontroller schläft. Hier könnte ich vorm schlafen gehen lediglich noch festlegen Pin high oder low, und somit fällt ein Betrieb eines passiven Buzzers raus. Ich bräuchte in dem falle dann etwas, was seinen Ton / Frequenz selber generieren kann und laut meinem Verständnis geht das dann nur mit aktiven Buzzern.
Wenn ich bei meiner Überlegung etwas übersehen habe, lasse ich mich gern eines besseren belehren.

Dann bin ich quasi raus.
Denn die Schlafmodi des ARM sind mir nicht so geläufig.

Kann es nicht sein, dass man die (PWM)Timer auch im Schlaf weiter laufen lassen kann?

gute Frage. Um den Controller schlafen zu legen habe ich mal ein wenig mit dieser lib https://github.com/arduino-libraries/ArduinoLowPower rumprobiert, bin da aber bisher noch nicht tiefer eingestiegen. Was ich nur extrem praktisch fande, war die Tatsache, das ich den Microcontroller für einen vorher definierten Zeitraum schlafen legen kann und dies auch ohne Probleme funktioniert. das hatte mich doch sehr überrascht, weil ich es noch aus meiner Zeit mit den Atmega 328 und 2560 so gewohnt war, dass dies (glaube) nur für max 7 Sekunden funktioniert hat. Da finde ich das schon sehr fortschrittlich. Und nachdem ich dadurch gute 20 mA Sparen kann, kamen mir so gleich neue Ideen fürs Projekt.
Aber ich seh schon muss mich wohl noch etwas intensiver damit auseinandersetzen, evtl. gibt es da ja noch eine Möglichkeit.
Gut wenn alle Stricke reisen, lass ich den Microcontroller einfach wach. Macht dann zwar 20 + 3 mA Verbrauch, was aber immer noch weniger ist als wenn ich das System schlafen lasse, dafür aber einen Buzzer einsetzen müsste der 25 mA aufwärts benötigt inkl. der Änderung der Beschaltung auf meiner PCB.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.