Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

62
Monloggio pcsso .r pcrsso

description

Tutta la raccolta in versione torrent al link: http://www.tntvillage.scambioetico.org/index.php?act=showrelease&id=192104 Su Issuu c'è la raccolta completa. Cerca "Monty Peruzzo Editore".

Transcript of Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Page 1: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Monloggio pcsso .r pcrsso

Page 2: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

€*-'%

"' 'Wojqrry.

q\q"'."el

-"${fF:

4? q

-,{h\

Page 3: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Come avrete notato, tutti gli esercizi che abbiamorealizzato con la scheda di ingressi e uscite,

sono validi per la gestione dei sensori e dei motoridella scheda di potenza. Dato che questascheda condiziona i segnali per i nostri programmi, nonc'è differenza ad inviare un 1 per accendere un LED, oper attivare un motore, ed è /a sfessa cosa ricevere uno 0da un interruttore o da un sensore.

Realizziamo un programma di simulazionedi movimento del microrobot. Per fare questoutilizzeremo gli interruttori SWl e SW2 per simulare t

segnali di ingresso dei due sensori a infrarossi CNY70e i LED D1-D4 per simularele uscite di controllo dei motori di trazione.

Dopo aver scritto l'intestazione del programma,configureremo la porta B come uscita,

e come ingressi i corrispondenti degli interruttortSWI e SW2 della porta A.Non utilizzeremo altri registri del microcontroller(a parte Io STATUS) per questo programma.

1 l: ************************************************************ I2

45 incLu.te "P1úF64A.IH0" ;Definizionp .lei registriÉ

I ;Fegistri di utilizzo generale:*, s , AU:{ EqU 0X 0c

1A1{,tu1$1tr15{f1T1'*{:€

ORG E

goto IHIZIn0Ec 5

I HI Z I tl bsf STfiTUS , BP 0clrf P0ETEnoulril b' EB0EB011 'bcf STfiTUS, RPB

Consigli prqtici. Sirnulerndo i movimenli

Page 4: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Dopo aver dxifrato il valore dei sensori, non dowemo far altro che

inviare I'ordine conispondente per Ia prta B vesoi LED: qus'to quivale ad inviare ordini di controllo verso i motoi.I LED Dl-D2 simulano le uxite di controllo di un motore,

e D3-M lè uscite di controllo rer l'altro motore. I motoi possono

ginre in entrambi isensi, e la combinazbnedi questi dà origine ai diversi movimenti. Qusto programma,

benche semplice ci permetterà di controllare

il veso'del movimento di MonA Da questo momento potremo

complicare l'algoitmo in funzione della nostra cratività.

Ogni volta che leggeremo un dato dalla porta A, lo scriveremosu una variabile ausiliaria. ln seguito realizzeremo delle maschereper conoscere quale sia il valore dei sensorilinterruttori di ingresso.Osserviamo che la maschera AND servesolamente per leggere il dato, e per evidenziare i bit checi interessano. ln seguito realizzeremo delle operazioni XOR

e verificheremo il flag Z (zero) del registro STATUS,

per eseguire o meno il salto, a seconda delle diverse combinazioni.

Mostríamo il funzionamento di questo programmasulla scheda di ingressi e usclte. E necessario chiudereil jumper JMPI , per fare in modo che Ia barradei LED sl possa illuminare, e verificare se gli ordinidi uscita che stiamo inviando sonocorretti. Vi invitiamo ad eseguire /o stesso esercizio

utilizzando pero altri interruttori di ingresso,

e cambiando gli ordini di uscita della porta B.

zzJ23 cIcL0: mouf P0RTÉ, tfZ4 andlu b'ú8098011'

'I5 mouuf HUX

26 t{orlÌ, b'60000000'E7 btfsc STRTUS, Z

E$ goto RUf,HTI' Cg Írouf fiUtl, t'l

30 xorlt b'E0BEEBE1'31 btfsc STfiTUS, Z

SZ goto DESTRfiSS Ítouf RUN, ll3lr *orlu b' 600086'1 0'35 btfsc STRTUS, Z

3ú goto SIHISTRfi37 mouf AUt(, tf38 xorlu, b'BBEEB011',Sq btfsc STRTUS, Z

*$ gúto INDIETB0llt goto UIGL0

moul$moulrfgoto

]ÎoUIì,Ítouurfgoto

noulunouurfgoto

ftoul-irmouuJfgoto

EHD

b' É8608811 'POBTECIELO

b'[E0B11EB'POBTECI CLO

b'0ú09ú118'PORTBCICLO

b' 8060't 001 'PIJÉIBCIELO

;Fine del progranna

Consiqli prcrtici. Simulcndo i rnovirnenti

Page 5: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

pL {54j.t:.....:,.,..4:.,,1'a.a'a/r.a t:. -trul-tt . ::t :.itr:1tt::::q

'11:'),\:r| j2rrrr.,1/,,..,,rtta7..a,a%,trwir:.

"îr{ '**'>&

"€'., it e't

'Qe'ttt, " .,t.;,4

\..b

€-*'

Page 6: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

u'',',.,,.$ufugu,., ia"3

€:ig*sr':g--ffi*

ffiWEid:!n*i#a: {&l:.s" rÈ

1-;'

Page 7: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

1 l; Equazione :2s4567 Dato fiI Dato-BF Dato_C

:t3 Ei=ultato111?,{x,14l51út?'IHIZI0rtf9Tg

{È+E}-[

listIHCLUDE

equPquequequ

orggsto

org

bsfclrfbcf

P=1 6FB4A"F1úF8lrR - I FlE"

ExBCBx ÚD

ÚX EEgil 6F

E$ EEIHIZIO

6x85

sTfiTUS, BPBPfIFTEsTfiTUS, EPE

ll programma configura la porta B come usclta e in seguitocarica i dati con i quali si andra ad operare in treregistri di utilizzo generale: (6+25)-10. ln seguito eseguiamoI e is Lr uz i on i a ri Lm e Li che necessarlencr nffpnprp il rìq tltaln dpll'pat ta ,inna lnfinp ls ri<nn5[6 5i

mostra tramite la porta B.

Realizzeremo alcuni esercizi per risolvere dei problemimatematici. Per esempio un' equazione:(A+B) - C. Questi valori saranno di B bit. ll risultatodell'equazione si mostrerà mediantela porta B e si potrà vedere sulla barra dei LED dellascheda di ingressi e uscite.

Nell'immagine vediamo I'abituale definizione dei registri.

Dopo aver scitto il programma, lo compileremo.Successivamente scriveremo il codice esadecrmalenella memoria del mtcrocontrollerutilizzando la scheda di controllo. Una volta scrittoil PIC eollcohcrcmo la seheda di controllornn nt rclls rli ìnnrp<<i a , t<1j7g attraVefSO il CavO

Picbus. Dobbiamo chrudere il jumper lMPlnar ttarlaro íl ricttltatn r'lall ant t;zinna <, rlls h>rrs

rlaì | Fl-t lAdí.)monfÒ

il dato di risposta si vedrà in numeri binari.

28, ?1:

*?,**,84, ?5'

.Iú,eîg8's$3S5]

,5eEÉF**s*f GicluÉ7,38,:

trtfrulÍ, . úmouuf Uato_fimoulru -25nour'rf Dats_Brmulw .18nosurf Dato_Emouf nato_R,l{adduf Dato_B,llrrrourlrf Hisultatonouf Dato_[,]lsubluf Fisultato,Fnouf Risultato,llfl{rul|rf P0BTE

gotrl Giclo

EHD

li prcrlici. Ccrlcoli':-* - , merlerncrtici

Page 8: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

L'in9eme di istruzioni dell'immagine serve persommare due registri da 16 bit. La pdrte segnatacon _L (low) in ogni operando rappresenta laparte bassa di ogni registro da 16 bit. La parte alta èsimbolizzata aggiungendo _H (high) ad ogniregistro. Come si puo vedere, anche il risultato dellasomma si memorizza su un reqistro da 16 bit.

Questo esercizio è stato semplice perche abbiamousato operandi da B bit, pero questi cipermettono di lavorare solo con numeri fino al valoredi 255 come massimo. Le operazioni connumeri da 16 bit sono piit complesse, dato che nonesiste un'istruzione diretta del compilatore cheli possa realizzare. ln seguito esporremo comesommare e sottrarre numeri da 16 bit. L'immaginemostra la c/assica defintzionc dei rcoi<lri ttltlit,ati

L'insieme di istruzioni in figura, serve per sottrarredue numeri da 16 bitConviene scrivere e provdre queste routines, chememorizzeremo nei nostri file, datoche potrebbero essere utili in qualsiasi momento,durante la realizzazione di algoitmidi controllo con il robot, in cui sia necessariomaneggiare registri da 16 bit. Sarà sufficiente aprirele nostre routines matematiche,già provate, ed includerle nel nostro programma.

Ccrlcoli mnlemcrtici

1:t list P=1úF84fiS IHCLUDE "P16FS4fi. IHC"Ir5 Dato_F_L equ [x1 06 Dato_R_H equ Sx1lF Dato_E_L equ Sx12I Dato B H equ 0*13P RiEuttato-l- equ Exlll

îS Bisultato_H ?qu Bx151tlf org Bfi8Blfl goto IHIEI01*t5 org Sx05 t.tÀ

rl I

-u-J !t

'tófI IHIZI0 mouf Dato_È_L,tl18 add$f Dato_E_L,l'lÍF mou$f Fisultato_L2E nouf Dato_f,_H,l'lll btfsc STfiTUS,E,gS addltil 1

,?* add$rf llato_E_H,l,f?ri nouuf Risultato H

,:'ÈF,*r,stop nop

,,gI nop:3S,

: ',!8,, end

IHIZIO lrflufsubrilfnout{fmtrufbtfssaddllusub$fmouruf

nupnop

end

Dats_E_L,ltllato_fi*L,tlRisultato_LIlato_B_H ,l,fSTfiTUS , I1

0atu_fi_H ,l,lHisultato_H

lilÈ]ffittiltìttì:r$r\a

Page 9: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Pt óó

Montcrggio pcsso cr pcrsso

Page 10: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

lY!$!kgg i :',p,.::t *-e e', ps:so

Page 11: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Terminato il montaggio della scheda di potenza,passiamo alla spiegazione delle parti dicui è composto tl suo circuito, in modo da imparare a

gestirla per realizzare eserczlcon i sensori e con i motori che utilizzeremo quandoprogrammeremo Monty.

I segnali che genera il microcontroller PIC sullesue uscite sono di livello TTL, cioe di 5 V. La capacitadi corrente di ogni piedino è di 20 nA.Questo non è sufficiente per alimentare un motore,pertanto non potremo collegailo direttamente.Sulla scheda di potenza abbiamo implementato uncircuito denominato ad H, che si basa suitransistor Darlington che corrispondono allo schemariportato in figura.

Un transistor Darlington è formato dall'associazionedi due transistor, in modo che il guadagno dientrambi si sommi e si otLenga una maggiorecapacità di carico rispetto a un solo transistor. Comemostrato nell'immagine, nella nostra scheda la

configurazione Darlington è stata implementata conuna coaaia di transistor formatada un transistor modello BC54B e un 8D135.

QroBDI35

Q28C548

Gonsigli prqtici

Page 12: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Questo e lo schema corrispondente al ponte ad Hche si utilizza per il controllo di un motore. Duesegnali del microcontrolloer pilotano le basi di Q3 edi Q5. Se si attiva la base di Q3 ma non quella di

Q5, si attivano i Darlington formati da Q3-Ql 1 e da

Q4-Q12. il motore gira in un verso. Attivando labase di Q5 ma non quella di Q3, si attivano iDarlington formati da Q5-Q13 e da Q2-Q10. ilmotore gira nel verso contrarto. Se si attivano o

disattivano simultaneamente le basi di Q3 e di Q5, ilmotore si fermera. ll motore sara collegatoai due emettitoil di Ql0 e Ql2. ll ponte ad H sialimenta con la tensione che si applicaal motore, e che nel nostro caso arriverà da unalimentatore diversoda quello utilizzato per alimentare l'elettronica.

:j€

.

Sulla scheda di potenza abbiamoimplementato due ponti ad H, ognuno percontrollare uno dei due moton checompongono il sistema mobile di Monty. lnquesto modo possamo ottenere un controllototale sul movimento del robot, facendoin modo che avanzr, si fermi, grri a sinistra o acle<f rA rl1<rrivpndn rt trvp OtU O menO

chiuse. Nell'immagine vediamo i 16 transistorche formano enLrambi i ponti.

| À mnr\Fl lierà I I ? sara nt rclla cheutrlizzeremo come ingresso per la tensronedi alimentazione dei motori. .11 1 e 112

serviranno per collegare questi motoil alsstema mobile del robot. Comesi puo vedere, la morsettiera di ingressodell'alimentazione per i motoriha due morsetti, dato che e necessario-^lt^^--^ ^^-a^ l- ^^.--tvilcgot e dt tLt te to t t la>)o

dell'alimentatione, perche questa deveessere comune con la massa dell'elettronicaTutte le masse di un srstema elettronicodebbono essere comuni, anche se arrivanoda a I i mentato rÌ d iversi.

ConsigIip1cri1i|\|''':''''|||:1||,j!Èl.|:*g}:................'..:::':|''':\1&9n@...'.|.N|

Page 13: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Montoggio, pc,s.so_ cr p.rsso

Page 14: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo
Page 15: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

t* List F=1úFs4a* include "P1úF84a.IHf,"li5 orll sx E6É goto IHIZI0'î'8, orq 6x 65s

:'{ IHIZI0 clrf PÍIHTB1'l bsf 5TfiTUS,HP6+f clrf TfiISBri.* noullr b ' EBE1 1111 'tft mouwf TBISRrs, bcf srfiTus,EPg

Faremo un esempio di automatismosequenziale, in cui diversi eventi devono susseguirsi unodietro I'altro. L'enunciato è

il seguente: la sequenza inizia premendo "1" (RA)),

che attiva il cilindro "V" (RB)); quest'ultimoavanzando spinge il pezzo da tornire e aziona il sensore"b" (RA2) attivando il relèdel motore "M" (RB1). Inizra la tornitura. DuranteI'avanzamento si arriva sul sensore "c"(RA3) che disattiva il cilindro "V" (RB)) iniziando la

retrocessione del medesimo.Passando nuovamente su "b" (RA2) si scollega "M" (RBl).

Quando si arriva al fine corsa "a" (RAl )si attiva un segnale acustico "A" (RB2) per fare in modoche I'operaio ritiri il pezzo,

ne monti un altro nuovo e inizi un nuovo ciclo premendo"1" (RA)). L'immagine mostrala sequenza di inizio, da dove si programmano le porte.

I sensori sono simulati dagli interruttori della scheda

di ingressi e uscite. ll cilindro, il motoree il segnale acustico si simulano mediante i LED.

È molto importante fare benei programmi sequenziali, dato che molti dei compitiche assegneremo a Monty sarannodi questo tipo. ll programma dell'immagine controllala sequenza in cui il cilindro si attiva e dvanza.

Questo e l'ultimo ciclo del programma, in cui il cilindrosi disattiva e inizia Ia sequenza diretrocessione. Come si può vedere abbiamo seguitoordinatamente i compiti darealizzare, controllando lo stato delle uscite e dividendo ilprogrammd in diversi cicli, in ognunodei quali si realizza una parte delle sequenze, e si attendeun evento per passare ad eseguire quella successiva.

É._i*s1*.*,8q{z-"

=È3fa'*5fs,g?3fÈff}S

EICI-0: clrt{dtbtfss POBTÈ,6goto I I f,Lllbcf P0FTE,gbsf F0ETB, I

Èttendi_b_1 clrurdtbtfs= P0ETfi,2gato Attendi_b_1bsf PIIHTB,'l

fittendi_c clrwdtbtf55 POFTfi,3goto fittendi_cbcf P0BTB,B

B2 fittendi_b_2 clrudt3S btfss P0ETA,z3h goto Éttendi-b-Z*5 bcf PllfiTE ,'l3{*? Attendi_a clr$dtSA btf 55 PllETfi,139 goto Èttendi_a4E bsf PflHTE,z41 goto CICLo,12.AA end

:'.t I!_1 I

Page 16: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

i+

Compileremo il programma e Io scriveremo sulmicrocontroller utilizzando Ia scheda di controllo,come già sappiamo fare. Ricordiamo chel'ìnterruttore di scrittura deve stare nella posizionePROG e non RUN. Scollegate Ia schedadi controllo dal Picbus prima di programmare il PICDopo aver eseguito la programmazionetogliete il cavo di connessione al PC dalla schedadi controllo, collegate il cavo Picbuscon Ia scheda di ingressi e uscite e infine chiudeteil jumper JMPI per fare in modo che i LEDpossano essere attivati.

La prima cosa che dobbiamo fare è metterel'interrutîore RA) a'1'per iniziare Iasequenza e attivarc íl cilindro V come recital'enunciato. ln seguito attiveremoI'interruttore RA2 per simulare che il cilindroha raggiunto il sensore b lungoil suo percorso. Dopo si attiverà il motore,segnale RBl.

Continueremo in questo modo perverificare la sequenza del programma cheabbiamo implementato, e per vedere se

il funzionamento sul circuito corrisponde inmodo fedele a quanto programmato.lnvitiamo i lettori a inventare prove e a

realizzare esercizi sequenziali, datoche sono semplici, ed è molto importantepadroneggiarli, perche saranno labase per costruire sequenze più complesseper il funzionamento di Monty.

Gonsigli prolici. Aulorncrfismo sequenziqle

Page 17: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Monlqggio pcrsso cr pcrsso

Page 18: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Monleiggio pqsso cr pcrsso

Page 19: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

5 llsmero* Selag*Sont7 TeilpàrarPss*

1S"lt12fgf4 Tabell"a:15fÉ*rIF193S2ae2

rl I

List P=1óf84incl.ude"Plff84- If€"egu gx$cequ gl.$dequ glr$È

srg g:{$Bgate IniaLos"g $xS5

addtìrf Pf L,Fretlùr b'Sgt't111f 'retllr b' SBSú8"11S'rÈtl*l b' 51 Sf 15't'l'ret1w *' $l Sglf l"t 'rstl$ b ' G1l SSt 'l S'r*tl.u $'&ll S'lî 8l'retlu b'C'llf1l&l'

L'esercizio di cui ci occupiamo è un po' piit complessodi quelli precedenti. 5i tratta di implementareun dado elettronico, e il suo enunciato è il seguente:dobbiamo generare un numerocasua/e fra 1 e 6. Quando RA) sarà a "1" sul displaya 7 segmenti collegato alla porta B si vedrannosequenzialmete i numeri da 1 a 6, con intervallidi 0,05. Al momento del passaggiodi RA1 a "0" si vedrà, per 3 secondi, il numerocasuale ottenuto. Dopo il displaysi spegne e la sequenza ricomincia. Nell'immagineabbiamo la tabella della routine.Essa converte il codice binario presente nei quattrobit meno significativi del registro Wnell'equivalente a 7 segmenti. ll codice per i 7segmenti viene scritto anch'esso in W.

Delay_2)_ms: questa routine di temporrzzaztone hacome obi ettivo I' el i m i naztonedell' "effetto rimbalzo" delle perifericheelettromeccaniche. Realizza un ritardo di 20 msSe il PIC lavora a una frequenzadi 4 MHz, il TMR) si incrementa ogni microsecondoSe vogliamo temporizzare 20.000 lLs (20 ns)con un prescaler da 256, il TMR) dovrà contare 78eventi (78 * 256). ll valore 7B equivalea 0x4e hex, e dato che il TMR) è ascendentedovremo cartcarlo con il suo complemento a 1

()xbl hex). Dealy_var: routtne simrle a quellaprecedente. ll TMR0 realizza una temporizzazionedi 50 ms che si ripete tante voltequante indica la variabile Delay Cont. Si ottengonotemporizzazioni fra 50 ms e 12,6 sec.

