Leggi la tesina - ITIS in progress

ALLIEVI: Modolo - Ismalaj
DOCENTE: Michele Visentin
Classe: 5Aeln
ESAMI DI STATO
2014-2015
ITIS GALILEO GALILEI CONEGLIANO
LINE FOLLOWER
INTRODUCTION OF ROBOT:
The word “robot” comes from the term Czech robota, which means heavy work or forced
work (in the plural in Czech is roboty, while Italian is invariable).
A robot is a mechatronics device that performs automated tasks with a direct human
supervision or default program, using artificial
intelligence tecniques. The robots replace or
improve human work, as in manufacture
costruction of heavy or dangerous material.
A robot can be equipped with connections guided
by feedback between perception and action, and
not from direct human control. The action may
take the form of electro-magnetic motors, or
actuators, which move a limb, open and close a
gripper, or move the robot. Stepper control and
feedback are provided by a program that is
executed by an external or internal computer into
the robot, or by a microcontroller. According to
this definition, the concept of robot includes all
the automated apparatuses.
In the modern period, the term implies a level of
autonomy that would exclude many automatic
machines from the robots category. It is a
research for more independent robot, which is
the main objective of robotics research and the
reason that drives much of the work on artificial intelligence.
The robots that are used now are actually computers equipped with servomechanisms,
with zero intelligence in fact they perform only the instructions that were given to them by
a program. They are used nowadays to perform tasks that are too dangerous, difficult,
repetitive or stupid to humans. This normally takes the form in industrial robots employed
in assembly lines; other applications include cleaning of toxic waste, space exploration,
mining, military operations such as defusing bombs. The factory is the main field in which
we use the robot. In particular, articulated robots, with movements similar to of the
human arm, are those most used. Applications include welding, painting machines. The
car industry has made full use of this new technology where robots have been
programmed to replace human work in the simplest tasks.
UTILIZZO DEL LINE FOLOWING:
Quello del “line following” é uno degli aspetti più interessanti della robotica: robot basati
su di esso aiutano migliaia di fabbriche nel mondo consegnando posta, pacchi e materiali
vari, in modo veloce ed efficiente. Le applicazioni dei line follower non si limitano a piccoli
robot o all’automatizzazione nelle fabbriche, ma scienziati ed ingegneri stanno
sperimentando spartineve e veicoli per il trasporto di passeggeri che seguono linee
magnetiche su ferrovie intelligenti. Questi possono percepire la strada, ostacoli e
segnaletica, eliminando ingorghi stradali e rendendo le nostre ferrovie più sicure.
Sono state create sedie a rotelle automatizzate capaci di seguire un percorso, in grado di
rendere la vita più semplice a portatori di handicap di varia natura.
Inoltre sono stati messi in commercio macchinari utensili capaci di tagliare superfici di
vario genere ricalcando una traccia, mediante la tecnica del line following.
LINE FOLOWING NELLE SEDIE A ROTELLE:
Il sistema “Line follower” è una scatola nera montata nella parte anteriore della
carrozzella, dotata di sensori ad infrarossi capaci di individuare un nastro retroriflettente.
I sensori lavorano incuranti della luminosità dell’ambiente, del colore del pavimento, o del
fatto che questo sia coperto da un tappeto. Il loro
compito è quello di scoprire dove è la linea rispetto
alla sedia , in modo tale che questa possa seguirla.
Se il sensore centrale vede la linea, la carrozzella va
dritta; se invece il nastro è individuato dai sensori
destro o sinistro, la sedia modifica la direzione per
tornare su di esso.
Quando il sistema è disattivato, la sedia si muove
indipendentemente da qualunque traccia
individui sul pavimento. Se il sistema viene invece
attivato, la sedia seguirà la traccia,
ignorando però eventuali incroci. Nel caso in cui si
desideri avere possibilità di scelta davanti ad un
bivio, si utilizza il comando: in questo caso l’utente
sceglierà la strada da seguire usando il pulsante
adatto (destra, sinistra, avanti, indietro).
DESCRIZIONE PROGETTO:
La parte principale di questo progetto consiste nella costruzione di un robot capace di
seguire una linea scura tracciata sul pavimento (line-follower). Il corpo del robot è una
macchinetta giocattolo radiocomandata, la quale è stata modificata per poter fissare le
schede di controllo, i sensori, il servo e le batterie. I tre sensori che rilevano la posizione
della linea, e di conseguenza fanno sterzare la macchinetta se necessario, sono stati
posizionati sulla parte anteriore della macchina ad una distanza di circa 0.5 cm da terra
per una ottimale lettura, come indicato sul data-sheet.
Questa tipologia di sensori installati sfrutta la variazione di intensità della luce, una
caratteristica molto comune e facilmente rilevabile nei fenomeni luminosi. Il fascio di luce
emesso dai diodi(LED) viene riflesso sulla superficie sottostante ed in seguito catturato dal
fotodiodo corrispondente. I problemi che possono sorgere con questo tipo di sensori sono
legati a fattori come il tempo o la temperatura che alterano le emissioni della sorgente,
quindi i dati ricevuti.
METODI DI GUIDA:
Quando all'inizio abbiamo deciso di costruire il line follower ci siamo trovati davanti ad una
scelta sul tipo di guida da utilizzare per il nostro inseguitore.
Le possibili scelte potevano essere:
Guida per mezzo induttivo.
Consiste in un cavo collocato sul pavimento e una corrente elettrica con una frequenza AC
fissata, usata per generare un campo magnetico. Quest’ultimo viene rilevato da due spirali
induttive che generano, allontanandosi dal campo, una corrente differenziale utilizzata per
far sì che la guida si mantenga sulla giusta rotta. Dal momento che la corrente usata può
avere diverse frequenze determinanti diverse direzioni,vari veicoli possono seguire
traiettorie simili e sovrapposte in alcune parti.
--Vantaggi
A. Maggiore affidabilità rispetto ai sistemi ottici.
B. Codici magnetici possono essere usati per differenti rotte senza alcuna confusione.
C. Poiché non vi è confusione tra le rotte, molti veicoli possono seguire traiettorie diverse.
--Svantaggi
A. I cavi sono fissi e potrebbe essere dispendioso muoverli.
B. Alimentare i cavi induttivi è costoso.
C. Possono esserci disturbi causati da rumore elettromagnetico.
Guida per mezzo ottico.
Questa tipologia di guida utilizza la luce riflessa come mezzo di localizzazione. I metodi
principali consistono nell’utilizzare una linea bianca o riflettente, posta sul pavimento,
lungo la rotta che il veicolo deve seguire. I sensori ottici vengono utilizzati per la
rilevazione della luce riflessa.
Una sorgente di luce, posta vicino al rilevatore, è puntata verso il pavimento.
Quando il sensore nota dei cambiamenti nella quantità di luce riflessa, essi vengono
sfruttati per seguire la linea. La precisione nella rilevazione dipende dallo sfondo del
percorso da seguire.
--Vantaggi
A. Facile collocamento delle piste.
B. Metodo utilizzabile in zone affette da rumore elettromagnetico.
C. Le tracce non richiedono alimentazione e il metodo usato per la loro deposizione e
successivo spostamento è molto economico.
--Svantaggi
A. Le tracce devono essere pulite.
B. Gli ostacoli devono essere rimossi dalla traiettoria.
C. Si può verificare confusione relativamente a percorsi diversi.
Considerando i vantaggi/svantaggi dei due metodi alla fine abbiamo optato per l'utilizzo
del metodo ottico, usando dei sensori a luce infrarossa risolvendo cosi anche un eventuale
problema legato alla luminosità dell’ambiente in cui si trova la macchina.
SCHEMA A BLOCCHI:
Con questo progetto abbiamo voluto realizzare un robot su quattro ruote di supporto
in grado di seguire una linea posta a terra e eventualmente si fermi se trova degli ostacoli
lungo il suo percorso. Per creare questo progetto ci siamo avvalsi di varie applicazioni e
circuiti studiati e analizzati durante il percorso formativo intrapreso durante gli anni
scolastici.
ALIMENTAZIONE CIRCUITO
In questo progetto è stato necessario fornire tre tensioni diverse per alimentare l'intero
circuito. La tensione che serve per alimentare il motore in corrente continua che richiede
almeno 10V di alimentazione ,la tensione per i sensori, il servomotore e i vari integrati che
richiedono un’alimentazione di 5V mentre al PIC occorrono 3.3V. Dato che si tratta di un
robot, come alimentazione non potevamo mettere tre batterie con le tre alimentazioni
differenti. Perciò abbiamo usato otto batterie da 1.5V (quindi 8x1.5V=12V) e abbiamo
fornito tramite gli integrati LM1117TO220 e 7805/TO un’alimentazione di 5V e 3.3V per il
resto del circuito.
Abbiamo utilizzato l’integrato LM7805 per abbassare e stabilizzare la tensione a 5v, questo
integrato infatti tende a mantenere costante la tensione d’uscita sul carico al variare, entro
certi limiti, della tensione d’ingresso e della corrente. Infatti la tensione d’ingresso deve
essere superiore ai 5-6 volt per garantire il corretto funzionamento della stabilizzazione.
Poi abbiamo utilizzato l'integrato LM1117TO220 per portare la tensione dai 5V,
precedentemente stabilizzati, ai 3.3V che servono per alimentare il PIC.
Abbiamo utilizzato un altro integrato LM7805 per stabilizzare la tensione a 5V solo per il
servomotore,essendo che quest'ultimo consuma molta corrente e quindi abbiamo preferito
separare le alimentazioni dai sensori a quella del servo.
SENSORI
Per realizzare questo progetto abbiamo utilizzato due tipi di sensori:
-i sensori di luce che servono per rilevare la linea
-i sensori di prossimità che servono per rilevare eventuali ostacoli
Sensori di luce :
Questo blocco permette al robot di
seguire la linea. È formato da tre
sensori ad infrarossi, ed ognuno dei
quali è formato da due componenti,
uno diodo(LED) che emette un
fascio di luce infrarosso e un
fotodiodo che cattura la luce
riflessa. Questo sensore è dotato di
un filtro ottico per ridurre le
interferenze della luce ambientale.
In questo progetto abbiamo
utilizzato tre sensori di luce: un
sensore per rilevare la parte destra
della linea, un sensore per rilevare
la parte centrale della linea, e
un’altro per rilevare la parte sinistra
della linea. Nel caso in cui sia attivo
solo il sensore centrale lo sterzo è
dritto, altrimenti se uno dei altri
sensori è attivo lo sterzo gira dalla parte del sensore attivo. Il sensore che abbiamo scelto
è il OPB700-4.
Questi sensori sono posti a una distanza pari a 5 mm da terra
perche questa è la distanza ottimale di lettura. In questa maniera il
sensore rileverà il riflesso generato dal pavimento, e se questo
riflesso è massimo significa che siamo su una superficie bianca, se
invece è nullo (o molto basso) siamo su una superficie nera. In tal
modo possiamo rilevare una linea scura su una pavimentazione
chiara (non necessariamente bianca) oppure una linea chiara su una pavimentazione
scura.
Questo sensore ha bisogno di essere alimentato a 5 volt, e la differenza che rileviamo in
uscita dal bianco al nero è di circa 3 volt. Questi valori analogici che troviamo in uscita del
sensore vengono poi mandati al microcontrollore che grazie al modulo interno A/D riesce a
convertire e capire se il sensore legge bianco o nero.
Sensore di prossimità:
Il sensore di prossimità serve per rilevare eventuali ostacoli durante il percorso. Questo
Sensore restituisce una lettura analogica, il valore di tensione che
possiamo prelevare in uscita varia in maniera lineare con il diminuire
della distanza dell’oggetto rilevato.
Il modello da noi usato è il Sharp GP2Y0A21YK. Questo modello è in
grado di rilevare oggetti posti da 4 a 50 cm di distanza.
Questo riportato di seguito è un grafico che ci fa capire come varia la tensione in base alla
distanza dal oggetto riflettente.
Anche in questo caso l'uscita analogica del sensore viene convertita e gestita dal
microcontrollore.
MOTORE IN CORRENTE CONTINUA
Il motore a corrente continua, chiamato così perché per
funzionare deve essere alimentato con tensione e corrente
costante, è costituito, come gli altri motori da due parti, il
rotore e lo statore. Questo tipo di motore può avere due
tipi di statore (Statore a magneti permanenti E Statore
alimentato). Lo statore ha lo scopo di generare un campo
magnetico costante. Con il primo tipo di statore il valore
del campo magnetico generato non è modificabile, in
quanto sono due magneti a generarlo. Invece la seconda
tipologia di statore è in grado di generare campi magnetici
a valori regolabili. I valori desiderati di campo magnetico
possono essere generati variando la tensione ai capi del circuito statorico. Il circuito
statorico necessita anch’esso di una tensione e corrente costante ma solo perché deve
generare come detto un campo magnetico costante. Il circuito statorico per poter
generare il campo magnetico desiderato è avvolto su blocchi di materiale ferromagnetico.
CONTROLLI PER IL MOTORE A C.C.
Controllo motori On-Off
I motori DC possono essere controllati in vari modi: il pilotaggio più semplice, è quello
ON/OFF, che però permette di fare andare il motore solo in un verso. Questo controllo può
essere implementato con un interruttore (es. un mos o un transistor) il quale quando è
attivo fa passare tutta la tensione, invece quando è spento la tensione non passa. In base
al tempo in cui l'interruttore rimane spento o acceso possiamo gestire la velocità con cui
va il motore. Viene usato anche un diodo di ricircolo necessario per evitare danni al resto
del circuito (il motore è un carico con una componente induttiva).
Il ponte ad H
Visto che nel caso del controllo ON/OFF non è
possibile far girare il motore in entrambi i versi di
rotazione, si usa il ponte ad H.
Infatti per far girare il motore nel verso opposto
è necessario invertire il segno della corrente che
passa all’interno del motore stesso (e nel caso del
controllo ON/OFF non si può), per far ciò si usa
un circuito chiamato ponte ad H il quale è
costituito da quattro interruttori(transistor) e
permette il funzionamento bidirezionale del
motore in presenza di una alimentazione singola.
Il nome deriva dalla somiglianza del circuito alla
lettera maiuscola H.
Lo schema di fianco mostra come i quattro transistor
sono connessi. In genere i due transistor inferiori
sono detti di sink perché assorbono la corrente
proveniente dal motore; i due transistor connessi
direttamente alla Vcc sono detti di source.
A seconda di quali transistor sono attivi, abbiamo
diversi possibili percorsi per la corrente, illustrati qui
affianco.
LINEA VERDE: Se è attivo un transistor di sink ed uno
di source appartenenti a lati opposti del ponte,
abbiano passaggio di corrente nel motore, il quale va
in rotazione; per ottenere la rotazione opposta è
necessario attivare la coppia simmetrica.
LINEA ROSSA: Se è attivo un transistor di sink ed uno
di source appartenenti allo stesso lato del ponte
abbiamo un corto circuito. Inutile dire che questa
situazione deve essere evitata nel modo piu assoluto
in quanto porterebbe alla distruzione del ponte o
dell'alimentazione in tempi brevissimi.
LINEA BLU: Se tutti i transistor sono spenti non abbiamo maglie in cui possa passare la
corrente fornita dall'alimentatore. Quella indicata e la via che l'eventuale corrente
accumulata dall'induttore percorre: si tratta ovviamente di un fenomeno temporaneo
ma che deve essere previsto. Terminata la scarica dell'induttore non si ha piu passaggio di
corrente e se il motore era precedentemente in moto si arresta lentamente a causa degli
attriti meccanici.
LINEA GIALLA: Se è attivo almeno uno dei transistor di source e nessuno di quelli di sink
non vi sono percorsi in cui passa la corrente fornita dall'alimentatore. La differenza
rispetto alla situazione precedente è il sostanziale cortocircuito che si viene a creare ai
capi del motore, infatti la tensione ai capi del motore e pari alla tensione diretta del
diodo sommata a quella di conduzione del transistor. L'effetto è una vigorosa azione
frenante causata dalla presenza del generatore equivalente
Struttura Ponte H
Tale integrato è costituito da quattro mezzi ponti H ognuno dei quali è costituito da due
transistor e da una logica che li comanda in modo da accenderne solo uno alla volta:
quando il transistor superiore di un mezzo ponte è in conduzione quello inferiore sarà
necessariamente spento e viceversa. E’ inoltre presente un comando di Enable che
permette di inibire il funzionamento di una coppia di mezzi ponti.
Ricapitolando, per ognuno dei due ponti presenti nell’integrato abbiamo a disposizione due
ingressi di controllo per permettere il passaggio di corrente in un verso e un ingresso di
Enable per accendere e spegnere il ponte.
TEORIA SUL PWM
Un segnale PWM (Pulse Width Modulation ovvero modulazione a variazione della larghezza
d’impulso) è un’ onda quadra di dutycycle variabile che permette di controllare
l’assorbimento (la potenza assorbita) di un carico elettrico (nel nostro caso il motore),
variando il dutycycle.
Duty Cycle
Un segnale PWM è caratterizzato dalla frequenza (fissa) e dal duty cycle (variabile); il duty
cycle è il rapporto tra il tempo in cui l’onda assume valore alto e il periodo T (l’inverso
della frequenza: T=1/f) ne segue che un duty cycle del 50% corrisponde ad un’onda
quadra che assume valore alto per il 50% del tempo, un duty cycle del 100% corrisponde
ad un segnale sempre alto e un duty cycle dello 0% ad un segnale sempre basso.
L’onda rettangolare in uscita da questo stadio è il segnale con cui vengono effettivamente
pilotati gli switch (MOSFET) del convertitore di potenza. Questa tecnica permette di
modificare la velocità pur assicurando un rendimento energetico elevato. Il circuito è lo
stesso utilizzato nel funzionamento ON-OFF, già descritto sopra. L’ idea è però quella di
pilotare la base del transistor con un’ onda quadra: se la commutazione è piuttosto
frequente (qualche KHz), a causa del comportamento da induttore, la corrente media è
sostanzialmente costante e proporzionale al duty cycle del segnale sulla base del MOS.
COME APPPLICARE IL PWM
Ora è necessario capire come applicare il segnale PWM e il verso di rotazione per
controllare il motore.
Sign-Magnitude PWM
Come è possibile vedere dallo schema che segue, il pilotaggio SM (sign-magnitude)
consiste nell'inviare il segnale PWM all'ingresso
del pin di enable del ponte e di comandare la
direzione di rotazione del motore tramite i due
ingressi di controllo del ponte. Tali due ingressi
devono essere comandati da segnali invertiti, in
questo modo si riduce anche il numero di pin
necessari per il controllo. Per il controllo SM
sono necessari quindi due segnali: il primo è
un'onda quadra di duty cycle variabile tra 0 e 100% che stabilisce la velocità di rotazione,
il secondo è un segnale costante che determina il verso di rotazione(segnale basso
rotazione in un verso, segnale alto rotazione nell'altro verso).
Locked Anti-phase PWM
Il controllo LAP (locked anti-phase) si basa sulla stessa configurazione
circuitale del controllo SM tuttavia i segnali di comandi sono applicati in
modo diverso, come è possibile vedere nella
seguente figura:
In questo caso il segnale PWM viene messo in
ingresso all'invertitore in modo da avere ai due
lati opposti del ponte due segnali invertiti tra
loro; agendo sull'enable è possibile spegnere il
rispettivo ponte.
Per il controllo LAP può bastare anche solo un
segnale di comando(l'enable può essere fissato alto se non necessario) infatti l'onda
quadra stabilisce sia la velocità che il verso di rotazione nel seguente modo:
• Duty cycle a 0 : rotazione alla massima velocità in un verso
• Duty cycle al 50%: motore fermo
• Duty cycle al 100%: rotazione alla massima velocità nell'altro verso
SCHEMA DI PILOTAGGIO DEL MOTORE
Nel nostro caso, dato che non ci serve l’inversione di marcia,
abbiamo deciso di scegliere il pilotaggio ON-OFF realizzato con un
driver di potenza e un mosfet.
Per regolare la velocità abbiamo pilotato il transistor con la tecnica
del PWM:
Quindi per comandare il motore al massimo della velocità basta
dare alla base transistor un PWM con duty cycle al 100% (e per
fermarlo al 0%).
Lo schema sopra riportato è lo schema con il quale pilotiamo il motore. L'integrato IR2108
serve per moltiplicare i due segnali di PwM bufferati(i due segnali PWM sono in pratica lo
stesso segnale preso due volte), e quindi fornire una tensione in ingresso da 0 a 10 volt.
Il segnale poi aziona il mosfet il quale aziona il motore, con la tecnica ON/OFF mostrata in
precedenza.
Il grafico riportato ci mostra come le uscite
(HO e LO) variano a seconda degli ingessi
(HIN e LIN), l’integrato quindi fa l’operazione
di AND (moltiplicazione tra i due segnali
d’ingresso) per l’uscita HO mentre di NAND
per l’uscita LO. Quindi per avere il PWM che
varia da 0 a 10V, dobbiamo mettere lo stesso
segnale da entrambi gli ingressi.
IL DIODO DI RICIRCOLO
L' avvolgimento del motore e sostanzialmente un induttore, cioè un oggetto che tende a
mantenere costante la corrente che in esso scorre.
Quando il transistor rappresentato nello schema precedente si chiude, la corrente
raggiunge il valore a regime in un certo tempo, secondo una curva esponenziale
dipendente dal rapporto di La ed Ra del circuito equivalente (del motore). Questo fatto
non causa, in prima approssimazione, particolari problemi. Quando un transistor si apre, la
corrente istantaneamente dovrebbe andare a zero; l'induttore tende pero ad impedire
questa rapida diminuzione e per fare questo tende a far salire la tensione sul collettore del
transistor (il transistor improvvisamente diventa una resistenza molto elevata in cui
l'induttore tenta di far passare una corrente: per la legge di ohm, la tensione deve salire).
La tensione arriva facilmente a centinaia di volt, danneggiando il transistor stesso. Tale
tensione e spesso chiamata "di fly-back". Per evitare questo fenomeno distruttivo viene
inserito in parallelo alla bobina del motore un diodo che fornisce alla corrente una via
alternativa a quella del transistor nel momento in cui questo si apre.
Nello schema è rappresentata a sinistra la situazione in cui il transistor e in conduzione (la
corrente attraversa l'avvolgimento del motore, rappresentato dal solo induttore, ed il
transistor; nel diodo non passa corrente in quanto polarizzato inversamente). A destra
invece l'andamento della corrente subito dopo l'apertura del transistor: la stessa corrente
che prima attraversava il transistor ora passa nel diodo. Ovviamente quest'ultima
situazione si esaurisce abbastanza rapidamente, mancando generatori in grado di
mantenere nel tempo il passaggio di corrente. Questo tempo e legato al rapporto tra
l'induttanza e la resistenza equivalente del motore e, in
situazioni tipiche, e dell'ordine delle decine di millisecondi.
I diodi da utilizzare i queste applicazioni devono avere due
caratteristiche fondamentali:
· Essere veloci, cioè essere capaci di passare in poco tempo
dalla condizione di non passaggio di corrente a quella di
conduzione e viceversa. In genere sono richiesti tempi di
intervento dell'ordine delle decine di nanosecondi.
· Essere capaci di gestire correnti elevate in quanto al momento
dello spegnimento
tutta la corrente del motore, in genere ampere, passa nei diodi.
SERVOMOTORE
Nella robotica per gli azionamenti, sono molto utilizzati i servomotori. Di solito questi si
presentano come piccoli contenitori da cui fuoriesce un perno in grado di ruotare in un
angolo compreso tra 0 e 180° mantenendo stabilmente la posizione raggiunta.
L'albero del motore di un servo R/C viene posizionato utilizzando una tecnica PWM.
In particolare, il circuito di controllo risponde a un segnale digitale i cui impulsi hanno una
durata variabile da circa 1 ms a circa 2 ms. La durata esatta di un impulso, stabilisce la
posizione del servo.
Nel nostro progetto il servomotore ha la funzione di uno sterzo per la nostra macchinetta,
viene controllato come già detto prima con la tecnica del PWM e anche se è un motore
non ha bisogno di una sua particolare scheda di pilotaggio, ma viene comandato
direttamente dal pic.
Il microcontrollore dsPIC33FJ128MC706A:
Il Microcontrollore che abbiamo utilizzato nel nostro progetto è il dspic33fj128mc706a,
un pic che ha 64 porte e con il quale è stato possibile gestire tutti i processi della nostra
macchinetta. Come già è stato detto in precedenza con questo pic abbiamo gestito il
motore e il servomotore con il modulo CCP, e siamo riusciti a convertire e quindi di
conseguenza gestire i dati arrivanti dai sensori con il modulo adc presente internamente al
pic.
Scheda di gestione
Questa scheda è il vero cuore del robot, in questa scheda verrà inserito il microcontrollore
dsPIC33FJ128MC706A. La quale è stata munita di due pulsanti uno che serve a far partire
la macchinetta e l’altro per fermarla.
Per spiegare il funzionamento di questa scheda è necessario suddividerla in ulteriori
blocchi.
Il pic è la parte centrale di questa scheda, infatti è quello che gestisce tutto.
Al pic arrivano tutti i dati dei sensori e in base ai dati in arrivo il pic grazie al programma
che abbiamo formulato gestisce il servo e la scheda di potenza del motore.
Per poter controllare la scheda di potenza e il servo è stato necessario inserire un integrato
di buffer non invertenti, per portare le tensioni di picco dei segnali PWM da 0÷3.3V a
0÷5V, dato che il nostro PIC da in uscita dei segnali che variano da 0 a 3.3V e quindi non
sarebbe stato molto funzionale fornire tale tensione direttamente ai vari componenti
inoltre cosi se per qualche motivo ci fossero errori si danneggerebbe il buffer e non il PIC.
Per poter programmare il pic abbiamo usato il picit3 che funziona da interfaccia tra lo
stesso pic e il computer.
Visto che prima abbiamo spiegato come il pic fa a controllare e gestire il motore e lo servo,
grazie alla tecnica del pwm, adesso mostriamo come lo stesso pic faccia a convertire tutti i
segnali analogici in arrivo dai sensori.
CONVERTITORE A/D
Analog to Digital Converter (ADC), in italiano convertitore analogico-digitale, è un
componente elettronico in grado di convertire una grandezza continua (ad es. una
tensione) in una serie di valori discreti.
La risoluzione di un convertitore indica il numero di valori discreti che può produrre. È
usualmente espressa in bit. Per esempio, un ADC che codifica un ingresso analogico in 256
livelli discreti ha una risoluzione di 8 bit, essendo 2^8 = 256. La risoluzione può anche
essere definita elettricamente, ed espressa in volt. La risoluzione in volt di un ADC è
uguale alla minima differenza di potenziale tra due segnali che vengono codificati con due
livelli distinti adiacenti.
Nella pratica, la risoluzione di un convertitore è limitata dal rapporto segnale/rumore (S/N
ratio) del segnale in questione. Se è presente troppo rumore all’ingresso analogico, sarà
impossibile convertire con accuratezza oltre un certo numero di bit di risoluzione. Anche se
l’ADC produrrà un valore, questo non sarà accurato essendo i bit meno significativi
funzione del rumore e non del segnale. Ma nel nostro caso i rumori sono limitati e non
influiscono la lettura dei valori.
In elettronica ci sono cinque modi per implementare un adc:
-ADC a conversione diretta(FLASH/HALFFLASH)
-ADC ad approssimazioni successive
-ADC ad inseguimento
-ADC a gradinata
-ADC a pipeline
Abbiamo deciso di mostrare il funzionamento di una adc ad approssimazioni successive
visto che è quello più comune ed è anche quello usato nei pic.
Un ADC ad approssimazioni successive (SAR Successive Approximation Register) usa un
comparatore e un convertitore digitale-analogico, ad
ogni passaggio l'ADC prova a impostare un bit,
partendo dal MSB(Most Significant Bit, bit con peso
maggiore) e usando il DAC confronta il segnale
campionato con il segnale di ingresso in feedback.
Questo convertitore individua un bit ad ogni
iterazione in una sorta di ricerca binaria e la
risoluzione è limitata solo dalle esigenze di samplerate e dal rumore in ingresso.
Noi nel nostro caso abbiamo utilizzato 5 porte analogiche del pic per convertire i tre
segnali analogici del inseguitore di linea, il segnale analogico del sensore di prossimità e il
segnale analogico che arriva dalle batterie in modo da poter sempre controllare la tensione
con la quale alimentiamo l'intero circuito.
DISPLAY
Abbiamo utilizzato un display LCD 16*4, con lo schema elettrico uguale a quello che c'è in
figura. Abbiamo utilizzato un trimmer da 10k per modificare l'intensità delle scritte.
Abbiamo collegato E/RW/RS al pic per gestire il Display, e invece i dati vengono inviati dal
pic sul D4/D5/D6/D7 e quindi abbiamo deciso di controllare il display con solo 4 bit.
Per facilitarci con la programmazione del PIC abbiamo usato un display nel quale scriviamo
i valori letti dai sensori, quindi per capire come variano i vari segnali forniti dai sensori
quando cambia la superficie, quando ci si avvicina ad un’ ostacolo e quando si scaricano le
batterie (ovvero per diagnostica).
Sul display abbiamo messo anche il duty-cycle che forniamo al motore per capire anche la
velocità con la quale sta andando la macchina.
Algoritmo di gestione
La parte più difficoltosa di questo progetto è stata quella di formulare un algoritmo in
grado di gestire i sensori, in quanto era la prima volta che ci confrontavamo con la
gestione di questo tipo di sensori. La logica per gestire i sensori è abbastanza semplice,
ma con il passare del tempo ci imbattevamo sempre in problemi nuovi dovuti a una varietà
di motivi, come ad esempio la lentezza dei sensori a rispondere al cambiamento e la
velocità troppo elevata del motore e il conseguente ritardo dello sterzo a girare facevano
perdere la linea alla macchinetta. Quindi abbiamo deciso di riportare il programma
definitivo della gestione dei sensori, tralasciando quelli della gestione del
ADC/PWM/DISPLAY che sono simili per quasi tutte le applicazioni del pic.
if ((PUSH_2) || (ProxiBackward > 1000))
statoMov=0;
else
{
MediaLight=(float) LightCenter + (float) LightLeft + (float) LightLeft;
MediaLight/=3;
t1=(float) LightCenter / MediaLight;
t2=(float) LightLeft / MediaLight;
t3=(float) LightRight / MediaLight;
DiffLightCL=(int) ((t1-t2) * MediaLight);
DiffLightCR=(int) ((t1-t3) * MediaLight);
DiffLightLR=(int) ((t2-t3) * MediaLight);
Soglia=(int) (MediaLight / 4);
if (abs(DiffLightCL) > Soglia)
{
if (DiffLightCL < 0)
StatoSensCL=2;
// CENTRO SUL NERO SINISTRO SUL BIANCO
else
StatoSensCL=1;
// CENTRO SUL BIANCO SINISTRO SUL NERO
}
else
StatoSensCL=0;
// PIU' O MENU UGUALI
if (abs(DiffLightCR) > Soglia)
{
if (DiffLightCR < 0)
StatoSensCR=2;
// CENTRO SUL NERO DESTRO SUL BIANCO
else
StatoSensCR=1;
// CENTRO SUL BIANCO DESTRO SUL NERO
}
else
StatoSensCR=0;
// PIU' O MENU UGUALI
if (abs(DiffLightLR) > Soglia)
{
if (DiffLightLR < 0)
StatoSensLR=2;
// DESTRO SUL NERO SINISTRO SUL BIANCO
else
StatoSensLR=1;
// DESTRO SUL BIANCO SINISTRO SUL NERO
}
else
StatoSensLR=0;
// PIU' O MENU UGUALI
StatoSensor=0;
if ((StatoSensCL==2) &&
(StatoSensLR==0) &&
(StatoSensCR==2))
// CENTRATO
{
SetMotor(MOTOR_OFF);
// STERZO AL CENTRO
OC1RS=SPEED_MOV;
LED_DX_ON;
LED_SX_ON;
}
if ((StatoSensCL==0) &&
(StatoSensLR==0) &&
(StatoSensCR==0))
// TUTTO SUL BIANCO -- STERZA A .....
{
//SetMotor(MOTOR_OFF);
OC1RS=SPEED_MOV_BOOST;
LED_DX_OFF;
LED_SX_OFF;
// if (!timer[TIM_MOTOFF])
// statoMov=0;
}
if ((StatoSensCL==1) &&
(StatoSensLR==2) &&
(StatoSensCR==0))
// -- STERZA A DX
{
SetMotor(MOTOR_MIN);
OC1RS=SPEED_MOV_BOOST;
LED_DX_OFF;
LED_SX_ON;
}
if ((StatoSensCL==0) &&
(StatoSensLR==1) &&
(StatoSensCR==1))
// STERZA A SX
{
SetMotor(MOTOR_MAX);
OC1RS=SPEED_MOV_BOOST;
LED_DX_ON;
LED_SX_OFF;
}
}
CONCLUSIONI E OSSERVAZIONI:
Costruire il robot non è stato molto difficile ma è stato molto interessante, il problema più
grande lo abbiamo riscontrato nella parte della scheda di potenza e nella realizzazione del
software che gestisce l’intero robot.
Inoltre la progettazione e la ricerca guasti ci hanno fornito un metodo di approccio ai
problemi modulare e funzionale.
Il risultato è buono, il robot segue con una buona precisione la linea tracciata e rileva gli
ostacoli e riesce a fermarsi, senza difficoltà, prima di urtarli.
Purtroppo il raggio di curvatura del robot non è molto ampio.
FUTURISMO E IL MITO DELLA MACCHINA
Con il termine "Futurismo" si indica un movimento artistico-letterario d’avanguardia,
fondato da Filippo Tommaso Marinetti. Il Manifesto del Futurismo è stato pubblicato sul
quotidiano francese “Le Figaro” nel 1909. Successivamente sono stati pubblicati altri
manifesti, che definivano i caratteri generali delle varie arti: letteratura, teatro, pittura,
scultura, architettura e musica.
I punti principali del Manifesto del Futurismo, a cui tutti gli intellettuali devono adeguarsi,
sono:
- proiettarsi verso il futuro e verso il progresso;
- cantare l’audacia, il pericolo, la velocità, il movimento, la dinamicità e la ribellione;
- opporsi alla cultura Ottocentesca, immobile e assonnante;
- considerare la lotta e la guerra come sola forma di igiene del mondo;
- provare disprezzo nei confronti della donna, considerata portatrice di valori deboli ed
ispiratrice della poesia sentimentale;
- distruggere le biblioteche ed i musei, colpevoli di produrre una cultura stereotipata.
I futuristi sono contrari alla realizzazione di opere artistiche in serie e arrivano a rompere il
canale di comunicazione col pubblico: scrivono opere illeggibili e incomprensibili. Nel 1912
viene pubblicato il Manifesto letterario Futurista, nel quale i futuristi spiegarono come si
sarebbe concretizzata la rottura del canale di comunicazione col pubblico: distruzione della
sintassi, verbo all’infinito, disposizione di sostantivi automatica, distruzione dell’Io e della
psicologia, abolizione di avverbio e aggettivo, abolizione della punteggiatura, testo scritto
in orizzontale, verticale, e diagonale, introduzione di peso, odore e rumore nella letteratura
e dell’immaginazione senza fili.
Il futurismo contrappone al passato la moderna civiltà della macchina, la bellezza e
l’ebbrezza della velocità. Si rifiuta l’immobilità pensosa, l’estasi ed il sonno del passato e si
esalta l’aggressività, l’insonnia febbrile, il passo di corsa, il salto mortale, lo schiaffo ed il
pugno, la guerra, il patriottismo e le belle idee per cui si muore. In Italia il Futurismo si è
orientato sempre di più verso la destra in senso nazionalista e interventista, fino a sfociare,
dopo la guerra, nel Fascismo e a diventare l’arte ufficiale del regime.
Uno dei principali aspetti del Futurismo è proprio il mito della macchina. La letteratura
italiana era rimasta legata per lungo tempo, a causa dei ritardi dello sviluppo economico e
sociale, ad una realtà contadina. All'inizio l'industrializzazione e i primi segnali della
Rivoluzione industriale causavano reazioni di sconcerto anche tra gli intellettuali. Giosuè
Carducci invece, nell'Inno a Satana del 1863, aveva celebrato l'arrivo della locomotiva,
come un segnale del trionfo della scienza e del libero pensiero. A poco a poco anche in
Italia iniziò ad avvertirsi l'esigenza di una cultura industriale. La macchina diventa così un
mito nel quale si raccolgono le aspirazioni della modernità, del rinnovamento e delle
trasformazioni sociali. Nella letteratura l'avvento della macchina assume il valore di un
simbolo, capace di alimentare le fantasie dell'immaginario collettivo. L'esaltazione della
macchina diventa una sorta di religione: la macchina si trasforma nel mezzo e nel fine
della creatività artistica e della sensibilità estetica. La macchina diventa una metafora
dell'esistenza ed offre l'illusione di un fondamento concreto e oggettivo in una visione del
mondo per molti aspetti astratta, delirante e irrazionale.
Poeti e artisti futuristi organizzavano le “serate futuriste”, durante le quali venivano recitate
poesie ed effettuate rappresentazioni teatrali. Queste serate si concludevano spesso con
lancio di ortaggi da parte del pubblico. Nel campo letterario tra i futuristi si ricordano
come scrittori Filippo Tomasso Marinetti, Luciano Fòlgore, Gian Piero Lucini;
come poeti Aldo Palazzeschi, Corrado Govoni, Giovanni Papini; nelle arti figurative Carlo
Carrà, Gino Severini, Umberto Boccioni. Il Futurismo ha influito su altri movimenti
d’avanguardia del ‘900 ed ha promosso la dissoluzione dei vecchi contenuti e delle vecchie
forme per giungere ad una poesia e ad un’arte nuova, più adeguata ai mutamenti dei
tempi e dei costumi.