Anteprima
Vedrai una selezione di 5 pagine su 19
Sistema di acquisizione delle inclinazioni e dei movimenti della mano tesina Pag. 1 Sistema di acquisizione delle inclinazioni e dei movimenti della mano tesina Pag. 2
Anteprima di 5 pagg. su 19.
Scarica il documento per vederlo tutto.
Sistema di acquisizione delle inclinazioni e dei movimenti della mano tesina Pag. 6
Anteprima di 5 pagg. su 19.
Scarica il documento per vederlo tutto.
Sistema di acquisizione delle inclinazioni e dei movimenti della mano tesina Pag. 11
Anteprima di 5 pagg. su 19.
Scarica il documento per vederlo tutto.
Sistema di acquisizione delle inclinazioni e dei movimenti della mano tesina Pag. 16
1 su 19
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi
Sistemi automatici - Stabilità
Elettronica ed Elettrotecnica - Filtri (passa basso, passa alto)
Estratto del documento

CANOVA

5 19

Pag. di

Lo schema a blocchi del prodotto si divide in due sotto schemi, per la

base e per la penna.

La penna è costruita attorno ad un

microprocessore Attiny 85, le cui specifiche

tecniche sono riportate nel datasheet (Allegato 1),

alimentato da una batteria LiPo ricaricabile tramite

l’apposito dock di ricarica.

Al microprocessore è collegata un IMU (“Inertial

Measurement Unit” o “Unità di Misurazione

Inerziale”) a 6 gradi di libertà, ossia il movimento

nei tre assi e la rotazione attorno a questi,

composta da un accelerometro ADXL345 e da un giroscopio ITG3200.

Oltre all’IMU, sulla penna sono presenti quattro led infrarossi posti a

90° d’inclinazione l’uno dall’altro sulla circonferenza della penna e un

modulo radio ricetrasmittente usato solo Attiny 85

come trasmettitore.

La base è costruita attorno ad un

microprocessore Atmega2560 basato su

piattaforma Arduino Mega, le cui

specifiche sono riportate sul datasheet

(Allegato 2), alimentato tramite la porta

USB che funge anche da mezzo di comunicazione con il computer.

Sulla piattaforma Arduino è montata la scheda di controllo che

gestisce le fotocamere ed il modulo ricetrasmittente, usato solo nella

sua funzione di ricevitore. Arduino Mega

6 19

Pag. di

Principio di funzionamento

Dopo approfondite ricerche, si è giunti ad

implementare un sistema di rilevazione

basato su due fotocamere ottenute da

altrettanti telecomandi (“Wiimote”) della

nota console di videogiochi Nintendo “Wii”. Una delle fotocamere ottenute

Un Wiimote

Le fotocamere contenute nel telecomando hanno un filtro per raggi

infrarossi posto davanti alle lenti, che filtra tutta la banda di frequenza

che non sia quella della luce infrarossa compresa tra 430THz e

300GHz, oltre ad una lente dicroica che svolge lo stesso compito, ed

un microprocessore incorporato che legge i dati delle fotocamere, li

elabora, e restituisce con protocollo di comunicazione I2C (“Inter-

Integrated Circuit”) le coordinate sul piano parallelo a quello della

fotocamera di ogni punto nello spazio (fino a 4 in realtà) che emette

raggi infrarossi.

Si sono scelte tali fotocamere in quanto sono dotate di un

microprocessore interno che velocizza il calcolo delle coordinate e che

ricampiona l’immagine in uscita dalle fotocamere da una risoluzione di

7 19

Pag. di 128*64 pixel a 1024*768 pixel,

utilizzando l’interpolazione

bilineare.

La “penna” impugnata dall’utente ha quindi 4 led infrarossi posti a 90°

tra loro, led che vengono percepiti dalle fotocamere che, come si può

vedere dall’immagine, essendo poste

perpendicolarmente, restituiscono le

coordinate delle proiezioni nei due piani (y-z

ed x-z) della punta della penna.

