Niccolò Francato AUTOMA SCANSA OSTACOLI



Documenti analoghi
PLC51 AUTOMAZIONE. di G.Filella e C. Befera filella@tin.it

MONTAGGIO E PROGRAMMAZIONE DEI PIC

Che cos è la barriera luminosa?

Rossetto Flavio a.s. 2011/2012 classe 5E 2

OSCILLATORI AL QUARZO: CONTASECONDI

L interruttore Microfonico

Il sensore rilevatore di presenza modalità d uso

Manuale d uso. Regolatore di carica EP SOLAR modello EPRC10-EC, per camper, caravan, barche, bus. ITALIANO

ESERCIZI - SERIE N.1

NASTRO TRASPORTATORE CON PIC

Automobile Bluetooth

Carica batterie. ADATTATORE 9V PER ACCENDISIGARI Fornisce una tensione di +9V dalla presa accendisigari da 12V dell automobile.

La propagazione della luce in una fibra ottica

PROGETTAZIONE DI UN CONTROLLO ON-OFF CON CRITERI E METODOLOGIA

CARICATORE TEMPORIZZATO PER BATTERIA Ni-Cd

minipic programmer / debugger per microcontrollori PIC Marco Calegari

INFORMATIVA AVVERTENZE

IT Manuale istruzioni

STRUMENTO LOCALIZZATORE DI CAVI MODELLO: 5000E MANUALE D USO

MISURATORE DIGITALE MODELLO M890G

VOLT POT 1K R 220. OPEN FOR 60 Hz STAB. Regolatori R 220. Installazione e manutenzione

REGOLATORE PWM. Rev.1 del 24/02/2012

TEL32G Sistema di Allarme e Telecontrollo su rete GSM

INTEGRATORE E DERIVATORE REALI

Corso di DISPOSITIVI E SISTEMI PER LE COMUNICAZIONI IN FIBRA OTTICA

LABORATORIO DI SISTEMI

CONTROLLO IN TENSIONE DI LED

MANUALE UTENTE VIVALDI MA-5240 MA-5120 MA-5060 MIXER AMPLIFICATO

INTERFACCIA PER PC MEDIANTE PORTA SERIALE

Motomate Motomate 3 85

POLITECNICO DI TORINO

Famiglie logiche. Abbiamo visto come, diversi anni fa, venivano realizzate in concreto le funzioni

Caratteristiche elettriche

Lampeggiatore con timer 555

Controllo di un Motore Elettrico in Corrente Continua

Serie Aspetto Tipo Articolo Distanza operativa /75 /'675. Serie Aspetto Funzionamento Caratteristiche. a seconda della fibra ottica utilizzata

Manuale tecnico generale CRPRO2

Chiave DTMF con PIC16F84. Angelo - IT9DOA

MANUALE DI ISTRUZIONE ED USO SCHEDE ELETTRONICHE DI FRENATURA PER MOTORI C.A. FRENOMAT-2, FRENOSTAT R

Introduzione...xiii Istruzioni per l uso...xiii File di supporto al libro... xiv

MST_K12_INV. Regolatore di velocita per motori in CC con comando esterno della inversione della rotazione. Manuale d uso e d installazione

BARRIERE FOTOELETTRICHE PER MISURA AUTOMAZIONE CONTROLLO

PREMESSA AUTOMAZIONE E FLESSIBILITA'

Comprendere il funzionamento dei convertitori V/f Saper effettuare misure di collaudo

The Power Owner's Manual X702

MiniScanner 10cm. Lista componenti R1-R8 R9. Montaggio

Combinatore telefonico

Gamma BRUSHLESS CROUZET

10. Funzionamento dell inverter

Alimentazione Switching con due schede ATX.

POLIFEMO LIGHT Manuale di Riferimento Release 2.0

CIRCUITO DI TEST E SOFTWARE UTILIZZATI

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino. Parte E: Circuiti misti analogici e digitali Lezione n E - 3:

