Sensore Sharp – controllo posizione

—-articolo da completare——-

Dopo ulteriore prove (e soprattutto una fruttuosa ricerca su internet) sono riuscito a capire come poter adattare la curva di sensibilità del sensore e linearizzarla grossolanamente via software.

L’articolo originale lo potete trovare qui:

Voltage-to-Range Conversion Article

Alla fine abbiamo la formula linearizzata:

R = (m’ / (ADC + b’)) – k’

(ne esiste una versione anche per uP con floating point, ma non è il mio caso).

I parametri m’, b’, k’ si ottengono prendendo alcune misure e inserendole in questa tabella –>  gp2d12_calc, ancora una volta messa a disposizione dalla Acroname Robotics.

Nel mio caso, con ADC a 8bit, Supply voltage 5 V e costante k = 4 (come suggerito dal documento); si ottiene:

m’ = 1697

b’ = -1

k’ = 4

In questo modo si ottiene un incremento lineare (o quasi) della tensione con il diminuire della distanza (tra 80 cm e 10 cm).

Altro punto da rivedere: gestione dell’ADC.

Utilizzo l’ADC0804LCN con risoluzione a 8 bit, che permette una precisione sicuramente superiore al necessario; una volta che il sensore effettua la misura, dopo un intervallo di circa 5ms lascia in uscita la tensione corrispondente alla distanza; l’adc campiona il valore e dopo 5us l’8515 riceve i dati sui piedini della porta A.

Il convertitore penso di impostarlo come self-clocking, ovvero l’impulso di clock non proviene dal uP (circuito RC in figura)

interfaccia

(figura da datasheet ADC)

Attraverso i tre bit /CS, /RD, /WR avviene il controllo da parte del uP.

Lettura dati&gestione memoria

Gli otto bit provenienti dal convertitore vengono salvati nei registri interni, linearizzati e successivamente salvati nella ram (sempre interna). Il trasferimento definitivo avviene nel periodo morto tra una lettura e un’altra e consente una successiva elaborazione dei dati e, soprattutto, il confronto tra loro (possibile implementare mappatura o una più razionale scelta di direzione).

Nella ram vengono memorizzate tutte le letture corrispondenti alle x letture del sensore (o perlomeno alle x posizioni scelte per il motore).

Prima di essere trasferite in ram è possibile implementare un algoritmo di scelta della direzione basato sul confronto delle ultime 10 letture;

Questa voce è stata pubblicata in Tech Corner e contrassegnata con , , , . Contrassegna il permalink.