Collegare un contagiri ad Arduino. Contagiri basato su Arduino. Trasmissione dei dati al display LCD HD44780 utilizzando Arduino

Un contagiri è uno strumento utile per contare gli RPM (giri al minuto) di una ruota o di qualsiasi cosa stia girando. Il modo più semplice per realizzare un contagiri è utilizzare un trasmettitore e un ricevitore IR. Quando la connessione tra loro si interrompe, sai che qualcosa sta girando e puoi utilizzare il codice per calcolare gli RPM in base alla frequenza dell'interruzione della comunicazione.

I sistemi affidabili per il monitoraggio e la diagnosi delle macchine con i segnali di ingresso di misura corretti sono molto apprezzati. Un tachimetro è un dispositivo che misura i giri al minuto di un motore o del rotore di una turbina. Vengono utilizzati per tenere traccia delle velocità che abbiamo durante il processo di allenamento, il che ci farà sapere se funziona come previsto. Con questo tipo di strumento evitiamo l'arresto dell'attrezzatura e siamo in grado di eseguire la manutenzione al momento giusto. Può essere utilizzato anche per conoscere le distanze percorse da ruote, ingranaggi o strisce. Questo lavoro si basa principalmente sulla realizzazione di un dispositivo in cui è possibile osservare il controllo del motore e misurarne la velocità utilizzando un dotamometro digitale. La ragione di questo tipo di conversione è che è molto più semplice trasmettere e decodificare con precisione una serie di impulsi rispetto a segnale analogico, soprattutto se la distanza su cui deve essere trasmesso il segnale è lunga e rumorosa. In questi casi, un convertitore frequenza-tensione verrà posizionato all'estremità della linea di trasmissione per produrre nuovamente un segnale analogico. L'applicazione più comune dei convertitori frequenza-tensione è nella misurazione della velocità del motore, dove una serie di impulsi proporzionali alla velocità del motore vengono generati in un segnale analogico che deve essere misurato ed eventualmente utilizzato anche per controllare la velocità. La linearità di questa tensione è tipicamente pari al 3% del fondo scala. Per questo motivo non interferisce con l’equazione della scala di conversione. L'ingresso analogico carica il campione e lo trattiene in un condensatore. Il segnale di uscita campionato e memorizzato in un condensatore costituisce l'ingresso al convertitore. Il convertitore genera quindi un risultato digitale a livello analogico utilizzando approssimazioni successive. Questi registri sono:  Record del risultato di fascia alta  Record del risultato basso  Registro di controllo 0  Registro di controllo 1 6 Bit 6-4: Non implementato, letto come Il duty cycle di un segnale periodico è la larghezza relativa del suo lato positivo rispetto a il periodo. Nei motori, la modulazione della larghezza di impulso è una tecnica utilizzata per controllare la velocità di rotazione dell'induzione elettrica o motori asincroni. Mantiene una coppia costante e non consente sprechi energia elettrica. Altri sistemi di controllo della velocità variano tensione elettrica, riducendo la coppia del motore; o incolla resistenza elettrica, perdendo così energia sotto forma di calore in questa resistenza. 10. Qualche settimana fa abbiamo aperto una serie di post sui sensori, e il primo a cui siamo arrivati ​​è stato.

In questo articolo vedremo come utilizzare un trasmettitore e un ricevitore IR per realizzare un tachimetro utilizzando Arduino. Il risultato viene visualizzato su un display LCD 16x2.

L'obiettivo di questo progetto è creare un sistema con un input e un output. All'ingresso del dispositivo è presente un segnale che cambia dal livello alto (+5 V) a quello basso (+0 V) quando la comunicazione viene interrotta. In base a questo segnale, Arduino incrementerà il contatore interno. Quindi essere eseguito lavorazioni aggiuntive e calcolo, e quando il trigger viene interrotto, il numero di giri calcolato verrà visualizzato sul display LCD.

Un sensore molto economico che ha applicazioni interessanti. Questo sensore è ottimo per rilevare gli ostacoli davanti a te e ha diverse applicazioni nella robotica. Lo abbiamo già visto utilizzato per creare robot seguaci di linea, così come nei robot da battaglia di sumo per evitare che lasci il campo di battaglia. In entrambi i casi, riflessivo sensore ottico utilizzato per rilevare le linee di demarcazione che definiscono il percorso che il robot dovrebbe seguire o i confini del campo di battaglia.