Dopo la classica configurazione delle porte, si arrivaalla parte principale del programma che consistenel rilevare l'azionamento di RA), evitando i rimbalziche si potrebbero produrre. Dopo questo, si leggeil valore attuale del TMR1, che rappresenterà la basedel nostro numero casuale, e si divide per 6ottenendo un numero casuale compreso fra 1 e 6,

corrispondente alle 6 facce del dado.

È*e5za27?*2*3S3f329*a*ssaús?s*g*4G4ta2

belalr*zú*ms: bcf ItlTCOll,TSf frÉ{rr].iir 8xù'tFrsrrsrf TtlR S

De]-ag_zg_ris_f clrndtbtfss IHTS{'H,T6IFgtrts Oetag*i6*rrrs*1 )rett'rn

DÉlàg_uàr: bcf It{Tg8}t,18IFncvlrrr Sx3cErctJwf THfi5

I'|tÉr$a11o clrr4dtbtfss IIITG$il,T8IFSotÉ Interuall'sdscfsz Dslàg_Éant,Fgoto Delag*uarrsturn *

4+*5*É*+*+sÍÉ51523S54t956s?5..*5As3úî62úsf*{s**úÉ

IÍizia e1rf Í!$RTAbsf ST&TUS,A"Sqlrf TfISS$rosl-r* !'AAA-'l11f 'fitoitr.r-F ÍAISAmonl-sr f" 0SA€O111'|tror,tslF *PîIg}{'-F€Gbef SÍATI|S,RP5

gicLo Élr*r{|tbtfss PAfiTA,A Igoto cic16 '-JrRn{rf TI{BA,$aorr$}f Hu|nertcàf.: O€.lay_e8*Gls

Disidi: rra$:,r* d 'ó'sutr|Ú.F f{rrÉ€r|' , ttFldu|Éf

'lum€rcst'blrrr d '5 "btfss STÈTUs,Agota úf.ul-díl-ocf ll|,$er*,F +

Gonsigli prcrlici. Dcrdo elettronico

Page 20: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

La routine uscita serve per scegliereun numero casuale e visualizzarlo sul display.

lnoltre carica il valore dei temporizzatoriin modo che torni a eseguirsi il ciclo delprogramma. Osservate che la

routine di temporizzazione chiamata duranteil programma, ha una doppiafunzione: generare i numeri casuali edeliminare i rimbalzi.

Questa sequenza di istruzioni ha come scopo divisualizzare sul display i numeil da 1 a 6 a intervallidi 0,05s per dare la sensazione di movimento deldado. Questo movimento si mantiene sino a quandoRAj è a "1". Mettendo RA) a "0" si visualizza ilnumero casuale catturato in precedenza dal TMRj.

Per provare questo programma scriveremoil PIC tramite la scheda di controllo, e inseguito la collegheremo a quella di ingressie usclte. È necessario lasciareaperti tutti i jumpers eccetto JMP2, datoche utilizzeremo il display a 7 segmentiper visualizzare il numero del dado.

ffi,

#

ffi

ffi

8*6îtrgT'72?tÎ*?573r?TAÎs*c8:lstt*s*

llad$; Énslr* rl'ó'oe(,il$ Teryoraneo

B*&_ì clrrdtbtfss POSTfi,Sgoto llscità|mrrf îsryoràn€o,*fcil.l T*bel.l.awrnrf PABTBFoul,r, rl "t 'r&rr$f Del.ay_8orit tcall O*lay*uar -Jdeefsz îerryoràl|eo,Fgoto Rà6*1gato Daúo

càI"l Delag_2$_6s _?h

$orf llunarartlcall TaùrllaROUSf PÍIRTS

noul$ d'SS'mousf l)*leg_tmtÉil1 Dclag_urrclrf PBATB

goto ticla

Pnd

eleltronico

Page 21: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

PL 72

taiìa:.:

Page 22: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

,#'.t t-. t 1-

.t I..1 l.

U2

F#

t'ffi?*T@ ri___liffit #.il Ii ró-tr'f l'--f-,.*È-Ì= e

#g**gg#g*nr-t-:*p****H#*g,*******,*,*,** ,i;,Nv,),**tNN,,...,.,,,1r,,,,,,v.,i.,...?,,a3t

Page 23: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Come già sappiamo, prima di tutto selezioneremo iltipo di dispositivo e rncluderemo il file con ledefinizioni del registro. Nomineremo un registro diutilizzo generale con il nome di contatore,a partire dalla prima posizione libera, che è la 0x0c.ll reset lo collocheremo nel vector 0

come sempre. e salteremo il vector di rnterrupl,quindi il programma iniziera alla posizione 5

Realizziamo ora un eserctzio con i diodi della porta B,

con cui otterremo un estetico movtmento; faremo unar^fÀ7t^na <ant 'pnzisla nall'arran<inno eli noni I Ff)

collegato alla porh B Se RA) = 0, la rotazione sara

da destra a sinistra e viceversa. Ogni LED rimarràacceso A,25 secondi (250 ms). L'immagine mostra larli<nn<ìztnna rlai lFl-t <rtlls <rhods r'li innra<<i a tt<rifa

Quesfa e la routine di temporizzazione o Delay. cheutilizzeremo rn questo programma. Se il PIC lavora aduna frequenza di 4 MHz, il TMR) cambia ognimicrosecondo. 5e si desidera temporizzare 25.000microsecondi (25 ns) con un prescaler di 128, il TMR)dovrà contare 1 95 eventi (1 95* 1 28 = 24 960).ll valore 195 equivale a 0xc3 e, dato che il TMR) è

