Sommario:

Measurino: una ruota di misurazione Proof of Concept: 9 passaggi
Measurino: una ruota di misurazione Proof of Concept: 9 passaggi

Video: Measurino: una ruota di misurazione Proof of Concept: 9 passaggi

Video: Measurino: una ruota di misurazione Proof of Concept: 9 passaggi
Video: Geometry: Measurement of Angles (Level 2 of 9) | Classifying Angles 2024, Luglio
Anonim
Measurino: una ruota di misurazione Proof of Concept
Measurino: una ruota di misurazione Proof of Concept

Measurino conta semplicemente il numero di giri di una ruota e la distanza percorsa è direttamente proporzionale al raggio della ruota stessa. Questo è il principio base di un contachilometri e ho iniziato questo progetto principalmente per studiare come mantenere il circuito (gestito da un microcontrollore Arduino), compatibile con diverse gamme di distanze, dai millimetri ai chilometri, e per valutare eventuali problemi o miglioramenti.

Passaggio 1: parti e componenti

  • Arduino Nano rev.3
  • Schermo OLED 128×64 (SSD1306)
  • Encoder rotativo fotoelettrico incrementale (400P/R)
  • Ruota in gomma per aeromodelli (51mm dia)
  • 2 pulsanti
  • batteria 9v

Passaggio 2: l'encoder

Il codificatore
Il codificatore
Il codificatore
Il codificatore

Per questo progetto ho testato diversi encoder rotativi economici, ma li ho immediatamente scartati per problemi di precisione/sensibilità. Quindi sono andato all'encoder rotativo fotoelettrico incrementale di DFRobot - 400P/R SKU: SEN0230. Questo è un encoder rotativo fotoelettrico incrementale industriale con materiale in alluminio, guscio in metallo e albero in acciaio inossidabile. Genera un segnale di impulso ortogonale bifase AB attraverso la rotazione del disco reticolo e del fotoaccoppiatore. 400 impulsi/giro per ogni fase e 1600 impulsi/giro per uscita 4 tempi bifase. Questo encoder rotativo supporta una velocità massima di 5000 giri/min. E può essere utilizzato per la misurazione di velocità, angolo, velocità angolare e altri dati.

L'encoder rotativo fotoelettrico ha un'uscita a collettore aperto NPN, quindi è necessario utilizzare resistori di pullup o abilitare il pull-up interno di Arduino. Sta utilizzando il chip regolatore di tensione 750L05, che ha un ingresso di alimentazione ad ampia gamma DC4.8V-24V.

Passaggio 3: sensibilità

sensibilità
sensibilità

Questo encoder rotativo optoelettrico ha davvero una grande sensibilità, che lo rende perfetto per applicazioni di controllo e posizionamento dell'albero. Ma per il mio scopo era troppo sensato. Con una ruota da 51 mm, questo encoder ha una sensibilità di 0,4 mm, il che significa che se la tua mano ha tremori minimi, verranno registrati. Quindi ho abbassato la sensibilità aggiungendo un'isteresi nella routine di interruzione:

annulla interruzione()

{ carattere io; i = digitalRead(B_PHASE); if (i == 1) conta +=1; altro conteggio -=1; if (abs(count) >= isteresi) { flag_A = flag_A+count; conteggio = 0; } }

Questo accorgimento è bastato per dare una buona stabilità alla misura.

Passaggio 4: misurazione

Seleziona la tua Unità di Misura (Decimale o Imperiale) e poi basta posizionare la ruota con il suo punto di contatto all'inizio della tua misura, premere il pulsante Reset e mantenerla in rotazione fino alla fine. Da sinistra a destra la misura aumenta e somma, da destra a sinistra diminuisce e sottrae. Puoi misurare anche oggetti curvi (la forma della tua auto, il corrimano di una scala a chiocciola, la lunghezza del tuo braccio dalla spalla al polso con il gomito piegato, ecc.).

Una rotazione completa di una ruota con diametro=D misurerà una lunghezza di D*π. Nel mio caso, con una ruota da 51 mm, questo è 16,02 cm e ogni tick misura 0,4 mm (vedi paragrafo Sensibilità).

Passaggio 5: assemblaggio

Il PoC è stato realizzato su una breadboard per dimostrare i circuiti. Ogni componente è stato collegato alla scheda e l'encoder rotativo è collegato a una morsettiera a vite a 2x2 poli. La batteria è una batteria standard da 9V e il consumo energetico totale del circuito è di circa 60mA.

Passaggio 6: codice

Per il display ho utilizzato l'U8g2lib che è molto flessibile e potente per questo tipo di display OLED, permettendo un'ampia scelta di font e buone funzioni di posizionamento. Non ho perso molto tempo a riempire il display di informazioni, in quanto si trattava solo di un Poc.

Per leggere l'encoder, sto utilizzando degli interrupt generati da una delle 2 fasi: ogni volta che l'albero dell'encoder si muove, genera un interrupt ad Arduino legato al crescere dell'impulso.

attachInterrupt(digitalPinToInterrupt(A_PHASE), interrupt, RISING);

Il display passa automaticamente da millimetri, a metri, a chilometri e (se selezionato da pulsante) da pollici, a iarde, a miglia, mentre il pulsante RST azzera la misura.

Passaggio 7: schemi

Schematico
Schematico

Passaggio 8: dal PoC alla produzione

Perché questa è una prova di concetto? A causa di molti miglioramenti che potrebbero/dovrebbero essere fatti prima di costruire un'attrezzatura completamente funzionante. Vediamo nel dettaglio tutti i possibili miglioramenti:

  • Ruota. La sensibilità/precisione di Measurino dipende dalla ruota. Una ruota più piccola potrebbe darti una maggiore precisione nella misurazione di piccole lunghezze (nell'ordine dei millimetri ai centimetri). Una ruota molto più grande con un braccio di estensione consentirà di camminare sulla strada e misurare i chilometri. Per le ruote piccole è da considerare il materiale: una ruota in gomma piena potrebbe deformarsi leggermente e compromettere la precisione, quindi in tal caso suggerirò una ruota in alluminio/acciaio con solo un nastro sottile per evitare slittamenti. Con una banale modifica del software (selezionare il diametro della ruota corretto con un interruttore), si potrebbero considerare ruote intercambiabili per adattarsi a qualsiasi misura, utilizzando un connettore a 4 pin (es.: porta usb).
  • Software. Aggiungendo un altro pulsante, il software potrebbe occuparsi anche di misurare aree di rettangoli o angoli di ampiezza. Consiglio inoltre di aggiungere un pulsante "Hold" per congelare la misura alla fine, evitando di muovere inavvertitamente la rotella prima di leggere il valore sul display.
  • Sostituire la ruota con una bobina. Per misure brevi (entro pochi metri) la ruota può essere sostituita con un rocchetto molleggiato contenente filo o nastro. In questo modo è sufficiente tirare il filo (facendo ruotare l'albero dell'encoder), prendere la misura e guardare il display.
  • Aggiungi la visualizzazione dello stato della batteria. Il pin di riferimento Arduino da 3,3 V (preciso entro l'1%) può essere utilizzato come base per il convertitore ADC. Quindi, eseguendo una conversione da analogico a digitale sul pin 3.3V (collegandolo ad A1) e quindi confrontando questa lettura con la lettura del sensore, possiamo estrapolare una lettura realistica, indipendentemente dal VIN (purché sia superiore a 3,4 V). Un esempio funzionante si può trovare in questo altro mio progetto.

Passaggio 9: Galleria di immagini

Consigliato: