Lettura analogica "saltella"

Ciao a tutti.
Ho l'arduino 1 r3 con collegati:

  • un trimmer da 10k alla porta analogica 0
  • 2 bottoni collegati ai pin 2 e 3
  • l'enable di un l298 al pin 8
  • 2 pin di direzione di un l298 collegati ai pin pwm 9 e 10

Funziona tutto tranne per una cosa, quando attivo i pwm la lettura della porta analogica si mette a saltellare, ho provato a mettere dei condensatori sull'alimentazione del 298 sia su quella della logica che quella dei motori e delle resistenze sui pin del pwm ma non cambia niente...
Come posso sopprimere i disturbi ?

Che motori hai collegato? Come gli alimenti, con la stessa batteria? Hai qualche foto del circuito?
In genere per ridurre i rumori si mettono dei condensatori proprio sul motore e in alcuni casi si inseriscono degli induttori per ridurre i disturbi

Ciao

Il motore è da 12v e consuma meno di 1A, alimentato con i 12v dell'alimentatore dell'x-box.
Il l298 è alimentato con i 5v dell'arduino. La masse di tutteddue sono collegate.
Ho letto che sono scoppiati parecchi l298 usando il pwm e mettendo i condensatori sui motori quindi non li metto.
Edit:
Lo schema lo metto domani.

Più che i condensatori direi che il PWM può dare problemi all'L298.. i condensatori non vanno messi a caso ma dimensionati e devono essere del tipo giusto.

flz47655:
Più che i condensatori direi che il PWM può dare problemi all'L298.

Ho letto che andrebbe pilotato in ON/OFF o in LAP ma in PWM non si scalda, forse perchè il motore assorbe 170 mA

Lo schema che sto usando è questo (in pratica quello del datasheet):

Se usassi degli optoisolatori per separare l'arduino dal 298 e dal motore si dovrebbe risolvere tutto giusto?
Edit:
C'è il problema però che quando faccio il pcb da inscatolare devo usare una sola alimentazione da 12v per pic, l298 e motore, quindi niente optoisolatori :cold_sweat:

Dire che gli optoisolatori sarebbero il massimo, ma usi dei PIC o Arduino?

Se usasse i pic scriverebbe su forum.pic.cc Ovviamente!! :grin: :grin:

PaoloP:
Se usasse i pic scriverebbe su forum.pic.cc Ovviamente!! :grin: :grin:

bugiardo non esiste!! :grin:

flz47655:
Dire che gli optoisolatori sarebbero il massimo, ma usi dei PIC o Arduino?

L'arduino, ho sbagliato a scrivere :sweat_smile:
Intendevo che al momento sto usando una breadboard e l'arduino uno quindi utilizzo due alimentazioni, poi farò un pcb con solo l'atmega328 il regolatore da 5v e il l298 quindi avò una sola alimentazione da 12v e usare dei optoisolatori sarebbe inutile :cold_sweat:

Non è detto che sarebbe inutile.. eviti che il rumore si propaga tramite l'L298.. e se c'è qualche cosa che non va nei motori ti salvi il chip con più facilità

Ho messo due pc702v sharp tra i pin pwm dell'arduino e il l298, ora la lettura del trimmer saltella raramente.
Mi rimane il problema della lettrura del pin sense del l298, saltella di continuo anche di 0.5v, con il multimetro cambia di 0.02

Hai messo i condensatori di disaccoppiamento e di bypass?

