(Ab)nutze einen Arduino als AM-Musiksender!
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
Apps und Onlinedienste
|
Über dieses Projekt
Mit ATmega-MCUs können coole Dinge getan werden. So kam mir die Idee, einen AM-Sender mit einem Arduino Nano zu bauen (jeder andere Arduino ist auch möglich)
Die Frage ist, wie kann Amplitudenmodulation (AM) auf einem digitalen Gerät erreicht werden? AM bedeutet, dass die Amplitude einer Trägerfrequenz entsprechend der Amplitude des zu übertragenden Eingangssignals geändert wird. Mathematisch gesprochen multiplizieren wir den Träger mit dem Eingangssignal. Da ein ATmega jedoch nur digitale Ausgänge hat, kann er nur zwei Werte liefern:High und Low. Ehrlich gesagt gibt es keine Möglichkeit, echtes AM aus einem Arduino herauszuholen.
Trotzdem ist es möglich, mit einem normalen AM-Radioempfänger ein deutlich hörbares Ausgangssignal zu erzeugen!
Die Lösung besteht darin, das analoge Eingangssignal in ein PWM-Signal umzuwandeln, indem der ADC und der 16-Bit-Timer/-Zähler1 der ATmega-MCU verwendet werden.
Der Timer/Counter2 erzeugt das Trägersignal, das in einem weiten Bereich zwischen 31KHz und 8MHz variiert werden kann.
Dieses Trägersignal wird im Rhythmus des PWM-Signals an Pin D11 ausgegeben. Das AM-Radio verhält sich auf der PWM wie ein Tiefpassfilter, sodass wir dort das ursprüngliche Audiosignal zurückbekommen.
Dies ist nur ein Proof of Concept, also habe ich es einfach gehalten. Wenn Sie dies wirklich als HF-Sender verwenden möchten, sollten Sie dem Audioeingang einen Tiefpassfilter für Anti-Aliasing und dem HF-Ausgang einen Tiefpass gegen die Oberwellen hinzufügen.
Code
- Arduino AM-Sender
Arduino AM-SenderC/C++
/*Dieses Werk ist lizenziert unter der Creative Commons Attribution-ShareAlike 4.0 International License. Um eine Kopie dieser Lizenz anzuzeigen, besuchen Sie http://creativecommons.org/licenses/by-sa/4.0/.*/#define ANTENNA_PIN PB3 //Arduino Nano/Uno D11// die Setup-Funktion wird einmal ausgeführt, wenn Sie Reset drücken oder schalten Sie das Boardvoid-Setup ein () { Serial.begin (115200); // Trägerfrequenzerzeugung uint32_t fTransmit =600; //KHz DDRB |=(1 <18.5k Abtastrate DIDR0 =(1 <
Schaltpläne
Herstellungsprozess