CORSO SERALE ( TDP ) DEMOBOARD FN1Z PER PIC 16F877/16F877A

Manuale di istruzioni del regolatore di carica per modulo fotovoltaico. Serie EPRC10-EC/PWM ITA

Serie 40 - Mini relè per circuito stampato ed a innesto A. Caratteristiche

I motori elettrici più diffusi

PICOTEP - Ing. Ferdinando FUSCO

L ELETTRONICA. Il progetto completo della scheda di interfaccia col PC tramite porta parallela e del driver da 2A per il pilotaggio dei motori

Sensori magnetici di prossimità a scomparsa Serie CST-CSV

Istruzioni di montaggio accensione a rotore interno Stage6 Piaggio & Minarelli

2 Qual è il guadagno totale di due stadi amplificatori da 6 db e da 3 db : A 4,5 db B 9 db C 6 db

TECNOLOGIA DELLE RESISTENZE

COME ALIMENTARE UN LED BIANCO.

Esami di Stato Soluzione della seconda prova scritta. Indirizzo: Elettronica e Telecomunicazioni Tema di ELETTRONICA

Progetti reali con ARDUINO

Sensori magnetici a scomparsa Serie CST - CSV e CSH

A/D CON PIC 16F877. Sommario INTRODUZIONE... 2 SELEZIONARE I BANCHI... 2 ADCON ADCS1, ADCS CH2, CH1 E CH GO/DONE... 6 ADON...

Ricevitore Supervisionato RX-24 Dati tecnici

Diamo un'occhiata ad alcune delle caratteristiche fondamentali della E4: il Modello Elettrico DEFINITIVO!

TUTORIAL: COME USARE UN LM35 PER MISURARE UNA TEMPERATURA SU TUTTA LA SCALA CENTIGRADA

Motore passo passo: Laboratorio di Elettronica 1

Motori Motore passo-passo Stadio di potenza PWM Sincrono Stadio di potenza del motore passopasso. Blocchi funzionali. Set point e generatore PWM

MOTORIZZAZIONI PASSO-PASSO Motori, motori con driver integrati e software di configurazione

introduzione I MICROCONTROLLORI

MA 431 DISPOSITIVO RILEVAZIONI ALLARMI DI BATTERIA PER XLD SWITCH BOX V 2.0/V 2.1

MA 433 MODULO ALLARMI PER TELAIO DSLAM

Ciascun digit indica il seguente stato:

VIW TRE CANALI LC50A RS232 - RACK

SENS. DOPPIO PIR E DT EFFETTO TENDA FILARE

Gli attuatori. Breve rassegna di alcuni modelli o dispositivi di attuatori nel processo di controllo

Introduzione 2. Serie P20 4. Serie P28 6. Serie P35 8. Serie P Serie P Serie P Serie P Serie P85 18.

MANUALE ISTRUZIONI COD. 251/92. Motori, azionamenti, accessori e servizi per l'automazione

Lettore codice a barre ivu (BCR)

Comandi pneumatici 6.0. Unità di comando. Sistema Compact M5. D06_00-pneumatic_control_systems. Comandi pneumatici

GUIDA INSTALLAZIONE NB-AFW1

NTC E MISURA DELLA TEMPERATURA CON ARDUINO

ROBOCUPJR 2011 Z8OBT. PARTECIPA ALLA GARA DI: rescue ISTITUTO: ITIS A. Rossi CLASSE: 5BT

SCHEDA DI CONTROLLO MOTORE BRUSHLESS BBL_198

Basetta per misure su amplificatori

SISTEMA PER LA TRASMISSIONE RADIO DI IMPULSI HL 615. Manuale d uso Versione 06/2013. TAG Heuer Timing Pagina 1 / 8

IL CONTROLLO AUTOMATICO: TRASDUTTORI, ATTUATORI CONTROLLO DIGITALE, ON-OFF, DI POTENZA

