Ciao Ragazzi,
dunque sono alle battute finali con il mio progetto:
sto testando il tutto prima di procedere al montaggio sullo scooter.
Ho un problema con il partitore di tensione, questi sono i dati:
V_batteria_max= 13.25 V
V_pin_arduino= 5 V
Rc= 20 Kohm
R2 = 12.25 kohm (che regolo con un trimmer da 20Kohm)
Dunque accade che sulla bredboard regolando il trimmer ottengo la lettura che voglio, poi sulla pcb dove vi è pure uno zener da 5.1V in parallelo, la lettura arriva al max a 11 V scarsi. Ho provato a dissaldare lo zener dalla pcb e tutto funziona come dovrebbe. Perchè accade questo?
Lo schema che ho disegnato è questo, e la parte del partitore è in basso a sinistra:
droidprova:
Ho un problema con il partitore di tensione, questi sono i dati:
V_batteria_max= 13.25 V
V_pin_arduino= 5 V
Rc= 20 Kohm
R2 = 12.25 kohm (che regolo con un trimmer da 20Kohm)
Dunque accade che sulla bredboard regolando il trimmer ottengo la lettura che voglio, poi sulla pcb dove vi è pure uno zener da 5.1V in parallelo, la lettura arriva al max a 11 V scarsi. Ho provato a dissaldare lo zener dalla pcb e tutto funziona come dovrebbe. Perchè accade questo?
Lo zener incomincia a condurre prima dei 5,1V Devi starci sotto un bel po. Prendi come riferimento peril ADC i 3,3V di Arduino e fai il partitore in modo che i 13,8V diventano 3,3V. Arduino non si rompe se misuri tensioni maggiori della VREF a patto che siano minore dellla tensione di alimentazione.
Altro grosso problema.
Quello che ripetutamente si é detto riguarda i disturbi sull'impinato elettrico del automobile valogono anche per le moto. Punte di tensione fino 100V e abbassamenti di tensione oltre disturbi derivanti dalla schintilla delle candele.
Grazie Uwe, se ho capito bene, con i componenti che ho già basta agire lato software sistemando lo shetch da 5 a 3.3V. Ma in che modo se il mio è questo:?
lettura = analogRead(analogPin);
voltage = (13.3 / 1024) * lettura;
Per l'alimentazione, penso e spero di non aver problemi, ho già testato ...
Adesso ho provato lo sketch corretto sulla pcb con un'altro zener da 5.1 V e la lettura massima che ottengo alimentando il circuito a 13.3 è di 9.33V.
Bho non capisco.
cyberhs:
Icio, la tua protezione è già presente negli ingressi di Arduino.
Esatto, su tutti i pin ci sono dei diodi di clamping che rendono inutili gli zener o i diodi esterni se c'è una resistenza in serie che limita la corrente massima a non più di 1 mA, bastano 5k.
Semmai può essere utile l'uso di transzorb/transil per eventuali transienti molto veloci e di grande ampiezza, come quelli presenti sull'impianto elettrico di auto e moto.
droidprova:
Ok, dunque non mi resta che eliminarlo e sperare che non si fulmini il pin A0....
Un semplice zener non protegge nulla in uso automotive, per stare tranquillo dovresti mettere un transil da 6.5V 2A, questo si che ti protegge l'input analogico anche da spike di grande ampiezza, non hai idea di quanta "schifezza" gira sull'impianto elettrico di un veicolo.
Per tua fortuna il partitore in ingresso ti offre una impedenza di circa 10 k (il parallelo delle due R), il che ti fa stare abbastanza tranquillo anche con spike da 100-150 Volt a patto che non abbiano uno slew rate (tempo di salita) troppo rapido.
Il diodo transil in questione, deve essere unidirezionale vero? Cablato esattamente come uno zener? Quindi rispetto al mio schema tolgo uno e metto l'altro?
Il codice avente le caratteristiche di cui sopra è: 5KP6.5A giusto?
Molto semplicemente perché 14/1024 è una divisione tra INTERI, mentre 13.9/1024 è tra FLOAT ... prova a ragionarci
Se non specifichi tu il tipo, mettendo o un operatore di cast, o il punto decimale ... come vuoi che il compilatore sappia che tipo usare per quei numeri ? Lui procede eseguendo da destra a sinistra e effettuando le assegnazioni.
lettura (intero) * (14 intero / 1024 intero) ---> risultato intero ---> assegnato ad un float voltage