Ciao ragazzi, sto creando un amplificatore di segnale, meglio dire ricevo una certa frequenza di segnale da un sensore(onda quadra), la modifico e la ritrasmetto.....variandone solo la frequenza( del 20% in più) e non l'ampiezza...riscontro un problema.....quando genero la frequenza in uscita...viene disturbata quella in ingresso...alterandomi così tutto...ho installato una resistenza da 1kohm per proteggere l'ingresso dell'arduino. Per cercare di portare il potenziale dell'ingresso verso massa...ho installato un potenziometro da 10khom tra massa e l'arduino.....(il potenziometro l'ho tarato a 3khom)...così ho risolto il disturbo che ho in ingresso....ma non riesco a leggere come prima il segnale che mi viene dal generatore. Se invece non messo il potenziale verso massa....in ingresso leggo il segnale che è generato dall'arduino e il segnale generato dal sensore..... Come faccio a pulire il segnale? Ora la prova l'ho fatta generando un segnale con frequenza fissa....per cui se faccio (segnale letto - segnale in uscita generato dall'arduino) ottengo la lettura precisa del segnale in ingresso....ma visto e considerato che il progetto prevede la variazione della frequenza in uscita in funzione a quella in ingresso mi ritrovo il problema del segnale disturbato. Voglio precisare che i segnali corrono su un cavo 2X1 lungo circa 1,5mt.....ho provato a fare viaggiare i segnali su due cavi separati....ma ho sempre lo stesso problema.....ho provato ad utilizzare un cavo schermato...ma niente....l'unica prova che non ho fatto è quella di accorciare i cavi..
Confido in un vostro aiuto, grazie
.Posto il codice che uso per la lettura del segnale.
#define pinInput 2 // pin input impulsi
#define Interrupt 0 // interrupt associato
volatile word impulsi = 0; // contatore impulsi
word impulsiOld =0;
word freq =0; // valore frequenza
const unsigned long periodo = 1000; // costante unità di tempo = 1" ritardo
unsigned long millisOld; // variabile supporto per calcolo periodo
int out;
// -----------------------------------------------------------------------------------------------
void setup() {
pinMode (pinInput,INPUT_PULLUP); // imposta porta ingresso (opzionale PULLUP)
pinMode (12, OUTPUT);
Serial.begin(57600);
millisOld = millis(); // inizializza timer
attachInterrupt(Interrupt,somma,RISING); // iniziailizza interrupt
impulsiOld = impulsi; // allinea variabile
}
void somma() {
impulsi ++; // incrementa contatore
}
void loop() {
if ((millis() - millisOld) >= periodo){ // trascorso 1"
millisOld += periodo; // aggiorna variabile
freq =(impulsi - impulsiOld); // calcola frequenza sul pin 3 digital
impulsiOld = impulsi; // allinea variabile
Serial.println (freq);
out= ((freq * 20) / 100);
tone(12,out);
}
}