Contiene due componenti fissati a un inserto in plastica. Il suo funzionamento è molto simile a quello di un transistor, ha un collettore, un emettitore e la base è quella che in questo caso si attiva dopo aver ricevuto il raggio di luce infrarossa. Quindi questi due componenti lavorano insieme. Tieni presente che il colore e il materiale dell'oggetto possono influire sulle prestazioni del sensore. Ci sono materiali che riflettono meno luce di altri. Un esempio di ciò sono gli oggetti neri, che non sono buoni riflettori, soprattutto se la loro superficie non è liscia.

Per la comunicazione utilizzeremo un raggio IR proveniente da un LED IR collegato tramite un resistore a bassa resistenza in modo che si illumini intensamente. Utilizzeremo un fototransistor come ricevitore, che “si chiude” in assenza di luce dal LED IR. Una ventola del computer verrà posizionata tra il trasmettitore IR e il ricevitore e accesa. Un ricevitore IR collegato tramite un circuito a transistor genererà interruzioni. Per l'output verrà utilizzato il risultato Display LCD dell'Arduino interfaccia in modo da poter visualizzare il valore RPM finale sul display LCD.

Anodo LED Catodo LED Collettore di fototransistor Emettitore di fototransistor. Per questo progetto avrai bisogno dei seguenti componenti. Lo schema di collegamento è simile al seguente. Come puoi vedere, questo è molto circuito semplice. I sensori ad effetto Hall vengono utilizzati per rilevare la vicinanza di un magnete. Possono essere utilizzati anche come sensore di posizione, encoder, rilevamento della rotazione.

Inizialmente, il primo utilizzo di questa scoperta si concentrò sulla classificazione periodica elementi chimici. I sensori ad effetto Hall venivano utilizzati per misurare campi magnetici costanti o statici, ma richiedevano che il sensore fosse in movimento. Ciò ha creato quello che oggi chiamiamo classicamente uno switcher con effetto Hall con uscita digitale.

Elementi:

Consiglio di sviluppo

Resistenza trimmer 5 kOhm

Ponticelli

connettori SIP

2xtransistor NPN 2N2222

LED a infrarossi

Fototransistor

Resistenza da 10 ohm

Resistenza 100 kOhm

Resistenza 15 kOhm o 16 kOhm

Ventola del computer

Elenco dettagliato degli articoli

Tutti gli elementi utilizzati nel progetto sono elencati sopra, ma descriverò più in dettaglio le funzioni degli elementi principali.

Evoluzione continua della tecnologia dei trasduttori Hall, tenendo conto della progressione dei componenti a elemento singolo in componenti ortogonali a due elementi. Ciò è stato fatto per ridurre la differenza di potenziale Hall tra i terminali. La progressione successiva portò alla creazione di convertitori quadratici a quattro elementi. Questi 4 elementi sono disposti ortogonalmente in una configurazione a ponte. Tutti questi sensori in silicio sono realizzati con composti bipolari.

Ciò consente di ridurre la differenza di potenziale di errore all'ingresso dell'amplificatore operazionale. Tutti gli errori che si verificano in circuiti non stabilizzati portano a errori di commutazione o differenze di potenziale o errori di guadagno sul sensore di uscita lineare. Questo meccanismo elimina le tipiche differenze di potenziale di interferenza negli elementi ad effetto Hall dei semiconduttori. Compensa anche la temperatura e le induzioni causate da differenze di potenziali parassiti.

Arduino UNO

Questo Scheda Arduino, che utilizzeremo per elaborare gli impulsi provenienti dall'interruzione del raggio IR, che segnalano la presenza di una ventola del computer tra il ricevitore e il sensore. L'Arduino utilizzerà questi impulsi insieme a un timer per calcolare il numero di giri della ventola.

Schermo LCD 16×2

Una volta che Arduino ha calcolato gli RPM, questo valore verrà visualizzato sul display in modo intuitivo.