Incrociando le coordinate così ottenute si

possono calcolare le coordinate nello spazio

tridimensionale della punta della penna.

Il pinout delle fotocamere è visibile in figura.

Oltre all’alimentazione a 3.3V e i pin di massa,

sono presenti i 2 pin per la comunicazione I2C,

SDA ed SCL, 1 pin per il clock che aziona l’otturatore della fotocamera

ed un pin connesso al reset del microprocessore interno.

Inoltre, alle fotocamere è portato un pin aggiuntivo che fornisce

tensione al portabatterie del telecomando in quanto ci siamo accorti

che le fotocamere, dopo un certo periodo di inattività, entravano in

una sorta di “stand-by”, che interrompeva la comunicazione delle

coordinate. Il pinout delle

Dopo vari test siamo riusciti a capire che fotocamere

dando un impulso di tensione al portabatterie questa fase di standby

si interrompeva. 8 19

Pag. di Hardware

La base è costituita

essenzialmente da tre elementi

hardware, ossia il microcontrollore,

la scheda di controllo e le fotocamere.

La base La scheda di controllo è realizzata

su una basetta millefori su cui sono stati riportati con strip di

connettori maschio-maschio i pin della piattaforma Arduino, cui vanno

a connettersi i vari elementi circuitali.

È provvista innanzitutto di un diodo led di segnalazione il cui catodo è

connesso al pin 13 dell’Arduino, mentre l’anodo a massa tramite una

resistenza da 470Ω (R8), che fornisce un utile indicatore in caso di

errori del sistema o per comunicazioni all’utente.

La resistenza è stata calcolata in modo da mantenere una corrente di

circa 10mA sul diodo, abbastanza grande da avere un’emissione di

luce visibile e abbastanza piccola da non danneggiare l’uscita digitale

del microcontrollore, che può erogare fino a 40mA.

9 19

Pag. di

−V

V 5−0,7 E’ presente inoltre un pulsante tra il

cc soglia ≅

= =430Ω

R= 470Ω

I 10 m

pin RESET del microcontrollore e massa, in modo da poter

agevolmente resettare il microprocessore all’occorrenza.

Il circuito che genera il clock per le fotocamere è costituito da due

porte “NOT”, presenti nell’integrato 74HC04 (IC1), e un oscillatore al

quarzo, composto a sua volta da un quarzo a 20MHz (X1), due

resistenze da 1MΩ e da 47kΩ (R7, R6) e da due condensatori da 10pF

(C3, C4).

In parallelo all’alimentazione dell’integrato un condensatore

elettrolitico (C2) mantiene stabile la tensione e un condensatore

ceramico (C6) filtra eventuali disturbi.

Inizialmente l’integrato scelto era il 74LS04, che comprende sei porte

“NOT”, ma l’oscillatore così realizzato non riusciva a generare 20MHz,

in quanto l’integrato appartiene alla famiglia logica TTL (Transistor-

Transistor Logic) che, per limitazioni tecnologiche, non permette

commutazioni a tale frequenza.

Si è optato quindi di adottare l’integrato 74HC04 che appartiene alla

famiglia logica CMOS, che permette di arrivare alla frequenza di

20MHz.

Per quanto riguarda il reset delle fotocamere, essendo un active-low

(che si attiva cioè quando la tensione sul pin è zero) esso è mantenuto

costantemente a 5 volt dalla serie della resistenza R5, da 33kΩ, e del

condensatore C5, da 1nF.

La serie resistenza-condensatore costituisce un filtro passa-basso con

costante di tempo τ:

=R∗C=33

τ k∗1 n 33 μ s f

Quindi la frequenza di taglio :

T

1 1 ≅

= =

f 30 kHz

T τ 33 μ

La tensione è quindi filtrata, in modo da renderla il più stabile

possibile. 10 19

Pag. di

Per quanto riguarda la comunicazione I2C, la linea SCL è in comune a

entrambe le fotocamere, mentre le rispettive linee SDA sono