E` sparito lo schema che avevo postato :roll_eyes:
http://www.japantrip.tk/TEMP/Schema-l298-Arduino.jpg
Ho messo quei due li, sui +5 e sui +12, sul vsense che ci metto ?

Alimentazione unica:
Lettura A4: 154 - V: 0.75 - A: 0.23
Lettura A4: 32 - V: 0.16 - A: 0.05
Lettura A4: 120 - V: 0.59 - A: 0.18
Lettura A4: 97 - V: 0.47 - A: 0.14
Lettura A4: 60 - V: 0.29 - A: 0.09
Lettura A4: 129 - V: 0.63 - A: 0.19
Lettura A4: 147 - V: 0.72 - A: 0.22
Lettura A4: 209 - V: 1.02 - A: 0.31
Lettura A4: 203 - V: 0.99 - A: 0.30
Lettura A4: 148 - V: 0.72 - A: 0.22
Lettura A4: 31 - V: 0.15 - A: 0.05
Lettura A4: 87 - V: 0.43 - A: 0.13
Lettura A4: 181 - V: 0.88 - A: 0.27
Lettura A4: 140 - V: 0.68 - A: 0.21
Lettura A4: 193 - V: 0.94 - A: 0.29
Lettura A4: 103 - V: 0.50 - A: 0.15
Lettura A4: 71 - V: 0.35 - A: 0.11
Lettura A4: 63 - V: 0.31 - A: 0.09
Lettura A4: 111 - V: 0.54 - A: 0.16
Lettura A4: 212 - V: 1.04 - A: 0.31

Alimentazione separata con negativo collegato:
Lettura A4: 172 - V: 0.84 - A: 0.25
Lettura A4: 118 - V: 0.58 - A: 0.17
Lettura A4: 46 - V: 0.22 - A: 0.07
Lettura A4: 126 - V: 0.62 - A: 0.19
Lettura A4: 212 - V: 1.04 - A: 0.31
Lettura A4: 110 - V: 0.54 - A: 0.16
Lettura A4: 53 - V: 0.26 - A: 0.08
Lettura A4: 175 - V: 0.86 - A: 0.26
Lettura A4: 146 - V: 0.71 - A: 0.22
Lettura A4: 87 - V: 0.43 - A: 0.13
Lettura A4: 133 - V: 0.65 - A: 0.20
Lettura A4: 164 - V: 0.80 - A: 0.24
Lettura A4: 132 - V: 0.65 - A: 0.20
Lettura A4: 98 - V: 0.48 - A: 0.15
Lettura A4: 98 - V: 0.48 - A: 0.15
Lettura A4: 194 - V: 0.95 - A: 0.29
Lettura A4: 87 - V: 0.43 - A: 0.13
Lettura A4: 106 - V: 0.52 - A: 0.16
Lettura A4: 81 - V: 0.40 - A: 0.12
Lettura A4: 210 - V: 1.03 - A: 0.31
Lettura A4: 94 - V: 0.46 - A: 0.14
Lettura A4: 114 - V: 0.56 - A: 0.17

Lettura con multimetro tra V 0.6 e V 0.61 sono 0.18181818181 A - 0.18484848484 A

Come faccio :cold_sweat: :cold_sweat: :cold_sweat:

Hai o puoi utilizzare un oscilloscopio per analizzare il ripple sull'alimentazione e sui segnali?

Faccina:
Ho messo quei due li, sui +5 e sui +12, sul vsense che ci metto ?

Se leggi direttamente la tensione sulla Rsense con l'ADC di Arduino è più che normale vederla fluttuante per il semplice motivo che la corrente che fluisce nel motore varia continuamente attorno al valore medio.
Devi usare un filtro rc passa basso con costante di tempo pari ad almeno 10 volte il periodo pwm in modo da poter visualizzare il valore medio senza fluttuazioni.
Dato che Arduino usa un PWM a solo 490 Hz significa che il suo periodo è circa 2 ms e di conseguenza la costante di tempo deve essere almeno di 20 ms ottenibili mettendo in serie all'ingresso del ADC una resistenza da 10 k e in parallelo un condensatore da 200 nf (tau = R*C)
Ovviamente l'uso del filtro passa basso limita la banda massima di acquisizione della corrente che diventa di solo 8-10 Hz, buona per visualizzare il valore istantaneo della corrente su un indicatore, non adatta per un qualunque tipo di controllo coppia e/o computo dei consumi.
Per aumentare la banda di misura è indispensabile aumentare la frequenza del pwm.

flz47655:
Hai o puoi utilizzare un oscilloscopio per analizzare il ripple sull'alimentazione e sui segnali?

Non cel'ho.

astrobeed:
in serie all'ingresso del ADC una resistenza da 10 k e in parallelo un condensatore da 200 nf (tau = R*C)

Ho messo la resistenza e 2 condensatori a forma di lenticchia da 100 nf in parallelo. Saltella di 100 mV mentre il multimetro di 5

La r Sense l'ho cambiatia con 3 da 3.3 ohm in parallelo, dovrebbero essere 1.1 ohm ma il multimetro legge 1.4.

PWM a 255
ADC:
r Sense 1.1 -> min 155 mA max 245 mA
r Sense 1.4 -> min 121 mA max 193 mA
Multimetro
r Sense 1.1 -> min 191 mA max 195 mA
r Sense 1.4 -> min 150 mA max 153 mA
Lettura mA con multimetro in serie al motore:
min 178.2 max 186.8

PWM a 100
ADC:
r Sense 1.1 -> min 245 mA mA max 363
r Sense 1.4 -> min 193 mA mA max 286
Multimetro
r Sense 1.1 -> min 297 mA max 301 mA
r Sense 1.4 -> min 234 mA max 236 mA
Lettura mA con multimetro in serie al motore:
min 136 mA max 141.6 mA

Ho usato i = v/r com''è possibile che ci sia così tanta differenza tra la lettura direttamente in mA del multimetro e il calcolo usando i V e la r ?

Ho provato senza pwm direttamente con i cavi:
12v, motore, resistenza e multimetro
usando la lettura in A mi segna 0.2 quasi fisso, a volte 0.21
guardando i V sulla resistenza vedo 0.239
usando come valore 1.1 mi viene 0,2172727272727273 A
usando come valore 1.4 mi viene 0,1707142857142857 A

5v, motore, resistenza e multimetro
usando la lettura in A mi segna 0.18 quasi fisso, a volte 0.19
guardando i V sulla resistenza vedo 0.208
usando come valore 1.1 mi viene 0,1890909090909091 A
usando come valore 1.4 mi viene 0,1485714285714286 A

Quindi il multimetro legge giusti sia i V che gli A ma sbaglia a leggere il valore della resistenza forse perchè è troppo bassa... Comunque, com'è possibile quella differenza di valori con il pwm ?