Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

14

description

Tutta la raccolta in versione torrent qui:http://www.tntvillage.scambioetico.org/index.php?act=showrelease&id=192104Raccolta a fascicoli "Robots - Costruisci il tuo Microrobot ed impara l'Elettronica Digitale" pubblicata da Peruzzo Editore dal 2001 al 2003.Su Scribd c'è tutta la raccolta suddivisa nei seguenti file:Microrobotica Peruzzo Editore - 00 A - Copertine e ComponentiMicrorobotica Peruzzo Editore - 00 B - Copertine e ComponentiMicrorobotica Peruzzo Editore - 00 C - Copertine e ComponentiMicrorobotica Peruzzo Editore - 00 - Errata CorrigeMicrorobotica Peruzzo Editore - 00 - Leggimi.txtMicrorobotica Peruzzo Editore - 00 - IndiceMicrorobotica Peruzzo Editore - 01 - Fondamenti di ElettronicaMicrorobotica Peruzzo Editore - 02 - MicroprocessoriMicrorobotica Peruzzo Editore - 03 - Sensori e AttuatoriMicrorobotica Peruzzo Editore - 04 - ComunicazioniMicrorobotica Peruzzo Editore - 05 - MotoriMicrorobotica Peruzzo Editore - 06 A - MicrocontrollerMicrorobotica Peruzzo Editore - 06 B - MicrocontrollerMicrorobotica Peruzzo Editore - 07 - Modelli di MicrorobotsMicrorobotica Peruzzo Editore - 08 - Robotica Industriale e Intelligenza ArtificialeMicrorobotica Peruzzo Editore - 09 - ProgrammazioneMicrorobotica Peruzzo Editore - 10 - ApplicazioniMicrorobotica Peruzzo Editore - 11 A - Modulo di ControlloMicrorobotica Peruzzo Editore - 11 B - Modulo di ControlloMicrorobotica Peruzzo Editore - 11 C - Modulo di Controllo

Transcript of Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

Page 1: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni
Page 2: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni
Page 3: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

Conversione di dati analogici

ossiamo affermare che il PIC 1 6FB4 è un

microcontroller povero ma essenziale, perché

nonostante le scarse risorse di cui dispone al

suo interno, permette la realizzazione di

un'infìnità di applicazioni molto utili.

Comunque, che cosa succede quando le risorse di cui

abbiamo bìsogno non ci sono nel PIC? Anche se la filo-

sofia dei microcontroller è funzionare come sistemi

chiusi. dipendendo cioè, unicamente dalle risorse inter-

ne e senza connessione ad altri dispositivi, esiste la pos-

sibilità di comunicare con periferiche che apportino

quello che i PIC non hanno.

Proviamo a fare uso di queste caratteristiche, per

disporre di un convertitore che si incarichi di trasforma-

re valori analogici ìn valori digitali che possano essere

processati dal PlCl 6F84.

In ogni caso, la scelta più sensata sarebbe seleziona-

ll modulo ADCIDAC PCFB591

re un PIC che contenga un convertttore, ad esemplo

uno della gamma dei PIC 16FB7x.

3t rr4ff#LJLS effifl/Setll convertitore che utilizzeremo ha come sigla PCF8591

e si collega al PIC tramite le linee del bus l2C, SCL e

SDA.

Nella figura possiamo osservarne l'aspetto.

tindirizzo a cui dovrà fare riferrmento il master è deter-

minato dal codice 1001, stabilito in fabbrica, ha tre bit

che dipendono dai valori assegnati alle linee A0, A1 e

42, che nella figura sono collegati a massa.

ll bit meno sìgnificativo degli indirizzi indica se si va

a leggere (1)o se si va a scrivere (0) sul dispositìvo'

ll circuito si comporterà come un convertitore analo-

gico/digitale a B bit, convertendo i valori che arrivano

tramite le linee ANO, ANl, AN2 e AN3. e passando il

nx#x*,xm,m*ffix*wfr|l&ùliÌtrl@s@Wsflfr1f]W]i@1ù[Wl#,à@wN'd]slùùuÌ

Page 4: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

risultato come valore binario al PlC. Inoltre può funzio-nare come un convertitore digitale/analogico, conver-tendo ilvalore binario che fornisce il PlC, in una tensio-ne che esce tramite AOUT. I segnali di massa e di riferi-mento si collegano ai pin AGND e VREF.

A seconda delle caratteristiche della tensione di rife-rimento si otterrà maggiore o minore precisione.