DVSIR SIRENA VIA FILO DA ESTERNO. Il presente manuale può essere soggetto a modifiche senza preavviso

Impianti per il trasferimento di energia

Sensori di Sensori di spost spos am ent ent a cont cont t at o Pot P enziom etri enziom

LA CORRENTE ELETTRICA

CHIAVE ELETTRONICA CON CHIP CARD (EEPROM) di Massimo e Leonardo Divito div.massimo@tiscali.it

Progettazione del robot

PLC Programmable Logic Controller

Laureando: Edoardo DEGRASSI

Transcript:

Niccolò Francato AUTOMA SCANSA OSTACOLI

Indice: pag. Introduzione 2 Descrizione 3 Alimentazione 3 Sensori IR OMRON e adattamento del segnale 4 Fotodiodi IR, trattazione del segnale, comparazione e stadio emettitore IR 5 Stadio di potenza per il controllo dei motori e meccanica 7 Microcontrollore, generazione del clock e reset 9 Programma per la gestione del robot 11 Lista componenti 16 Foto, schemi e PCB 18 1

Introduzione: Il progetto da me realizzato consiste in un robot che attraverso dei sensori ottici evita ostacoli. Per realizzarlo ho utilizzato quattro sensori ottici IR della OMRON e quattro coppie diodo IR fotodiodo IR per la rilevazione degli ostacoli, due LM358 e un 4050 per adattare e trattare i segnali, un PIC16F876A per elaborare i segnali ricevuti dai sensori e comandare i motori e un L298 come stadio di potenza per il pilotaggio dei motori. In oltre sono presenti anche uno stadio di alimentazione formato da un 7805 e due condensatori per abbassare la tensione da 12 a 5 volt e un oscillatore astabile realizzato con un NE555. L alimentazione è fornita da una batteria da 12V al piombo-gel, che, attraverso un interruttore, alimenta il circuito e i motori. Il diagramma qui sotto mette in evidenza le varie connessioni tra i 5 blocchi che costituiscono l elettronica del robot, in particolar modo le alimentazioni e i segnali dei dati e di controllo. L alimentazione a 12V che va ai sensori IR OMRON non è diretta ma è controllata dal PIC tramite un MOSFET STP9NK60ZD, per questo motivo non è diretta nello schema ma passa dal blocco del microcontrollore. 2

Descrizione: La realizzazione si può scomporre in 6 fasi: 1- Alimentazione 2- Sensori IR OMRON e adattamento del segnale 3- Fotodiodi IR, trattazione del segnale, comparazione e stadio emettitore IR 4- Stadio di potenza per il controllo dei motori e meccanica 5- Microcontrollore, generazione del clock e reset 6- Programma per la gestione del robot 1- Alimentazione: Lo stadio di alimentazione è composto dalla batteria, l interruttore generale di alimentazione, 2 condensatori, il 7805, un led che indica l accensione e un diodo di protezione contro l inversione di polarità dei collegamenti della batteria. La batteria è una Fiamm FG20121 da 12V 1,2Ah, la corrente massima prelevabile per 5 secondi è 12A e il peso circa 600G, da essa il circuito assorbe circa 250mA. Il 7805 è un regolatore integrato di tensione, esso fornisce in uscita una tensione di 5V stabili con una corrente massima di 1A, è stato utilizzato in contenitore TO-220 per poter dissipare il calore prodotto tramite un dissipatore, accetta in ingresso massimo 35V, in oltre è protetto contro i sovraccarichi e i cortocircuiti. I condensatori C3 e C4 servono per non far entrare in autooscillazione il 7805, che potrebbe danneggiare il PIC16F876A a causa degli sbalzi di tensione. Il diodo D10, un STTH12R06, serve per proteggere tutti i circuiti del robot dall inversione di polarità, che verrebbero danneggiati, anche se per breve tempo senza di esso i circuiti sarebbero protetti dagli 1n4007, che servono per scaricare sovratensioni prodotte dal motore durante la marcia e l arresto, essi infatti limiterebbero la tensione a 1,2V, però la corrente che circolerebbe in essi, cioè quella di cortocircuito della batteria, che è circa 15A, li distruggerebbe in brevissimo tempo. Il diodo inserito ha una caduta di tensione di 752 mv, che influiscono pochissimo sul funzionamento del robot, e una corrente massima di 12A e 600 volt di tensione inversa. 3

