Spero di essere il più chiaro possibile, ho visto tanti programmi esempi ecc su internet che ho preso un po tutto e fatto un progetto mio personale, lo sto completando, ma mentre lo facevo ho scoperto che in realtà quello che vedevo su internet, non è altro che in sostanza il modo in cui arduino genera segnali audio, non avendo possibilità di creare corrente alternata un integrato genera impulsi, impulsi con detterminate frequenze ecc che generano impulsi elettromagnetici con induttori, ecco che questi impulsi, si possono anche trasmettere, infatti la libreria PCM, o le librerie che riproducono musica attraverso i WAV, da quello che ho capito sfrutano il PWM all'interno di arduino, ecco perché ha certi limiti
quindi ho voluto sfruttare la cosa per costruire un specie di radio TX con un po tutto, per ora sto facendo la parte vocale con pulsante di apertura e chiusura e poi mettero anche RTTY, morse ecc
volevo fare anche voci digitali o musiche complete pero mi serve memoria in più e credo comunque abbia un limite a parte i wav, comunque per il momento mi sono concetrato nella parte vocale con pulsante
fantastico, funziona, ma ce un problema, non riesco ad impostare solo una frequenza, mi trasmette ovunque, dai khz, alla radio FM normale e anche più aventi sulle air band e anche quelle dei radio amatori
io l'ho anche amplificato il segnale, con un npn, pochi microwatt, funziona perfetamente, unica cosa che non posso usarlo, se aumento amperaggio e cambio npn tenendo conto che abbia le stesse saturazioni e faccio una antenna come si deve disturbo tutti
in sostanza il funzionamento è questo:
Mic --- amplificazione ---- arduino converte in DAC --- PWM con portante DAC ---- NPN ----- trasformatore --- Antenna a massa terra e filo in aria
metto due immagini sperando di dar un esempio veloce del circuito, anche se il problema e dovuto al programma, metto anche il programma, e speriamo che qualcuno sa come fare per impostare una sola frequenza
#define ANTENNA_PIN PB3
void setup() {
pinMode(11, OUTPUT);
uint32_t fTransmit = 600; //KHz
DDRB |= (1 << ANTENNA_PIN);
TCCR2A = 0;
TCCR2B = 0;
TCNT2 = 0;
TCCR2A = 0b01010010;
TCCR2B = 0b00000001;
OCR2A = F_CPU / (2000 * fTransmit) - 1;
TCCR1A |= (0 << WGM11) + (1 << WGM10);
TCCR1B = (1 << WGM12);
TCCR1B |= (0 << CS12) + (0 << CS11) + (1 << CS10);
TIMSK1 = (1 << OCIE1A) + (1 << TOIE1);
ADMUX = (1 << REFS1) + (1 << REFS0);
ADCSRA = (1 << ADEN) + (1 << ADSC) + (1 << ADATE);
ADCSRA |= (1 << ADPS2) + (1 << ADPS1) + (0 << ADPS0);
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() {
}
nel disegno, all'uscita del trasformatore e a terra, non a massa del circuito