h5ilffi {EHE{:} Fffi #$F#lS} {3ll programma deve solo prendere un valore e mostrarloconvertito. lmmaginate che il parametro sia quello diuna temperatura o di un sensore di luminosita, e che infunzione del valore si debba attivare un ventrrarore, untermoconvettore, una luce, ecc.

Affrontiamo quindi il lavoro per parti, e dedichiamo-cr, per ora, solamente alla conversione.

Sarà tanto semplice quanto realizzare un crclo di let-tura sul dispositivo PCF859'1. Se si prende come tensio-

ll programma legge il valore analogico presente sul canale 0,

lo converte in digitale e lo mostra tramite i diodi LED,

5i utilizza il bus 12C per mettere in comunicazione il PIC con

il dispositivo convertitore,

Lnunc ia to dell' eserc izio propost o

ne di riferimento 5 V la risoluzione per bit sarà di 20mV, come conferma l'equazione della figura e comerisulta anche dalla tabella in cui ogni incremento di 20mV aumentera di 1 il valore binario

Come mostra l'organigramma, dal modulo prrncipa-le si configurano solo ie variabili che si vogliono utiliz-zare e si eseguono le chiamate alle differenti funzioni,

che saranno quelle che sup-porteranno il carico reale

del programma. ll modo in

cui queste funzioni si realiz-

zeranno dipenderà dal

dispositivo: raccomandia-mo di leggere sempre le

specifiche tecniche per

seguire r passi ed i tempiindicat dal costruttore

$3ffi##ffiÀ*,4 ffiADopo la definizione dellevariabili dovremo includereun file con le routines digestione per il bus l2C che

,,+ili---+^ ^i,',sdrdÍrÍlo uI'|tzzale ptu avan-ti. Configureremo la porta

A come uscita, utilizzandole quattro linee meno signi-ficative per acquisire parte

del valore convertito, cioè i

Orga n ig ra m ma d e I I' esercr zi o p ro posto

Vref + -Vref-

5-O 5=-=-= 20 mV/bit

28 256Risoluzione =

2 Ne bir

Equazione che da la risolutione di un convertjtore e ld relaLivà tabellò.

e p ry fi $ccw

*qg ry €__ffi.trtrR# ffi ff

Page 5: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

LIST

INCLUDE

P=f6F84A

"P16F84A.lNC'

.4000000

't2cLow.tNc"

; Tipo di processore

0xOt

0x12

0x13

0x00

lnizio

EQU

EQU

EQU

EQU

l2c_var

A_inp

aux

Definizione dei registri interni

Frquenza di lavoro

lnizio delle variabili per le routines I2C-L0W

Risultato deila conversione AD di ingresso

; Variabile ausiliaria dedicata al dato binatio

; Vector reset

; lnclude le routines di gestione del bus l2C

;Trasmette la sequenza di inizio

; lndirizzo del PCF8591 (modo lettura)

; Riceve un unico byte pet volta

; Riceve il risultato della conversione AD

; Trasmette sequenza di ST0P

; Salva il valore della conversione

; Spostiamo il risultato in W

; Lavoriamo con la parte bassa del registro

; e la spostiamo sulla Porta A

; Spostiamo nuovamente il risultato in W

; e lavoriamo con la parte aÌta

; spostandola su di un registro ausiliario

; Cambiamo di posizione ai bit

;e li portiamo sulla Porta B

A_lnput

Visualizzare

ORG

goto

INCLUDE

call

movlw

movwf

call

bsf

call

call

mov{

movwf

return

m0vT

andlw

movwf

m0vî

andlw

movwf

swapf

MOVWT

return

ctrf

clrf

bsf

movlw

movwf

clrf

m0vlw

movwf

bcf

call

Txt_5tart_Bit

b'10010001'

DataByte

Txt_Byte

_Ultimo-Byte

RcvByte

Txt_Stop_Bit

DataBvte,W

A_inp

A ino,0

b'0000111f'

PORTA

A-inp,0

b'11110000'

aux

aux,0

PORTB

PORTA

PORTB

STATUS.RPO

b'00000000'

TRISA

TRI5B

b'î0000110'

OPTION REG

STATUS.RPO

lnizia Bus

lnizio

; Seleziona il banco î

; RA0-RA4 uscite

; Porta B uscita

; Prescaler di 128 per ilTMR0. Pull-up 0{f

; Seleziona il banco 0

; lnizializza il bus t2C

Programma nsolto

t

-'-'"-....-.="=..-:.-'"-."=

Page 6: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

loop ;il. lJ:ri-'.,,

il :;""'"

; Resetta iIWDT

; Ottiene ilvalore di conversione ADC

;Visualiza sui LED il risultato

; tine del programma

Prog ra m m a ri solto (co nti n uazi one).

quattro bit meno significativi del numero. Allo stessomodo la porta B acquisirà la restante parte del numero,vale a dire i4 bit più significativi. Inoltre, le linee RB6 eRB7 saranno utilizzate per la comunicazione con il con-vertitore 12C.

La routine "A_input" legge il valore binario che arri-va dal canale 0 dell'ADC contenuto nel disoositivol2CPCF8591. La subroutine "Visualizzare" prende il

valore convertito dalle porte A e B, nel modo prece-dentemente descrrtto. ll modo di realizzare la comuni-cazrone con il convertitore viene indicata dal fabbrican-te di quest'ultimo

Dopo un bit di inizio dobbiamo indirizzarlo, indican-do se vogliamo leggere o scrivere, Nel nostro caso stia-mo leggendo, dato che stiamo cercando di acquisire la

conversione di una tensione analoqica a binaria.l/^^-;^^^ A, --.1++,,.^L up4rur rc ur )Lr rLLuro p€l' qUeStO

dispositivo consiste nel fargli pro-

durre la tensione corrispondenteal valore binario che introducia-mo.

Dato che inviamo solo un byte,

se ne vogliamo conoscere il valo-re, e leggere rl valore convertito,possiamo fermare il seguito della

sequenza.Tutte nrreste roiltines sono

raccolte nel file "12CLOW.lNC".

Invece di utilizzare le porte A e B

per acquisire il valore della con-versione in un modo così ricerca-

to, si potrebbe optare per l'uti-lizzo di un altro dispositivo,anch'esso l2C, a cui passare il

dato con due soli f ili, e que-st'ultimo visualizzerebbe il datosu dei LED.

FIUOVA PROPOSTAProponiamo ora una modificaall'esercizio precedente.

A seconda che il valore siacr rnorinro inforinro n,_,- _ uguate ao

uno preso come riferimento, si

accenderà un riscaldatore, un

ventilatore o si spegnerà tutto.

IniziqlizzozionePA uscitoP3 uscitq

TMR.O

Ghiede il voloredello conversione

Vqlore = X? Sl

Vqlore >X? Spegnere il ventilotore

Spegnereil riscaldqmento

Spegnereil riscqldcmento

Accendere il vedilgtore Spegnere il ventilotore

Accendereil riscoldomento

Organigramma della nuova proposta

,*nnl i r,nx:g#ffi :gt,i s,ff ,,-.,,',

Page 7: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

Comuni cazionefra dispositivid#re osì come abbiamo visto con il convertitore

ffi DAC/ADC PCFB591, esistono molti altri

ffi dispositivi predisposti per comunicare con il

ffi bus l2C. Questo ci fornisce la possibilita di'i m t^.,^-^-^-^""* - --.r 256 elementi con un impiegominimo di linee, nella fattispecie due. In questo caso

vogliamo aggiungere alla f unzione di conversione,quella di visualizzazione. Per fare questo utilizzeremo

contemporaneamente due dispositivi l2C, in modo che

i dati generati da uno, passino all'altro. La comunica-zione fra entrambi i dispositivi si realizza tramite un

microcontroller, il PIC 1 6F84.

HL fl#r4YR#$_L#ffifi $3s ffirSFLeY SeAs*64Questo integrato e capace di pilotare fino a 4 display a

7 segmenti. ll suo impiego è semplice: sostanzialmente,

dobbiamo ìnviare la combinazione binaria corrispon-

dente ai segmenti che vanno attivati per ognuno dei 4digit. Per farlo funzionare con i suddetti display si puo

collegare come mostrato nella figura. Tramite le lrnee

SCL e SDA il

m icrocontrollermanda al dispo-sitivo l'informa-zione da visua-

lizzare. Dei

sette bit di indi-rizza i rinnr ra

più significativi<nnn nrodotar-

minati in fab-brica come "01110" e i due successivi sono stabiliti dal-

l'utente secondo la tensione applicata al pin 1 (ADR), la

cui corrispondenza si trova nella tabella allegata.

Uultimo bit, e quello di lettura (1) o scrittura (0) del

dispositivo. ll SAA1064 f unziona come un multiplexer,

attivando consecutivamente i display 1 e 3 e i display 2

e 4. Se questo si fa con una velocita adeguata, sì pro-

voca la sensazione ottica che i quattro display siano atti-vati in modo continuo. ll circuito dispone inoltre dì fun-

3/8 di Vcc

5/8 di Vcc

Tabella che determina i due brt menosig n if icativi del I' i nd i rizzo.

zioni di reset, test, controllo di lumi-nosità, ecc.

ESERCIZIO PROPOSTO

Questo programma è simile al primo

che abbiamo realizzalo con il conver-

titore, cambia solo il modo di offrire il

risultato finale, che sarà un valore

compreso fra 0000 e 0255, rappre-

sentato sui quattro d splay a 7 seg-

menti. Ancora una volta il programma

principale è incaricato di eseguire le

chiamate alle diverse funzìoni, che

realizzano realmente il lavoro. Le spe-

cifiche di questo dispositivo indiche-

ranno il modo con cui si realizzerà la

comunicazione fra essi e il PlC.

PROGRAMMAll programma principale è molto simi-

ìe a quello del convertitore che abbia-

DtG4 F., ,e!..;_ r-l;:l

-s-4 , 1...É{',4lJ+-@;ì4:

' | 4-+4

4, l.gE+-L'.'+::...ì r

543óil t'

UISAAr 0ó4

Dir=Olll0llr/w

ll SAA| 064 collegato a quattro display a 7 segmenti

taa:aaaaaatLaaa:aaaaaaaaa,aaatltt\j111::11:::a:;;::;lll\l::ìlì{lflHiPr:r.ir::r:-ìììihÀ*11r!ì3!rì111!ì!ìì:

$cffware

Page 8: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

o3

Fnunc Ìa to del I' eserciz io propos Lo

mo gra visto. Si richiede l'acquisizione di un valore ana-logico convertito a binario, qJesto valore binario si co"ì-verteinBCD,chetornaaconvertirsiqUeStavo|taincodice a 7 segmenti, per rappresentarlo sui display. Si

utilizzano come linee di l/O solo le due corrispondenti al .

bus|2C,situatesu||aportaB,chesonocondiviseconidue dispositivi utilizzati. Come routines nuove abbiamo :

nrrallo Ài ttcttzltzztztnne del datO, di COnVefSiOne del ,

dato del codice binario BCD e quella di decodifica del ,

numero BCD.

Per la conversione del dato a BCD si parte da un :

va ore memotzzalo nel regìstro di lavoro W che è con- :

vertito in codice BCD e memorizzato nei due registri da

Bbit,inmodocheinogniregtstrocisianoduedigit'

lniziolizzozionePB uscite

TMRO

€hiedere vqloredello conversione

Convertire q BCD

Converlire o 7 segmenli

Visuqlizzore

Òrn.nínrsmms dol l a<arci zìa ^rÒnÒ<rÒ

ll progrommo legge il volore onologico presenf,e

sul conole 0, lo converte in BCD e lo moslro lromi$e

quoitro disploy o 7 segmenti. 5i utilizzo il bus l2C

per mettere in comunicozione íl PIC con il dispositivo

convertitore e con il conhollore di disploy.

CLKIN

12c-vat

Digit_1

Digit 2

Digit 3

Digit_4

A_inp

Buffer_H

Buffer_L

u5T

INCLUDE

EQU

EQU

EQU

EQU

EQU

EQU

lQuEQU

EQU

ORG

g0r0

INCLUDE

call

movlwmovwfcall

bsf

call

call

movfmovwfreturn

P:l6F84A'P16F84A.rNC"

.4000000

0xOc

0x'12

0x13

0x14

0x15

0x16

0x17

0x18

0x00

Inizio

"12cLowlNc"

Txt*Starî-Bítb'10010001'

DataByte

Txt_Byte

-Ultimo*ByteRcvByte

Txt*Stop_Bit

DataByte,W

A_inp

A_lnput

; Tipo di processore

: Defínizione dei reqistri interni

; Frequenza di lavoro

; lnizio delle variabili per la routine I2C_LOW

; Buffer di uscita dei 4 digit per il 5AA1064

; Risultato della conversione AD di ingresso

; Risultato della conversione in BCD

; Vedor reset

; lnclude la routine di gestione del bus l2C

; Trasmette la sequenza di inizio

; lndirizzo del PCF8591 {modo lettura)

; Riceve un unico byte per volta

; Riceve il risultato della conversione AD

; Trasmette la sequenza di 5T0P

; Salva il valore risultante dalla conversione

í;-,+.É+=-:'1rSaE:::.=

Page 9: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

:,

.

:

ììì:

Visualizzare

Bin,bcd

Bin bcd 'l

Bin_brd_2

Érn 0c0 J

Un_Pack

call

call

ilOVIW

movwf

call

drfcall

movlw

movwf

call

movf

movwf

call

movfmovwf

call

movf

movw{

call

movf

movwf

call

call

return

clrf

clrf

addlw

btfss

90î0movwf

incf

movf

xorlw

btfss

goto

clrfincf

movf

goto

swapf

call

movwfmovf

call

movwf

swapf

call

movwfmovfcall

movw{

return

Inizia*Bus

Txt_Start_Bit

b'01 1 101 1o',

DataByle

Txt_Byte

DataByte

Txt_Byte

b'010001 1 1'

DataByte

lxt Byte

Digit_1,W

DataByte

Txt_Byte

Digit_2,W

DataByte

Txt-Byte

Digit_3,W

DataByte

Txt_Byte

DigiL4,WDataByte

Txt_Byte

Txt_5lop_Bit

Buffe_L

Buffer_H

UXTb

5TATU5,C

Bin_bcd_3

A-inp

Buffer_L,F

Buffer_L,W

b'00001010'

STATUS,Z

Bin_brd_2

Buffer-L

Suffer_H,F

A_inp,W

Bin_bcd_1

H'OA

Buffer_l,F

Buffer_L,F

Buffer_H,W

BCD_7seg

Digit'1Buffer_H,W

3(D_7seg

Digit_2

Buffer_L,W

BCD_7seg

Digit_3

Buffer_L,W

BCD_7seg

Digii_4

addlw

swapf

ionivf

return

;lnizializza la linea del bus l2C

; Invia il codice di inizio

; Trasmette I'indirizzo del dispositivo {scittura)

; Trasmette il byte di istruzione

; Trasmette byte di controllo

; Trasmette Digit 1

; Trasmelte Digit 2

;Trasmette Digit 3

; Trasmette Digit 4

; Trasmette la sequenza di 5T0P

; Cancella i registri di lavoro

; Sottrae 10 per somma di complemento a 2

; I presente il Cany?

;N0; 51. Scivilo nel registro temporale

; Incrementare byte basso, scriverlo e inviarlo...

.,, al registro W...

; ... xor di OAh con W (BCDL)

; ll risultato di questa operazione è zero?

; N0.

; Sl. Canrella il byte basso e,,,

; incrementare quello alto.

; Recupera il dato.

; Continua le operazioni.

; TEMP0 + OAh

i <3:0> <==> a7;4v g ==> BCDL

; W o BCDL ==> BCDL

; Converte il nibble piir significativo del Buffer-H

; Converte il nibble meno significativo del Buffer_H

; Converte il nibble più signi{icativo del Buifer_L

; Converte il nibble meno signi{icativo del Buffer-L

Page 10: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

Prog ra m m a ri solto (cont i n u azion e).

Prima di poter visualizzare il risultato, dobbiamodividerlo in quattro digit o decodificarlo, e trasformareognuno di essi nel suo corrispondente codice a 7 seg-menti. La routine dtvisualizzazione è ouella che utilizzail dispositivo SAA1964. In essa, dopo il bit di inizio e il

suo indirizzamento per la scrittura, si invia la funzioneche si vuole eseguire. Di seguito si trasmettono. ad unoad uno, idigit da visualizzare, gia convertiti rn codice a7 segmenti.

NUOVA PROPOSTAPensate a una nuova possibilità: ad esempio, che ve nepare di disporre di diversi sensori, uno per ogni canaledel convertitore, e scegliere quale convertire a secondadel valore dei due interruttori? ll risultato puo essere

mostrato tramite dei LED, o con l'aiuto del nuovo dispo-sitivo che abbiamo aooena conosciuto.

Organigramma della nuova proposta

Soflwsre

Page 11: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

itoo

AP 05

Vcc

ll piedino RB4 del PIC sarà la lìnea di trasmissione dei dati, e il piedino RB5 lalinea di ricezìone. Nel connettore DB9 del (ompurcr saranno i pin 3 e 2 rispettivamente.ll cavo seriale che unisce il computer con il PIC tramite rl MAX232 deve avere le lineedi trasmisstone e di ricezione tncrociate, dato che quello inviato dal PIC tramite la hnea ditrasmissione deve arrivare alla periferica sulla linea di rìceztone e vrceversa.

5i desidera controllare, famite un teminale, una serie di dispositivi di allarme quali possono essere i

diodi lED, che mostrano in ogni momento la situaziole di diversi sensori. 5i seguirà la seguente tabella:

.''''

1...-'.

Premere uno di questi pulsanti farà cambiare lo stato delle linee RB3-R80, quelle che ci

mosttano lo stato dei sensori. Dato che abbiamo due lED per ogni situazione di allarme al posto di uno,

dobbiamo assicurarci che i LID spenti lo siano per errore del sistema e non

per problemi di montaggio del circuito. Solo nel caso di "disconnessione" non ci sarà alcun IED acceso;

in tutti gli altri casi dovranno esserci due LED su quattro accesi nella posizione adeguata.

TASTO

aA

0P

5PC

USCITA

RBO

RBl

RB2

R83

AZIONE

pericolo di incendio

N0 pedcolo di incendio

pericolo intrusi

N0 pericolo intrusi

scollegamento

ALTARME

pericolo incendio

N0 perkolo incendio

pericolo intrusi

N0 pericolo intrusi

Appticazione pratica:comunrcazlOne con computer

e l'utilizzo della tastiera e

dell'lCD come neriferiche

di un PIC vi sono sembrateuna grande invenzione,î-^^++a+^'-.li',^'J^"^d5peLLdre ur veuere cosa

abbiamo preparato in questa occa-sione: niente più e niente meno che

la comunicazione del PIC con il com-nltter Per ouesto lrtilizzeremo un

canale RS-232 che comunrca rn

modo se'iale con la porta del PC

Orrest'rrltimo orazie al softwareHyperTerminal (Hypertrm) fornito da

Windows, si comporterà come un

Lerminale di comunicazione.

Per fare comunicare il PIC con il com-^,,+^r' ^^^ L---+- ,,+ili---"^ l^ .r^..^PULtrl ItUI Ud)Ld U||t/ót E rU )rC)rU/,ti^^,,î^^i^, ,..tilngua9gro, ma oevono es5ere

uguali anche isuoi livelli elettrici.Per otîenere orresîo si utilizza il

rircttita intonr:tn N/AY7?7 iì nrr:ìohr il rnmnitn Ài rnnuarfiro ilirralli lnni-

ar I tl nrn\/onronîr fl:t HI( : il\/a ìl

lnniri P(--)?f rha ci rnnlirrn^ ìl .^nrwvrLr r\J-zJZ, Lr rE )r oPPilLoru or LUr r-

npffnro dol rnmnrrfor

t1 --,.^ -^-:-1^ )^,,^ ^,,^-^ t-tt (dvo sel Hte OeVe àVete lelinee di trasmtssione e riceztane tncroctale

ll PIC oltre a mostrare le informazioni tramite i LED fornirà il tipo di situazione al terminale perché sia

mostrata in video.

Lnunciato dell esercrzio proposrc.

Page 12: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

i

AccendereRBO

SpegnereRAI

Alfenderelc ricezione

di un cqrqllere

ActendereRBI

SpegrereRBO

Quando è il computer che manda

i dati al PlC, il MAX232 ha il compitodi fare la conversione inversa.

Nella figura possiamo vedere i

pochi componenti esterni di cui ha

bisogno questo chip per lavorare.Comp vpdete le nossibilità che offrela comunicazione con un computersono enormi. ll PC potrebbe trovarsi

in una abitazione, e il sistema di con-

trollo in un'altra, anche a notevole

0 rsta nza.Òltra : np<fira doi comnliri IFT)

notrémo anche movimentafe Un

microrobot per realizzare un lavoro. o

un sistema di riscaldamento che si

attiverà o drsattiverà a seconda degli

ordini dell'utente o delle ore del gior-

no.

Lo schema, in questo caso, non si

limita agli elementi da collegare al

PlC, ma si estende sino alla connes-sinnp rnn il rnmnrrter ll modulo che

appare nella figura come canale RS-

232 è mostrato in dettaglio in unafinrrra nrarodonta

'+; ftrr* ízÍ:iltie"ú & rÍi. l'u +Dopo aver confrgurato le linee del PIC

come ingressi/uscite, e il resto delìe

periferiche in modo adeguato, sì

attende di ricevere un carattere.

Si verificano ad una ad una tuttele possibìlità di attìvazione di unaf:<tiora o e qornnd: Ài nrrrli +rc+i,-- ur vuoil Lo)Ll

sono stati premuti, si accenderanno o<i <nonnor:nnn i I Flì --l^a' ' -+i a ri)r )pEVr rEroril rv I LLU dUcVUdtl c )l

manderà un messaggio sul monitorche visualizza la situazione attuale del

sistema.

i.: i;i j.': i': i'l .:i1 = ::"jl ;r!

ll programma, anche se lungo, è+--;t^,l- --^;"^toLItE uo loPil q.

Le variabili definite all'inizio del

programma sono necessarie per la

comunicazione seriale. In seguito si

definìscono i differenti messaggì da

visualizzare, in modo simile a quan-

ActendeÉRB2

SpegnaeRE3

: --!.

HS

E'O?

oAceendere

RBitSpggnere

nB2

È"r

AtcendereR8O, RBI,rB2, Rg3

Visuelizzore mesroggio

I .i!

O rga n ig ra m ma del l' esercizi o proposto.

Page 13: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

i

ìÌi

,rll

Mess_5

Mess_6

Mess 7

CTKIN

BAUDE

T-MODO

R MODO

T-NbhR_Nbit

SbitRS232,var

Contatore0ffsetTemporale_1

Temporale 2

Mess_0

Mess_1

Mess_2

Mess_3

Mess 4

u5TINCLUDE

EQU

EQU

EQU

EQU

EQU

EQU

EQU

EQU

EQU

EQU

EQU

EQU

ORG

g0r0ORG

EQU

DT

EQU

DT

EQU

DT

EQU

DT

EQU

DT

EQU

DT

EQU

DT

EQU

DT

EQU

DT

EQU

DT

EQU

DT

INCLUDE

movwfmovfcallmovwfmovfbtfssgotoreturnmovwfcallincfg0to

drfbsf

movlw

movwfmovlwmovwfbcf

clrwdtcall

movlw

P=15F844

"P'l5F84A.tNC"

.4000000

.9600

1

1

ó

8

0x{)C

0x1'l

0x12

0x13

0x14

0x00

tNtzt00x05

; Tipo di processore

; Definizione dei registri interni

; irequenza di lavoro

; Velorità di comunicazione

; îrasmette il primo bit t5B

; Riceve il primo bit l5B

; Trasmette caratteri da 8 bit; Rkeve caratteri da 8 bit; Trasmette 2 bit di stop

; Inizio delle variabili per routines R5232

; Variabile rontatore di mesaggi

; Spostamento dei messaggi

; Variabile temporale

; Variabile temporale

; Vector Reset

; Salta il vedor di intenuptì"5collegamento ",0x0d,0x00

"Pericolo Incendio ",0x0d,0x00

"No pericolo incendio ",0x0d,0x00

"Condizione nulla ",0x0d,0x00

"Perkolo intrusi ",0x0d,0x00

"lncendio/lntrusi ",0x0d,0x00

"lntrusi/No incendio ",0x0d,0x00

"Condizione nulla ",0x0d,0x00

"No Pericolo intrusi ",0x0d,0x00

"lncendio/No intrusi ",0x0d,0x00

"No incendiollntrusi ",0x0d,0x00

; Include le routines di comunicazione

; A seronda del valore contenutonel registro W, viene fornitoil carattere da visualizzare

; Calcola lo spostamento sulla tabella

; dei mesaggi: Questa routine invia

tramhe RS232 il mesaggioil cui lNlZlO è indicato

; nell'actumulatore. La fine di un

messaggio si determina mediante

il codite 0x00

; Salva posizione della tabella

; Recupera posizione della tabella

; Cerca carattere di uscita

; Memorizza il carattere

; Controlla se è l'ultimo

; Trasmette il carattere

; Carattere successivo

; Scollega uscita

; Selezione banco 1 dei dati

; Prescaler da 128 per il WDT, Pull,up

; RB5 ingresso e RB4-RB0 uscite

; Seleziona pagina 0 dei dati

; Attendi la ricezione di un carattere

îorondn ns<<o nol la

co nfig u razio n e del prog ra m m a

terminale "Hypertrm".

Q*,*"'***-_

'-qLde dh+r@ rMH. edù@6c!rud,É

,ddr*H# l.* .---*:!

N@iqdrȀl@r I

Mess_8

Mess_9

Mess 10

Tabella,Messaggi

MESSAGGIO

Mesaggio_1

Non_è ultimo

lNtzl0

'RS232t0W.tNC',

movwf pat

Secondo passo nellaconfigurazionedel programma terminale " Hypertrm"

to fatto lavorando con il displayLC D.

ll file "RS232LOW.lNC" contie-ne le routines di cornunicazione,per l' nvio e ricezione dei dati; datoche il PIC 16F84 non ha queste risor-

se i'np err^entate nel 'hardware,flrpq-p onor:zinni devono eSSere

no<tito iri: cnftrnr:ro

In segurto trovramo la routrne

inca.icata dr rasmettere il nîessag-

gio che fa uso della rour ne "TxD ",

contenuta in " RS232LOW", e invia

un byte (un solo carattere) ognivolta che si chrama. La chiamataalla routine inversa, la "RxD", si

trova ne programma prncrpa e.

essa c î'oínera del tasro p"e.^uto.Dopo aver verificato di quale

Temporale 1

Temporal_1,W

Tabella_mesaggi

Temporale_2

Temporale_2,F

SîATUS,Z

Non è ultimo

TxdregtxuTemporale l,FMesaggio_1

PORTB

STATUS,RPO

b'10001111',

OPTION,REG

b'1 1 1 00000'TRISB

STATUS,RPO

RxD,n,

LOOP

Page 14: Microrobotica Monty Peruzzo Editore - 10 - Applicazioni

SCOLLEGAMENTO

INCENDIO

NO-INCENDIO

INTRUSI

NO_INTRUSI

Test_mess

Mess_loop

Uscita mess

END

Drnaramma rì<alfn

Rxdreg,W

STATUS,Z

INCENDIO

Rxdreg,W

STATUS,Z

NO_INCFNDIO,0,

Rxdreg,W

STATUS,Z

INTRUSI

'P'

Rxdreg,W

STATUS,Z

NO_INTRU$

Rxdreg,W

SÎATUS,Z

L00p

PORTB,O

PORTB,l

PORTB,2

PORTB,3

Test_Mess

PORTB,l

PORTB,O

Test_Mess

PORîB,O

PORTB,l

Tel_Mess

PORTB,3

PORTB,2

Test_Mess

PORTB,2

PORTB,3

Test Mess

0x0a

Contatore

Mens_10

0ffsetPORTB,W

b'00001 1 1 1'

Contatore,W

sTATU5,Z

Uscita_mess

.20

0{fseiContatore,F

Mess_loop

0ffset,W

MESSAGGIO

LOOP

sublvf

btfsc

goto

m0vtw

subwf

btfsc

. È ,rl'?

ffiJ :JSf-ìl

bryFry.#b@'bl

goto

m0vtw

subwi

btfscg0î0

m0vtw

subwf

btfxg0r0

movlw

subwf

btfsc

goto

;E,A?;Si

. È ,n,r

;Si

; È ,P'?

;Si

;È"?;No

;Scollega uxite; Determina il mesaggio da dare

; Scollega RB1

; Collega RBO

;Determina il mesaggio da dare

; Scollega Rgo

; Collega R81

; Determina il messaggio da dare

; Scollega RB3

; Collega RB2

; Determina il messaggio da dare

; )coilega xbr

; Collega RB3

; Determina il mesaggio da dare

;0ra procediamo a determinare il messaggio

di uscita sul terminale

; Per questo in base al contenuto della

PORTA B si cakola l'offset

; del messaggio da fornire tenendo conto che

i messaggi iniziano a

; partire dall'indirizzo 0x05 ed hanno una

lunghezza fksa di 20 (aratteri.

: lnizializza contatore di messaggi

; lndirizzo dell'ultimo messaggio

; Legge il valore attuale della PORTA B

; Conisponde al messaggio da fornire?

;sì

; No, punta al messaggio precedente

; Uscita del messaggio appropriato

; Fine del programma sorgente

sffi

bcl

bcf

bcf

bcf

g0r0

bcf

bsf

g0t0

bcf

bsf

g0r0

bcf

bsf

goto

bcf

bfgoto

.4rt&. .l

Terzo passo nella configurazroneoet programmaterminaIe "Hypertrm".

I ìl.ffi.omg Atuer 4@@

Ora si puo iniziare^ .:-^,,^.^ ; )-+,a iltvtalÉ u //Lcvg/t / udll,

+--+^ -i +.-++î -i i-^:StanO ibit ditd)LU )t Lt oLLo, )t [|P\

spnnalazionp serondo la tabellavista nell'enunciato del program-ma, e si procede a determinare^, -l^ -r- :t ^^---^^t) da inviare alqudrtr )rd il rìc))dgvrL

term ina le.

Per fare funzionare il programma

sorlo necessari, oltre al PIC e ai LED,

nli plpmonli viqti nolln crhpm: nono-v" -'-'ra le.

Donn ,aver r-ollen,r{g il PIC con il

compuler, chiameremo il programma" l--lrinorirm " o ln rn nf, ,)Y-'.' --' "tgureremo per

fare in modo che segua gli stessi

narametri del P C nella corrìunrcazto-ne (porta, velocita, ecc.).

ln <onrritn nntromn tntTtAro A 6(a-,r--^+i ^ .,^,r^-e Che COSa Cirrtrrc pur)orLr tr vcucl

risponde il PlC.

movlw

movwf

movlw

movlvf

movf

andlw

subwf

btfsc

goto

m0vtw

subwf

decf

g0r0

movf

call

goto

ÍdE Motu {M@d f)d lrafu ?

ù1,Él d13l s1ì5f etl