2- Sensori IR OMRON e adattamento del segnale I 4 sensori IR OMRON E3S-AD61 sono di tipo industriale, cioè hanno un elevata resistenza meccanica e alle interferenze, un campo di rilevamento massimo di 20 cm (che può variare in base al colore dell oggetto, a causa della differenza della riflessione della luce infrarossa), in oltre hanno un range di funzionamento compreso tra 10 e 30V cc, e un consumo di circa 30mA. Essi sono posti ai 4 angoli del robot, in modo che ogni sensore copre parzialmente due lati del robot. L alimentazione è presa dalla batteria, può essere interrotta tramite un mosfet siglato STP9NK60ZD, che è comandato dal pic tramite il pin 4 della porta C, il mosfet regge 7A e 600V, ha in oltre integrato un diodo di ricircolo in antiparallelo, è stato scelto perché ha una resistenza interna nello stato di on inferiore a 0,95Ω. Le fotocellule quando rilevano un oggetto portano a massa il filo del segnale, che è tenuto a 5V dalle resistenze di pull-up da 10kΩ. Il 4050 è un buffer CMOS, serve a mandare un segnale pulito e stabile al pic, oltre che a proteggerlo da eventuali malfunzionamenti, è stato utilizzato in tecnologia CMOS perché oltre a assorbire molta meno corrente, parametro indispensabile per poter far durare il più possibile le batterie, ha la possibilità di sopportare in ingresso tensioni superiori a quella di alimentazione. Dal 4050 il segnale delle fotocellule va alla porta B del pic, l anteriore destra va al pin 0, anteriore sinistra al pin 1, posteriore destra al pin 2 e posteriore sinistra al pin 3. 4

3- Fotodiodi IR, trattazione del segnale, comparazione e stadio emettitore IR Le 4 coppie diodo IR fotodiodo IR sono state inserite dopo che è stato notato che alcuni ostacoli non venivano rilevati, soprattutto se in posizione centrale sia davanti che dietro e lateralmente durante le curve. Tramite un oscillatore astabile realizzato con un NE555 si crea un onda quadra con frequenza di circa 20kHz, che pilota un transistor NPN BFY50, esso cortocircuita verso massa quattro gruppi diodo IR resistenza, attraverso i diodi IR si creano dei flash di luce infrarossa che verranno poi captati dai fotodiodi. Il BFY50 ha come tensione massima 35V e come corrente 1A, è stato scelto perché anche se fosse stato necessario il dissipatore occuperebbe meno posto. Il circuito per la ricezione degli impulsi è formato da: fotodiodi per la ricezione del segnale, un filtro passa alto per eliminare le tensioni continue e le basse frequenze, tipo le luci domestiche al neon o il sole, che emettono degli impulsi a una frequenza di 100Hz o continua nel caso della solare, un filtro passa basso per livellare il segnale ottenuto e un comparatore con trimmer per regolare la sensibilità della ricezione. I fotodiodi IR sono polarizzati inversamente per sfruttare la caratteristica della variazione della resistenza in base alla luce, con una resistenza si limita la corrente che circola in essi e si crea in oltre un punto in cui è possibile prelevare la tensione modulata dalla frequenza di emissione dei diodi IR, la tensione ottenuta viene filtrata dal filtro passa basso formato da un condensatore da 470nF in serie al circuito e una resistenza da 1 MΩ tra l uscita del condensatore e la massa; il successivo filtro passa basso è formato da un altra coppia CR con gli stessi valori, solo che in questo caso è la resistenza in serie al circuito e il condensatore verso massa. Il segnale ottenuto in uscita è praticamente continuo, il cui valore però varia con la quantità di luce che riceve il fotodiodo, anche se è ancora leggermente sensibile alle brusche variazioni di luce, che comunque vengono filtrate in circa 3-4 secondi. 5

