Contare prodotti, ma come adatto il sensore ad Arduino?

Buongiorno a tutti.

Vorrei utilizzare un sensore come questo, ovviamente alimentato a sè, per contare: http://www.relectron.it/prodotti/foto/link21.pdf

Come adatto il tutto ad Arduino? Supponendo di alimentarla a 12V, immagino che in qualche modo devo portare l'output (che sarà +V quando è inattiva e 0 quando qualcosa passa) a +5 e 0V, ma non ho idea di come fare e di come calcolare eventuali resistenze per fare questo.

Qualcuno sa come fare e sarebbe così gentile da darmi una mano in tal senso?

Grazie.

ps. non ho necessità del codice, ma dell'elettronica da abbinargli per portare il segnale di output in arduino.

Ti basta fare un partitore sul pin che userai come ingresso.
L’uscita del tuo sensore la mandi ad una R da 10K, l’altro capo della R lo mandi al pin di Arduino, tra questo pin e GND metti un’altra R da 10K; se alimenti il sensore a 10V hai un partitore perfetto; se lo alimenti a 12V devi invece aumentare il valore della prima R; considerando che lo usi come HIGH-LOW puoi metterla da 15K; in parallelo alla seconda R ti conviene mettere uno zener da 5,1V con anodo a GND e catodo sul pin, così proteggi Arduino da eventuali extratensioni

Ehm... grazie intanto.

Mi potresti dire, come hai calcolato i valori delle resistenze?

Penso che verrà alimentata a 12V... 10 è più improbabile. Diciamo che con 12 riesco facilmente a fare dei test anche a casa. Se, ti chiedo uno schemino veloce, è troppo?

Grazie.

Lo schema di massima del partitore di tensione nonché la spiegazione la trovi qui: http://it.wikipedia.org/wiki/Partitore_di_tensione

Il partitore di tensione serve, come dice il nome, per ripartire una tensione fra 2 nodi. Si usa per ridurre la tensione in ingresso ad un pin riportando un valore superiore a 5V nel range accettato da Arduino (0-5V).

Lo schema è quello del disegno sulla Wiki. Su Vin hai la tensione da misurare, R1 è da 15K, R2 è da 10K. Secondo la formula, a=R2/(R1+R2) ottieni 10/(15+10) quindi a=0,4. Se moltiplichi a*12 ottieni 4,8V. Quindi il tuo partitore di tensione con un input di 12V restituisce un output su Vout di 4,8V, una tensione che rientra nel range di Arduino. Se sei sicuro che 12V sia il valore massimo, puoi evitare lo zener . Se non sei sicuro, metti un diodo zener (deve essere di questo tipo!) a protezione dell'ingresso dell'arduino in parallelo ad R2. Lo Zener è un diodo che si usa montato al contrario (con catodo verso positivo e anodo a massa) e che si usa come "valvola di sfogo" nel caso la tensione superi la soglia di intervento del diodo stesso: quindi un diodo zener da 5,1V fa passare tensione quando questa supera il suo valore.

Ciao Leo.

Chiarissimo. Quello che vorrei capire è: perchè una resistenza da 10K ed una da 15K? Cioè, basta che il risultato a sia 0.4?

Quindi andrebbero bene anche una R1 da 1K ed una R2 da 680Ohm e così via per tutte le combinazioni di R2/(R1+R2) in grado di dare come risultato 0.4?

La massa dell’arduino deve essere in comune con la massa del partitore?

Si usano comunque valori un po' altini per ridurre la corrente. In teoria potresti usare anche una R da 10 ohm ed una da 15 ohm ma nella pratica non va bene. Potresti anche usare 10 Megaohm e 15 Megaohm ma anche qui non va bene perché l'ADC interno (il convertitore analogico/digitale dell'Arduino) è tarato per lavorare con resistenze in ingresso sui 10K ohm. Se usi valori superiori dovresti campionare velocemente più letture per esser certo che il circuito RC (Resistenza/Condensatore) interno si carichi per bene.

Tutte le masse devono essere in comune.

Grazie per le spiegazioni. Tutto chiaro.

Vi ringrazio entrambi!

GS88: Ciao Leo.

Chiarissimo. Quello che vorrei capire è: perchè una resistenza da 10K ed una da 15K? Cioè, basta che il risultato a sia 0.4?

I livelli di tensione per il riconoscimento di uno stato LOW vanno da 0V a 0,9V circa; una tensione è invece riconosciuta come HIGH quando è >2,5V; quindi un qualsiasi valore tra 2,5V e 5V va bene; se tu usi una 12K ottieni una tensione di partitore pari a circa 5,4V, quando il segnale originario è di 12V, e questo non va bene, ecco perché ti ho consigliato il valore commerciale più prossimo, leggermente più alto, 4,8V vanno benissimo per un segnale HIGH.

Quindi andrebbero bene anche una R1 da 1K ed una R2 da 680Ohm e così via per tutte le combinazioni di R2/(R1+R2) in grado di dare come risultato 0.4?

come già ti ha spiegato Leo nel partitore deve scorrere una corrente sufficiente ad "attivare" il pin di Arduino, normalmente le resistenze di pull sono da 10K, quindi mi sono attenuto a questo range di valori; se le metti troppo basse fai scorrere una corrente eccessiva ed assolutamente inutile. Ma se, in altri casi, tu avessi bisogno di molta corrente potresti tranquillamente ricorrere ad un partitore a basso valore ohmico, tenendo conto ovviamente delle potenze in gioco, ai fini del calcolo del wattaggio delle R.

Lo zener ti consiglio di usarlo in ogni caso, è sembre buona norma prevedere una protezione di un ingresso che non tollera tensioni maggiori di quella per la quale è stata progettato.

Chiedo scusa se uppo il post, ma ieri spulciando in giro nella sezione playground ho trovato questo:

http://arduino.cc/playground/uploads/Learning/Level_shifting_4_arduino.pdf

A questo punto, meglio il partitore o farmi un piccolo pcb di interfacciamento esterno con lo schema di cui sopra?

Quello che non comprendo è poi come fare eventuali collegamenti lato sensore... Mi potete aiutare?

Grazie.

ciao io sto usando lo schema di dx per un sensore infrarossi, per un progetto di conteggio di semi su una macchina da seminare, sono soddisfatto, sono 6 sensori, quindi 6 optocupler montati su una schedina

stefano

Ciao Stefano grazie.

Lo schema non mi risulta difficile da comprendere... Non capisco però come alimentare il sensore che ho indicato :roll_eyes:

Va bene il Vo e la massa li porto al circuito di DX. Ma io vorrei poterlo alimentare con una batteria da 12V... come?

Grazie.