1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è...

25
1 di 25 Dopo avar appreso le basi sull'elettronica e sulla robotica, ho realizzato un piccolo robot, in grado di interagire autonomamente con l'ambiente che lo circonda, e di ubbidire agli ordini impartitigli. Questo progetto è l'evoluzione di un semplice robot proposto dalla DeAgostini in collaborazione con PARALAX, in un corso di apprendimento, costruzione e programmazione alla portata di tutti per imparare i principi della robotica divertendosi. Ciò che il robot può fare dipende dalla dotazione hardware e dal software scritto in base alle esigenze e fantasia dell'utente. Il robot può rispondere a stimoli esterni: muovendosi, accendendo luci, emettendo suoni; può elaborare: interpretando i dati acquisiti ed applicandovi formule matematiche ottenendo risultati; comunicare dati: inviando segnali elettrici direttamente via cavo, o attraverso l'etere tramite onde elettromagnetiche. Con la robotica ho imparato che è possibile convogliare in un'unica disciplina le più svariate materie didattiche, infatti si possono applicare tutti i concetti di fisica come la meccanica, l'ottica, la termologia e l'elettromagnetismo; la matematica logica, aritmetica e geometrica; l'inglese, come lingua di riferimento, è utilizzata anche in tutti i dati tecnici, e linguaggi di programmazione; tutto ciò che riguarda l'elettronica analogica e digitale. Non dimentichiamo che un robot è una macchina che per diventare attiva ha bisogno di una scopo, e quindi bisogna progettare il software su misura alle sue capacità, inserendo così anche l'informatica; ed infine anche un po' di scienze in quanto occorre prima avere un'idea di come sono fatti gli esseri viventi da cui prendere eventualmente spunto, ed osservare gli ostacoli che la natura oppone all'uomo nell'esplorazione di luoghi o mondi resi inaccessibili… ma la cosa più importante è la passione, tanta voglia di fare e molta fantasia. Un robot è un'automa complesso e flessibile, in quanto il centro di elaborazione è costituito da un'elettronica programmabile, basata su microprocessore, cioè un vero e proprio computer che riceve input in forma digitale, li elabora, e fornisce degli output. Le applicazioni di queste macchine ormai ricoprono tutti i settori: - Medicina - Industria - Arma - Sicurezza - Esplorazione - Soccorso e tanti altri, in cui serve precisione, ripetitività, forza, accesso in ambienti particolari e sensi di cui l'uomo non dispone. Entrando subito nella descrizione del mio primo robot, cominciamo a descrivere essenzialmente la parte elettronica hardware e software.

Transcript of 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è...

Page 1: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

1 di 25

Dopo avar appreso le basi sull'elettronica e sulla robotica, ho realizzato un piccolo robot, in grado di interagire autonomamente con l'ambiente che lo circonda, e di ubbidire agli ordini impartitigli. Questo progetto è l'evoluzione di un semplice robot proposto dalla DeAgostini in collaborazione con PARALAX, in un corso di apprendimento, costruzione e programmazione alla portata di tutti per imparare i principi della robotica divertendosi. Ciò che il robot può fare dipende dalla dotazione hardware e dal software scritto in base alle esigenze e fantasia dell'utente. Il robot può rispondere a stimoli esterni: muovendosi, accendendo luci, emettendo suoni; può elaborare: interpretando i dati acquisiti ed applicandovi formule matematiche ottenendo risultati; comunicare dati: inviando segnali elettrici direttamente via cavo, o attraverso l'etere tramite onde elettromagnetiche. Con la robotica ho imparato che è possibile convogliare in un'unica disciplina le più svariate materie didattiche, infatti si possono applicare tutti i concetti di fisica come la meccanica, l'ottica, la termologia e l'elettromagnetismo; la matematica logica, aritmetica e geometrica; l'inglese, come lingua di riferimento, è utilizzata anche in tutti i dati tecnici, e linguaggi di programmazione; tutto ciò che riguarda l'elettronica analogica e digitale. Non dimentichiamo che un robot è una macchina che per diventare attiva ha bisogno di una scopo, e quindi bisogna progettare il software su misura alle sue capacità, inserendo così anche l'informatica ; ed infine anche un po' di scienze in quanto occorre prima avere un'idea di come sono fatti gli esseri viventi da cui prendere eventualmente spunto, ed osservare gli ostacoli che la natura oppone all'uomo nell'esplorazione di luoghi o mondi resi inaccessibili… ma la cosa più importante è la passione, tanta voglia di fare e molta fantasia. Un robot è un'automa complesso e flessibile, in quanto il centro di elaborazione è costituito da un'elettronica programmabile, basata su microprocessore, cioè un vero e proprio computer che riceve input in forma digitale, li elabora, e fornisce degli output. Le applicazioni di queste macchine ormai ricoprono tutti i settori: - Medicina - Industria - Arma - Sicurezza - Esplorazione - Soccorso e tanti altri, in cui serve precisione, ripetitività, forza, accesso in ambienti particolari e sensi di cui l'uomo non dispone. Entrando subito nella descrizione del mio primo robot, cominciamo a descrivere essenzialmente la parte elettronica hardware e software.

Page 2: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

