Sensore di rotazione di Arduino. Tachimetro. Un esempio di funzionamento con una fotoresistenza e un display LCD HD44780 su Arduino. Circuito di interruzione del raggio IR
Il modulo sensore velocità motore è progettato principalmente per rilevare la velocità di rotazione dell'albero del motore elettrico. Questo modulo, insieme ad un microcontrollore, può determinare, oltre alla velocità, il numero di impulsi e la posizione dell'albero.
Tipicamente i sensori misurano una quantità registrando determinati eventi, quindi il numero di eventi è legato al periodo di tempo in cui si sono verificati.
La sezione che somma gli impulsi che arrivano in ingresso può essere elettromeccanica oppure elettronica integrata o a microprocessore. Un certo numero di impulsi elettromeccanici si possono trovare nella vostra abitazione come interruttore per l'illuminazione domestica. In precedenza, i topi utilizzavano codificatori ottici per contare i movimenti in base agli impulsi ricevuti.
In molti casi è sufficiente un semplice divisore di tensione. Per contare la velocità del motore, dobbiamo collegare l'encoder rotativo al rotore. Nell'immagine il motore è dotato di un disco che alterna parti nere e parti trasparenti. Sensore a infrarossi la prossimità rileva quando entra in contatto con una superficie nera e quando la superficie è trasparente.
Quindi in questo caso viene misurata la velocità: qui gli eventi significano impulsi ricevuti come risultato del funzionamento di un sensore ottico durante la rotazione di un disco con fessure. Il sensore è costituito da un LED e un fototransistor, che rileva la presenza o l'assenza di luce dal LED.
Schema
Il circuito presentato può essere utilizzato per inviare impulsi registrati a un microcontrollore. La base dello schema è sensore ottico OS25B10 (OC1) con LED e uscita fototransistor.
In questo modo si creano degli impulsi luminosi che attraverso il sensore di prossimità diventano impulsi elettrici. Se conti gli impulsi puoi calcolare posizione angolare disco e quindi il rotore. Avendo fatto esempio pratico, possiamo supporre che il disco abbia 36 frammenti neri e 36 trasparenti. Ciò significa che per ogni asse completo dell'asse motore la fotocellula genera 36 impulsi elettrici. Se durante un intervallo di tempo di 1 secondo di 360 impulsi il motore fa 10 giri al minuto in un secondo.
In questo modo conosciamo la velocità, ma non la direzione in cui si muove il motore. Per saperlo dobbiamo avere due fotocellule posizionate in due posizioni diverse. Quando si ruota il pin dell'encoder vengono generati due segnali elettrici in quadratura, per questo vengono definiti perché sfalsati di 90° elettrici. Questi due impulsi forniscono la velocità di rotazione del perno nonché la direzione calcolata “vedendo” quale dei due impulsi viene prima dell'altro.
Il successivo è il doppio comparatore IC LM393 (IC1), configurato come un semplice trigger Schmitt. LED verde(LED1) indica la presenza di tensione applicata al circuito e il LED rosso (LED2) monitora l'uscita del modulo sensore velocità motore. Raccomandato tensione operativa modulo è compreso tra 4,5 e 5,5 V.
In alcuni casi non è necessario calcolare la velocità, ma solo la quantità di rotazione del perno dell'encoder. Esistono almeno due modi per determinare il numero di impulsi prodotti dall'encoder. Decodifica lo stato che cambia nel tempo ed estrae informazioni. . Se possibile, è meglio utilizzare un circuito antirimbalzo, che elimina i falsi contatti che possono far sì che l'encoder conteggi impulsi errati. Il diagramma dell'immagine seguente presenta due versioni con un errore.
Vengono utilizzati solo condensatori. Ad ogni rotazione dell'encoder i segnali elettrici cambiano in base al senso di rotazione. Le frecce indicano i cambiamenti del segnale. Il programma utilizza i pin 2 e 4 per calcolare i clic dell'encoder e il pin 3 per rilevare l'attivazione del pulsante. Ogni volta che l'encoder ruota, il programma invia un aggiornamento generale dei click effettuati sulla porta seriale. Ogni volta che si preme un pulsante, questo viene scritto sulla porta seriale del "pulsante premuto" e il numero totale di scatti viene azzerato.
Si noti che il resistore R1 (180 ohm) viene utilizzato qui per limitare la corrente operativa del LED all'interno del sensore ottico OS25B10 (OC1). Se necessario, puoi modificarne il valore per il tuo prototipo. Puoi anche regolare il valore del resistore R2 (10 kOhm) per ottenere la tensione richiesta per il tuo circuito. Il resistore R7 (10KΩ) è un resistore pull-up opzionale.
Vista dall'alto di un codificatore rotativo con un'associazione tra il nome del pin e la sua posizione. Vista laterale dal lato encoder. E chi non vorrebbe usare Arduino come lui? Esistono circuiti integrati che fungono da contaimpulsi. Puoi vedere circuito elettrico, che può essere utilizzato anche con un encoder in quadratura.
Segnali elettrici dell'encoder rotativo
Il sensore rotante ruota in senso orario con un movimento lento. Tutti i segnali sono in logica positiva. Il sensore rotante ruota in senso orario con movimento rapido. Contemporaneamente, come nel caso precedente, si hanno 15 variazioni di segnale, che corrispondono al numero di frame dell'encoder reale.
Disco codificatore
Un disco codificatore posizionato nello slot del sensore divide il sensore ottico in modo che vi sia un LED su un lato del disco e un fototransistor sull'altro lato. Se il percorso del raggio luminoso proveniente dal LED non è bloccato dal disco, il fototransistor passerà corrente, altrimenti verrà chiuso.
In questo articolo mostrerò come utilizzare un normale LED e una fotoresistenza per creare un contagiri, un misuratore della velocità di rotazione del motore. E per renderlo più interessante, i dati ricevuti verranno visualizzati sul display LCD, avevo appena in giro un modulo HD44780, può visualizzare i dati su due righe di 16 colonne.
Come funziona una fotoresistenza?
Una fotoresistenza è un semiconduttore che cambia la sua resistenza a seconda della quantità di luce che lo colpisce. Più luce c'è, minore è la resistenza. Questa capacità ci aiuterà nell'implementazione del contagiri. Utilizzeremo un LED per illuminare la fotoresistenza da una breve distanza - 1,5-2 centimetri. E con l'aiuto di Arduino monitoreremo quale tensione passa attraverso la fotoresistenza; se la tensione diminuisce, significa che qualcosa sta bloccando la luce. Se metti una lama sull'albero del motore e la costringi a ruotare tra il LED e la fotoresistenza, puoi scoprire quanto spesso la lama blocca la luce. E poi spetta al tecnico effettuare un paio di dozzine di misurazioni, calcolare la media aritmetica per una misurazione più accurata e convertire questi dati nel numero di giri al minuto.
Durante il primo test, si è scoperto che il motore su cui ho testato ruota a una velocità di quasi 12mila giri al minuto. Mi è subito venuto in mente il pensiero che ci fosse un errore nei calcoli da qualche parte o che arduino non elaborasse correttamente i dati della fotoresistenza. Ho dovuto rallentare il motore utilizzando il potenziometro e anche i dati hanno iniziato a rallentare. I giri scesero a due, e poi a mille al minuto. Tutto ha funzionato ed è stato calcolato correttamente. Ma con l'aumento massimo dei giri, sono risultati gli stessi 12mila, ho dovuto cercare la scheda tecnica del motore e si è scoperto che la sua velocità di rotazione normale è di 11,5 -12,5mila giri. Cioè, tutto funziona correttamente. Non avrei mai pensato che un motore così piccolo potesse ruotare a una tale velocità.
Di seguito sono riportate due fotografie, una mostra come si trovano il LED e la fotoresistenza, e nella seconda è stato aggiunto un motore, la cui velocità di rotazione verrà misurata.
Trasmissione dei dati al display LCD HD44780 utilizzando Arduino
Per lavorare con il display HD44780 è molto comodo utilizzare il modulo di interfaccia I2C. Esistono moduli e display LCD venduti separatamente, ma spesso saldati insieme come set. Consiglio di utilizzare quelli già assemblati tra loro, perché se vi connettete senza I2C, dovrete collegare il display utilizzando 16 fili, quando tramite I2C il loro numero si riduce a 4, di cui due di alimentazione. E gli altri due fili sono collegati ai pin A4 e A5 di Arduino.
Per rendere più comodo e comodo il controllo dell'output dei dati sul display, è possibile utilizzare la libreria LiquidCrystal_I2C.
Di seguito è riportato uno schema per collegare il display, nonché un LED con una fotoresistenza all'arduino.
Cosa è stato utilizzato nel progetto:
- Arduino (ho usato arduinouno, ma puoi usarne un altro). L'ho comprato qui: arduino uno
- 1 resistori con una resistenza di 300 Ohm. L'ho comprato qui:
- 1 resistori con una resistenza di 10 kOhm. L'ho comprato qui: un set di resistenze da 700 pz. Da 10 ohm a 1 megaohm
- 1 LED. L'ho comprato qui: 100 LED, 10 colori diversi
- Display LCD Hd44780 con modulo I2C. L'ho comprato qui: display LCD Hd44780 con modulo I2C
- Fotoresistore. L'ho comprato qui: Fotoresistori, 20 pz.
Schizzo di un contagiri su arduino
Di seguito è riportato uno schizzo con commenti dettagliati e puoi anche scaricarlo sul tuo computer: download.
// librerie con cui lavorare Display LCD tramite I2C #include
Serial.println(maxLight);
ritardo(500);