selezionate alternativamente utilizzando due transistor NPN (Q1, Q2),

la cui base è collegata rispettivamente ai pin 3 e 4 del

microcontrollore tramite due resistenze da 1kΩ (R2, R3).

Un transistor NPN (Q3), la cui base è collegata al pin 6 tramite una

resistenza da 1kΩ (R3), collega l’uscita di tensione a 3.3V del

microcontrollore al contatto positivo dei porta batterie dei telecomandi

ogni qualvolta si deve interrompere lo stand-by delle fotocamere.

Il modulo radio non ha bisogno di componenti esterni, ed è

semplicemente connesso a massa, all’alimentazione 5V ed al pin RX1,

che riceve i dati in ingresso. 11 19

Pag. di

12 19

Pag. di

Software

Il software si divide in due parti, ossia il “lato base” e il “lato

computer”.

Il software sulla base è stato sviluppato

nell’ambiente Arduino con il linguaggio

omonimo, Arduino, che è un derivato di Java

adattato per la programmazione su

microcontrollore, che semplifica molto la

programmazione, ma rallenta l’esecuzione dei

programmi, poiché impedisce di avere un

dialogo diretto con i registri del

microprocessore come invece è permesso fare,

ad esempio, programmando in linguaggio C.

Si è scelto di programmare utilizzando questo

linguaggio in quanto esistevano già librerie per interfacciare Arduino

alle fotocamere, e questo ha comportato L’IDE di Arduino

un notevole risparmio di tempo nello sviluppo del codice.

Il software sulla base si occupa di ricevere le

comunicazioni via radio che arrivano dalla

penna e di compiere il calcolo delle coordinate

secondo ciò che il microprocessore legge dalle

fotocamere.

Il software su computer è stato programmato

in linguaggio Java utilizzando l’ambiente di

programmazione Processing, che graficamente

è molto simile all’ambiente Arduino, ma

permette di programmare applicazioni visuali

anziché di programmare su microcontrollore.

Esso consente l’acquisizione in real-time delle

coordinate e la modifica dei disegni registrati, anch’essa possibile in

real-time, con la possibilità di aggiungere o eliminare punti al disegno.

L’IDE di processing

13 19

Pag. di

Software lato base

Il programma è consultabile nell’Allegato 4.

Il programma caricato sulla scheda Arduino montata sulla base ha due

tipi di funzionamento, che sono eseguiti in base allo stato della

variabile “debug”, di tipo booleano.

Se quest’ultima assume il valore “true”, il funzionamento è quello di

debug, ossia il microcontrollore, attraverso il monitor seriale integrato

nell’IDE di Arduino stampa tutti i possibili comandi di debug, come ad

esempio ‘l’ che accende il diodo led oppure ‘r’ che resetta il

microprocessore.

Una volta inviato il comando ‘b’ il microcontrollore spedisce

continuamente via seriale le coordinate rilevate dalle fotocamere

come ad esempio:

BLOB 1: x1,y1,s1, BLOB 2: x2,y2,s2,

“x1”, “y1”, “x2” ed “y2” sono le coordinate rilevate dalle due

fotocamere mentre “s1” e “s2” assumono in realtà lo stesso valore, in

quanto indicano lo stato del pulsante sulla penna che stabilisce se sto

disegnando o meno.

Se invece la variabile debug assume il valore “false”, il programma

parte in automatico a inviare sulla seriale le coordinate ricavate dalle

due fotocamere, già unite in un singolo punto, come ad esempio:

FINAL: x,y,s,i,

“x” e “y” sono le coordinate del punto, mentre “s” indica se si sta

disegnando o meno.

“i” è un indice progressivo che determina quale figura si sta

disegnando.

Questo è usato perché se non si distinguesse tra, ad esempio, una

lettera e l’altra in una parola scritta, un attuatore che vada a

realizzare il disegno traccerebbe un’unica linea mentre, con un indice

Dettagli
19 pagine