Ich möchte einen AD9833 mit einem ESP32 Devkit V1 ansteuern und dabei einen Ton erzeugen, der unterbrochen ist, also piept. Zur Ansteuerung nutze ich die Library AD9833-Library-Arduino (https://github.com/Billwilliams1952/AD9833-Library-Arduino). Ich habe mir dieses AD9833-Board gekauft: https://www.ebay.de/i/173745496388?chn=p...WaEALw_wcB Ich habe verschiedene Dinge ausprobiert, wie z.B. mit gen.SleepMode(true); bzw. gen.SleepMode(false); zu arbeiten. Aber immer wenn ich gen.SleepMode aufrufe knackt es im Verstärker. Im Datenblatt des AD9833 (https://www.analog.com/media/en/technical-documentation/data-sheets/AD9833.pdf) steht, dass man zwischen VDD und AGND zwei Kondensatoren schalten sollte. Soweit ich den Schaltplan des Bords verstehe, sind die schon vorhanden (https://www.ebay.com/itm/AD9833-DDS-Signal-Generator-Module-Programmable-Microprocessors-Sine-Square-Wave/382093041897?epid=2134752143&hash=item58f68520e9:g:tg0AAOSwigla3VCq). Gibt es eine bessere Methode das piepen zu realisieren, oder was mache ich sonst falsch?
Ähm. Wenn du den DDS chip schlafen lässt, dann schaltet er seinen Takt ab. D.h. der Ausgang bleibt "stehen". Das muss "knack" machen! 73
Beitrag #6282736 wurde vom Autor gelöscht.
Martin schrieb: > Gibt es eine bessere Methode... Ja. Verstehe mal, daß so ein DDS-IC eine Ausgangsspannung erzeugt, die irgendwo je nach Kurve und Zeitpunkt zwischen GND und VCC liegt. Wenn du also z.B. einen Sinus erzeugst, dann ist der Mittelwert, also quasi die "Null-Linie" mittendrin auf VCC/2. Wenn du den DDS dann irgendwann anhältst, dann bleibt dessen Ausgang (zumeist) auf eben der Spannung stehen, wo er gerade war. Wenn du ihn hingegen ausschaltest, dann nehme ich mal an, daß der Ausgang auf GND geht - und das ist dann das Knacken am Ende deines Pieps. Das zweite Knacken kommt dann beim Anfang des nächsten Pieps. Und was ist "gen.SleepMode(true);" ?? Sowas kommt im Datenblatt des Chips nicht vor und du weißt offenbar nicht, was da in irgend einer finsteren Bibliotheksroutine tatsächlich angestellt wird. Mein Rat: Laß den DDS durchlaufen und setze an dessen Ausgang einen 4066 o.ä. in die Ausgangsleitung. Alternativ beobachte den Ausgang per Komparator und wenn er durch VCC/2 geht, dann setzt du das Phaseninkrement auf 0 zum Anhalten des DDS. W.S.
W.S. schrieb: > dann setzt du das > Phaseninkrement auf 0 zum Anhalten des DDS. Wäre das Ergebnis nicht ident zum anhalten des Taktes? W.S. schrieb: > Sowas kommt im Datenblatt des > Chips nicht vor und du weißt offenbar nicht, was da in irgend einer > finsteren Bibliotheksroutine tatsächlich angestellt wird. Das ist mit Sicherheit ein großer Anteil am Problem.
Martin schrieb: > Gibt es eine bessere Methode das piepen zu realisieren, oder was mache > ich sonst falsch? Du erzeugst einen Sprung im Ausgangssignal deines AD9833. Dieser Sprung wird von deinem Verstärker in einen schnelle Bewegung der Membran deines Lautsprechers o.w.a.i. umgesetzt, was wiederum eine Druckwelle erzeugt, die von deinem Ohr als Knacken wahrgenommen wird. Diesen Signalsprung musst du vermeiden. Durch Abschalten des DAC mit dem SLEEP12-Bit im Controlregister schaltest du das Ausgangssignal ab. Du musst es aber auf 0 halten. Damit das Piepen nicht zu hart einsetzt, ist es sinnvoll, die Amplitude mit einer Rampe ansteigen zu lassen.
Jetzt werden von den D.A.U.s schon D.D.S. verbaut um mal Piep zu machen. Und das noch nicht mal richtig.
foobaz schrieb: > Jetzt werden von den D.A.U.s schon D.D.S. verbaut um mal Piep zu machen. > Und das noch nicht mal richtig. Weil halt irgendeine lib genommen wird, die bietet 5 Methoden an und niemand weiß was da gemacht wird. Das passiert wenn man die Bausteine die man einsetzt nicht verstehen will. Also Datenblatt lesen, verstehen wie das funktioniert und dann kann man auch einschätzen ob eine vorhandene lib brauchbar ist und was deren API bedeutet soll und ob man überhaupt eine externe lib braucht.
Cyblord -. schrieb: > Weil halt irgendeine lib genommen wird, die bietet 5 Methoden an und > niemand weiß was da gemacht wird. Wenn jemand des Lesens nicht kundig ist, soll er die Finger davon lassen. Der Code der verwendeten Funktion SleepMode() hat vier Zeilen. Die kann man sich vielleicht gerade noch durchlesen. Ohne Datenblattverständnis und eine grundlegende Vorstellung, was Knacken ist, nützt einem das allerdings überhaupt nichts. Schon ein Oszi würde helfen, um zu erkennen, woher das Geräusch kommt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.