Come comparatori sono stati utilizzati due LM358, che al proprio interno contengono 4 amplificatori operazionali La parte sinistra di questo schema è il connettore per il modulo radio per il controllo a distanza, ma non è stata realizzata. Questa modifica è stata pensata per un modulo radio modello Cy2198TR-A, che funziona con tensioni di 3,3V, e quindi necessitando di questa alimentazione è stato inserito un LM317, che è un regolatore di tensione variabile, con un potenziometro si può regolare il valore della tensione in modo da ottenere 3,3V, l interfacciamento con il pic, funzionante a 5V, è realizzato tramite una resistenza da 1kΩ posta tra il pin del pic per la trasmissione dei dati (TX, pin 6 porta C)e il pin del modulo radio, mentre per i dati trasmessi dal modulo non è necessario inserire niente. Sensore Anteriore Sensore Posteriore Sensore destro Sensore sinistro 6

4- Stadio di potenza per il controllo dei motori e meccanica Per la movimentazione sono stati utilizzati 2 motori a 12V con motoriduttore con rapporto di riduzione di 43:1. Lo stadio di potenza dei motori è realizzato con un L298, cioè un doppio ponte H, che è stato progettato per il controllo di motori passo-passo bipolari, ma si presta benissimo anche per il controllo di motori in cc. Esso può funzionare con una tensione massima di 46V e una corrente di 2A a canale, in oltre ha bisogno di una tensione di 5V per la logica di controllo, dispone di due ingressi di abilitazione dei singoli canali, che potrebbero essere utilizzati per controllare i motori in PWM; dispone anche di pin da cui se non collegati a massa direttamente ma tramite due resistenze di shunt si può prelevare una tensione proporzionale alla corrente che scorre nel carico. Per evitare sovratensioni che potrebbero danneggiare il chip sono stati utilizzati 4 diodi 1N4007 per motore, collegati 2 tra massa e il motore, e gli altri due tra il motore e i 12V, per assicurare una migliore protezione sarebbero più consigliati diodi veloci tipo 1N4148 o shottky, gli 1N4148 sono stati scartati a causa della bassa corrente che possono sopportare, per questo utilizzo sarebbero invece consigliati i BYV10-40, che 7

hanno una corrente massima di 1A e una tensione massima di 40V. È stato messo un dissipatore a contatto con il chip per asportare il calore che esso genera, il dissipatore è stato ricavato da una lamina di alluminio di spessore 1,5mm circa e adattato al chip, con i motori utilizzati non sarebbe necessario, perché la potenza dissipata dall L298 è molto piccola, infatti i motori assorbono circa 10mA a vuoto e circa 50mA a albero bloccato. Sui motori non arriva 12V ma circa 10 a causa delle cadute interne del chip e del diodo di protezione nello stadio di alimentazione, a ciò si potrebbe ovviare aumentando la tensione di alimentazione a circa 15V, ad esempio mettendo due batterie da 1,5 volt in serie alla batteria al piombo, oppure sostituendo la batteria al piombo con un pacco di batterie al NI-CD o Li- Poly da 14,4V. Le ruote posteriori sono state recuperate da una macchina radiocomandata e collegate ai motori tramite dei supporti in rame ricavati da dei mammut, i perni interni sono delle viti M4 con relativo dado di fissaggio. La ruota anteriore è un ball-caster, cioè una sfera all interno di un supporto, in questo caso di ottone, che fa da 3 punto di appoggio. 8

