Rete di scuole per la ROBOCUP JR ITALIA ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Della squadra Domese RC Istituto IIS Marconi Galletti Domodossola ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE La “Rete di scuole per la Robocup Jr ITALIA” è espressione dell’Autonomia scolastica regolata dal D.P.R. 275/99 (art. 7) che permette alle scuole statali di operare sinergicamente per obiettivi condivisi e ritenuti importanti per l’offerta formativa erogata all’utenza. La Rete di scuole è nata sulla condivisione di una serie di principi EDUCATIVI e DIDATTICI riferiti alla realtà della scuola italiana. Questi principi e le conseguenti proposte operative erano stati riportati in un documento del maggio 2008 dal titolo: Manifesto per una RoboCupJr italiana - una proposta per la diffusione dell’utilizzo didattico della Robotica nelle scuole a cura di Andrea Bonarini, Augusto Chioccariello e Giovanni Marcianò. Maggio 2008 L’obiettivo della Rete – organizzare l’edizione italiana della Robocup Jr – concretizza una spinta al confronto ed alla collaborazione tra istituti scolastici, elementi che motivano docenti e studenti all’impegno nell’innovazione, sia didattica sia tecnologica, affrontando i problemi che costituiscono uno standard internazionale dal 2000, quando la Robocup (manifestazione riservata alle Università di tutto il mondo) ha proposto le tre “gare” per la scuola: Dance – Rescue – Soccer. La Robocup Jr ITALIA è Una manifestazione nazionale fondata di tre punti forti: 1. una struttura che cura l’organizzazione e gestisce gli aspetti di organizzazione, promozione, svolgimento ai diversi livelli, regionali e nazionali; 2. un contenuto condiviso, ovvero regolamenti, formule di gara, supporto formativo ed informativo ai partecipanti; 3 3. una documentazione delle proposte didattiche e del lavoro degli studenti che coinvolgono l’uso di kit o robot auto costruiti per la partecipazione agli eventi organizzati dalla Rete. Questo volumetto appartiene alla collana di documentazione. Sul piano organizzativo e gestionale della Rete di scuole lo Statuto prevede organismi ben distinti ma fortemente integrati: COMITATO DI GESTIONE – formato dai Dirigenti Scolastici degli Istituti fondatori o associati alla Rete. Si riunisce due volte l’anno in via ordinaria, ed online per decisioni straordinarie. ISTITUTO CAPOFILA – come previsto dal DPR 275/99 cura gli aspetti burocratici, amministrativi e contabili della Rete. Il Dirigente scolastico dell’Istituto capofila è il legale rappresentante della Rete e provvede a dare esecuzione alle delibere del Comitato di Gestione. COMITATO TECNICO – formato dai docenti referenti degli Istituti fondatori o associati alla Rete, provvede a definire il Bando e i Regolamenti di gara per la manifestazione annuale nazionale, trasmettendoli al Comitato di gestione che li deve approvare. COMITATO LOCALE – si occupa dell’edizione annuale della manifestazione, ed è formato a cura dell’Istituto fondatore o associato, a cui il Comitato di Gestione ha assegnato la cura dell’evento. ISTITUTI PARTECIPANTI – iscrivendosi alle gare, beneficiano del supporto della Rete ma non partecipano alle decisioni gestionali o tecniche. La partecipazione alla gara nazionale li rende idonei per aderire alla Rete. Diversamente serve il parere del Comitato Tecnico. ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Autori Di Mare Gabriele, Olzeri Ivan, Sartori Andrea, Simona Marco DOMESE RC PARTECIPA ALLA GARA DI SOCCER OPEN Istituto IIS Marconi Galletti Classe 5° Elettronica e Telecomunicazioni 5 CAP. 1 - DATI GENERALI La squadra Domese RC è composta dai seguenti membri : - Sartori Andrea (Capitano) Olzeri Ivan Gabriele Di Mare Simona Marco Studenti dell' I.I.S Marconi – Galletti , provenienti dalla classe quinta della sezione di Elettronica e Telecomunicazioni. Un grande aiuto morale, tecnico e pratico agli alunni è stato fornito dai docenti Proff. Raimondo Sgrò (responsabile del progetto) e Flavio Poletti, che hanno spinto i ragazzi ad appassionarsi a queste competizioni e sono riusciti insieme agli studenti di quest'anno e degli anni scorsi a migliorare la qualità dei Robot partecipanti. Si è deciso di presentarsi alla competizione con il nome di Domese RC, volendo mantenere lo spirito di continuità con le scorse edizioni del 2009 2010 e 2011. CAP. 2 - DATI DI CONTESTO E MOTIVAZIONE La Robocup è stata presentata dal nostro Prof. di T.D.P (Tecnologia Disegno e Progettazione) Raimondo Sgrò. Il cambio generazionale ha fatto sì che quest'anno toccasse a noi, studenti frequentanti il 5° anno di elettronica, portare avanti questa esperienza dei robot auto costruiti. La partecipazione a questa categoria richiede molto tempo, oltre che una certa spesa economica. Nel nostro caso abbiamo ereditato un progetto ben consolidato e rafforzato dal successo della scorsa edizione e dai buoni piazzamenti di ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE quelle precedenti. Tuttavia abbiamo dato tutto il nostro apporto per le modifiche ed i miglioramenti introdotti. Due allievi avevano già preso parte lo scorso anno alla competizione nella categoria “soccer light” , e quindi hanno rinnovato l'interesse e la curiosità del cambio di categoria, sostenendo a pieno l'idea lanciata dal Prof. Sgrò. La nota di spicco è che si sono aggiunti due nuovi studenti, attirati dai racconti positivi degli altri. E' bello coinvolgere più ragazzi e formare un gruppo di lavoro più ampio, poiché si riesce meglio a suddividere le mansioni. Ad inizio anno abbiamo riscontrato qualche difficoltà sul nuovo linguaggio di programmazione (“assembly”), ma procedendo in parallelo fra gli studi affrontati in classe e quelli svolti durante l'attività extrascolastica, siamo riusciti ad integrare il tutto, migliorando sia il programma del robot sia le nostre conoscenze. I primi ostacoli sono stati superati anche grazie all'aiuto e alla disponibilità del Prof. e dell'Assistente Tecnico Poletti. CAP. 3 – NOME E STRUTTURA DEL ROBOT I due robot si chiamano Mark1 e Mark2, si è deciso i mantenere i loro nomi anche per questa edizione, in onore del nostro Istituto. Rispetto alle passate edizioni sono state apportate numerose modifiche, alcune delle quali dettate dalla necessità di adeguarsi al Regolamento Internazionale del 2012. Il robot si compone di diverse parti. Il “cervello” del robot è la scheda madre basata sul microcontrollore della Microchip PIC 18F4321 sostituita rispetto alla precedente che montava 16F876A. Attraverso la scheda madre è possibile interagire manualmente con il funzionamento del robot, infatti è possibile resettare il programma, commutare attraverso uno switch il suo ruolo 7 (attacco/difesa), azionare il programma di taratura della bussola ed ovviamente, spegnerlo ed accenderlo. Il caricamento del programma avviene tramite il collegamento ICSP, che consente la programmazione on board del dispositivo, mediante un apposito programmatore. La scheda madre durante il normale funzionamento andrà sempre ad interagire con le periferiche di I/O leggendo quelle in ingresso, al fine di rilevare informazioni utili per il successivo movimento della macchina (lettura sensori), oppure azionando quelle di uscita per compiere determinate azioni (lettura sensori ostacoli , azionamento motori). La scheda madre per questa edizione è stata ridisegnata, siamo attualmente alla versione 2.1. Rispetto alle precedenti versioni, oltre alla sostituzione del microcontrollore, sono state integrate alcune circuiterie che si trovavano, esterne, su una scheda ausiliaria, come pulsanti, led, potenziometri di regolazione ecc. Le periferiche in ingresso sono le seguenti: - Schede di rilevamento Infrarosso - Sensori di contatto - Sensori ultrasuoni - Sensore di campo magnetico (bussola). La scheda degli infrarossi è nuova, costruita in tecnologia SMD, gestisce dodici sensori, (mentre quella precedente ne gestiva solo otto) , quindi è stato incrementato il numero di canali con conseguente miglioramento dei movimenti del robot durante la ricerca della palla. Questa interagisce con il microcontrollore tramite una rete di condizionamento (Tone Decoder) e pone le informazioni su un bus dedicato di dodici bit digitali. Questa scheda è stata costruita da un allievo della classe che ha partecipato allo stage formativo in itinere presso un'azienda del luogo che produce circuiti stampati. E’ stata mantenuta una scheda IR con un singolo sensore per rilevare la prossimità della palla nella parte frontale del robot, ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE per poter azionare diversamente i motori ed il rullo di cattura. Queste schede sono di progettazione e realizzazione dell’Istituto. Il robot è munito di un sensore di contatto necessario al fine di rilevare l’avvenuta cattura della palla e comunicare con il microcontrollore attraverso un pin dedicato. Vi sono poi i sensori ad ultrasuono, acquistati separatamente, così come la bussola. Questi comunicano con il microcontrollore tramite un protocollo I2C, impiegando il relativo BUS. Le periferiche in uscita sono: - motori di trazione - rullo di cattura - stantuffo di lancio E’ stata inoltre realizzata una scheda per la gestione della carica delle batterie. I due motori di trazione sono pilotati dal microcontrollore tramite un'interfaccia di potenza munita di regolazione della velocità mediante PWM. I PCB dei ponti che controllavano l'azionamento dei motori sono di recente costruzione e anch'essi migliorati. Infatti, i motori sono stati sostituiti da motori con una minore riduzione, caratterizzati da una maggiore velocità. Ciò ha portato ad un incremento della frequenza del PWM generato dal PIC. Questo ha consentito l’aumento della frequenza dell’oscillatore a bordo. Ora la scheda madre monta un oscillatore a 4MHz , mentre prima era limitato dalla frequenza del PWM dei motori e montava solo un quarzo a 1Mhz. Per controllare questi motori sono necessarie quattro uscite digitali, più il comando PWM. Nella nuova scheda di controllo è stato poi introdotto un controllo addizionale di arresto, per frenare i motori, evitando il rotolamento dovuto all’inerzia. 9 Il Regolamento 2012 ha portato la modifica del nostro potente sistema di lancio. Infatti prima si impiegava un booster che erogava una tensione di oltre 70V, che azionava una bobina usata per effettuare il lancio. Ma essendo quest'anno vietate le pompe di carica e limitate le tensioni a bordo, abbiamo dovuto adattarci ad una semplice scarica di tensione sulla bobina di lancio. L’azionamento avviene attraverso un transistor controllato da un’uscita digitale del microcontrollore. Il rullo per la cattura della palla si compone di un motore in continua controllato da un transistor. Anche questo blocco viene controllato da un’uscita digitale del microcontrollore. La scheda della carica delle batterie non interagisce con l'unità centrale ma è un accessorio da noi progettato e realizzato quest’anno che ci permette tramite dei led di controllare la tensione d'alimentazione e di non trovarsi quindi con le batterie scariche. Schema a Blocchi della parte elettronica del robot: sono evidenziate le periferiche di ingresso ed uscita, la struttura generale rimane invariata rispetto la passata edizione, ma molti blocchi sono stati riprogettati. ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CAP. 4 – MECCANICA La struttura portante del robot auto costruito è basata su due dischi di bachelite fresata, uniti fra di loro da tre colonnine di alluminio. Questo telaio permette la divisione del robot in tre piani. Nel piano superiore è collocata la scheda madre con la relativa batteria di alimentazione e la bussola. Al piano centrale sono situate le alimentazioni dei motori, le schede relative all'interfaccia di potenza dei motori e al condizionamento dei sensori IR ed il sistema di cattura della palla con la sua scheda di interfaccia. Il piano inferiore invece è composto da due nuovi motori più veloci e i sensori ad infrarosso che rispetto all'anno scorso sono passati da otto a dodici. Inoltre vi è anche la bobina che aziona lo stantuffo per il lancio della palla e un ball caster che funge da galoppino e segue le manovre impostate dalle ruote anteriori. Uno dei problemi meccanici che abbiamo dovuto affrontare è stato il contenimento del peso, infatti da quest’anno il limite per la categoria open è di 2400g. Questa operazione è stata facilitata dal fatto che il blocco del booster è stato completamente rimosso. Inoltre alcuni distanziali in ottone sono stati sostituiti con quelli in teflon. Diverse parti del robot sono stati recuperati da vecchi apparati, ad esempio i rulli di cattura da vecchie stampanti, i motori dei rulli da videoregistratori, anche le ruote del Mrk1 sono rulli di stampanti. I telai sono stati realizzati in bachelite, le colonnine in alluminio, impiegando le disponibilità presenti in istituto. Tutte le lavorazioni sono state svolte in istituto. 11 Primo piano del rullo di cattura (in alto), piano inferiore del robot in fase di montaggio ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Disegni CAD in proiezione ortogonale della parte meccanica del robot calciatore 13 CAP. 5 – UNITÀ DI CONTROLLO L'unità di controllo dell'anno passato era la scheda madre basata sul PIC 16F876A della Microchip. Quest'anno invece si è optato per la sostituzione del vecchio microcontrollore con il PIC 18F4321. Il modello utilizzato dispone di quaranta pin, nei quali possiamo individuare cinque port: A, B, C, D, E. Oltre a questi ed alle alimentazioni Vss e Vdd, troviamo il pin MCLR che può essere utilizzato come terminale di reset. Inoltre troviamo i due pin OSC1 e OSC2 dedicati all’oscillatore il quale è un quarzo da 4MHz. L'uso del PIC 18F4321 ha permesso l'aumento del numero di sensori permettendo così di individuare meglio la posizione della palla, ma anche di aggiungere altri controlli come pulsanti selettori e LED di segnalazione. Sulla scheda madre è presente un regolatore di tensione tipo 7805 che fornisce l’alimentazione di 5V alle periferiche. A bordo è inoltre presente il bus per la comunicazione I2C con le relative resistenze di pull up, ed anche i terminali ICSP per la programmazione a bordo del microcontrollore. Anche questa scheda madre, come le precedenti, è stata realizzata in istituto. ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Pin out della scheda madre, sono presenti ben 11 pin aggiuntivi rispetto la versione precedente. 15 Schema elettrico della scheda madre ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Master della scheda madre con vista componenti 17 CAP. 6 – SENSORI Abbiamo già elencato i sensori di cui il robot è munito, vediamone una descrizione: Il sensore bussola, scheda CMPS03 della Devantech, si basa sul sensore di campo magnetico Philips KMZ51. E’ in grado di fornire il dato relativo alla posizione attraverso un’uscita PWM o attraverso il protocollo I2C. Come lo scorso anno, abbiamo mantenuto la seconda soluzione poiché garantisce una maggiore fedeltà grazie alla trasmissione digitale, inoltre il BUS I2C può essere impiegato per più sensori, con conseguente risparmio di pin di in-out. Quest'ultimo è un protocollo seriale che impiega due linee: SDA, linea riservata al trasferimento dei dati e SCL, linea del clock. Gli eventi che avvengono sulla linea sono: START (avvia la trasmissione), STOP (chiude la trasmissione), RESTART (Riavvia la trasmissione). Questo protocollo prevede che un dispositivo sia asservito all'altro (Master-Slave): nel nostro caso il microcontrollore sarà il master, mentre la bussola lo slave. Il sensore ad ultrasuoni permette di evitare gli ostacoli nel campo come per esempio, le pareti o altri robot presenti. Il principio base è l’emissione di un impulso a 44KHz e la relativa misurazione del tempo di riflessione, proporzionale alla distanza da rilevare. Sul robot sono stati installati dei sensori tipo SRF02 della Devantech, anche per questi sensori è stato utilizzato il protocollo I2C per la comunicazione, in questo caso, l’alternativa era la comunicazione seriale 232. Fondamentali per la ricerca della palla sono i sensori ad infrarossi, sul robot soccer sono disposti a cerchio dodici sensori sulla base del primo disco in bachelite, i quali recepiscono in ogni angolo del campo il segnale emesso dalla palla e lo inviano alla scheda di decodifica. Come si è detto questa scheda è stata realizzata quest’anno, migliorando la ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE precedente ad otto canali. Ad ogni sensore corrisponde un angolo di rilevamento della palla. Essendo il segnale emesso dalla palla modulato a 1,2KHZ su una portante da 40KHz, c’è stata la necessità di utilizzare un sistema di decodifica del segnale basato dell’integrato NE567. Questo opera da rilevatore di frequenza, accordato sulla frequenza della modulante. Prima di essere decodificato, il segnale proveniente dagli IR viene amplificato, e successivamente squadrato attraverso dei comparatori a soglia singola. Il circuito base del canale, rimane il medesimo ed è riportato in figura. La scheda dei sensori IR assemblata e pronta per il montaggio sul robot 19 Immagine CAD della scheda in fase di ingegnerizzazione La scheda dei sensori IR montata sul robot ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Disposizione dei dodici sensori IR sul piano inferiore del robot Serigrafia lato componendi della scheda sensori IR 21 Vcc Vcc Vcc 2 1 6 5 10nF TL081 C2 100K R2 C3 22nF 4.7nF LFIL OUT FIL TC TR LM567 OUTPUT 8 R9 10K R7 22k 2 + C6 33nF R3 Vcc 470K R4 15K R8 C5 R5 33nF 10K 10K U3 7 3 4 1 6 PHOTODIODE 4 5 D1 INPUT 8 5 3 2 - 4 C1 6 +VCC U2 GND 3 + R6 22K U1 7 7 1 R1 100K J2 1 2 LM311 HEADER 2 Schema elettrico di un canale dei sensori IR Vcc ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Per rilevare la cattura della palla, si utilizza una combinazione di due sensori, un rivelatore infrarosso IR0, posto sul piano superiore del robot, in maniera che possa individuare quando la palla si trova nei pressi del robot, ed un sensore di contatto, posto sotto il rullo, realizzato con un pulsante normalmente chiuso con resistore di pull-up, il quale fornisce un livello logico alto, se premuto. Dettaglio sul sensore ad ultrasuoni frontale CAP. 7 – ATTUATORI I motori di trazione hanno una velocità massima di 295RPM, contro i 175RPM dei precedenti, la tensione nominale è la medesima, pari a 7,2V. Sono controllati attraverso un’interfaccia di potenza a ponte ad H. Esso è formato da quattro transistor MOS che garantiscono la possibilità di inversione di marcia. Tale interfaccia è stata riprogettata e migliorata, in quanto la 23 precedente limitava la frequenza del PWM (Pulse Width Modulation) costringendo ad usare un clock di sistema piuttosto lento. Ad esempio, il PWM non è implementato mediante un quinto MOSFET, ma viene applicato direttamente a due MOS del ponte, mediante una porta logica AND, che combina il segnale di direzione ed appunto il PWM. In questo modo, l’interruzione del circuito risulta più veloce. Il principio del PWM è illustrato nelle seguenti figure. In pratica, date le levate frequenze di lavoro, l’attuatore risente esclusivamente del valore medio del segnale. Rappresentazione di un segnale con modulazione PWM con 3 differenti duty cicle Il vantaggio ottenuto da questa modulazione è il controllo del carico con una diminuzione della potenza dissipata dai transistor. Il ponte ad H ,o ponte intero, è una particolare configurazione che permette di invertire la polarità della tensione su un carico. I transistor lavorano a coppie ed operano nella configurazione ad emettitore comune in ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE maniera da ottenere una tensione di saturazione Vds molto bassa. Per il lancio della palla si utilizza un elettromagnete composto da 700 giri di rame smaltato di sezione 1mm2 che aziona uno stantuffo mediante campo magnetico. Lo stantuffo è realizzato in ferro per la parte terminale, ed in alluminio per la parte iniziale. Quest’anno non è stato possibile impiegare il sistema booster a pompa di carica, poiché il regolamento 2012 limita a 15V le tensioni a bordo. Abbiamo dovuto pertanto pilotare direttamente la bobina di lancio con la batteria Lipo da 11.1V a disposizione. Da un’analisi teorica condotta, è risultato che il campo all’interno della bobina è proporzionale alla corrente e non potendo salire con il livello di tensione, abbiamo ridotto il valore ohmico della bobina, aumentando la sezione del rame, e riducendo il numero di spire. La resistenza misurata risulta pari a circa 1Ohm, per una corrente teorica di circa 11A. La batteria Lipo dovrebbe essere in grado di erogare tale corrente almeno per brevi istanti, risulta infatti dichiarata una corrente di cortocircuito pari a venti volte la corrente nominale. Per quanto riguarda il dispositivo di comando è stato impiegato un MOS a canale N tipo IRF530, caratterizzato da correnti di drain di oltre 15A. Date le elevate correnti e la presenza dio un carico induttivo, si è impiegato un diodo di ricircolo di tipo fast recovery, modello MR850. 25 1N4148 1N4148 4.7 K R6 NPN MOSFET N R4 10 K R7 0 R5 10 K 4 COMANDI U1B D3 D2 4081 MOSFET P 5 2 1 2 3 4 5 6 1 VDD 100 nF MOTORE 4081 VDD 4.7 K 1N4148 1N4148 R1 R2 10 K NPN 3 R3 10 K MOSFET N U1A D4 D1 1 2 MOSFET P 14 Power motore 7 1 2 Power logica 1 2 Schema elettrico dell’interfaccia di controllo dei motori, ponte ad H Per azionare il rullo di cattura si impiega un transistor che opera in ON-OFF comandato dal relativo pin del microcontrollore. Tale scheda non presenta particolari problemi, pertanto si è scelto di usare un transistor Darlington di potenza, modello BDX53. ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Master e serigrafia lato componenti dei nuovi ponti 27 2 VCC MG1 D1 C1 MOTORE DC 100nF 1 1N4007 JP1 R1 5,6K Q1 BDX53 2 1 Comando Scheda di interfaccia per il rullo di cattura VCC D1 L1 Bobina MR850 J1 Q1 IRF530 1 2 R1 10Kohm Comando Scheda di interfaccia per la bobina di lancio ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CAP. 8 – AMBIENTE DI SVILUPPO L'ambiente di sviluppo utilizzato è MP LAB IDE v.8.80 fornito da Microchip, (produttore del microcontrollore PIC 18F4321 impiegato nel robot). Questo software permette sia la stesura del programma in assembly, sia la simulazione, così da agevolare la fase di debug. La scelta del linguaggio di programmazione è ricaduta, da anni, sull' ASSEMBLEY. Ciò perché si rende più facile il controllo a livello macchina, con istruzioni ben mirate ed eseguite precisamente dal robot. Una volta prodotto il codice macchina (file .HEX), questo viene scritto nel micro attraverso un altro software gratuito, WINPICPGM. L’interfaccia di programmazione sfrutta la porta seriale, ed è stata anche questa realizzata in istituto. Immagine della schermata di MPLAB v8.80 29 CAP. 9 – IL PROGRAMMA SOFTWARE Il software creato è uguale per entrambi i robot, ed è stato scritto in Assembley. Un altro vantaggio di aver impiegato un dispositivo della famiglia 18F è quello di disporre di un set di istruzione esteso, con conseguente facilitazione nella stesura di alcune parti di programma. Il diagramma di flusso descrive ad alto livello il funzionamento generale del programma. Per prima cosa vengono definite tutte le variabili e costanti utilizzate, vengono definiti i nomi simbolici dei pin di I/O ed inoltre vengono le configurate le periferiche come convertitore A/D, modulo PWM ed I2C. Successivamente, seguendo il flusso del programma, se al momento dell'accensione si preme il tasto di taratura, si entra in una subroutine che: cerca il Nord magnetico, attiva i motori e si mette in quella determinata posizione, questo a scopo di debug e di test per la bussola. Se non viene premuto nessun tasto invece si entra nella parte principale. Viene memorizzata la prima lettura della bussola, in modo da avere un riferimento per il tiro. In seguito, viene letto lo stato del selettore di ruolo: se risulta posizionato su DIFESA il robot rimane fermo finché non avverte la presenza della palla, altrimenti se è posizionato su ATTACCO attiva i motori e si dirige verso il centrocampo. Ora vi è un ciclo di circa quaranta combinazioni, dove si confronta lo stato dei dodici sensori IR con quelle che abbiamo individuato come configurazioni ammesse. Nel diagramma sono riportati solo una parte delle combinazioni, ma nel programma sono presenti molti test che vanno ad eliminare, tramite la funzione confronto diretto (tramite l’istruzione CPFSEQ) quelle "non accettabili" che venivano a crearsi in prossimità delle sponde del campo che riflettevano i segnali inviati della palla in altre direzioni. Il risultato di ogni confronto porta a un determinato movimento del robot, ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE viene quindi chiamata una subroutine dei motori in cui sono definite velocità e direzione. Terminata l’analisi di tutte le combinazioni si esegue un test sul FLAG PALLA, ovvero un bit che indica se la palla è stata rilevata, allora non si esegue il test sugli ultrasuoni, dando priorità alla cattura della palla e viene attivato il rullo di cattura. In questo caso la velocità di avanzamento viene ridotta per non allontanare la palla. Se questa viene catturata, si esegue ancora il test sul sensore di contatto, si attivo il FLAG PALLA , e si attivo il rullo di cattura, le due condizioni di attivazione sono volutamente ridondanti. Successivamente entro in un'altra subroutine chiamata CERCANORD. Qui interrogo la bussola, e vado a ricercare il valore memorizzato all'inizio del programma. Si esegue anche un test mediante gli ultrasuoni laterali per correggere la direzione di tiro, nel caso in cui il robot risulti non centrato rispetto alla porta. Se tutte le condizioni sono soddisfatte viene spento il rullo di cattura, così la palla non ruota e si attiva subito la bobina di lancio. Viene quindi spento il FLAG PALLA ed il tiro è stato compiuto. Da qui il programma riprende ciclicamente il ciclo. La perdita della palla causa l’uscita da questa subroutine ed il rientro nel ciclo principale. All’interno di questo viene anche eseguito un test sull’ultrasuono anteriore confrontando il valore con una soglia. Se il dato è minore della soglia vengono chiamate le subroutine di manovra, le stesse utilizzate nella ricerca palla, al fine di evitare lo scontro con altri robot o con le pareti. 31 ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Diagramma di flusso principale del programma del robot 33 Diagramma 2: Subroutine di manovra AVANTI, si noti la diversa impostazione della velocità se ci si trova nei pressi della palla. ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Diagramma 3: Subroutine RILEVAPALLA, come si vede questa sub gestisce un flag che tiene memoria del fatto che la palla è stata rilevata. Serve principalmente per l’accensione del rullo di cattura. 35 Diagramma4: Subroutine CERCANORD in questa sub avviene la chiamata alla bussola per orientarsi verso la porta ed effettuare il lancio. Riportiamo di seguito un brano di programma commentato ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE CICLO MOVF MOVWF MOVF ANDLW MOVWF MOVLW PORTB,W IR ;Carico il PORTB nel registro di appoggio IR PORTD,W 0XF0 ;Maschero il nibble basso IR2 ;Carico il PORTD nel registro di appoggio IR2 b'11111110' ;Test su sensore IR 1 CPFSEQ GOTO MOVLW CPFSEQ GOTO CALL IR TIR1 b'11110000' ; IR2 TIR1 DX_PLUS_FAST ;Salta se sono uguali ;esce se diversi MOVLW CPFSEQ GOTO MOVLW CPFSEQ GOTO CALL b'11111100' IR TIR12 b'11110000' IR2 TIR12 DX_PLUS_FAST ;Test su sensore IR 1&2 ;Salta se sono uguali ;esce se diversi MOVLW CPFSEQ GOTO MOVLW CPFSEQ GOTO CALL b'11111100' IR TIR010212 b'01110000' IR2 TIR010212 DX_PLUS_FAST ;Test su sensore IR 1 2 12 ;Salta se sono uguali ;esce se diversi TIR1 TIR12 TIR010212 ……… Alte condizioni …….. GOTO CICLO Questa parte del programma rappresenta il ciclo principale, si tratta di una serie di confronti tra lo stato attuale dei dodici sensori e le configurazioni ammesse che portano alle varie manovre. Per realizzare tale operazione è stata molto utile l’istruzione CPFSEQ, esegue un confronto tra accumulatore e registro e causa un salto in caso di uguaglianza. I sensori sono attivi bassi, pertanto la presenza di uno zero indica che la palla è stata rilevata da quel particolare sensore. 37 CAP. 10 – SORGENTE DI ALIMENTAZIONE Il robot è equipaggiato con tre sorgenti differenti di alimentazione: - Pila ricaricabile da 8,4V 270mA/H tipo”transistor”: fornisce l’alimentazione alla scheda madre, lo stabilizzatore interno alla scheda provvede a fornire l’alimentazione a 5V alle schede periferiche. - Pacco da 7,2V formato da 6 pile ricaricabili tipo AA da 3000mA/h. Fornisce l’alimentazione ai ponti che controllano i motori di trazione - Pila LiPo da 11,1V 1800mA/h, fornisce l’alimentazione al sistema di lancio ed al rullo di cattura. La scelta di impiegare differenti fonti di alimentazione è legata alle differenti esigenze degli attuatori, ed al fatto di voler sparare l’alimentazione della logica di controllo da quella della potenza al fine di ridurre i disturbi. Per controllare lo stato di carica delle tre batterie è stata realizzata una scheda, essenzialmente formata da tre comparatori, che leggono la tensione attuale della batteria confrontandola con una soglia. Se la tensione è al di sotto di questa, il led relativo si spegne, indicando batteria scarica. E' inoltre possibile misurare manualmente la tensione ai capi di un connettore a vite senza dover aprire il robot, come da richiesta del regolamento internazionale. Alla base del funzionamento di questa scheda vi è l’integrato MAX931. Si tratta di un comparatore munito di un riferimento fisso in tensione, questo è importante se si vuole determinare con precisione lo stato della tensione delle batterie. La scheda può controllare tre differenti sorgenti si alimentazione, il livello di soglia di intervento dei LED è regolabile mediante un apposito trimmer multigiro. 8V 1N4148 7 6 J2 J1 D1 3 4 U4 + R7 1K 8 - MAX931 D2 OUT aux 8 V LED 8 V 2 1 5 1 2 12 V R8 2.2K R2 100K J3 D3 8 5 12 V OUT 12V SW2 2 1 3 LED 12 V U2 + 7 LM311 4 1 6 1 2 2 RV2 50K IN 12 V J5 J4 + BATT OUT aux 12 V D4 8 5 1 2 R9 1.5K R3 100K 12 V + BATT IN BATT 1 2 3 LED BATTERIE U3 + 7 LM311 R10 100K 4 1 6 J6 J7 2 RV3 50K 39 Schema elettrico della scheda di controllo di carica delle batterie 2 1 1 2 RV1 50K OUT 8 V SW1 IN 8 V 8V R1 100K 8V ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE 8V APPENDICE: FOTOGALLERY Alcuni dettagli dei robot, dal’alto a sinistra: vista sulle schede ci cattura e di lancio, schede dei ponti, in basso la scheda madre. ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Il robot cablato con il piano superiore aperto 41 Vista inferiore del robot, si notano la bobina di lancio, i motori, il ballcaster ed i blocchetti che ospitano i fotodiodi IR ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE Il prototipo Mark1 ultimato 43 Il prototipo Mark2 ultimato ROBOCUP JR ITALIA 2012 – Riva del Garda (TN) 19-21 aprile REPORT DI DOCUMENTAZIONE La squadra Domese RC, da sinistra: Gabriele Di Mare, Andrea Sartori, Marco Simona ed Ivan Olzeri. 45 INDICE P.6 - CAP. 1 - DATI GENERALI P.6 - CAP. 2 - DATI DI CONTESTO E MOTIVAZIONE P.7 - CAP. 3 - NOME E STRUTTURA DEL ROBOT P.11 - CAP. 4 - MECCANICA P.14 - CAP. 5 - UNITÀ DI CONTROLLO P.18 - CAP. 6 - SENSORI P.23 - CAP. 7 - ATTUATORI P.29 - CAP. 8 - AMBIENTE DI SVILUPPO P.30 - CAP. 9 - IL PROGRAMMA SOFTWARE P.38 - CAP. 10 - SORGENTE DI ALIMENTAZIONE P.40 - APPENDICE - FOTOGALLERY