ascendenle dovremo caricare il suo complemenb(0x3c). Questa temporiztazione si ripetera 10 volteper ottenere il totale desiderato di 250 ms.

t**"js!-,*Rf s..tisk*F-grg#R;:k*-e-sg*e-m#kl-9.

Page 24: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

EFÈa2*f,O8"r:fr*3A*|}s5cÈ87E*s*4E4147,43*+tr5ef4r4*

************************************** *;Iniulo dÉI programma Frincipat.eI nlzis cl'rf P{'RTB

bsf STRTUS,RFOc].rf TRISBmoul.n b' 99011111'nour4rf TH I SFmoul"tf, b'86866118'MOUrt'f OPT I OH-EEGbcf STf,TUS,RPE

bsf STfiTUS,CGiclo cal1 Eetag

htf sc PflBTfi, Bgoto F_D€stra

É Sínistra Éff poFTg,Fgoto Gicl.o

fi-Destra rrF POFIB,Fgot0 gicl.o

All'inizio del programma confígureremo la porta B

come uscita per i LED e la porta A come ingresso.Assegneremo un prescaler di 128 al Timer), per farein modo che la nostra routine di temporizzazionefunzioni correttamente. Ora faremo ruotareI'accensione dei LED verso sinistra o verso destra,in funzione dello stato dell'interruttore in RA).Per realizzare le rotazioni useremo le istruzioni dirotazione di reqistro: rf e rlf.