5- Microcontrollore, generazione del clock e reset Tutto il robot è gestito tramite un PIC16F876A, un microcontrollore con architettura a 8bit e set di istruzioni ridotto (RISC), anche esso è in tecnologia CMOS per ridurre l assorbimento. Questo microcontrollore dispone di 14,3kB di memoria flash per il programma, di 368B di ram e 256B di EEPROM, 5 canali con ingresso analogico, 3 moduli timer, che possono essere usati come contatori, timer e prescaler, 2 possono anche essere usati come generatori PWM, dispone anche di una porta seriale implementata hardware e di 2 comparatori analogici. Il range di funzionamento è tra 2,0 e 5,5V e il clock massimo che può supportare è 20MHz. Nel robot è utilizzato un clock da 8 MHz, generato con un quarzo da 8,000MHz e 2 condensatori da 15pF. Del pic è stato utilizzato completamente le porte B e C, mentre della A solo il pin 5, a cui è collegato a un interruttore che serve a fermare i motori. Il reset è stato realizzato con una resistenza di pull-up e un pulsante che cortocircuita il pin MCRL a massa. Tutti i pin non utilizzati sono stati settati come ingressi nel programma, per diminuire il rischio di danneggiare il pic se dovessero andare a contatto con collegamenti o piste a tensioni diverse. 9

È presente anche un led rosso che lampeggia durante il caricamento del programma e nel caso che non ci siano direzioni possibili, cioè nel caso che tutti e 4 i sensori OMRON rilevino degli ostacoli. 10

6- Programma in formato MikroBasic: Le scritte in verde che iniziano con un sono commenti al programma, servono per semplificare la scrittura e interpretazione del programma. program Robot3 dim a as byte 'Fotocellule 'portb.0 = anteriore dx 'portb.1 = anteriore sx 'portb.2 = posteriore dx 'portb.3 = posteriore sx 'Motore 'portc.0 = motore dx avanti 'portc.1 = motore dx indietro 'portc.2 = motore sx avanti 'portc.3 = motore sx indietro main: TRISA = $FF 'Porta A in ingresso TRISB = $FF 'Porta B in ingresso TRISC = $C0 'Porta C in uscita + predisposizione per porta seriale ADCON0 = $80 'Convertitore A/D disabilitato ADCON1 = $47 'Porta A digitale a = 0 portc.5 = 0 portc.4 = 1 delay_ms(250) portc.4 = 0 delay_ms(250) portc.4 = 1 delay_ms(250) portc.4 = 0 delay_ms(250) portc.4 = 1 portc.5 = 1 delay_ms(100) portc.4 = 0 delay_ms(100) portc.4 = 1 delay_ms(100) portc.4 = 0 delay_ms(100) portc.4 = 1 while true while porta.5 = 1 'direzione 'ostacoli su tutti i lati while (((portb.0 = 0) and (portb.1 = 0)) and ((portb.2 = 0) and (portb.3 = 0))) 'motore dx fermo 'motore sx fermo if a = 1 then 'lampeggia led su portb.4 portc.4 = 0 a = 0 else portc.4 = 1 a = 1 end if delay_ms(250) 'controlla lo stato ogni 250ms 11

