Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Transmissor AM de Música com Arduino Nano

Componentes e Materiais

Arduino Nano R3 1
Resistor 10 kΩ 2
Capacitor 10 µF 1
Protoboard 1

Aplicações e Serviços Online

Sobre o Projeto

Os microcontroladores ATmega permitem projetos interessantes. A ideia: construir um transmissor AM com Arduino Nano (qualquer Arduino funciona).

O Desafio: AM em Dispositivo Digital

Modulação de Amplitude (AM) varia a amplitude da portadora conforme o sinal de entrada. Matematicamente, multiplica-se a portadora pelo sinal. Mas o ATmega só tem saídas digitais (HIGH/LOW) — não há AM "real" possível.

A Solução: PWM como AM

Transforma-se o sinal analógico de entrada em PWM usando o ADC e o Timer1 de 16 bits do ATmega. O Timer2 gera a portadora (31 kHz a 8 MHz) no pino D11, modulada pelo PWM. O rádio AM atua como filtro passa-baixa no PWM, recuperando o áudio original.

Nota: É prova de conceito. Para uso real como transmissor RF, adicione filtro passa-baixa anti-aliasing na entrada de áudio e filtro passa-baixa contra harmônicos na saída RF.

Código (Arduino AM Transmitter)

/* Licença Creative Commons Attribution-ShareAlike 4.0 International */

#define ANTENNA_PIN PB3  // Arduino Nano/Uno D11

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

  // Geração da frequência da portadora
  uint32_t fTransmit = 600; // kHz
  DDRB |= (1 << ANTENNA_PIN);
  TCCR2A = (0 << COM2A1) + (1 << COM2A0); // Toggle OC0A no Compare Match
  TCCR2A |= (1 << WGM21) + (0 << WGM20);  // Modo CTC
  TCCR2B = (0 << CS22) + (0 << CS21) + (1 << CS20); // Sem prescaler
  OCR2A = F_CPU / (2000 * fTransmit) - 1;

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

  // Geração do sinal PWM
  TCCR1A |= (1 << WGM11) + (1 << WGM10); // Fast PWM 10 bits
  TCCR1B = (1 << WGM12);
  TCCR1B |= (0 << CS12) + (0 << CS11) + (1 << CS10); // Sem prescaler
  TIMSK1 = (1 << OCIE1A) + (1 << TOIE1);

  // Configuração ADC
  ADMUX = (1 << REFS1) + (1 << REFS0); // Referência interna 1.1V
  ADCSRA = (1 << ADEN) + (1 << ADSC) + (1 << ADATE); // Auto-trigger, free running
  ADCSRA |= (1 << ADPS2) + (1 << ADPS1) + (0 << ADPS0); // Divisor 64 -> 18.5k sample rate
  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() {
  // Tudo feito por interrupções
}

Esquemático

Disponível na seção de esquemáticos do projeto original.

Processo de manufatura

  1. O Legado e a Evolução da Jukebox Clássica
  2. Partituras: Dos Manuscritos Medievais à Publicação Moderna — Visão Geral da Indústria
  3. Semáforos: Engenharia, História e Inovações Futuras
  4. Construa Seu Próprio LUMAZOID: Visualizador de Música DIY com Arduino
  5. Construa um Spybot Controlado por Bluetooth com Arduino
  6. Decodifique Sinais PPM de Receptor RC com Arduino: Guia Passo a Passo
  7. FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
  8. DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
  9. Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
  10. Usando Termistor Facilmente: Guia Passo a Passo com Arduino