Tutti questi miglioramenti si traducono in sensori ad effetto Hall affidabili. Il futuro vedrà sensori programmabili per creare sensori intelligenti. Il sensore ad effetto Hall non si attiva quando non è presente campo magnetico e si attiva in presenza di un campo magnetico, come mostrato nelle due figure successive.

Il campo magnetico terrestre non influenza il sensore ad effetto Hall. Alcuni magneti da frigorifero possono fornire un campo magnetico sufficiente per attivare il sensore. Il sensore è inattivo in assenza di campo magnetico. Quindi non succede nulla se davanti alla parte sensibile passa il polo nord del magnete.

Resistenza trimmer 5 kOhm

Questo trimmer verrà utilizzato per regolare il contrasto del display LCD 16x2. Fornisce una tensione analogica compresa tra 0 e +5V, consentendo di regolare la luminosità del display LCD.

LED a infrarossi e fototransistor

Il fototransistor si accende quando viene colpito da una potente luce IR. Pertanto, quando il LED IR è acceso, mantiene aperto il fototransistor, ma se il LED IR è coperto, ad esempio, da una ventola, il fototransistor è chiuso.

Il sensore utilizza una resistenza pull-up. Ciò significa che quando non è attivato, la tensione del pin 3 del sensore corrisponde alla tensione del resistore. Altrimenti, la tensione verrà applicata dalla resistenza al pull-up. Ecco una piccola anteprima video del risultato.

Ecco alcuni esempi di come implementare questo eccellente componente. Il grafico seguente mostra la variazione del campo magnetico in funzione della distanza. Nel grafico la distanza è espressa in millesimi di pollice. Pertanto il sensore è attivato. Il sensore è disabilitato.

2N3904 e 2N3906

Questi transistor vengono utilizzati per convertire il livello del segnale per fornire impulsi di uscita dal fototransistor ad Arduino, in cui non sono presenti tensioni diverse da +0 e +5V.

Diagramma schematico


Nel circuito l'interfaccia di comunicazione con il display LCD è semplificata e prevede solo 2 linee di controllo e 4 linee dati.

Utilizzando un sensore ad effetto Hall è possibile realizzare un azionamento invisibile o sigillato. Il sensore può essere sigillato in contenitori per l'uso in fluidi quali acqua, olio, ecc. È solo necessario che il contenitore sia permeabile al campo magnetico.

Interruzione rotazionale magnetica

Pertanto il sensore è attivo. Nella fig. Il sensore da 5V è inattivo perché il campo magnetico è bloccato da un ostacolo di ferro. Il sensore può essere incluso come interruttore nella velocità di rotazione o nel posizionamento. Tra le due finestre la parte metallica blocca il campo magnetico, quindi il sensore ad effetto Hall è inattivo.

Caratteristiche dello schema

Interfaccia LCD 16×2

2 pin di controllo e 4 per il trasferimento dei dati sono collegati da Arduino al display LCD. Questo è ciò che dice al display LCD cosa fare e quando farlo.

Circuito di interruzione del raggio IR

Il segnale di interruzione del raggio IR va al 2° digitale Perno dell'Arduino. Questo interrompe Arduino, permettendogli di contare gli impulsi e permettendo al tachimetro di ricevere i dati.

Questo è un principio ampiamente accettato nell'avviamento automobilistico e nei processi industriali in cui la conoscenza accurata della posizione è un elemento critico. Il sensore di attivazione del campo magnetico rotante in Fig. 7 viene tipicamente utilizzato per misurare la velocità di rotazione per sincronizzare gli impulsi con la posizione. Il sensore si attiva ruotando il magnete. Il sensore si spegne quando il polo nord del magnete passa davanti al sensore.

Un magnete circolare solido come mostrato in FIG. 7A è chiamato anello magnetico. L'anello magnetico contiene poli nord e sud alternati. Questo tipo di magnete può avere 2 poli magnetici con 36 poli magnetici. Il grafico sottostante mostra il transito tra il Polo Nord e il Polo Sud a diverse distanze.

Libreria LCD Arduino

Per questo progetto utilizzeremo la libreria LCD Arduino. Fondamentalmente aggiorneremo semplicemente il valore RPM sulla seconda riga a quello nuovo.