Dopo aver scritto e compilato il programmaprocederemo alla sua memorizzazione mediante ilsoftware del PC e la scheda di controllo.Ricordate che dovete sempre disabilitare i jumperdella scheda l/O durante Ia memorizzazione,nel caso in cui questa si trovi unita medíante il Pic Bus

alla scheda di controllo, e che bisognacollocare l'interruttore di scrittura della scheda dicontrollo in posizione PROG

e non in RUN. Una volta scritto il PIC sposteremonuovamente l'interruttore su RUN.

Per verificare il funzionamento di questo programmadobbiamo montare il jumper JMPI che attiva i diodiLED: il resto dei jumper devono essere aperrl.Vedremo che modificando lo stato di RAj otterremoche il "gioco di luci" ruota in un verso o nell'altro.Proponiamo al |ettore di realizzare un esercizio similepero con la temporízzazione di 100o 250 ms fra I'accensione di un LED e il successivo.

Queste temporizzazion i si selezionanomediante SWI (RA)). Con I'interruttore RA2 sicontrolla il verso dello spostamento.

Gonsigli protici. R.otszione sequenzicrle

Page 25: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Monlcg-g!9*.F,-T*1,9.1,9*€**,\\\R\\\\\\\\\\rw:ii\\\\i\Nìì9ìt:-:\ì\\ìi\f\ì\\\\\\.:i...i\\\\\\i\\\\\\\\r\\i\\Nw1,:i:::rit\\ìì\\\.aii:wa<1s\\$)rKss\\\\\\\\ì$sxss\\\ìw:r

Page 26: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

.r-{!,s,rnl'*ggle,tgti-o-*ngff g

Page 27: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Selezioniamo il tipo di dispositivo, includiamo il filecon la definizione dei registri, e nominiamomediante un'etichetta il primo registro liberodi utilizzo generale. Saltiamo il vector di interrupt,e iniziamo lo sviluppo del programma. La pilma cosa

da fare sara configurare la porta B come uscitae la porta A come ingresso per la rilevazione deisensori. Per fare questo dobbiamo pdssare

al Banco 1 come abbiamo fafto in ilttfi oli csereizi

Realizeremo ora un altro esercizio sequenziale,questa volta si tratta di una macchina di riempimento.Due relè, "M1" (RB)), e "M2" (RB1), pilotanodue motoil che muovono due nastri trasportatori."M1" (RB)) trasporta pezzi e "M2" (RBl ) contenitori.Un sensore "DP" (RAl ) rileva il passaggio dei pezzi,e un altro "DE" (RA2), il corretto posizionamento deicontenitori. Ouando sono passati 1 0 pezziil contenitore si considera pieno, si attiva un segnaleacustico "A" (RB2) e il nastro chetrasporta gli imballaggi si sposta sino a presentare uncontenitore vuoto. ln questo momento si disattivail segnale acustico "A" (RB2) e avanza nuovamenteil nastro dei pezzi ripetendo così il ciclo. L'interruttore"1" (RA)) attiva o disattiva il sistema. L'immaginemostra la disposizione degli interruttori che simulanoi sensori, cosi come i LED che simulano i relè.

Dopo aver scollegato le uscite, la prima cosa chefaremo sarà inizializzare il numero di pezziche dobbiamo contare. Attenderemo che il sensoreattivi il sistema mediante RAj (l), quindi metteremoin marcia il nastro trasportatore di contenitori,sino a che il sensore di rilevamento su RA2 non neindichi il corretto posizionamento. Quandoquesto awerrà fermeremo il nastro trasportatoredei contenitori e attiveremo il nastro dei pezzi.

1-A List g*lsF8l+t* lnclude ;'P1úF8lla.IXf"a5'to*t*_paz:i equ BxÉe*? *rg $xg$I goto MIZIBI *rg Srúg