'ostacolo davanti if (((portb.0 = 0) and (portb.1 = 0)) and ((portb.2 = 1) and (portb.3 = 1))) then portc.1 = 1 'motore dx indietro portc.3 = 1 'motore sx indietro while (((portb.0 = 0) and (portb.1 = 0)) and ((portb.2 = 1) and (portb.3 = 1))) if portb.7 = 1 then portc.0 = 1 portc.3 = 1 'motore sx indietro delay_ms(500) end if delay_ms(500) portc.0 = 1 portc.3 = 1 'motore sx indietro delay_ms(1000) end if 'Ostacolo dietro (si può omettere...) 'while (((portb.0 = 1) and (portb.1 = 1)) and ((portb.2 = 0) and (portb.3 = 0))) ' portc.0 = 1 ' ' portc.2 = 1 ' ' 'ostacolo anteriore dx while (((portb.0 = 0) and (portb.1 = 1)) and ((portb.2 = 1) and (portb.3 = 1))) portc.0 = 1 'motore sx fermo 'ostacolo anteriore sx while (((portb.0 = 1) and (portb.1 = 0)) and ((portb.2 = 1) and (portb.3 = 1))) 'motore dx fermo portc.2 = 1 'ostacolo posteriore dx while (((portb.0 = 1) and (portb.1 = 1)) and ((portb.2 = 0) and (portb.3 = 1))) portc.0 = 1 portc.2 = 1 'ostacolo posteriore sx while (((portb.0 = 1) and (portb.1 = 1)) and ((portb.2 = 1) and (portb.3 = 0))) portc.0 = 1 portc.2 = 1 12

'libero posteriore sx while (((portb.0 = 0) and (portb.1 = 0)) and ((portb.2 = 0) and (portb.3 = 1))) portc.1 = 1 'motore dx indietro portc.2 = 1 'libero posteriore dx while (((portb.0 = 0) and (portb.1 = 0)) and ((portb.2 = 1) and (portb.3 = 0))) portc.0 = 1 portc.3 = 1 'motore sx indietro 'libero avanti dx while (((portb.0 = 1) and (portb.1 = 0)) and ((portb.2 = 0) and (portb.3 = 0))) portc.1 = 1 'motore dx indietro portc.2 = 1 'libero avanti sx while (((portb.0 = 0) and (portb.1 = 1)) and ((portb.2 = 0) and (portb.3 = 0))) portc.0 = 1 portc.3 = 1 'motore sx indietro 'libero a sx while (((portb.0 = 0) and (portb.1 = 1)) and ((portb.2 = 0) and (portb.3 = 1))) portc.0 = 1 portc.3 = 1 'motore sx indietro 'libero avanti sx e dietro dx while (((portb.0 = 0) and (portb.1 = 1)) and ((portb.2 = 1) and (portb.3 = 0))) portc.0 = 1 portc.3 = 1 'motore sx indietro 'libero avanti dx e dietro sx while (((portb.0 = 1) and (portb.1 = 0)) and ((portb.2 = 0) and (portb.3 = 1))) portc.1 = 1 'motore dx indietro portc.2 = 1 'libero a dx while (((portb.0 = 1) and (portb.1 = 0)) and ((portb.2 = 1) and (portb.3 = 0))) portc.1 = 1 'motore dx indietro portc.2 = 1 13

'Fotodiodi 'Portb.4 = Sinistro 'Portb.5 = Destro 'Portb.6 = Anteriore 'Portb.7 = Posteriore 'sensore a sx while (((portb.4 = 1) and (portb.5 = 0)) and ((portb.6 = 0) and (portb.7 = 0))) 'while (((portb.4 = 1) and (portb.5 = 0)) and ((portb.6 = 0) and (portb.7 = 0))) portc.1 = 1 'motore dx indietro portc.2 = 1 ' 'delay_ms(500) ' 'portc.1 = 1 'motore dx indietro 'portc.2 = 1 ' 'delay_ms(1000) 'sensore a dx while (((portb.4 = 0) and (portb.5 = 1)) and ((portb.6 = 0) and (portb.7 = 0))) 'while (((portb.4 = 0) and (portb.5 = 1)) and ((portb.6 = 0) and (portb.7 = 0))) portc.0 = 1 portc.3 = 1 'motore sx indietro ' 'delay_ms(500) 'portc.0 = 1 ' ' 'portc.3 = 1 'motore sx indietro 'delay_ms(1000) 'sensore davanti while (((portb.4 = 0) and (portb.5 = 0)) and ((portb.6 = 1) and (portb.7 = 0))) while (((portb.4 = 0) and (portb.5 = 0)) and ((portb.6 = 1) and (portb.7 = 0))) portc.1 = 1 'motore dx indietro portc.3 = 1 'motore sx indietro delay_ms(1500) portc.1 = 1 'motore dx indietro portc.2 = 1 delay_ms(2500) 'sensori dx e sx while (((portb.4 = 1) and (portb.5 = 1)) and ((portb.6 = 0) and (portb.7 = 0))) while (((portb.4 = 1) and (portb.5 = 1)) and ((portb.6 = 0) and (portb.7 = 0))) portc.1 = 1 'motore dx indietro portc.3 = 1 'motore sx indietro delay_ms(2500) portc.1 = 1 'motore dx indietro 14