Per prepararti, dai un'occhiata al codice seguente, che utilizza questa libreria per visualizzare "Hello, World!" sul display LCD. Nel contagiri utilizzeremo un codice simile, in particolare: "lcd.print(millis()/1000);".

Rilevamento del livello - movimento

Si noti che il punto di transizione è effettivamente simile indipendentemente dalla distanza tra il sensore e il magnete. Un magnete separato è sospeso sopra il sensore. Il sensore si attiva non appena l'insieme non è più in piano. Un sensore a effetto Hall può essere utilizzato in combinazione con un elettromagnete per fornire un sensore di corrente altamente efficiente e isolato. Questo può essere utilizzato per proteggere i componenti dai danni causati dal sovraccarico.

Gli unici componenti richiesti sono un sensore ad effetto Hall e un toroide in ferrite. Conosciuti anche come misuratori di portata, i misuratori di portata utilizzano in genere sensori a effetto Hall. Misurano i flussi di liquidi e gas. Questi ultimi sono molto apprezzati nel mezzo, dice “l’atmosfera esplosiva”.


Comprendere le funzioni di questa libreria LCD nel modo più dettagliato possibile prima di procedere. Non è troppo complicato ed è ben documentato sul sito web di Arduino.

Calcolo RPM utilizzando Arduino

Poiché stiamo per calcolare il numero di giri della ventola di un computer, dobbiamo capire che stiamo utilizzando l'interruzione del raggio IR per il calcolo. Questo è molto comodo, ma dobbiamo tenere presente che la ventola del computer ha 7 pale. Ciò significa che 7 interruzioni equivalgono a 1 giro.

Nessun contatto = nessuna scintilla = nessuna esplosione! Puoi anche sfruttare l'effetto repellente di un secondo magnete per evitare l'uso di una molla. Un'altra applicazione elementare è il rilevamento del livello. Come mostrato nella foto qui sotto, sistema idraulico si muove fino a raggiungere una determinata posizione.

Ciò può essere molto utile nelle applicazioni di tipo robotico in cui la precisione della posizione è estremamente importante. I denti di un ingranaggio sono in realtà un mezzo in cui la conduttività magnetica cambia a seconda della posizione della ruota. Il grafico seguente mostra molto chiaramente questo cambiamento nel campo magnetico.

Se stiamo monitorando gli interrupt, dobbiamo sapere che ogni 7 interrupt significa che è appena avvenuta 1 rotazione completa. Se teniamo conto del tempo necessario per completare una rivoluzione, possiamo facilmente calcolare gli RPM.

Tempo della prima rivoluzione = P * (μS/giro)

Giri/min = giri/min = 60.000.000 * (μS/min) * (1/P) = (60.000.000 / P) * (giri/min)

Si noti che il sensore ad effetto Hall è posizionato tra il dente e il magnete. I sensori ad effetto Hall possono essere utilizzati anche per rilevare e monitorare con precisione la rotazione dei motori brushless. In tutti i casi, è necessario ottenere anche il consenso del detentore originale del copyright.

Tutti i diritti sul loro materiale appartengono a loro. Il contaimpulsi serve a contare gli impulsi elettrici provenienti dai sensori, cioè a determinarne la quantità in base ad un'unità di tempo. I sensori sono solitamente tachigrafi o sensori di posizione. Servo nei robot per determinare il percorso e la direzione.

Per calcolare l'RPM utilizzeremo la formula sopra riportata. La formula è precisa e la precisione dipende da quanto bene Arduino riesce a tenere traccia del tempo tra le interruzioni e a contare il numero di giri completi.

Assemblaggio del circuito

Nella foto qui sotto potete vedere tutto dettagli necessari e ponticelli come nello schema.


Il numero di impulsi può essere utilizzato per contare le persone che entrano in un locale o in una fiera. Esistono contatori di energia che emettono impulsi proporzionali ai watt consumati. Attualmente i contatori dell'acqua e del gas possono essere dotati anche di uscite impulsive per il conteggio dei consumi.

Come funziona un contaimpulsi?

