Salve a tutti,
premesso che sono un neofita,altrimenti non sarei qui a chiedere aiuto.
Vorrei creare con arduino nano un divisore di frequenza x4.
ho un segnale che varia tra 50 hz e 800 hz e vorrei che il segnale uscente fosse diviso per 4.
il segnale è un onda quadra che varia (0;-4v).
Inoltre l'alimentazione dell'arduino vorrei dargliela dalla batteria della moto, dite che devo prevedere un condensatore e un fusibile per evitare che me lo frigge o dite che è inutile?
Spero in un vostro aiuto, ho provato a cercare ma in rete tutti usano un prescaler per utilizzare arduino, ma mi sembra inutile visto le frequenze in gioco.
... ma scusa, non fai prima con un paio di flip-flop ? ... credo basti un semplice 4013 ...
Comunque, se arduino non deve fare altro, credo basti un'interrupt RISING dove nella ISR fai semplicemente variabile++ (ma magari per frequenze cosi basse neppure serve un'interrupt), seguito da un'if dove se variabile >= 4 la azzera e cambia stato all'uscita ... ma forse sto dicendo una ca...volata, non sono un programmatore io ... per quello la mia prima idea e' stata il 4013
Intanto dovresti presentarti essendo il tuo primo post .
hai ragione, l'ho appena fatto
Occhio che se il segnale in ingresso ha una tensione negativa (-4V, ho capito bene?), non puoi darlo in pasto direttamente ad Arduino, che accetta solo tensioni positive.
Forse basta solo invertire i fili, ma aspetta qualcuno più esperto di me in elettronica.
Per una funzione hardware così semplice è sufficiente un contatore binario, il CD4040 può funzionare da zero ad alcuni MHz senza tirare in ballo logiche programmabili (e divide da 2 a 4096):
Ma se si vuole usare Arduino anche per questo...
Il problema maggiore che vedo al momento è che non sappiamo cosa arriva elettricamente dall'ingresso (oh, e neppure dove vada l'uscita), sono davvero -4V rispetto alla massa (negativo dell'alimentazione)?
Se fosse realmente una tensione negativa di 4V rispetto alla massa comune, probabilmente basterebbe un BC327, un paio di resistenze ed uno zener da 5.6V o simile, per risolvere il problema dell'ingresso ...
Un po diverso se dovesse anche generare un'uscita corrispondente, con tensione negativa rispetto a massa anche quella ...
Non conosco il cd4040 ma mi sembra una soluzione molto semplice, grazie Claudio
Ma comunque, insomma, anche con Arduino si può fare Testato a oltre 50kHz (50% duty cycle) in ingresso, va in crisi a circa 59.8kHz, i fronti di salita e discesa dell'uscita sono affetti da un jitter di circa 5 microsecondi. Dando altri valori a 'DIVISION' si possono ottenere altri fattori di divisione, sia pari che dispari.
#define INPUT_PIN 2
#define OUTPUT_PIN 3
#define DIVISION 4
//-----------------------------------------------------------------------------
int counter;
int output_val;
//-----------------------------------------------------------------------------
void setup(){
pinMode(INPUT_PIN, INPUT);
pinMode(OUTPUT_PIN, OUTPUT);
counter = DIVISION;
output_val = 0;
noInterrupts();
}
//-----------------------------------------------------------------------------
void loop(){
while (digitalRead(INPUT_PIN) == 0); // attende fronte di salita input
if (--counter == 0) {
counter = DIVISION;
output_val ^= 1;
digitalWrite(OUTPUT_PIN, output_val);
}
while (digitalRead(INPUT_PIN) == 1); // attende fronte di discesa input
if (--counter == 0) {
counter = DIVISION;
output_val ^= 1;
digitalWrite(OUTPUT_PIN, output_val);
}
}
ho un paio di domande prima di friggere il mio integrato cd4040:
per il voltaggio ho deciso di usare uno stepdown, che da 12v della batteria mi porta il tutto a 5v.
per le correnti ho un po' di dubbi...
quale corrente massima gli posso fornire? se io ho una 10 amp ad esempio come faccio a fargli arrivare solo 10mA?