t$11 rlllet$ clrf P0BI*1e bsf Slftlgs,*f$tg clr$ TEISS1* movlg, à'B$ClllJl'1F nruírf TRIS*a{ bcf sTàtlt$,fiP617Y

1f ;******{t***!È**********rt*r****{+******il.*r*** .t**&'LaúF*g Élr* F{ttI3*1 Lcsp r clÈr$tS* Rruls {'18'** &s$*rf *anta*pazai** btfss P{t*1f,,6CF gots loùp**tú*f baf îll*T*, gS* bsf l$*T*,1**$S lt**uesa €trY{tet btfis f0*îÈr*AÈ gatù *.h_r,àsofi*Sà bsF *$nlB,gSS bcf Plt*T8,1$ú, bÉs P$*I*,*

Gonsigli prclici. Rotcrzione sequenzieile

Page 28: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

*ttftsc*45eó*rcs**ttFÌ5gt$E*3tF-ós75*$?6*

PeEzB I c1r$t -btfcs P$nî*,1Sat$ f8zuo*S

Peeac*1 clrffitbtfsc Pll*IS,1gùt8 Pezzú_'ld"sfse Sontà-lrÈaei,Fgotà fÈea*_ffbcf Fs*Ti,úbff POFI*,Ibsf PBET3,?

Si*uasn cirdtbtSsc PB81g,2gotc $i_*asc

Ora aspettiamo che passino i dieci pezzi, operazioneche realizzeremo con il sensore di posizionamentoin RAl . Dovremo rilevare sia l'ingresso dei pezzisia la loro uscita. Conteremo sino a 10, fermeremoil motore del nastro dei pezzi e attiveremo quellodei contenitori. lnoltre verificheremo che arrivi unnuovo contenitore sino al sensore di posizionamento,controllando che il contenitore precedente sia uscito.

Dopo aver scritto il programma procederemoalla sua memorizzazione. Questo programma è statopreparato per funzionare con il Watchdog attivato.Potremo scriverlo, pertanto, attivando questa opzionedella parola di configurazione del PIC. Con ilWatchdog su ON ci assicureremo che se il programmacade in un ciclo infinito, si reseftl automaticamenteper sbloccarsi. Osservate che per rendere possibilequesto, è stafo necessario introdurre le corrispondentiistruzioni clrwdt lungo il programma.

Dopo aver programmato il PIC e collegato il Pic Bus

sulla scheda di llO e quella di controllo, chiuderemo iljumper JMP| per poter vedere I'accensione dei LED.

Ora mediante gli interruttori simuleremo I'attivazionee la disattivazione dei sensori. con cui potremo

provare il programma. Suggeriamo al lettore di farepratica introducendo nuovi sensorie nastri trasportatori all'enunciato di questo esempio,dato che è importante fare praticacon programmi di tipo sequenziale, utili per la

successiva programmazione di Monty.

Consigli prcrlici. Rotcrzione sequenzicrle

Page 29: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

,pEp67:.arìr"fnrrr;ùj'ìi,r'ri::- f;t--...r..4.:.|

"lt):::,...qttuúhtbút ttt$ti||t /lr.rtntit tt t ii:1.:!!tl.r,t.,ffi

{

Page 30: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

it

i.

t

I

'e'

!

,!+t.,t,ì':I

{vtiv ---JE4!1---:l!

"eryi**#* T

irllonfaggio passo rr pÉrs$€

&-e" "

Page 31: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Le morsettiere J1, J2 e 15 hanno tre terminali e sonopredisposte per i! collegamentodei sensori ottici. 5e le guardiamo di fronte, nel

terminale di sinistra di ognuna di esse abbiamo il +5Vin quello al centro l'tngresso per il fototransistor(troviamo la resistenza da 47 K e il trigger 4016), enel terminale di destra I'ingresso peril fotodiodo (resistenza da 220 Q collegata a massa).

Descriveremo tutte le morsetttere dicui è composta la scheda di potenza, per collegare adessa i sensori ottici e meccanici di cuidisponiamo, e realizzare esercizi con i sensori reali chepossiede il robot. Ricordate che a questascheda inoltre si collegheranno i motori che ricevonoil controllo e I'altmentazionetramite i ponti ad H formati dai diversi transistor.

ln questo modo per collegareun sensore CNY70, collegheremo il cavo su cuiabbiamo unito i due terminali delsensore sul morsetto di sinistra del +5 V. Inseriremoil cavo del piedino che si trova sottola sigla CNY70 sul morsetto centrale (uscita delfototransistoÒ, e l'ulttmo filo sul morsetto di destra(fotodiodo). ln questo modo rimanealimentato il sensore ottico che invia segnali logicivpr<n il Ple nra 'ip alls rirrt 1i7gyr6 Clj

condizionamento del segnale presente sulla scheda.

Gonsigli prcrtici. Ulilizzo dei sensori

Page 32: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

tVeilo stesso modo in cui abbiamo collegato questo

sensore ottico collegheremo gli altri due,uno in ogni morsettiera. Oltre al sensore a riflessione

CNY70, potremo approfittare dellacircuiteria della scheda di potenza per collegare adessa qualsiasi tipo di sensore ottico,come il sensore a forcella che si vede nell'immagine.ll procedimento per ilco I leg a mento e esattamente ug ua I e.

Le morsettiere J3 e J4 servono per il collegamentodei sensori di tipo meccanico,

in queste morsettiere non possiamo collegare i sensori

ottici. Normalmente utilizzeremoqueste morseltiere per collegare i finecorsa che ci

serviranno per rilevare gli ostacoli e

per evitare che Monty entri in collisione. Se osserviamo

le morsettiere di fronte, nel terminale di sinistra

abbiamo la massa, in quello al centro i +5 V e inquello a destrd I'ingresso per il segnale del sensore.

Qui abbiamo un sensore meccanico ttpo finecorsa,

collegato alla scheda di potenza.ll primo piedino del finecorsa è I'uscita del sensore

che collegheremo con il terminale di destra.Poi collegheremo gli altri due terminali del sensorenegli altri ingressi della morsettiera.ln funzione di come realizzeremo il collegamento, ilnostro sensore meccanicosarà attivo con livello basso o alto.

Consiqli rrrcrlici. Utilizzo dei sensori

Page 33: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Monleiqqio pcrsso ct Irqsso

Page 34: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo
Page 35: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

&=

Pn. :mn ,,ttliztsrp oittr<là mnr<erfterà nar, olloos,o

qualsiasi tipo di dtspositivo che vogltamo.Ad eSemoiO potremo r.O.làre d'od. I I D o ".1e pe,attivare altri moton. Come tngressi potremo

' o'leqàre p,u serso' 'nÒc.à.t.1 r6po f,^1aq662r larrLtroT o p.lsan*t. ouos,e mor--fTiere,noTrc 5Fr\ona per ta.e .oltegamanu cat / sen50 r

della scheda dei sensori che fa parte di Monty.

Olrre alle morteti;èra di tngte>.9 pgr i ,en.Oti atil,.e meccanict disponramo di altre quattro morsetttere a

d.t, terminali .hp ., .gr1 lròDao tan e ing'e5-o

s s5,;ta Jiq,tale 5o"o J6 J7. JB c J9; sono cotlegàteai piedini RB4, RB5, RB6 e RB7 del PlC,

nell'ardine mostrato nell'immagine. Se guardiamodi fronte le morsetttere, tl termtnale di srnistra è /a ,nassa

-i%w-ffilE4*.5:*,.,.--

;..j'; &\ i:} f, l

jJ """" -u ,,;: ,,; &.,r:;i

*+€:

a\-?

t\3

t':\ Le morsettiere l1 1, J12 e J7 3 servrranno peril controllo dei motort. ll motore che chtameremo M1sarà collegato in 171 e tl motore M2 in 112 La

morsettiera J13, che si trova fra le due precedenti,<prvira enmc tnore\\. elplla tensione di alimentaztoneper quos,ì tnavi dòta rhe /a :theda di r:oLenzapermette di dtsrsorre di un'altmentazrone per i moton,indipendente dall'alrmentazrone della scheda.Guardando la morsettiera di fronte, rl terminale dirlF,trà Fià ,-.:ssa a tn ortpllo dr stnrstTa teffacollegulu la tens'one oosifla da àaplttare al morore.

%Rt-ri,

ss&

Page 36: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

ll collegamento fra Ia scheda di controllo,in cui risiede il PlC, e la scheda di potenza, lorealizzeremo attraverso il Pic-Bus, nello stesso modocon cui collegavamo la scheda di controllo con quella

di ingressi e uscite. A partire da questo momento,utilizzeremo la scheda di potenza per valutarei programmi che funzioneranno con gli ingressie le uscite reali con cui faremo funzionare il robot.

lnfine la morsettiera J10 serve per collegareun altoparlante, nello stesso modo in cui lo abbiamofatto per la scheda di ingressi e uscite.

Dobbiamo collegare il cavo rosso dell'altoparlanteal segnale +5 V della morsettiera, che si trovanel terminale di sinistra, se guardiamola morsettiera di fronte come mostra l'immagine.

Per la scrittura del microcontrollore, non sarà

necessario scollegare il Pic-Bus di connessione fra ledue schede, sempre che non ci siano sensoricollegati ai morsetti JB e J9, dato che i segnaliaresenti su ouesti morsetti vanno a RB6

e RB7 cioè i piedini di scrittura del PlC. Come semprefaremo attenzione alla posizione dell' interruttoredi scrittura della scheda di controllo, che deve essere

in posizione PROG. Nell'inmagine vediamo uninsieme di sensori collegati alla scheda di potenza,e ouesfa a sua volta colleqata alla scheda di controllo.

Consigli prcrlici. Utilizzo dei sensori

Page 37: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

.:

_-j

#

irÉ:

Page 38: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

#î4

fltomÉtrggis Fcrssc .r Ffiss€

Page 39: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Realizzeremo il montaggio necessario sulla scheda dipotenza per provare questo esercEto.

Collegheremo un sensore ottico sulla morsettiera J5,

tramite il quale il segnale arriverà al pinRA4 del PlC. E necessario collegare correttamente icavi nella morsetttera, come già sappiamo.Se collegheremo male I'alimentazione del sensorepotremmo bruciarlo e renderlo inutilizzabile.

1? List F=16F84aè include "PléFs4a-rHc"If5 org 01066 goto Irizio7 úrg 0x65sS Inizio bsf sTATltS,RPú

fE moulu b'00010060'1t noutdf P0nTA12' bcf STATUS,EP0'Ìs14 Cicl$ btfss PoRTA, 4tS goto Auanti16 qoto Ferroo771f FPrnú cLrf P0RTR1?, goto CicLo2821 Asanti bsf PoBTft,BZZ goto cicls2E24 EHD

Questo e tl primo esercizio che faremo utrlizzando sensori

e motori che diventeranno parte integrantedi Monty. L'esercizio consiste nell'accensione e nellospegnimento di un motore a correnle continua(che controllerà una delle due ruote di trazione del robot)secondo Io stato di un sensore ottrco a riflessione.

Sarà necessario utilizzare la scheda di controllo collegataalla scheda di potenza. Il programma è riportato nellafigura e consiste nell'attivare / disattivare il motore 1 infunzione dello stato del sensore su RA4.

Oltre al sensore ottico collegheremo alla scheda dipotenza un motore a corrente contÌnua. Lo inseriremonella morsettiera J11 (motore 1) tramite la quale il motoreresterà collegato ai piedini RA) e RAI del PlC. Quando ilvalore di uscita di questi pin sarà due zeri o due uno, ilmotore ilmarrà fermo. Con due segnali opposti "1 - 0" o"0 - 1", faremo girare il motore in un verso o in un altro.

Consigli preitici. Utilizzo dei sensori

Page 40: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Oltre al collegamento del motore su Jl1, ènecessario fornire tramite i morsetti 113 la tensronedi alimentazione dei motori, che potrà essere

erogata da una pila collegata alla clips. Dobbiamofare in modo che la massa dell'elettronicasia comune alla massa che applicheremo ai motori,per cui dovremo inserire il terminalenegativo del portapile (cavo nero) nel/a sfessaposùione che vediamo in figura.

Per provare l'esercbio dobbiamo attivare e disattivareil sensore ottico. Potremo utilizzareun pezzo di nastro isolante nero su una superficiebianca (o riflettente). Quando il sensoresi trova sul fondo scuro del nastro la luce emessa

dal fotodiodo non polarizzerà il fototransistor; quandosi troverà sul fondo bianco la lucedel fotodiodo arriverà sino alla base del fototransistore questo conaurra.

Scriveremo, compileremo e trasferiremo ilprogramma sul microcontroller tramite la scheda dicontrol lo. I n seg u ito col I eg heremola scheda di controllo con quella di potenza tramiteil Pir7t r F nr.vertrmn I'p<pfcEg.

Raccomandiamo di ripetere l'esercizio, pero con ilsensore ottico collegato su morsetti diversi,

e anche con i sensori meccanici,al fine di verificare il corretto montaggio della<rhar'la rli n^fan7)

Consigli prolici. Utilizzo dei sensori

Page 41: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

se ffn= ,=

-i:1| g

;;!,:-'j

-Tl clFs- Et IEr l- rlj,é,,4:\ 8, ,é*, 44,u

i €,el' 'll' 'ìl' 'il.---ll-r-IFrt-tt

hl'--@- L-&..r L@- -&, L*€-f-!.J.::LA- ffi_tr

ft**c?ÈÉ${il€àg pese# e FeÈgstrù.--,*-rtsrf e: :l ry;lw -è,-,,w -

Page 42: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

l-+ilisil.i-. t

Page 43: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

ln questo esercizio simuleremo I'avanzamento delrobot che segue un percorso, controllandonel contempo che non vada a urtare. Per seguire ilpercorso o pista, utilizzeremo un pezzodi nastro isolante nero su una superficie riilettente,e un sensore ottico a riflessione. Per

rilevare le collisioni uttlizzeremo un sensore meccanicotipo finecorsa. Nella figura è riportatal'intestazione del programma, dove configurtamo lelincp rli inorac\n a rli t t<r if,1.

Ouesti sono gli elementi necessari per realizzareI'esercizio: combineremo un sensore otticoa riflessione, un sensore meccanico (finecorsa) e unmotore a corrente contrnua. Inoltreavremo bisogno di una clips per pile per fornire la

tensione di alimentazione al motore.

ll sensore ottico si collegherà in RA4, e il sensoremeccanico in RB2. ll motore si controllerà tramite le

linee RA) e RA1 (Motore 1). Quando il valoredi queste linee è uguale, il motore si ferma, e quandoè diverso gira in un determinato verso. ll sensoremeccanico ha priorità sul programma, fermando ilmovimento del motore se passa allo stato atLivo,

indipendentemente dallo stato del sensore ottico.lnoltre, il motore si ferma anche se il sensorea riflessione rileva che è stata abbandonata la pista

1, a2 List p=1óF84S include "PI[1úFS4fi.IH["

r , ".1+:

5 arg EH66É goto Inizio7 org 0HEs'g.,I I nizio bsf STATIJS , FP E

10 mtrult'f b' B6E1 ÉBÉE'. -,f.ìi , nouurf PÍIRTR

.:fÌ noulr{ h ' 6E66El 66'*S, nouuf PÍIETEt4. bcf STfiTIJS, EP64C ?ta4

-ú{rf*1FgF?rng,f,e24r,5esrict?e

[icto btfsc FÍ]ETB" 2goto FERHfi

. btfss P0FTfi, 4gotu FEHI'IAgútil ÉUAHTI

.tFEHHf, clrf F0FTA J, goto Diclo

.fiURHTI bsf PflBTA, Igoto Giclo

Cons ci. Rilevqzione di collisione

Page 44: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Per simulare il robot che segue il tracciato possiamo

utilizzare un pezzo di nastro isolante neromesso sopra una superficie bianca. Sopra il nastro

collocheremo il sensore ottico CNY70.

Quando tl sensore è sopra il nastro, il motore si attivasi m u I ando l' ava nza mento del robot,se il sensore esce dalla linea nera il motore si ferma.

Colleghiamo il sensore ottico nella morsettiera J5 perfare in modo che arrivi al pin RA4. ll sensoremeccanico si colleghera in J3, tramite il quale il suosegnale arrivera su RB2. ll motore sara collegatoalla morsettiera J11, in modo che sia controllato daisegnali RA) e RA1 . Forniremo alimentazione almotore tramite la morsettiera J13. È necessariocollegare la massa dell'alimentazione del motore in

comune con la massa dell'elettronica della scheda.

tVe/ caso che il sensore meccanico si attivi, il motore si

fermerà, sia il sensore ottico sopra la pistaoppure no. ln questo modo simuliamo la fermata delmicrorobot in caso di collisione contro qualcheostacolo, mentre sta percorrendo il tracciato. Conquesto metodo utilizzeremo i frnecorsa per rilevare glioggetti o per evitare dei colpial robot, frenandolo prima che si verifichi lo scontro.

Consi . Rileveizione di collisioneìitM9rs

Page 45: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Montcrggio pcrsso cr pcrsso

Page 46: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo
Page 47: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Realizzeremo un programma con cur controlleremoil verso dì rotazione del motore, facendoin modo che possa girare in un senso o nell'altro infunzione dello stato dei due sensori ottici.

Questa sarà la base del movimento del robot: faremoin modo che i motori ruotino in senso

opposto, quando vorremo far girare Monty di lato.

Spesso /e svolte sarannoeseguite in funzione dello stato dei sensori ottici.

Per prima cosa dobbiamo selezionare il dispositivo,

realizzare le definizioni e posizionarei vettori come già sappiamo. Configureremo le linee

RB) e RB1 come ingresso per i sensori attici,faremo una serie di maschere per conoscere lo statodei sensori e decidere se far muovereo no il motore. e con quale senso di rotazione.

, il'ztfi5.,È:?,:

8'

:si5l{'lE:t*:t41516+f**

Inizio:

EIELO:

List p=1úFS4ainclude "P1úFBqà-IHC"

Bx EÚ

I nizio6x E5

bsf STfiTUS,FP6clrf PllRTfinuulru b' BB0Eú86"1 'MOUHf Ff}RTEbcf STfiTUS,RF0

btf ss PIIHTE n E

goto HEE0_DI.Ígoto B I RHC0_Dì{

lF HER0_0ll:3Eaa.7EES. BIfiHf,O_DI.|:

trcaET FEBHfiRE:z{1S$6. DESTBfie*sc

, Ifi , ,, n, ,r*o,*5st*3g,

btf ss PtIHTE,1goto FEÉHfiREgoto IESTER

btfss P0RTE,1goto SIHISTRÈgota FEFHf,FE

clrf P0EIfigotú EIELU

bEf P0RTfi "

E

bcf P0FTfi,1goto [t[L0

PfIRTfi, E

F0ETÈ ,1ETGLO

Se entrambi i sensori sono inattivi o attivi, il motoreilmarrà fermo; per fare in modo che simuova è necessario che un sensore sia attivo e I'altrono. A seconda di qual è quello attivo,faremo girare il motore in un verso o nell'altro.ll motore sarà colleqato alle linee RA) e RA1 del PlC.

Con ci. Rilevqzione di collisione

Page 48: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Collegheremo i sensori ottici nella morsettiere Jl e J2in questo modo il segnale arriverà a RB) e RBI .

ll motore si colleghera alla morsettiera Jl1, per cui ilcontrollo sarà realizzato tramite i segnaliRAj e RAI. E necessario lornire I'alimentazione deimotori tramite la morsettiera J13 della schedadi potenza, e collegarne la relativa massa in comune aq uel la del l' elettron ica.

Se alziamo i due sensori, e li rivolgiamo verso l'alto,il motore si fermerà. Ouesto e dovuto al fattoche per i sensori il vuoto equivale ad una superficietatdlmente nera. Potremo utilizzare questotrucco in seguito, al momento di mettere a punto iprogrammi, quando i sensori otticisi troveranno già fissati sulla struttura di Monty.

Per fare in modo che il motore giri in un verso oppurein un altro dobbiamo far si che un sensoresia attivato e I'altro no. Questo si può ottenere unendoi due sensori e posizionandoli su una lineanera. Muoveremo i sensori verso sinistra e verso destrarispetto alla linea, in modo che uno si trovidentro e I'altro fuori. A seconda di quale dei duerimarrà fuoil dalla Iinea,

il motore si girerà in un verso o nell'altro.

Consigli prcrfici. Rilevcrzione di collisione

Page 49: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Montcagio pcsso er llqtso

Page 50: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

p& 86i

, 1...t,:1111,:::.11:1tt*illúiú.r|i1|t:!t,rrtrrÌr ]r'ir!ì! r ri

RllWW!frffiffiffislw*S!$qàjì!

.*f*@

.:=t:t:. ..,+.

Page 51: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Per prima cosa definiremo il tipo di dispositivo

e i registri interessati. Abbineremo i primi quattro pin

della porta B (RB)-RB3), ai quattro sensori

di ingresso che utilizzeremo. l sensori ottici andrannosu RB) e RBI e quelli meccanicisu RB2 e RB3. La porta A funzionerà come uscita,

e il motore sarà collegato a RA) e RAl .

ln questo esercizio combineremo i due sensori ottici a

riflessione CNY70 con due sensori meccanici tipofinecorsa. Realizzeremo la simulazione del movimentodel robot impiegando un motore e i sensori

ottici per seguire una linea nera, in modo che il motoresi attivi quando i sensori si trovano entrambi sulla

linea nera, e si disattivi quando uno dei due esce fuori.5e i sensori meccanici si attivano

lcloè se il robot entra in collisione con qualcosa), il robotgirerà in senso contrario, simulando la retromarcia.

ln seguito definiremo le maschere che realizzeremo

con i segnali dei sensori, per decidere che tipodi movimento applicare. Prima verificheremo i sensori

meccanici, dato che hanno priorità, e se

si attivano dobbiamo fare in modo che il motoregiri indietro. Poi verificheremo i sensori ottici,e a seconda che siano o meno sulla linea nera,

decideremo se fermare o attivare il motore.

lr3 Líst !*16f64g include ;'P1éF8rta.lilt"

*5 org BxBO

ú goto InizioI org Sx05

If Inizio: bsf STÈîU$,RFB

1S clrf P0BTR

11 moulr,, b'00001111 '

*È nst $f PSnî61* hef STRTT S,BPS

1&T

I 5 ; ***x********t**************lÉ***rt***i!*****' .1Sf î CIf LS btfsc P{lfiTS,?1S gats lllltgîSllffÍ$ bt$sc PBATS,$21 gots III0IETF{}Éî,*S btfss P0RîS,BXt g$ts FtÉl,l*fi[T5g* btfss P{}RT$,lI? Ssto Fgnilf,ng** got$ RttfiHf I

tici. Sinulcrzione di nrovirnenlo

Page 52: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Sú ; *x***r******************.1É*****r+**********. ^81g3 FERItftBE clrf P0nTf,llit grlt$ 0lfiLg3S*5 fiUÈllTI bsf ?OfiîÉ,SSù bcf l0STà"1*î g0t0 *ICL$38itf INBIETSII bsf PonTn "1 J4S bcf FtlfiTS,8*1 gsts tlslo424S EHNLttu !vl

rl...J.'ì,

Questi sono i collegamenti che dovremo realizzareper provare I'esercbio dopo che il programma sia sfatoeditato, compilato e scritto nella memorta delmicrocontroller. Collegheremo i due sensori ottici in Jle 12, i due sensori meccanici in 13 e 14, e il motoresui morsetti di .111 È necessario fornire una tensioneper alimentare il motore in J13 (come sempre,la massa dell'alimentazione del motoredovrà essere in comune con quella dell'elettronica).

Queste routines sono quelle che servono per farmuovere il motore. Quando i segnali in RA) e RAlsono uguali (due zeri o due uno) il motoresi ferma. Con valori opposti, '1-0' o '0-1', otterremodi far muovere il motore in un verso

o nell'altro; la rotazione del motore dipende ancheda come lo collegheremo alle morsettieredella scheda di potenza. Scambiando i fili otterremoche il verso dell'avanzamentosia secondo un senso di rotazione o l'altro.

Per verificare l'esercizio collocheremo una linea nerasu uno sfondo branco o riflettente. ln seguitocontrolleremo il funzionamento del programma coni sensori ottici. Esaminato questo punto passeremoa provare i sensori meccanici, per accertarci cheil motore cambi senso di rotazione se venqono attivati.

Gons rertici. Simulcrzione di rnovirnerloti

Page 53: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

ffigar*m*ryeiie pgss* ds ileilssffi. éQ .__J

Page 54: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

-$-:O

=€wryeÉ+==É+ =cÉursli.ffiliffi ffi sffi5s€e

Page 55: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Dopo aver terminato il montaggio della schedadei sensori, ripoftata in figura, passtamo a studiarne loschema e il funzionamento, per ottenereda essa le migliori prestazioni. Questa scheda possiede

un rilevatore di movimento, basato su capsulead ultrasuoni, grazie al quale possiamo rilevare unoggetto in movimento a diverse distanze,in funzione della regolazione di un potenziometro.lnoltre disponiamo di un rilevatore di sogliedi suono, che permette a Monty di reagire a fronte disti moli sonori esterni.

Per il rilevatore di movimento abbiamo bisogno di uncircuito che produca un'oscillazione nota,per attivare la capsula di trasmissione, e di un altrocircuito che contenga la capsula di ricezionee ci indichi quando riceve qualcosa. Nella fÌgura è

riportdto lo schema della sezionedi trasmissione, che è un oscillatore, il cui periodo ècontrollato dal circuito 4047, e cheproduce un'onda a 40 kHz. AIla sua uscita abbiamoun quadruplo inverter formato da porfeNAND che producono un effetto amplificatore.

La sezione di ricezione è formdta da quatlro stadi,

ognuno dei quali contiene un amplificatoreoperazionale LM324; nell'immagine sono mostrati iprimi due stadi. Abbiamo una tensionedi ingresso fissata da Rl 2 e Rl 3, la quale è modulatadalla capsula ricevente ad ultrasuoni,e amplificata dall'operazionale. A questo punto ilsegnale si recupera attraverso il diodoDl e la resistenza R17, ed entra nel secondo stadio,nel quale torna ad essere amplificato,raggiungendo un livello di continua che rappresental' i ntensità del la i nvo lvente.

Consigli prqtici

Page 56: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Nella figura sono riportati gli ultini due stadidella sezione di ricezione del rilevatore di movimento.ll terzo stadio è un rilevatore a finestra,per i segnali sopra e sotto la soglia di +/- 0,7 V fissatadai diodi D2 e D3. Quando il segnalesupera questi valori significa che c'è movimento, vienepolarizzato uno dei due diodi, e ilsegnale risultante è amplificato dall'operazionale. llquarto stadio è un flip-flop monostabilecon una costante di tempo fissata da R29 e Cl 7.

Come risultato del circuito elettronico della sezione diricezione, quando c'è del movimentosi accenderà per un secondo il diodo LED D7, inoltreotterremo un segnale logico 0 chepotremo applicare al microcontroller. ll collegamentosi real2za tramite la morsettiera deisensori Jl (OUTI), la quale è collegata a uno degliingressi della scheda di potenza.

Potremo modificare Ia sensibilità del rilevatore dimovimento variando il potenziometro R32.

Quanto maggiore sarà la sensibilità, tanto maggioresarà la distanza a cui potremo rilevare.A seconda dell'applicazione che vogliamoimplementare con MonA ci interesseranno distanzedi illevazione piu lunghe o piit corte.Le capsule a ultrasuoni devono essere collocate inmodo parallelo e a una distanza di circa 4,5 cm.

Consigli prqtici

Page 57: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Monlcrggio pcrsso o p.rsso

Page 58: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Monlcrggio peisso cr persso

Page 59: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Nell'immagine è riportata una parte della scheda deisensori impiegata per realizzare il rivelatore di suono.

Questo sensore, basato su di un microfono, è moltoutile per fare in modo che il robot reagisca agli stimoliesterni, e s/ possa programmare per redltzzaredeterminati compiti ouando battiamo le manio emettiamo un suono. La soglia sonora a partiredalla quale si attiva il sensore è regolabile.

Ouesfo è il circuito elettronico del rivelatore. Si basasu di un microfono che reagisce ai suoni e produce unsegnale che, se ha sufficiente intensità, attiverà ilresto dell'ele|'tronica, e produrrà un 1 logico all'uscita.Gli elementi attivi del circuito sono due transistorBC54B che amplificano il segnale del microfono. Gliinverter "Trigger" contenuti nel 74HC14 sonoincaricati di conformare il segnale logico che si ottienesul piedino 5 della morsettiera J1 (OUT2).

Utilizzeremo il potenziometro R30 per fissare il livellosonoro di attivazione del sensore. Se il robot andràin un ambiente rumoroso, Ia soglia non potrà essere

molto bassa, altrimenti il riveldtore sarebbeconti nua mente attivo. Invece, se programm iamoMonty in modo che realizzi compitì di vigilanza,Ia soglia dovrà essere moltobassa, affinché riveli qualsiasi possibile intruso.

Consigli protici

Page 60: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Connettore tramite il quale alimenteremo Ia schedadei sensori. Cosi come è mostrato nell'hmagine,sul primo ingresso di sinistra dobbiamo introdurre+5 V e nel secondo la massa. Con questi due segnaliIa scheda rimarrà alimentata. Nel terzo ingressopossiamo introdurre il segnale del microcontroller cheserve per attivare o disattivareIa sezione di trasmissione del rivelatore ad ultrasuonidi movimento. Nel quartoingresso abbiamo I'uscita del rivdatore di movimentoe nel quinto I'uscita del rivelatore di suono.

La scheda dei sensori si alimenterà e sarà collegatacon il microcontroller tramite la scheda di potenza.Dalla scheda di potenza preleveremo i 5 V nxessari perI'alimentazione della scheda deisensori. lnoltre disponiamo di una serie di morsetti che

contengono linee liberedel PIC che potremo utilizzare per collegare gli ingressi

e le uscite dei rivelatori della scheda dei sensori.

Oltre al collegamento della scheda di potenlacon quella dei sensori, sarà necessario che Ia schedadi controllo sia a sua volta collegata con quella dipotenza tramite il connettore Pic-Bus, tramite ìl qualei segnali arrivano sino al microcontroller,che è il cervello del microrobot. In questo modoavremo una slruttura d torre come riportatonell'immagine. Per fare questo inseriremo le schedenelle barre filettate del telaio e Ie separeremomediante pezzi di tubo di PVC che taglieremoa 16 mm. Possiamo lasciare semprecollegate le schede, anche se per programmaredobbiamo rispetldre le posizionidell'interruttore PROGIRUN della scheda di controllo.

Page 61: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

f tfi g!*oggÌo.p*9.s...s*9,,.,,,d,,,,.?-r.?,F?,,

Page 62: Microrobotica Monty Peruzzo Editore - 11 C - Modulo di Controllo

Monfaggio pcrsso cr p.rsso