Sono presenti potenziometri con sensore di rotazione interno per impostarne la posizione. Il numero di impulsi può essere suddiviso in almeno tre parti principali. La base temporale può essere corretta con un tempo o un'atemporalità specifici. Ogni impulso incrementa il contatore, incrementando il numero memorizzato. Una volta trascorso il tempo massimo di conteggio, il numero viene visualizzato sul display o su un altro dispositivo di visualizzazione. Il contatore e il timer vengono ripristinati e contano gli impulsi in ingresso.

Per prima cosa collegare +5V e le linee dati/controllo del display LCD. Poi display LCD, potenziometro del contrasto e LED di accensione.


Il circuito per l'interruzione del raggio IR è assemblato. Cerca di mantenere una certa distanza tra il LED IR e il fototransistor. Questa foto mostra la distanza tra il LED IR e il fototransistor dove posizionerò la ventola del computer.


Basta parlare di hardware! Iniziamo a creare il firmware/programma per vedere come funziona il dispositivo!

Parte software

Ci sono due parti principali del codice, che sono mostrate e dettagliate di seguito:

Ciclo di aggiornamento LCD di base

Aggiornamento dell'ora di interruzione

Il ciclo principale conta i giri e gli aggiornamenti del display LCD. Poiché il ciclo principale è un gigantesco ciclo while(1), sarà sempre in esecuzione, verranno conteggiati gli RPM e il display LCD verrà aggiornato più volte al secondo. La funzione nell'interrupt conta il tempo tra gli interrupt IR, quindi puoi contare gli RPM nel ciclo principale.

Ricorda che la ventola di un computer ha 7 pale, quindi questo contagiri è progettato per funzionare solo con quelle ventole. Se la ventola o un altro dispositivo produce solo 4 impulsi per giro, modificare il codice in "(time*4)".

Ecco un video dimostrativo di come funziona il contagiri.

Le due ventole funzionano a circa 3000 RPM e 2600 RPM, con un errore di circa +/-100 RPM.

Recensione del contagiri su Arduino

La ventola genera impulsi di interruzione e in uscita vediamo RPM. Sebbene la precisione non sia del 100%, ma di circa il 95%, con il costo degli elementi di 10 dollari, ha senso costruire questo contagiri su Arduino.

Cosa fare adesso?

I sistemi basati sulla rottura del fascio sono utili non solo per le misurazioni RPM, ma anche come altri sensori. Ad esempio, vuoi sapere se una porta è aperta o chiusa. Forse vuoi sapere se qualcosa passava sotto il robot. Esistono molti usi per l'interruzione del raggio e il circuito utilizzato qui è così semplice che ci sono molti modi per migliorarlo e costruire altri fantastici dispositivi.

Conclusione

Nel complesso, considero questo progetto un successo... Ma è una questione di tempo ed esperienza.. In un modo o nell'altro, il sistema funziona come previsto e in modo abbastanza affidabile, e abbiamo ottenuto il risultato atteso. Spero che ti sia piaciuto leggere questo articolo e imparare come creare il tuo contagiri usando Arduino!

Articolo originale su Inglese(traduzione: Aleksandr Kasjanov per il sito cxem.net)

Sensore di velocità di rotazioneFC -03

Modulo sensore velocità di rotazione o movimento lineare. Tipo di modulo FC-03. È progettato per controllare i parametri meccanici delle parti mobili di vari meccanismi per scopi domestici ed educativi. Se installato su piattaforme di base di piccola robotica, consente di assemblare sistemi di controllo motorio e stabilire il controllo del movimento degli oggetti.

Installazione del sensore di velocità di rotazione FC-03 sul telaio di un robot su ruote.

Caratteristiche

Alimentazione 3,3 - 5 V
Larghezza libera per disco scanalato 5 mm
Dimensioni modulo 38 x 14 x 7 mm
Foro di montaggio per vite da 3 mm

ContattiFC-03



I contatti sono segnati sulla lavagna.

VCC - alimentatore.
GND- filo comune, alimentazione negativa.
DO - uscita del segnale a impulsi.
AO - uscita diretta dal fotoaccoppiatore ITR9608.

Principio di funzionamento


