Brainbooster
Encoder a infrarossi per Pico - parte I
Tutorials -
Sabato 26 Febbraio 2011 14:29
Scritto da Brainbooster

Costruisci un encoder per le ruote di Pico   (Parte I)

Ciao

Questa volta vedremo come costrure un aggeggio che ci permetta di avere un feedback (segnale di ritorno) dalla rotazione delle ruote dei nostri robot, e sapere quanta strada hanno percorso ed altri dati interessanti, quindi parliamo di un encoder rotativo.

Il Principio

Come vedete dalla foto in basso, le ruote di Pico hanno delle scanalature equidistanti fra loro, nel modello precedente ce ne erano solo 16, ma nella versione più recente ce ne sono 36, bene, il nostro encoder si basa sul conteggio delle scanalature che gli passano d'avanti, ed il metodo di rilevamento che ho scelto e quello riflettivo, cioè io invio un raggio infrarosso sulla ruota tramite un led ir, e leggo se viene riflesso o meno, mediante un fototransistor che mi darà in uscita una tensione proporzionale alla luce riflessa dalla ruota, con il risultato che durante la rotazione, la tensione in uscita dovrebbe rassomigliare ad un'onda quadra con tanti impulsi quante le scanalature, semplice no ?

 

 

Ora che abbiamo qualcosa da misurare (gli impulsi) che ci facciamo?

Dall'uscita del nostro sensore avremo un segnale che porta con sè il numero di impulsi letti che chiameremo ticks e che arduino può interpretare per costruire informazioni utili associandolo ad altre grandezze, per esempio, sappiamo che nella ruota ci sono 36 finestre equidistanti, quindi fra una finestra e l'altra ci sono 10° di differenza (360°/36 finestre), quindi considerando che la circonferenza della ruota che ha un diametro di 8cm possiamo pensare alla ruota come ad una torta divisa in 36 fette e scrivere :

Risoluzione = circonferenza /ticks

quindi (in mm)

Risoluzione= (80* 3.14 )/36

risolvendo avremo una precisione minima di 6,97mm,  che è la distanza che passa fra un tick e l'altro.

Con questi dati a disposizione possiamo pensare a molteplici applicazioni, tipo: sapendo che un giro completo sono 36 tick, possiamo contare quanto tempo ci mette la ruota per darli ed avere la velocità di rotazione, oppure sapendo che ad ogni tick corrisponde una differenza di 10° possiamo usare il servo a rotazione continua come se fosse un motore stepper con una risoluzione di 10° e 36 step/giro, oppure farci un contachilometri (magari kilometri :) ) sapendo che ogni click corrisponde a circa 7mm e che ogni giro completo corrisponde a 251mm circa ed altro ancora, lascio alla fantasia di tutti le altre applicazioni non citate.

Il circuito

Come si vede nello schema in basso il circuito è semplicissimo ed è composto essenzialmente da un sensore tipo TCRT5000 costruito da Vishay (il datasheet: http://www.vishay.com/docs/83760/tcrt5000.pdf)

 

TCRT5000TCRT_INT

 e da una resistenza insieme ad un trimmer o un potenziometro (più ingombrante), tutto qui (per adesso).

 

schema_base

 

 

 

 

 I valori dei componenti sono:

 R1= 220 Ohm 1/4W

 R3=Trimmer multigiri 10KOhm o potenziometro lineare di pari valore

 OS1= Sensore infrarosso a riflessione TCRT5000L

 SV1=connettore pin header maschio a 3 pin

 

 

Funziona in questo modo:

Quando è alimentato il led interno del tcrt5000 proietta un punto luminoso il cui riflesso è percepibile dal fototransistor al suo interno ad una distanza massima di 15mm, ma per fare in modo che ciò avvenga dovremo mettere R1 che con il suo valore serve a limitare la corrente massima che il diodo infrarosso piò assorbire da arduino durante il suo funzionamento,quindi una volta acceso il led passiamo al fototransistor..

Per calcolare la corrente che scorrerà nel diodo ir e limitarla a circa 20mA (su 60mA massimi) usiamo la formula:

Correnteche scorre nel diodo=(VCC (che è 5V) - forward voltage del diodo (che è 1.2v))/R(scegliamo 220 Ohm)

 quindi avremo circa 17mA con la resistenza da 220Ohm, sufficienti ad illuminare abbastanza e non abbagliare il fotoransistor con troppa luce.

Il fototransistor come noterete dallo schema è un particolare tipo di transistor infatti non ha il collegamento alla base che invece viene eccitata direttamente dalla luce (da qui il loro nome), creando una corrente di base che lo manda in conduzione.

Continuando a guardare lo schema troviamo il trimmer (o potenziometro) che useremo per dosare l'ampiezza del segnale prelevato in uscita dal sensore e che andrà ad un pin di arduino.

Io per semplicità il primo prototipo ho deciso di assemblarlo su un ritaglio di basetta millefori che avevo sottomano, in questo modo, chiunque, senza perforza produrre un pcb , può ripetere l'esperienza con materiale faclmente disponibile.

e questo è il risultato di qualche minuto di saldature e di imprecazioni :)

 

 

come vedete dal dettaglio il pcb è diviso in 2 pezzi, il primo è quello che contiene l sensore e che tramite i contatti pieghevoli porta l'occorrente al resto della minibboard che invece è quello montato sftuttando le viti delle staffe dei servi.

Per il bloccaggio in posizione ho fatto due U con dei pezzetti di cavo e le ho saldate a mo di orecchie ai lati del pcb, se guardate attentamente vedrete il cavo fra i dadi sulle viti della staffa.

In pratica ho montato il sensore in modo che si affacciasse alla ruota di Pico ad una distanza di 6 / 7 millimetri.

 

 

nella prossima parte dell'articolo vedremo come collegare il sensore e come funziona il software che gira su arduino e che serve per decodificare i segnali elettrici provenienti dal nostro sensore e trasformarli in dati che si rapportino al mondo reale.

 

100_0933

 

Stay Tuned ;)

Ciao Divertitevi! by BrainBooster

 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi