Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

AM-Musik-Transmitter mit Arduino Nano selbst bauen

Komponenten und Materialien

Arduino Nano R3 1×
Widerstand 10 kΩ 2×
Kondensator 10 µF 1×
Steckbrett 1×

Software

Projektbeschreibung

Mit einem ATmega-Mikrocontroller lässt sich ein einfacher AM-Sender realisieren. Da der Arduino nur digitale Ausgänge (High/Low) hat, ist echte Amplitudenmodulation (AM) nicht direkt möglich. Doch durch geschickte Nutzung von PWM und Timer-Hardware entsteht ein Signal, das ein normales AM-Radio empfangen kann.

Prinzip

Dies ist ein Proof-of-Concept. Für echten Betrieb: Tiefpassfilter am Audioeingang (Anti-Aliasing) und am RF-Ausgang (Oberwellendämpfung) hinzufügen.

Code (Arduino AM Transmitter)

/* Creative Commons Attribution-ShareAlike 4.0 International License */

#define ANTENNA_PIN PB3  // Arduino Nano/Uno D11

void setup() {
  Serial.begin(115200);

  // Trägerfrequenz 600 kHz auf Timer2
  uint32_t fTransmit = 600; // kHz
  DDRB |= (1 << ANTENNA_PIN);
  TCCR2A = (0 << COM2A1) | (1 << COM2A0); // Toggle OC2A on Compare Match
  TCCR2A |= (1 << WGM21) | (0 << WGM20);  // CTC Mode
  TCCR2B = (0 << CS22) | (0 << CS21) | (1 << CS20); // No Prescaling
  OCR2A = F_CPU / (2000 * fTransmit) - 1;

  char strbuf[255];
  sprintf(strbuf, "Sende bei %d kHz", (F_CPU / (2 * (1 + OCR2A)) / 1000));
  Serial.println(strbuf);

  // PWM Audio (10-bit Fast PWM) auf Timer1
  TCCR1A = (1 << WGM11) | (1 << WGM10); // Fast PWM 10-bit
  TCCR1B = (1 << WGM12) | (1 << CS10);  // No Prescaling
  TIMSK1 = (1 << OCIE1A) | (1 << TOIE1);

  // ADC: interne 1,1 V Referenz, Free Running, 18,5 kSamples/s
  ADMUX = (1 << REFS1) | (1 << REFS0);
  ADCSRA = (1 << ADEN) | (1 << ADSC) | (1 << ADATE);
  ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (0 << ADPS0); // Prescaler 64
  DIDR0 = (1 << ADC0D);
}

ISR(TIMER1_OVF_vect) {
  uint8_t adcl = ADCL;
  uint8_t adch = ADCH;
  OCR1A = (adch << 8) + adcl;
  DDRB |= (1 << ANTENNA_PIN);
}

ISR(TIMER1_COMPA_vect) {
  DDRB &= ~(1 << ANTENNA_PIN);
}

void loop() {
  // Alles interruptgesteuert
}

Schaltplan

Schaltplan als Bild verfügbar (Original-Link im Quellprojekt).

Herstellungsprozess

  1. Das Vermächtnis und die Evolution der klassischen Jukebox
  2. Notenblätter: Von mittelalterlichen Manuskripten zum modernen Verlag – Ein Branchenüberblick
  3. Verkehrsampeln: Technik, Geschichte und zukünftige Innovationen
  4. Eigenen LUMAZOID bauen: DIY Arduino Musik-Visualisierer
  5. Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
  6. RC-Empfänger PPM-Signal mit Arduino auslesen – Schritt-für-Schritt
  7. FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
  8. DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
  9. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  10. Thermistor (NTC) einfach nutzen: Schritt-für-Schritt Arduino-Anleitung