L'elemento sensibile del modulo è una coppia ottica ITR9608. In una sporgenza dell'alloggiamento è presente un LED a infrarossi diretto verso un fototransistor situato nell'altra sporgenza. Se si inserisce una piastra opaca nello spazio tra le sporgenze, la radiazione IR del LED viene bloccata e il fototransistor viene chiuso. Tale componente è talvolta chiamato fotointerruttore, ma rileva solo l'interruzione flusso luminoso. Come mostrato nello schema, dall'emettitore del transistor il segnale entra nel circuito del dispositivo.

La luce è bloccata da una piastra fissata alla parte mobile del meccanismo controllato. Utilizzando il sensore, il movimento verso le posizioni estreme del piano in movimento viene determinato quando l'elemento strutturale ad esso associato entra nel sensore. Misurano i parametri di rotazione di varie parti meccaniche. Ecco come vengono convertiti i parametri meccanici grandezze elettriche e ulteriormente nei valori del programma.

Il sensore di velocità di rotazione FC-03 viene utilizzato per misurare la velocità di rotazione. Non può essere utilizzato per determinare la direzione di rotazione. Un disco con fori è installato sull'albero motore o sul cambio. Il fotoaccoppiatore del modulo ha uno slot largo 5 mm. Quando il disco ruota, come mostrato nell'animazione, nella fessura si alternano costantemente fori e sezioni della piastra. Il sensore converte l'alternanza degli elementi del disco in impulsi elettrici. L'elettronica del modulo rende il segnale del sensore adatto alla percezione digitale chip logici o microcontrollore.

SchemaFC-03




Il segnale da ITR9608 va all'ingresso del comparatore LM393, dalla sua uscita al pin D0 e l'indicatore LED si accende segnale digitale costituito da livelli logici alto e basso. Il segnale sull'uscita A0 proviene direttamente dall'ITR9608 senza conversione in livelli logici. L'uso del comparatore LM393 consente di ottenere fronti di impulso lisci e aumentare leggermente il carico di corrente dell'uscita del sensore, installare un LED nel circuito che indica lo stato dell'uscita.

Indicazione

Sulla scheda sono presenti 2 LED. Uno mostra l'attivazione del sensore di velocità di rotazione FC-03, l'altro mostra l'assenza di ostacoli nel sensore. Quando accendi il dispositivo per la prima volta, entrambi i LED dovrebbero accendersi. Quando si introduce una piastra metallica spazio libero interruttore, un LED dovrebbe spegnersi.

Applicazione

Utilizzando il sensore, è possibile misurare non solo la velocità di rotazione e l'accelerazione, ma anche la distanza percorsa dal robot su ruote e registrare la vita utile del motore. È particolarmente importante controllare la velocità di rotazione delle ruote quando ciascuna ruota è azionata dal proprio motore. Per il movimento in linea retta, le velocità di rotazione di tutte le ruote devono essere uguali e, durante la svolta, obbedire all'algoritmo del sistema di controllo.


Mentre il disco ruota, un numero noto di fori attraversa la fessura del sensore in un giro. Contando il numero di fori, puoi determinare 1 giro della ruota o, ad esempio, 15,5 giri. Misurando il numero di giri nell'unità di tempo, otteniamo la frequenza di rotazione della ruota, e quindi la velocità dell'oggetto. Sulla base dei segnali provenienti dal sensore e avendo un valore esatto degli intervalli di tempo, il dispositivo calcola i parametri di movimento. L'uso di un microcontrollore è rilevante qui.
Il seguente programma Arduino consente di determinare il numero di giri al minuto e visualizza i risultati nella finestra del terminale seriale.

#define PIN_DO 2 // Imposta il pin utilizzato in Arduino
impulsi interi volatili senza segno;
giri/min flottante;
non firmato da molto tempoOld;
#define HOLES_DISC 15

Contatore vuoto()
{
impulsi++;
}

Configurazione nulla()
{
Serial.begin(9600);
modalità pin(PIN_DO, INPUT);
impulsi = 0;
tempoVecchio = 0;

}

ciclo vuoto()
{
if (millis() - timeOld >= 1000)
{
detachInterrupt(digitalPinToInterrupt(PIN_DO));
giri/min = (impulsi * 60) / (FORI_DISC);
Serial.println(rpm);

TimeOld = millis();
impulsi = 0;
attachInterrupt(digitalPinToInterrupt(PIN_DO), contatore, FALLING);