2 di 25 - HARDWARE Il cuore di questo robot è una scheda programmabile chiamata BASIC STAMP, mi è stata molto utile in quanto mi ha permesso, grazie alla sua semplicità d'uso, di ottenere ottimi risultati quando (4 anni fa) ancora di MICONTROLLORI e memorie EEPROM ne sapevo ben poco. Di BASIC STAMP ne esistono molte versioni, alcune sono state utilizzate addirittura dalla NASA per l'apertura dei deflettori dei satelliti (organi che deviano il propellente per il mantenimento dell'orbita); la versione che ho avuto sotto mano è il BASIC STAMP 2 che utilizza: un microcontrollore PIC16c57 che lavora su dati ad 8bit con istruzioni da 12, ed una eeprom seriale 24LC16 dalla capacità di 16Kbit (entrambi i chip sono costruiti da MICROCHIP, che offre supporto tecnico anche in Italia); inoltre sulla scheda programmabile sono presenti l'interfaccia per la programmazione seriale (adattando i livelli RS232 a TTL), lo stabilizzatore di tensione e l'oscillatore ceramico per il clock a 20Mhz. È importante saper che questo tipo di microcontrollore è un po' vecchiotto, tanto che appartiene alla generazione dei µC con memoria EPROM (cioè quelli con finestrella per la cancellazione tramite raggi UV, mentre gli ultimi PIC usano memoria FLASH modificabile elettricamente), in questa memoria non vi risiede il programma sviluppato dall'utente, ma un interprete che consente di scrivere sul chip di memoria 24LC16 il software progettato con linguaggio PBASIC (linguaggio di programmazione in stile basic, realizzato apposta dalla PARALLAX per i basic stamp). Sia il software Pbasic che gli schemi elettrici dei BasicStamp sono reperibili gratuitamente in internet, per cui chiunque esperto di elettronica può realizzarsi il proprio sistema di sviluppo anche personalizzato (robot, automi, sistemi di acquisizione dati, giochi elettronici, calcolatori acc), ma da quanto detto sopra non basta realizzare l'hardware, poiché i PIC che troveremo in commercio sono vergini, e prima di poterli programmare in PBASIC occorre scaricare l'interprete su EPROM, o copiandolo da un altro PIC o scaricandolo da internet [ST2.HEX] (naturalmente tutto ciò a scopo personale). Di fatti i PIC senza questo interprete possono essere programmati solo a basso livello con istruzioni basilari, questo modo di programmare permette di gestire i minimi dettagli ma risulta particolarmente elaborioso. Con Pbasic invece si programma con facilità, le semplici istruzioni sono davvero molto utili ed intuitive, senza negare la gestione dei singoli bit sulle variabili, o di scrivere un certo dato in una locazione di memoria.

Page 3: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

3 di 25 Ecco di seguito lo schema del BasicStamp2:

Questa scheda mette a disposizione un microcontrollore con architettura a 8bit, esternamente presenta 20 linee I\O (relativi alla porte A-B-C)di cui 16 sono gestibili dall'utente, mentre le altre 4 (relative alla porta A) sono dedicate all'interfacciamento con la memoria e con il computer; gli altri 8 pin sono dedicati all'alimentazione (Vdd e GND), al reset, e 2 per l'oscillatore, il pin T0CKI per l'ingresso della periferica TIMER, siccome quest'ultima non viene sfruttata dall'esterno l'ingresso T0CKI viene collegato a massa. Accennando un po' qualche dettaglio su microcontrollore, esso ha: un'unità ALU che lavora su due registri, uno è il registro "W" di lavoro (work) e l'altro è il registro STATUS ovvero di stato; il program counter con due soli livelli di STACK; una memoria ROM da 2k x 12bit , il registro istruzioni e decoder istruzioni; poi abbiamo una locazione a parte in cui memorizzare una parola di configurazione contenente impostazioni come la protezione del codice e l'abilitazione di periferiche interne; abbiamo anche il circuito interno per l'oscillatore di clock che richiede solo il componente oscillante; fra le periferiche interne si individuano gli immancabili WATCH DOG\TIMER e PRESCALER (quest'ultimo è control lato dall'option register), tanto per rinfrescarci le idee il WATCH DOG serve a resettare il pic quando si entra in un loop non previsto, mentre il timer viene utilizzato per generare ritardi nel software e nel campionamento di ingressi; abbiamo poi una SRAM a 72 byte di cui col Pbasic se ne possono utilizzare soli 32; ed in conclusione abbiamo i registri per le porte I\O.

P12 e P13 sono destinati ai servomotori

Page 4: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

4 di 25 qui di seguito esponiamo il package del micro con le indicazioni delle connessioni, e la configurazione circuitale dei registri delle porte di I\O. Da notare che in output abbiano uno stadio pusch-pull utile per riuscire a pilotare in corrente dei led, ma funge anche da buffer, portandosi in alta impedenza quando la or da 1_logico e la and da 0_logico. il set di istruzioni assembler lo esponiamo solo a titolo informativo visto che, grazie all'interprete, il micro viene programmato ad alto livello in Basic:

Page 5: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

5 di 25 Ed ecco lo schema a blocchi del microcontrollore PIC16C57:

per quanto riguarda la memoria EEPROM seriale 24LC16, essa si presenta in un package ridottissimo ma offre 16 Kbit con accesso (indirizzamento, lettura e scrittura) seriale sincrono e quindi con protocollo I2C.

24LC16

Page 6: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

6 di 25 anche questa piccola EEPROM è un gioiellino di tecnologia in quanto il chip integra al suo interno tutto ciò che necessita per l'indirizzamento, la lettura e la scrittura. Descriviamo ora il funzionamento dei pin : - pin1-2-3 (relativamente A0-A1-A2): servono per l'indirizzamento parallelo delle 8 mappe di memoria (da 4Kbit) costituenti l'array conmplessivo.

- Pin4 (GND): 0 volt rispetto all'alimentazione. - Pin5 (SDA): questo è un pin bidirezionale su cui confluiscono serialmente indirizzi dati e parole di riconoscimento; allo scopo di scrivere e leggere.

- Pin6 (SCL): pin d'input per il sincronismo dei dati. - Pin7 (WP): pin d'input che consente di proteggere il dispositivo dalle scritture ponendolo a Vcc, altrimenti lo poniamo a GND.

- Pin8 (Vcc): positivo di alimentazione (5V---) In questa memoria è possibile scrivere un solo byte o una pagina intera, si possono leggere locazioni a caso (random) oppure sequenzialmente. Vedimo adesso alcuni grafici che indicano come effettuare queste operazioni:

Page 7: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

7 di 25 vediamo adesso il set di istruzioni ad alto livello che offre il pbasic: Test e salto IF...THEN Esegue un test ed effettua un salto ad una riga del programma. BRANCH Effettua un salto ad una riga del programma in base ad un indice. GOTO Effettua un salto incondizionato ad una riga del programma. GOSUB Effettua un richiamo di una procedura. RETURN Ritorna da una procedura. RUN Esegue un altro programma. POLLRUN Esegue un altro programma fino al ricevimento di un interrupt.

Cicli di esecuzione FOR..NEXT Esegue un ciclo delle istruzioni un certo numero di volte.

Accesso alla EEPROM EEPROM Memorizza dei dati nella EEPROM prima di scaricare il programma. DATA Memorizza dei dati nella EEPROM prima di scaricare il programma. READ Copia un byte dalla EEPROM ad una variabile. WRITE Scrive un byte nella EEPROM.

Accesso alla RAM GET Copia un byte dalla RAM in una variabile. PUT Scrive un byte nella RAM.

Numerici LOOKUP Legge un dato all’interno di un elenco. LOOKDOWN Cerca un dato all’interno di un elenco. RANDOM Genera un numero pseudo-casuale.

I/O Digitale INPUT Setta un pin in modalità di inpu.t OUTPUT Setta un pin in modalità di output. REVERSE Inverte la direzione di un pin . LOW Mette a 0 logico un pin settato in output. HIGH Mette a 1 logico un pin settato in oupu.t TOGGLE Setta un pin in output ed inverte lo stato logico . PULSIN Misura un inpulso in ingresso. PULSOUT Genera un impulso invertendo lo stato di un pin. BUTTON Legge lo stato di un pulsante e salta ad una riga del programma. COUNT Conta i cicli (1-0 e 0-1) su di un pin in un lasso di tempo. XOUT Genera il codice di controllo della linea X-10.

I/O Seriale asincrona SERIN Legge un dato da linea seriale asincrona. SEROUT Scrive un dato su di una linea seriale asincrona.

I/O Seriale sincrona SHIFTIN Legge un dato da una linea seriale sincrona. SHIFTOUT Scrive un dato su una linea seriale sincrona.

I/O Analogico PWM Genera una tensione di uscita variabile 0-5V utilizzando un circuito RC (Al termine

setta il pin in input) RCTIME Misura il tempo di carica/scarica di un circuito RC.

Attesa PAUSE Esegue una pausa da 0 a 65535 millisecondi.

Suono FREQOUT Genera una o due onde sinusuoidali di una data frequenza. DTMFOUT Genera un tono telefonico DTMF.

Consumi NAP Sospende l’esecuzione del programma per un piccolissimo periodo. SLEEP Si ferma per un periodo da 1 a 65535 secondi. END Si ferma fino a quando non si resetta l’alimentazioni.

Analisi dei problemi DEBUG Invia informazioni al PC per il debugging. enza soffermarci a descrivere la sintassi per ogni istruzione, andiamo avanti nella descrizione sintetica del progetto. Anche perché il linguaggio PBASIC e semplicissimo e i manuali d'uso si trovano anch'essi in internet.

Page 8: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

8 di 25 Oltre al BASICSTAMP, ai servomotori ed alcuni sensori acquisiti col corso di robotica, ho voluto personalizzare il mio robot progettando utilissimi moduli per espandere le potenzialità offerte dal microcontrollore. Quindi cominciando dai più semplici fino ai più complessi, andremo a parlare dei circuiti funzionali aggiuntivi.

16 OUTPUTS

16

IN

PU

TS

DRIVER BILED

I2C PIC16C57 EEPROM SERIALE 16Kbit

LINEA SINCRONA

DRIVER MODULO RADIO

MODULO RADIO HALF DUPLEX 433.92MHZ

AUREL RF_SAW

ANTENNA

LINEA ASINCRONA A 9600BIT/S PROTEZIONE CON CONTROLLO

DI PARITA' RISUONATORE

CERAMICO

INTERFACCIA RS232 PER LA

PROGRAMMAZIONE

A

SERVO SX SERVO DX

SENSORI AD INFRAROSSI PER RILEVARE OGGETTI A DISTANZA(DUE FRONTALI

ED UNO POSTERIORE)

LINEA SINCRONA E PIN DI

CONTROLLO

24LC16

INTERFACCIA I/O

RTX_ENABLE

COLOR_BILED

DRIVER BRACCIO MECCANICO

CONTROLLATO CON TRASDUTTORE DI

POSIZIONE (POTENZIONETRO)

M

+V

8BIT

ADC_804

SENSORE DI TEMPERATURA

LM35CZ

SENSORI AD EFFETTO HALL

PER IL CONTROLLO

DELLA VELOCOTA'

DELLE RUOTE

TRASDUTTORE DI LUMINOSITA' /

DRIVER LED BLU

SENSORI DI PROSSIMITA'

(BAFFI)

PULSANTE

STABILIZZATORI

A: 5v---

ACCUMULATORE 6_BATTERIE

RICARICABILI PER UN APPORTO TOTALE DI

7,2V x 2A

SRACCIO MECCANICO

PENNARELLO

CARICA BATTERIA TEMPORIZZATO

DRIVER MODULO RADIO

MODULO RADIO HALF DUPLEX 433.92MHZ

AUREL RF_SAW

ANTENNA

OSCAR_TEK

RS232

COMPUTER: STAZIONE DI CONTROLLO

Page 9: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

9 di 25 I blocchi gialli fanno parte dellla dotazione BasicStamp, di cui abbiamo gia parlato. Invece adesso andremo ad esaminare quelli blu ovvero quelli aggiuntivi che ho progettato e realizzato nel corso di questa avventura. - "A", amplificatore audio: si tratta di un amplificatore audio in classe "B" da 1,2Watt realizzato in un unico chip, il TBA820; questo integrato può essere alimentato con una tensione massima di 16v, e può dare in uscita una corrente max di 1,5A. Ottimo per applicazioni portatili, reazionato per eliminare la distorsione di cross over, ed è una buona soluzione per i casi in cui si vuole dissipare poco calore occupando spazi ridotti. All'ingresso di questo circuito in realtà applico l'uscita digitale P15 del basicstamp, facendo quindi lavorare l'amplificatore in classe "D" (la classe "D" è una delle migliori soluzioni digitali audio, poiché consente di risparmiare potenza, spazio e denaro, infatti invece di convertire in analogico un segnale numerico, si preferisce avere un'uscita PWM cioè un'onda quadra rappresentante l'andamento medio di un valore attraverso la durata degli impulsi, in questo caso precalcolati; questo segnale può trasformarsi in un valore di tensione solo se la si applica ad un carico R-C o induttivo come un motorino DC od un'altoparlante). - "driver biled": circuito che riceve in ingresso un livello logico C-MOS e determina il colore di un led bicolore (verde con 0, rosso con 1): questa semplice soluzione la ho ottenuta con l'integra LM358 che contiene al suo interno due operazionali, che possono pilotare carichi fino a 60mA, e quindi si prestano volentieri per pilotare dei led. Entrambi gli operazionali sono configurati come comparatori, uno invertente e l'altro non invertente, con tensione di soglia pari a Vcc/2 ovvero 2,5v; questo circuito quindi è in grado di riconoscere i livelli logici: quando ci si presenta un bit_1 l'operazionale superiore porterà l'uscita a Vcc attivando il led rosso (mentre l'operazionale inferiore manterrà l'uscita a 0v), se invece il bit è a 0 allora si verifica il caso contrario illuminando la capsula di verde. Nota bene che la virtual_out_14 proviene da una scheda di espansione di cui parleremo successivamente.

Lm358

7,2V

P15

SPK18Ω

+

C4470uF

+C3

100uF+ C2100uF

R11k

+

C1100uF 6

TBA820

75

84

2

3

Page 10: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

10 di 25 - fototrasduttore \ driver led blu si tratta di una variante del trigger di shmit (comparatore con isteresi con soglia variabile) che mi consente di interpretare il valore homico di una fotoresistenza per rilevare quando viene a mancare la luce, inoltre attraverso il trimmer e possibile regolare la finestra d'isteresi in modo da decidere a quale intensità luminosa accendere o spegnere il led blu ad alta efficienza (cioè che emette un fascio luminoso d'intensità superiore ai comuni led). Ho scelto la comparazione con isteresi per diminuire la sensibilità, in modo che quando s'accende il led illumenante il percorso, non si abbia una retroazione positiva, con conseguente lampeggiamento automatico del led. Quindi in conclusione il circuito opera su due soglie di luminosità distinte, quella inferiore interpretata come buio e quella superiore (grado di luminosità più intenso di quella prodotta dal led) come ritorno della luce. - sensori di prossimità e di distanza i sensori di prossimità sono degli switch che si chiudono quando il robot urta un'ostacolo, questi sensori si interfacciano con la scheda d'espansione I\O. Mentre quelli di distanza son realizzati con sensori IR (infrared, a raggi infrarossi), questi sensori son realizzati tramite un diodo infrarosso pilotato con impulsi, ed un fototransistor che si interfaccia direttamente con i circuiti digitali, e quindi direttamente col basic stamp. Il funzionamento dei sensori a infrarossi si basa sul principio della riflessione che avviene quando un'onda elettromagnetica incontra la superficie di separazione fra due materiali differenti (in altre parole quando il raggio IR incontra un'ostacolo ritorna parzialmente indietro per il fenomeno della riflessione). Nel caso un cui c'è l'ostacolo, quindi, il fototransistor rileva il raggio che ri torna in dietro; ma la luce infrarossa, come tutte le onde elettromagnetiche, non viene riflessa allo stesso modo con tutti gli oggetti, infatti oggetti più scuri riflettono meno rispetto a quelli più chiari, quindi è difficile che il robot riesca ad individuare in tempo gli ostacoli neri, ed è in questi casi che intervengono i sensori di prossimità. Un importantissimo concetto ricavato dalla fisica è che: un'onda elettromagnetica in un periodo percorre un determinato spazio, definito da:

λ(m) = v / f con v = c / n (λ = lunghezza d'onda in metri, v = velocità di propagazione in m/s, c = velocità di propagazione delle onde EM nel vuoto, n = indice di rifrazione che rappresenta il rapporto fra "v" ed "n") fatte queste considerazioni possiamo affermare che se emetto un impulso luminoso di durata T, e vado subito a testare il fotodetector, posso farmi un'idea della distanza di un eventuale ostacolo se il raggio risulta riflesso: cioè irradiando il raggio IR per 2 ms, esso avrà percorso una determinata distanza, e se c'è un'oggetto entro tale distanza lo stesso raggio tornerà in indietro (mettendoci lo stesso tempo che ha

BC337

Vcc Baffo SX Baffo DX

Virtual_I_4 Virtual_I_3

Page 11: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

11 di 25 impiegato a raggiungere l'ostacolo), in questo caso posso giudicare che l'ostacolo sta entro un certa distanza. Applicando questo concetto a diversi periodi d'irradiazione si ottiene una approssimabile valutazione di distanza. Dopo tentativi e varie formule ho ricavato una formula accettabile che permette al microcontrollore di poterla elaborare (sapendo che il microcontrollore non può lavorare su numeri con virgola): innanzitutto emetto un set di frequenze comprese fra 10Khz e 60Khz con uno step di 5Khz; naturalmente minore è lo step e maggiore sarà la risoluzione, ma il robot deve aver tempo anche per muoversi ed effettuare tanti calcoli, e quindi spesso si sceglie di scendere a compromessi; ad ogni frquenza erogata vado a testare l'ingresso relativo al fototransistor e controllo se il raggio è stato riflesso, in caso affermativo allora vado a sommare il valore della frequenza in un'apposita variabile, successivamente si passa alla frequenza maggiore facendo lo stesso controllo; in fine se ho davanti un'ostacolo allora la mia variabile contiene un determinato coefficiente inversamente proporzionale alla distanza, per questo motivo ho associato la seguente formula approssimata [DISTANZA (cm) = 10000/(5*contenuto variabile)] (siccome quando non rilevo ostacoli la distanza risulta pari a zero la converto, per via if..then, in 99). - MODULI RADIO HALF DUPLEX 433.92MHz Modulo SAW a basso costo per la ricetrasmissione di dati [richiede una sola antenna]. Consente una ricetrasmissione half-duplex con breve tempo di commutazione fra modo Tx e modo Rx. L'elevata banda passante BF consente in ricezione 2400 baud (max) utilizzando codifica Manchester, 9600bit/s mandando in modulazione direttamente i dati digitali. Di fatti nel mio progetto di robotica li faccio lavorare a questa velocità; per tranquillizzare gli interessati, dimostro di seguit o che la velocita massima da me scelta va benissimo. - attraverso una proporzione andremo a vedere quanto vale il tempo di bit: 9600bit : 1s = 1bit : Tbit Tbit = 1bit*s / 9600 = 104,17us - quindi la frequenza massima che può essere assunta dai bit (quando non vi sono bit

consecutivi allo stesso valore, ma alternativamente 1 e 0) equivale all'inverso del periodo completo:

T = 2*Tbit = 2*104,17 = 208,34us

IR_SX detect

Vcc

P8

IR_DX detect

Vcc

P9

IR_DWN detect

Vcc

P10

P7

Tbit

T

Page 12: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

12 di 25 F = 1/T = 1/ 208,34 = 4,8KHz Sapenndo che la frequenza massima supportata dalla banda BF del modulo radio vale 5KHz, possiamo tranquillamente lavorare a 9600bit/s (occupando una banda fino a 4800KHz) IL TRASMETTITORE si basa su di un modulatore d'ampi ezza on-off, in cui la modulante è costituita dai livelli logici TTL, mentre la portan te a 433.92Mhz è generata da un oscillatore SAW. Il pin 8 serve ad abilitare la tra smissione, mentre il pin 2 è l'ingresso dati da trasmettere. si ha una banda complessiva di 5Kha , di cui abbiamo parlato prima; la trasmissione può avvenire ponendo il pin8 a 5v. IL RICEVITORE invece si abilita ponendo il pin 25 a 5v. sia lo stadio RX che TX van no abilitati uno per volta, poiché questa è la filosofia half duplex. I dati ricevuti escono dal pin25. L'antenna è unica e viene commutata da uno stadio all'altro in base all e condizione RX o TX. Il ricevitore si basa sul principio super eterodina, in quanto può u sufruire della portante generata localmente dallo stadio TX: quindi il segnale capta to viene mixato con la portante, e poi viene estratta la banda nell'intorno della fraquenz a intermedia con filtro passa basso attivo (che amplifica anche il segnale) tale segnal e (analogico) amplificato e ripulito (ma ancora distorto) può essere accessibile dall'estern o sul pin22 per poterlo analizzare con oscilloscopio, mentre sul pin25 abbiamo l'uscita di gitale ottenuta tramite un comparatore.

Page 13: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

13 di 25

DATI TECNICI

Antenna STILO omnidirezionale flessibile in gomma ta rata sulla frequenza di 433.92 Mhz. Fornita in Kit per i l montaggio diretto a parete sui contenitori metallic i o plastici in cui alloggia la circuiteria RF. Indicat a per apparecchiature palmari, con caratteristiche antinfortunistiche, e doti di resistenza alle solle citazioni meccaniche ed avverse condizioni climatiche. Possono sostituire una antenna in quarto d' onda.

Fw = 433MHz Z0 = 50Ω Pmax = 2W Top. = -20 +80°C

ANTENNA

Page 14: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

14 di 25 INTERFACCE

PC - MODULO RADIO Siccome i livelli logici della porta seriale del PC (RS232) transitano da -12v (1_logico) a +12v (0_logico), occorre convertirli in livelli TTL (0|5v) che sono adatti ad alimentare direttamente il modulo radio RTX (inoltre il livell o di riposo della RS232 viene anch'esso interpretato come livello logico 0). Il modulo radi o assorbe rispettivamente 2,5 mA in RX e 4,5 mA in TX, quindi il modulo radio dal lato del pc non richiederà alimentazione esterna, poiché scriverò un programma adatto a port are a +12v almeno due terminali [pin 4(DTR) e 7(RTS)] cosicché raddrizzando con dio di e stabilizzando con gli stabilizzatori LM78L05, otterrò la corrente desider ata con %v---. Dallo schema elettrico si notare che il modulo radio è abilitato sia a trasme ttere che a ricevere, ma la comunicazione non può avvenire nei due sensi contem poraneamente: sia perché il modulo radio, sfruttando solo il canale a 433.92 MH z, opera in modalità half duplex, sia perché la stessa porta seriale del pc di per se lav ora in un'unica direzione per volta (è quindi il computer stesso a lavorare in half duplex , trasmettendo e ricevendo in tempi distinti).

GND_TOTGND_5

SIP_25

COMM_FEMMINA

RX_EN_25

TX_EN_8

TX_D_2

RX_D_23RX_D_2

TX_D_3

RTS_7

DTR_4

D11N4148

R14.7k

D41N4148

D31N4148

D21N4148

IN

COM

OUT

U278L05

IN

COM

OUT

U178L05

15

69

78L05

U_M_E

1

2

8 6 10 11 13 12 14 16 20

23

25

9

Digital Data RF SAW

Transceiver

TX_DATA

TX_ENABLE

RX_DATA

RX_ENABLE

Page 15: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

15 di 25 Vediamo adesso alcune specifiche tecniche della por ta COMM del computer:

la descrizione dei piedine è la seguente: - 1 = DCD (data carrier detect, pin i\o per comunicar e se la trasmissione continua ho ha

avuto fine) - 2 = RX (pin d'input dedito alla ricezione dati) - 3 = TX (pin d'output dedito alla trasmissione dati) - 4 = DTR (data terminal ready, pin d'out su cui si invia un livello logico alto quando il

computer è pronto a trasmettere) - 5 = GND (massa comune) - 6 = DSR (data set ready, pin d'input da collegare a l DTR di un altro computer,in

questo modo ricevendo un livello logico alto, ci si pone in ricezione) Quindi il DTR serve a far richiesta di trasmissione dati, tramite il DSR invece si ricevere l'eventuale richiesta, ed in caso affermativo il co mputer si pone in ricezione. - 7 = RTS (request to send, pin d'out che indica con livello logico alto, che il computer

è attivo) - 8 = CTS (clear to send, pin d'input che serve ad id entificare la presenza attiva di un

altro computer o la presenza fisica di una periferi ca) mentre DTR e DSR servono ad instaurare il colloquio (orientati ai dati), RTS e CTS servono ad identificare la presenza di una stazione , che sia periferica o computer: in pratica connettendo i due sistemi, essi portano a livello alto RTS, riconoscendosi a vicenda leggendo il valore di tensione sui rispetti vi CTS; nel caso di una comune periferica basta collegare i due pin per raggirare il segnale, indicando l'avvenuta connessione fisica. - 9 = RI (ring indicator…) la linea di trasmissione seriale COMM si presta vol entieri a comunicazioni in half duplex (cioè che i versi di comunicazione possono avvenire uno per volta: se trasmetto non posso ricevere, se ricevo non posso trasmettere), c on protocolli asincroni orientati al carattere, sino a velocità di 9600bit/s. Di fatti sono proprio queste le caratteristiche di cui si avvale la comunicazione fra robot e PC, seguendo la seguente regola per il riconoscim ento dei caratteri:

1 2 3 4 5

6 7 8 9

Spina maschio, lato connessione

5 4 3 2 1

9 8 7 6

Spina femmina, lato connessione

CARATTERE A 7_BIT START_BIT

1 STOP_BIT

0 PARITY

BIT

Page 16: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

16 di 25 ROBOT - MODULO RADIO L'interfacciamento fra robot e modulo radio avviene in modo strategico: gli ingressi di abilitazione TX ed RX del modulo sono pilotati da d ue comparatori (contenuti nell'integrato LM358); proprio besendosi sul princi pio adoperato con il led bicolore,posso scegliere attraverso un singolo bit se trasmettere o ricevere. La figura seguente rappresenta l'interfecciamento al modulo r adio dal lato robot.

- DRIVER BRACCIO MECCANICO CONTROLATO IN TENSIONE Si tratta di un circuito analogico che riceve in in gresso un valore binario, ed in base alla posizione del braccio meccanico decide se azionare o meno il motorino DC, il BIT d'ingresso serve solo a decider e il verso dello spostamento angolare complessivo, equindi la marcia del motore. Ic1 è l'LM324 che contiene 4 A.O; il DNE293 è un dr iver a mosfet_push-pull per piccoli motori DC. IC1_1/2 sono due comparatori , con relative soglie di riferimento (tarabili attraverso trimmers), in funz ione della posizione del braccio meccanico (rilevata dal potenziometro RM). Il primo comparatore è configurato in modo invertente, viceversa l'altro i n modo non invertente. Quando si raggiunge la posizione inferiore (braccio abbassato) l'uscita del primo comparatore commuta da 0v a 8Vdd (accendendo la spia verde);

1

2

8 6 10 11 13 12 14 16 20

23

25

9

Digital Data RF SAW Transceiver

TX_DATA=P5

TX_ENABLE TRX_MODE=1

RX_DATA= P6

RX_ENABLE RTX_MODE=0

RTX_MODE

INTERFACCIA

Gli operazionali son alimentati con la tensione diretta della

batteria

Page 17: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

17 di 25 invece quando si raggiunge la posizione superiore ( braccio alzato) è il secondo A.O a commutare da 0v a 8Vdd (accendendo la spia rossa). Nel range compreso fra braccio abbassato ed alzato (qui ndi nessuna spia accesa), entrambi gli operazionali danno in uscita una tensione di 0v, che attraverso 2diodi al silicio la faccio diventare 1, 4v. Proprio questa tensione che è maggiore dello 0logico, ma minore dell' 1logico, viene comparata ulteriormente con i livelli logici di controllo for niti dal microprocessore. Si nota c'è bisogno di una sola porta del micro, la qu ale opera direttamente sull'AO3, e negata sull'AO4.

Sapendo che per un comparatore se [ V + > V- ] allora [ Vout = +Vs ], mentre se [ V+ < V- ] allora [ Vuot = GND ], andremo a realizzare delle tabelle relative agli operazionali 3 - 4 per descrivere in che modo viene pilotato il motore:

Motore fermo

1 2 7

4 5 12 13

8 16 3

6

8 10

9

7 5

6

1 3

2

14 12

13

11

4

+Vdd

Ic1_1

Ic1_2

Ic1_3

Ic1_4

NOT

Page 18: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

18 di 25 - SENSORI AD EFFETTO HALL Si tratta di sensori che rilevano il campo magnetico di una certa intensità entro i 2mm. Questi li sfrutto per controllare la velocità delle ruote (a cui ho applicato un piccolo magnete), allo scopo di far andare il ROBOT a velocità equa per entrambe le ruote e quindi diritto. Quando il magnete passa nelle prossimità del sensore questo da in uscita 0volt, altrimenti non avremo niente e quindi la resistenza di pull'UP porta l'uscita a Vcc. (il fatto che questo trasduttore dia un livello logico alto tramite una resistenza, non va trascurato quando lo si interfaccia con la scheda d'acquisizione dati, di cui presto parleremo, perché essa per ogni ingresso pone una resistenza di pull-DWN; quindi per gli ingressi dediti ai due sensori ad effetto hall tale resistenza risulta assente). - SCHEDA ESPANSIONE 16_I \ 16_O - ADC + SENSORE DI TEMPERATURA Si tratta dell'ultima grande risorsa hardware che ho donato al robot. E' una scheda eccezionale che mi permette di ottenere 16 linee d'input ed altre 16 d'output (ma volendo si possono ampliare ulteriormente utilizzando sempre gli stessi pin d'interfacciamento col basic stamp). Inoltre vi è anche un'ingresso analogico realizzato con convertitore ADC804 a 8bit di risoluzione, il cui scopo attuale e la quantizzazione del segnale proveniente da un sensore di temperatura di precisione: si tratta dell'LM35CZ che da in uscita una tensione direttamente proporzionale alla temperatura acquisita (10mV al °C). Il tutto s'interfaccia col micro tramite linee seriali sincrone ed alcuni pin per il caricamento dei dati nei registri. Entrando nei dettagli circuitali, questa scheda si avvale dei favolosi chip C-MOS a media scala di integrazione (MSI): - il CD4014, che contiene un registro a scorrimento PISO

sincrono a 8bit, utile per la serializzazione dei dati senza ricorrere a due chip: MUX e COUNTER, risparmiando sullo spazio, costo e complessità di progettazione.

USCITA SERIALE

INGRESSO SERIALE, DA UN ALTRO REGISTRO O DISPOSITIVO SINCRONO

CARICAMENTO DEGLI INGRESSI TRAMITE IMPULSO A LIVELLO

LOGICO 1

CLOCK LINEA DI SINCRONISMO

INGRESSI PARALLELI

Page 19: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

19 di 25 - Il CD4094 che contiene un SIPO a 8bit, per lo scorrimento

parallelo dei dati, ed un PIPO, anch'esso a 8bit per il caricamento sulle uscite.

Grazie a questi chip si ottiene una delle migliori soluzioni per l'acquisizione seriale di ingressi paralleli e la messa in parallelo di dati seriali, risparmiando sui costi e sullo spazio occupato. Nella pagina seguente è riportato lo schema elettrico del modulo di espansione.

INGRESSO DATI SERIALI

LINEA DI SINCRONISMO (CK)

CARICAMENTO DATI PARALLELI IN LATCH (8BIT PIPO TAMPONE) DOPO

LO SCORRIMENTO

ABILITAZIONE USCITE TREESTATE

USCITA SERIALE DA COLLEGARE AD UN ALTRO REGISTRO PER ALLARGARE LA CAPACITA', E QUINDI IL NUMERO DI USCITE

Page 20: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

20 di 25 Nello schema sono assenti i pin lasciati disconnessi, ed i pin d'alimentazione dei registri (che per tutti i registri son il pin16 a Vcc ed il pin8 a GND), d'altronde cone in tutti gli schemi ho voluto riservare le numerazioni degli stessi pin, per renderne più semplice lo studio.

STORE

EOCD0D1D2D3D4D5D6D7

4014P7P6P5P4P3P2P1P0

PEDSCP

Q7

PORT_EN

DATA_OUT

CLOCK

P7P6P5P4P3P2P1P0

PEDSCP

Q7

P7P6P5P4P3P2P1P0

PEDSCP

Q7

DATA_IN

D

CP

STR

EO

Q0Q1Q2Q3Q4Q5Q6Q7

4094

D

CP

STR

EO

Q0Q1Q2Q3Q4Q5Q6Q7QS

5V

VS

GND

OUT

LM35cz

Vin+

5V

Vcc/2 Vref

CKA

CKIN

C1150pF

10k

4014

4014

4094

CS' RD' Vin-

AGND DGND

ADC808

Vcc WR

5V

5V

PA

RA

LLEL O

UT

PU

TS

PA

RA

LLEL IN

PU

TS

Page 21: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

21 di 25 SOFTWARE Per quanto riguarda il software espongo rapidamente il semplice protocollo relativo alla gestione della comunicazione fra robot e computer, ed il diagramma di flusso, anch'esso semplificato, riguardo le routine svolte dal robot quando interagisce con l'ambiente. - Generalità sul Protocollo progettato per mettere in comunicazione il robot col PC:

comando azione

Richiesta esplorazione ed attesa conferma, se il PC non riceve conferma entro 2s allora evidenzia la mancata connessione e chiede se si vuole ritentare

In caso affermativo il PC si pone in ricezione per acquisire dati ed elaborarli

Codici vari per il tele-controllo

"77a" in ASCII, 10 volte ogni 200ms

"77a" in ASCII, 10 volte ogni 200ms

Robot irraggiungibile o spento

"O " in ASCII, 10 volte consecutive

Robot ha ricevuto comando per

l'esplorazione e quindi invia la conferma "O"

maiuscolo in ASCII, per 10 in modo da garantire il

raggiungimento dello scopo (porre il PC in

ricezione dei dati acquisiti in ambiente aperto)

INFO VARIE PRECEDUTE DA CARATTERI DI RICONOSCIMENTO Rielabora tutti i dati che arrivano preceduti da campo di riconoscimento, realizzato tramite caratteri prestabiliti

Interruzione da parte dell'utente pigiando il

pulsante rosso

" S" maiuscola, che indica lo stop Il programma si riporta nelle condizioni iniziali in cui si controllavano i movimenti del robot

Page 22: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

22 di 25 - tabella delle sequenze di caratteri impiegati nei comandi di telecontrollo:

queste sequenze sono state scelte appositamente per evitare, negli errori di trasmissione, che un comando venga interpretato diversamente, e ciò grazie alla duplicità dei caratteri (11..22..33…), e quindi alla distanza impiegata fra in codice e l'altro (pari a 11): infatti è molto improbabile che una sequenza di due caratteriuguali sia alterata a tal punto da riprodurre altri due caratteri identici; questo risultato lo ho ottenuto facendo esperienza con i moduli radio che qualche volta, per effetto del rumore presente nell'etere, sbagliavano l'interpretazione dei dati di uno o due bit: quando l'errore è di un bit allora ci pensa il controllo di parità a scartare la sequenza, ma quando vi sono due bit alterati si possono creare problemi. Quindi con la strategia adoperata due caratteri un comando alterato non provoca nessun effetto. Il comando "77a" è l'unico che rispetta una regola più complessa: infatti come abbiamo accennato precedentemente, questo comando è destinato alla richiesta di esplorazione automatica, ed una volta il robot lo interpreta invia verso il computer un carattere di conferma "O" maiuscola; questa comunicazione indica al programma sul PC che deve leggere tutto ciò che arriva via radio, e quindi sulla COMM1, ed interpretare i dati. - tabella sequenze dati inviati dal

robot: il computer riceve questi dati, che che possono essere semplici indicatori o dei veri epropri pacchetti, e grazie al programma che ho progettato riesce a gestirli ed a presentarmi le info estratte e rielaborate.

La "a" minuscola indica al robot che

il comando numerico è

terminato e che lo può interpretare

Page 23: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

23 di 25 DIAGRAMMA DI FLUSSO sintetico lato robot Nella EEPROM del robot ci sta un programma davvero complesso che occupa soli 12Kbit e richiede quasi tutta la RAM del micro (251bit su 256bit, ricordando che 256bit equivalgono a 32byte).

accensione

Settaggi iniziali ed inizializzazione di alcune variabili

Va nella routine di acquisizione ponendo il modulo radio in

stato RX

RX comando

? esegui

RX richiesta explo?

Commuta in stato TX, trasmetti conferma e parti

all'avventura

Inizializza alcune variabili, tra cui la velocità delle

ruote stimata equivalente

Avanza nell'ambiente e tramite sensori hall,

acquisisci sincronismo con le ruote, quindi tieni sotto controllo la velocità per

andare diritto

Scannerizza tutti i sensori, rielabora ed eventualmente

reagisci con suoni, luci e movimenti. Trasmetti ad

ogni evento le relative info (in real time)

Qualcuno ha pigiato il

pulsante rosso?

si

no

si no

si

no

Page 24: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

24 di 25 Software PC Questo programma, realizzato grazie alla semplicità di visual basic, a scuola, è costituito da una futuristica interfaccia grafica in cui sullo sfondo del programma possiamo apprezzare una bellissima immagine di un pianeta immaginario ed alcuni effetti grafici calcolati applicati a vari satelliti in movimento, fra cui palle da basebal e pupazzetti vari… ma analizzando l'utilità di questo programma possiamo disporre di un joystik direzionale virtuale realizzato con degli spin button incrociati (le stesse funzioni sono ottenibili tramite tasti direzionali su tastiera, ma l'effetto è più lento, si consiglia di aumentare la velocità di ripetizione dei caratteri da pannello di controllo) ed alcuni pulsanti di facile interpretazione e riconoscimento (visto che su ogni pulsante è indicata la funzione che svolge): questi pulsanti servono ad abilitare o disabilitare i suoni emessi dal robot, abbassare od alzare il braccio meccanico, compiere degli spostamenti in avanti e dietro, fare richiesta di esplorazione ed in caso di mancata connessione appaiono altri due pulsanti per ritentare [ok] o meno [annulla]. Inoltre vi sono: sopra e sotto i pulsanti direzionali due grafici temporali su cui vengono indicate le trasmissioni effettuate, in alto a destra una picture box su cui visualizzo il cursore indicante gli spostamenti del robot in un area (attraverso calcoli trigonometrici), in basso alla finestra c'è una barra di stato indicante l'angolazione, la posizione le coordinate ed il tempo di connessione necessario quando si fa richiesta

di esplorazione. Abbiamo anche una casella di testo in alto nera, che indica i caratteri dalle sequenze in output. Durante l'esplorazione i programma è predisposto per acquisire i dati rielaborarli e presentarli, in questo caso l'interfaccia muta facendomi visualizzare i dati ma il ancora non è completo… lavori in corso…

Page 25: 1 di 25oscarvatrano.altervista.org/contenuti/file/robot.pdf · Non dimentichiamo che un robot è una macchina che per ... scienze in quanto occorre prima avere un'idea di come sono

25 di 25