portc.2 = 1 delay_ms(2500) portc.4 = 0 portc.0 = 1 portc.2 = 1 'motore dx fermo 'motore sx fermo ** end. Totale: 277 righe. I cicli while si attivano per il tempo in cui la condizione è vera, cioè per il tempo in cui il o i sensori restano attivi. Una soluzione più funzionale sarebbe di utilizzare dei cicli if then end if, ma l ottimizzazione del codice è più bassa e il programma non sarebbe entrato nella memoria flash del pic, infatti questo programma utilizza circa 1681 byte della flash cioè circa il 20% dello spazio disponibile, mentre se realizzato con cicli if then end if sarebbe entrato circa la metà del codice. Alla porta A pin 5 c è collegato un interruttore che da programma è utilizzato per attivare i sensori senza pilotare i motori, in modo da poter regolare più facilmente i sensori tramite i potenziometri. I registri ADCON0 e ADCON1 sono stati settati in modo che la porta A sia tutta con segnali digitali, e che il modulo A/D sia disattivato. 15

Lista componenti: Integrati: 1 x PIC16F876A 1 x 4050 1 x L298 1 x 7805 1 x NE555 2 x LM358 Transistor: BFY50 Mosfet: STP9NK60ZD Diodi: 8 x 1N4007 1 x STTH12R06 5 x led verdi 5mm 1 x led rossi 5mm 4 x diodi IR 5mm 4 x fotodiodi IR 3mm Resistenze: 4 x 220Ω ½W 5 x 560Ω ¼W 3 x 1kΩ ¼W 11 x 10kΩ ¼W 4 x 100kΩ ¼W 8 x 1MΩ ¼W 4 x trimmer ¾ giro 100kΩ Condensatori: 2 x 15pF 2 x 10nF 8 x 470nF 3 x 10uF 1 x 470uF Connettori: 5 x 2 poli passo 5.08 a vite 1 x 3 poli passo 5.08 a vite 3 x 4 poli passo 5.08 a vite 2 x 10 poli per stampato maschio 2 x 10 poli per flat cable femmina Altro: 2 x interruttori 1 via N.C. - N.A. 1 x pulsante da c.s. N.A. 2 x motoriduttori 12V rapporto 43:1 1 x quarzo 8.000 MHz 16

4 x sensori OMRON E3S-AD61 1 x ball caster ø 15 mm 2 x Ruote ø 80 mm Viti M3 e M4 Dadi M3 e M4 1 x Scatola da impianti elettrici 20 x 15 cm Tubetto rigido ø 3mm Guaina ø 5 mm 1 x Batteria al piombo-gel 12V 1,2-1,3 Ah 3 x zoccoli per integrati 8 poli 1 x zoccoli per integrati 14 poli 1 x zoccoli per integrati 28 poli 1 x dissipatore per case TO-220 Lamina in allumino spessore 1mm 2 x connettori fast-on 2 x basette millefori 10 x 16 cm 2 x mammut ø 4mm 17

Foto, schemi e PCB: Principale: Comparatori: 18

Fotosensori IR OMRON Oscillatore e diodi IR 19

PCB scheda principale PCB scheda comparatori: 20

Interno: Esterno: 21