Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1....

68
Adquisició de dades amb PIC via radio Titulació: Enginyeria Tècnica Industrial en Electrònica Industrial AUTOR: Antoni Vallés Roigé . DIRECTOR: Nicolau Cañellas Alberich . DATA: juny de 2005

Transcript of Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1....

Page 1: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

Adquisició de dades amb PIC via radio

Titulació: Enginyeria Tècnica Industrial en Electrònica Industrial

AUTOR: Antoni Vallés Roigé . DIRECTOR: Nicolau Cañellas Alberich .

DATA: juny de 2005

Page 2: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 2

1. INTRODUCCIÓ_____________________________________________________________3

1.1. ANTECEDENTS___________________________________________________________3 1.2. OBJECTIUS DEL PROJECTE __________________________________________________3

2. POSSIBLES SOLUCIONS____________________________________________________4 2.1. POSSIBILITATS D’ADQUISICIÓ DE DADES_________________________________________4 2.2. POSSIBILITATS DE LA RADIO _________________________________________________5 2.3. COMUNICACIÓ AMB EL PC __________________________________________________7

3. SOLUCIÓ ADOPTADA ______________________________________________________9 3.1. DESCRIPCIÓ GENERAL _____________________________________________________9 3.2. TARJA D’ADQUISICIÓ/EMISSIÓ ________________________________________________9 3.3. TARJA DE RECEPCIÓ______________________________________________________10 3.4. COMUNICACIÓ RADIOFREQÜÈNCIA A 433MHZ ___________________________________11 3.5. PORT SÈRIE RS-232 _____________________________________________________13 3.6. MICROCONTROLADORS PIC ________________________________________________16 3.7. HARDWARE DE LA TARJA D’ADQUISICIÓ/EMISSIÓ__________________________________19

3.7.1. PIC 18F2550 ______________________________________________________19 3.7.2. Emissor de radio utilitzat _____________________________________________21 3.7.3. Circuit del Cristall ___________________________________________________22 3.7.4. Adquisició d’entrades________________________________________________23 3.7.5. Alimentació i consums _______________________________________________23 3.7.6. Esquema general ___________________________________________________24 3.7.7. Layout____________________________________________________________25

3.8. PROGRAMARI DE LA TARJA D’ADQUISICIÓ/EMISSIÓ ________________________________26 3.8.1. Temps relatiu ______________________________________________________28 3.8.2. Interrupcions_______________________________________________________30 3.8.3. Comunicació_______________________________________________________31 3.8.4. Enviament d’inicialització _____________________________________________32 3.8.5. Emmagatzematge i enviament de dades_________________________________33

3.9. HARDWARE DE LA TARJA DE RECEPCIÓ ________________________________________34 3.9.1. Receptor de radio utilitzat ____________________________________________34 3.9.2. Adaptació de nivells _________________________________________________35 3.9.3. Alimentació i consums _______________________________________________36 3.9.4. Esquema general ___________________________________________________37 3.9.5. Layout____________________________________________________________39

3.10. PROGRAMARI DEL PC ___________________________________________________39 3.10.1. Conversió a decimal________________________________________________41 3.10.2. Discriminació de dades _____________________________________________41 3.10.3. Comparació amb el historial__________________________________________42

4. PROVES REALITZADES I CONCLUSIONS_____________________________________45 5. BIBLIOGRAFIA ___________________________________________________________50 6. APÈNDIX ________________________________________________________________51

6.1. CODI TARJA D’ADQUISICIÓ/EMISSIÓ ___________________________________________51 6.2. CODI DEL PC___________________________________________________________62

Page 3: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 3

1. Introducció 1.1. Antecedents Es desitja realitzar un equip d’adquisició de dades per a un podòleg, aquestes dades es recolliran des d’un perifèric fins al PC per al seu posterior tractament i avaluació, d’aquesta manera es poden mostrar les dades de forma estadística i gràfica.

El present projecte és una part del total del sistema, consisteix en informar en quins moments s’ha detectat un canvi d’estat de les entrades digitals.

Es defineixen doncs, dos punts de pas (A i B), els quals són dues entrades digitals. Les dades a adquirir són els instants de canvi d’estat d’aquestes entrades. Amb aquesta informació es podrà saber quant de temps ha passat entre A i B, quantes vegades ha succeït A o B, etc...

Aquest sistema d’adquisició, es vol introduir en equips informàtics ja instal·lats amb d’altres aplicacions i en espais reduïts i llunyans del sistema informàtic, aquests fets fan que es requereixi d’una comunicació per radio. 1.2. Objectius del projecte

L’objectiu del projecte és l’adquisició dels instants en que hi ha un canvi a les entrades i amb comunicació sense fils, per la qual cosa es crearà una base de temps relativa i s’establirà un enllaç de radio amb garanties per no perdre informació.

Per part de l’alumne els objectius són millorar els coneixements en el disseny i realització de targes electròniques amb microcontroladors, entrades i sortides digitals, conversió i adaptació de nivells lògics i comunicació de dades digitals via radio. Així com aprofundir en tècniques de programació, tan en ensamblador com en llenguatges per a SO Windows. Adquirir experiències amb diferents tipus de comunicació entre microcontroladors i equips informàtics. Entre els quals s’utilitzarà la comunicació sèrie via radio i el port sèrie.

Figura 1: esquema general del projecte

Page 4: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 4

2. Possibles solucions

Es tracta doncs, de realitzar un sistema que garanteixi la captura de canvis d’estat en les entrades, i d’indicar en quin moment s’ha produït aquest canvi, tot això amb una comunicació sense fils segura entre els punts A, B i el suport informàtic. Per requisits del projecte es demana que la comunicació entre els punts de pas A i B, i el suport informàtic sigui sense fils.

Per realitzar aquesta tasca hi ha varies possibilitats, tan pel que fa a la

comunicació com en el sistema d’adquisició dels instants, i també en el sistema d’entrada al suport informàtic. Per aquest motiu es detallen les diferents possibilitats que hi ha per portar a terme aquest projecte, explicant i comprenent el funcionament d’aquestes possibilitats. Es plantegen per tant diferents opcions respecte a:

1. Sistema d’adquisició de dades. 2. Comunicació via radio. 3. Entrada al suport informàtic.

2.1. Possibilitats d’adquisició de dades

S’ha de garantir que poguem informar en quins moments s’ha detectat un pas pel punt A o pel B, per aquest motiu es requereix la confecció d’un sistema d’adquisició amb una base de temps (la naturalesa de les dades definirà la seva resolució), amb capacitat per detectar dues entrades digitals i poder realitzar una comunicació a l’exterior.

Hi ha varies possibilitats, una d’aquestes és la d’enviar per radio els canvis

d’estat, per exemple un emissor al punt A i un al punt B, el PC realitzaria el càlcul de temps. Però seria difícil de controlar correctament els intervals de temps. Per tant l’opció més adequada és la realització d’un sistema d’adquisició que conjuntament amb una comunicació per radio enviï la informació al PC. Per portar a terme l’adquisició, les opcions que s’ha pensat són un PC, es pot utilitzar un PC per realitzar la base de temps, controlar els instants de pas i la comunicació, hi ha targes MiniPC que redueixen molt l’espai i es poden utilitzar en més aplicacions, també es pot utilitzar un PLC, solució que seria més robusta industrialment o realitzar un sistema amb microcontrolador. També s’ha pensat d’utilitzar una FPGA, opció però que s’ha descartat per la necessitat de versatilitat (adaptació de la base de temps, possibilitats de canviar les dades a enviar, etc...) del sistema, ja que, forma part d’un sistema més gran. Així doncs en quant a l’adquisició de les dades es mostren les característiques dels tres sistemes que es consideren utilitzar:

Característiques/sistema Mini PC PLC Microcontrolador Dimensions Gran Mitja Petites i adaptable Cost Molt gran Gran Petit Programació Senzilla Mitja Mitja Consum Alt Alt Molt petit Muntatge Complicat Estàndard Adaptable

Figura 2: comparació sistemes d’adquisició de dades

Page 5: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 5

Figura 3: possibles maneres d’adquirir dades

2.2. Possibilitats de la radio

Per poder realitzar comunicacions de dades sense necessitat d’una connexió física s’utilitzen les ones electromagnètiques, les quals es transfereixen per l’espai. La radio comunicació és la comunicació amb ones electromagnètiques essent la radiofreqüència la seva característica diferencial entre varis tipus i la longitud d’ona la separació entre elles, la freqüència central es defineix com a portadora. A continuació es mostra la denominació de les radiofreqüències:

RADIOFREQÜÈNCIA DENOMINACIÓ ABREVIATURA LONG. D'ONA3-30 kHz Freqüència molt baixa VLF 100.000-10.000m30-300 kHz Freqüència baixa LF 10.000-1.000m300-3.000 kHz Freqüència mitja MF 1.000-100m3-30 MHz Freqüència alta (ona mitja) HF 100-10m30-300 MHZ Freqüència molt alta VHF 10-1m300-3.000 MHz Freqüència ultraelevada UHF 1m-10cm3-30 GHz Freqüència superelevada SHF 10-1cm30-300 GHz Freqüència extremadament alta EHF 1cm-1mm

Figura 4: classificació de la radiofreqüència

Page 6: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 6

Totes les bandes de radiofreqüència estan regulades a Espanya. Per la transmissió de dades digitals lliure via radio hi ha disponible unes bandes de freqüència (433 MHz, 868 MHz i 929 MHz) per poder realitzar comunicacions amb poca potència (típicament 50mw), ja que no és permès de transmetre amb molta potència, així com tampoc és necessària cap llicència per als equips. En aquesta banda hi ha disponible tan emissors, receptors com radio mòdems, els quals a part de realitzar la funció d’emissor i receptor disposen d’un sistema de funcionament interior, intentant que sigui transparent a les dades. A continuació es mostra un exemple de la classificació que es realitza de les radiofreqüències:

Figura 5: quadre de radiofreqüències i utilitats

Hi ha varies maneres de modular el senyal a transmetre (canviar la portadora depenent de la senyal) depenent de quin paràmetre es canviï, però tots són variants dels tres principals, AM, FM i PM. A continuació es detallen alguns dels modes de transmissió més habituals: § AM (amplitude modulation), es canvia l’amplitud de la portadora en funció de la

informació a transmetre. § FM (frequency modulation), forma d’enviar la informació on la freqüència de la

portadora es canviada respecte les dades a enviar. § PM (phase modulation), en aquesta forma de modulació la fase de la portadora

es variada respecte les dades. § FSK (frequency switch keying), forma de FM on la informació és digital i per

aquest motiu la freqüència varia respecte punts definits. § ASK (amplitude switch keying), informació digital amb AM, on la informació

canvia entre valors predefinits. Quan els possibles valors són dos s’hauria de parlar de BASK (Binary-ASK), encara que per a curtes distàncies no s’utilitza.

Page 7: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 7

§ OOK (On/Off Keying), forma de ASK on l’amplitud de la portadora es anul·lada per un dels valors de la dada a transmetre.

Per la seguretat de la informació, mitjançant radio mòdems o amb mòduls de

radio (dos parells emissor/receptor) es pot definir una comunicació dúplex (half duplex o full duplex), de manera que s’enviï la informació i esperem un Knowledge (resposta que indica que s’ha rebut la dada) si passat un temps no s’ha rebut el Knowledge tornem a enviar i així ens asseguraríem que hem rebut la informació al PC.

Amb una comunicació unidireccional (un emissor i un receptor), una manera

d’assegurar-nos una bona recepció és enviant varies vegades aquesta, però no arbitràriament si no amb un determinat ordre i havent guardat abans la informació en una memòria interna per la seva repetició, amb un bon algoritme es pot garantir la viabilitat d’aquesta opció. També hi ha estàndards de comunicació amb llicències especials per a cada mòdul, com pot ser els telèfons mòbils (900-1800Mhz) o els mòduls bluetooth (2,4Ghz), aquest últim, és un estàndard de radio comunicació de dades i veu. Les nostres opcions dins la radiofreqüència són els següents: Mòdul/Característiques Telèfon

mòbil Bluetooth Radio

mòdem Emissor/receptor

Cost de les dades Cost per temps o missatge

Sense cost Sense cost Sense cost

Cost del mòdul Molt gran Mitjà Econòmic Molt econòmic Mesures Molt gran Mitjà Petit Molt petit Consum Molt gran

(pics de 2A)

Mitjà Petit Molt petit

Distància Molt gran Curta Curta Curta Figura 6: possible comunicació per radiofreqüència

2.3. Comunicació amb el PC

El PC rebrà les dades des d’un sistema de comunicació sense fils i aquestes podran entrar mitjançant un sistema d’entrada/sortida per al seu tractament.

Per recollir les dades generades és necessari que hi hagi un sistema

d’entrada/sortida des del PC, actualment els PC domèstics disposen de varies connexions d’entrada/sortida, les més comuns són el port sèrie, el port paral·lel i el USB. Si les dades són enviades per un mòdul de radio, el més normal és que arriben de manera sèrie, si utilitzéssim el port paral·lel per la nostra aplicació necessitaríem convertir aquestes dades de sèrie a forma paral·lela, en canvi amb el port sèrie l’únic adaptació seria la dels nivells de tensió i amb el USB s’hauria de fer una adaptació de protocols de comunicació, però també és present que avui en dia cada cop hi ha menys PC amb port sèrie en increment del USB.

Page 8: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 8

A continuació es comparen les possibles vies d’entrada de dades al PC:

Característiques/Port PC Port paral·lel Port sèrie USB Tipus de dades Bits en paral·lel Paquets via sèrie Dades sèrie Sistema d’adaptació Complexitat

mitja Adaptació nivells tensió

Adaptació protocol

Velocitat de transmissió Gran Mitja Molt gran Tractament de les dades Fàcil adaptació Fàcil adaptació Adaptació per

driver Figura 7: possibles ports d’entrada al PC

Page 9: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 9

3. Solució adoptada 3.1. Descripció general

S’ha decidit realitzar dues targes electròniques, una primera d’adquisició/emissió i una segona de recepció. La primera és l’encarregada de l’adquisició i emissió de les dades i la segona de la recepció i transmissió d’aquestes al suport informàtic. Per tant les possibilitats escollides són un sistema amb microcontrolador, una comunicació unidireccional amb emissor/receptor a 433MHz i per la part del PC entrada pel port sèrie.

El sistema d’adquisició/emissió s’encarrega de la formació de la base de temps i d’adquirir els instants de pas per A i per B. Aquesta tarja guardarà en una memòria interna les dades (punt de pas A o B i l’instant de pas) i les enviarà al suport informàtic, on hi haurà una segona tarja de recepció per rebre i donar la informació al suport informàtic. Es decideix realitzar una comunicació unidireccional per estalviar problemes d’acoblaments entre varis emissors i donar lloc a errades de comunicació, per altra banda com que la informació està guardada en memòria interna, es pot realitzar un algorisme per envia-la varies vegades i indicar el temps relatiu al inici del programa, amb la qual cosa el software de tractament pot reordenar la informació, no és necessària la presència d’una segona tarja amb microcontrolador per la recepció, ja que el sistema no te sentit sense la presència del PC. La segona tarja, per tant constarà d’un mòdul de recepció de radio i una adaptació de nivells per al port sèrie del PC.

Figura 8: esquema general del sistema.

3.2. Tarja d’adquisició/emissió La tarja d’adquisició/emissió es realitza amb un sistema microcontrolador, aquest sistema és de dimensions més reduïdes que un PLC o un MiniPC i també d’un cost i consum menor, així com d’una complexitat menor amb una adaptació major. S’ha valorat que l’aplicació no és d’una complexitat que avali l’ús d’un MiniPC ni que requereixi de la robustesa industrial d’un PLC, també s’ha valorat que al ésser aquest un projecte que forma part d’una aplicació més gran, és necessari que hi hagi un sistema que permeti canviar la seva programació amb flexibilitat. Aquesta tarja és l’encarregada de la captació i enviament de les dades al suport informàtic, aquestes són enviades via radio. La informació a adquirir seran els instants

Page 10: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 10

de temps pels que ha estat detectat un pas per A o per B. Per tant la funció d’aquesta tarja és la d’enviar els instants de pas. Per aquest fi es disposa d’un microcontrolador per a realitzar la base de temps, detectar les dues entrades digitals (A i B) i enviar-ho per radio amb comunicació sèrie. Quan comença el funcionament s’inicia una base de temps per tenir un control de quan canvien els estats, com que aquesta base de temps és relativa al inici, quan comença el funcionament d’aquesta s’envia al PC una comanda d’inici. En el moment que es detecti una de les dues entrades es guarda en memòria el punt que s’ha detectat i a quin instant de temps. Tots els punts detectats son guardats en un espai de memòria RAM, la tarja captadora no envia quan detecta el pas per A o B, si no, d’aquesta memòria, això es realitza així ja que, la manera d’enviar les dades és repetitiva depenent de la quantitat que hi ha i així ens assegurem que és rebuda pel suport informàtic.

Quan no hi ha dades per enviar el sistema passa a baix consum i està generant la base de temps, esperant algun canvi d’estat, quan hi ha dades es comença el procés d’enviament i desprès es torna al de respòs.

,1 ,&,

+ ,�+$�' $ ' ( 6"

%$,; �&2 1 6 8 0

7DUMDG¶DGTXLVLFLy HP LVVLy) XQFLRQDP HQW�JOREDO

( 19 ,$ �$ / � 3&&2 0 ( 1 d $0 ( 1 7

&RQILJXUDFLy�GH�SDUj P HWUHVFRP XQLFDFLy�L�HQWUDGHV( V�SURJUDP D�OD�EDVH�GH�WHP SV

1 2

( 19 ,$0 ( 1 7' (

' $ ' ( 66,

Figura 9: funcionament general de l’adquisició de dades

3.3. Tarja de recepció

Per poder rebre les dades enviades es realitza una tarja de recepció, la qual s’encarrega d’adaptar les dades des del mòdul de receptor de radio fins al port sèrie del PC. Aquesta adaptació es una adaptació de nivells de tensió, ja que la informació ha estat enviada amb el mateix protocol del port sèrie.

Page 11: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 11

A continuació es mostren les parts de que consta la tarja de recepció:

5 ( &( 3&,Ï' $ ' ( 6

9,$ �5 $ ' ,2

$ ' $37$&,Ï1 ,9( / / 6

( 175$ ' $3 2 5 7�6Ê5 ,(

Figura 10: esquema de la tarja de recepció

3.4. Comunicació radiofreqüència a 433MHz Per la transmissió de les dades s’ha escollit una comunicació radio unidireccional, amb mòduls emissor i receptor de dades digitals de baix consum i de la banda de 70cm (433MHz). Aquest sistema permet una transmissió a baixa potència molt econòmica i amb uns consums baixos, així com d’unes dimensions reduïdes. La possibilitat de poder realitzar una comunicació transparent de la informació i el cost dels mòduls ha estat determinant per inclinar-me per aquesta opció i no per a mòduls Bluetooth o radio mòdems.

La banda de 433Mhz s’utilitza molt per aplicacions de curta distància i algunes de les aplicacions més comuns són els sistemes d’alarma i seguretat, control de portes i accés, automatització de la casa, telemetria de curta llargada, electromedicina, consoles de jocs, joguets i la transmissió de dades en general.

Com que per aquesta banda la potència d’emissió està molt limitada i és poca, hi ha mètodes de transmissió per a millorar la efectivitat dels mòduls. Els mòduls que s’utilitzen normalment en aquestes aplicacions es basen una modulació ASK i el mètode de generació d’aquesta és OOK, aquí es modula binàriament la portadora eliminant un dels valors de la dada, la següent figura mostra l’efecte d’aquesta modulació.

Page 12: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 12

Figura 11: formes d’ona per transmissió OOK.

Amb aquest mètode de transmissió es pot allargar més distància (dins d’una distància curta) amb baixes potències, ja que el receptor està esperant senyal o absència i si la senyal arriba amb poca força pot ser possible interpretar-la. Hi ha varies maneres de generar la portadora modulada, un dels mètodes més senzills i econòmics és amb un oscil·lador LC, el qual es basa en un transistor i alguns components discrets configurats com oscil·lador, on la modulació ASK s’obté commutant entre la polarització activa (oscil·la) i tall. Els inconvenients d’aquest sistema bàsicament radiquen en la freqüència d’oscil·lació, ja que, s’ha d’ajustar en el moment de la fabricació i te molta deriva amb el temps.

La majoria de mòduls emissors utilitzen oscil·ladors basats en ressonadors SAW (Surface Acoustic Wave) utilitzen un sol transistor i operen en freqüències elevades de fins a 1Ghz. La precisió i estabilitat de la freqüència es una mica pitjor que la d’un cristall, però suficient per gran part de aplicacions ASK.

Figura 12:esquema d’un emissor amb oscil·lador SAW.

Page 13: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 13

Per la recepció també existeixen varis mètodes per extraure la senyal enviada, un dels mètodes més econòmic i ràpid, és el receptor super-regeneratiu, es tracta d’un oscil·lador sintonitzat a la freqüència de recepció, el qual s’apaga automàticament i encén depenent de la recepció, però aquest presenta inconvenients degut a que pot rebre dades d’un ampli rang de freqüències, això provoca interferències en les transmissions si hi ha varis equips prop, també presenta molta deriva de la freqüència quant passa temps de funcionament.

D’altres solucions utilitzen un mètode entremig entre la senzillesa i la efectivitat, es tracta d’un receptor super-heterodi.

Figura 13:diagrama de blocs d’un receptor super-heterodi.

El receptor realitza un pre-filtratge, extrau la portadora i reprodueix la senyal quadrada, per tant si no es transmet, a la sortida del receptor tindrem un ‘0’ continu.

3.5. Port sèrie RS-232

Entre els sistemes d’entrada/sortida disponibles en el PC s’ha escollit una comunicació pel port sèrie, l’adaptació de les dades que arriben del mòdul de radio, són fàcil d’adaptar, mentre que pel port USB seria d’una complexitat major (necessitant hardware actiu) i amb el port paral·lel s’hauria de fer una adaptació de nivells i de dades sèrie a paral·lel, amb la necessitat d’un espai de memòria per guardar les dades mentre es converteixen, o sigui que la complexitat també seria major. Un altre factor que ha influït és la velocitat de recepció de les dades, la qual no necessita ser molt ràpida, en aquest cas més important la fiabilitat que la velocitat.

La comunicació pel port sèrie és una de les més utilitzades per a realitzar comunicacions asíncrones (sense temps establert pel seu inici), però que si és necessari saber amb anterioritat la velocitat a la qual es transmetran les dades, aquestes arriben en paquets que seran caràcters.

Page 14: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 14

Aquest tipus de sistema d’entrada/sortida utilitza un interfície anomenat RS-232 (Recommended Standard 232) hi ha varies revisions d’aquest estàndard, però que només defereixen en detalls. Hi ha tres punts diferenciats en totes les interfícies de comunicació: § Interfície física, són els pins i forma física per la seva connexió. Es defineix la

forma dels connectors, que en un principi eren un DB25 (25 pins amb forma D-SUB), però com que moltes de les línies d’aquest no s’utilitzaven es va donar pas a un DB9 (9 pins amb forma D-SUB), reduint així l’espai necessari. A continuació es mostren els connectors DB25 i DB9 tan masculí com femení.

Figura 14: pins dels connectors del port sèrie

§ Protocol de comunicació, per a poder interpretar les dades que arriben es

defineixen unes normes, aquestes s’anomenen protocol de comunicació i és la manera d’enviar els paquets (paraules).

Hi ha una línia d’entrada de dades i una de sortida per enviar paquets, també hi ha una sèrie de línies de control que ajuden a una correcta comunicació, encara que no és imprescindible la seva utilització depenent del nostre sistema. Definint el control de flux (útil per a PC, però en molts sistemes electrònics no hi ha possibilitat de canviar-lo) podem indicar si utilitzem les línies de control o no (RTS, Xon/Xoff, RTSXon/Xoff, o sense control de flux). D’aquestes línies n’hi ha d’entrada i de sortida depenent de la seva funció i també hi ha una connexió física de la massa entre els dos elements de transmissió (DCE i DTE).

Nombre de Pin Senyal Descripció E/S

En DB-25 En DB-9

1 1 - Massa xassís -

2 3 TxD Dades a transmetre S 3 2 RxD Recepció de dades E

4 7 RTS Petició per enviar S

5 8 CTS Llest per rebre(perifèric) E

6 6 DSR Dades preparades (perifèric) E

Page 15: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 15

7 5 SG Signal Ground - 8 1 CD/DCD (Data) Carrier Detect E

15 - TxC(*) Transmit Clock S

17 - RxC(*) Receive Clock E

20 4 DTR Terminal preparat per rebre S 22 9 RI Ring Indicator E

24 - RTxC(*) Transmit/Receive Clock S 24 - RTxC(*) Transmit/Receive Clock S

25 - SG Signal Ground - Figura 15: correspondència de pins per al port sèrie

Si no volem utilitzar les línies de control, podem utilitzar les línies RX, TX i GND únicament i podem realitzar una comunicació sense problemes, ja que, a part del control de flux la norma també estableix la forma d’enviar les dades. Prèviament a la comunicació s’ha d’establert unes normes de funcionament, d’aquesta manera es defineix la velocitat a la que es transmetran les dades, aquesta es defineix en Bauds (1 Baud = 1 bit/seg.). També hi ha la possibilitat de definir el nombre de bits d’informació que s’enviaran, encara que el funcionament normal és enviar 8 bits de dades (1 Byte), es pot enviar paquets de 5, 6 ,7, 8 o 9 bits. Junt amb aquesta informació hi ha la possibilitat d’enviar un bit de paritat per assegurar-nos que el paquet enviat és correcte. La manera de definir quan comença i quan acaba un paquet és mitjançant un bit d’start i 1 o 2 bits d’stop (també s’ha de definir prèviament). Un exemple pot ser una comunicació a 9600 bauds 8 bits de dades 1 bit stop i sense paritat, a part d’això s’ha de decidir si s’utilitza control de flux o no.

_____________________________________ Emissor ===== Receptor

____________________________________ CTS <- | | <- RTS

TXD -> | | 1 | 0 0 | 1 | 0 | 1 1 | 0 | |-> RXD START STOP

____________________________________ Figura 16: forma d’enviament d’un paquet

§ Nivells lògics, per la correcta transmissió de les dades es defineixen les tensions

que definiran un ‘0’ lògic i un ‘1’ lògic. Encara que pot haver-hi algun canvi depenent de la revisió de l’estàndard, per la revisió V.24 (RS-232C) els nivells de tensió són els següents:

- +12V (0 lògic) per la línia de TX o RX - -12V (1 lògic) per la línia de TX o RX - La tensió de repòs per la línia de TX o RX és de -12V - En les línies de control els nivells de tensió són invertits.

Page 16: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 16

Aquests valors tenen un marge d’error per la seva millor operativitat, el fet de no utilitzar una tensió de 0V per definir cap nivell, afavoreix que no hi hagi error si es talla una connexió.

Quan la línia de dades està en repòs hi ha un ‘1’ lògic, en el moment que

comença la transmissió es realitza un bit d’start i la línia baixa a nivell ‘0’ lògic. Per indicar que les dades s’han acabat de transmetre s’envien un o dos bits d’stop (es pot configurar) de la mateixa manera.

3.6. Microcontroladors PIC

Per aquesta aplicació interessa tenir un sistema de dimensions reduïdes per l’adquisició de dades, aquest perfil encaixa perfectament amb un sistema amb microcontrolador.

Els microcontroladors són circuits integrats que inclouen com a mínim una CPU,

unitats E/S i memòria de programa, a més d’una sèrie de dispositius, els qual fan que es consideri adequats per a solucions concretes. Hi ha molts fabricants de microcontroladors i també molts models o famílies. Alguns dels fabricants i models són: Atmel (AVR), Hitachi (H8), Intel (8XC42, MCS51, 8xC251, MXS296), National Semiconductor (COP8), Microchip (Gamma baixa, mitja, alta i dsPIC), Motorola (68HC05, 68HC12), etc...

Figura 17: arquitectura general d’un microcontrolador

Els microcontroladors van sorgir de la necessitat d’abaratir costos i espai en tasques a controlar d’una manera efectiva i per aplicacions concretes. Per aquest motiu s’han creat microcontroladors de diferents mesures i amb varis dispositius integrats, però aquesta no és la diferència per distingir-los els uns dels altres, ja que, hi hauria

Page 17: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 17

tantes categories com microcontroladors. La manera de classificar-los resideix bàsicament en el seu funcionament intern, tot i això es disposen tres maneres d’agrupar-los: § Agrupació de microcontroladors per la mesura de les dades, així podem trobar

microcontroladors amb dades des de 4 fins a 32 bits. La mesura de les dades incidirà directament en el seu funcionament.

§ Agrupació pel tipus d’instruccions, hi ha dos tipus d’instruccions. RISC

(Reduced Instruction Set Code) instruccions senzilles i ràpides, i CISC (Complex Instruction Set Code) instruccions més complexes.

§ Agrupació per l’arquitectura dels busos interns, hi ha microcontroladors que

disposen de dos busos diferenciats per les dades i per les instruccions (Harvard), això agilitza el seu funcionament, però si no és necessària tanta agilitat i si menys espai i més econòmic s’utilitza un sol bus per les dades i les instruccions (Von Newmann). A part de la CPU, alguns dels dispositius que solen integrar els

microcontroladors són els següents:

Memòria de programa, els microcontroladors necessiten d’un programa que marqui les ordres a executar. Aquesta memòria pot ser de varis tipus: ROM (OTP One Time Programmer memòria, gravada de fàbrica), EPROM (OTP però es pot esborrar amb UV a la finestra), EEPROM (es pot esborrar amb 12V), FLASH (s’esborra en funcionament i amb la mateixa tensió). Memòria de dades, a part de la memòria del programa també es necessària una memòria per poder guardar dades per al funcionament del programa. Aquesta memòria pot ser volàtil (per a variables i necessitats puntuals del programa, és d’accés immediat) o no volàtil (per a dades que necessitem guardar si marxa l’alimentació, el temps d’accés és gran). Entrada/Sortida, per poder captar canvis de l’exterior i actuar es disposa d’una sèrie de pins d’entrada/sortida, depenent del microcontrolador aquests pins es podran configurar de diferents maneres. Timers i comptadors, es disposa de timers per a controlar els temps dins el nostre programa, aquest timer es pot incrementar per cicles del rellotge intern o per un extern. En canvi els comptadors són elements que guarden el nombre de pulsacions d’una entrada asíncrona exterior. Watchdog, aquest dispositiu és un temporitzador programable especial, la seva funció és realitzar un reset del sistema si no el recarreguem i es desborda el seu temps, d’aquesta manera podem vigilar que el nostre sistema no hagi entrat en una part incontrolada. Convertidor A/D, els microcontroladors només poden tractar dades en forma digital, per a entrades analògiques i poder captar el nivell de tensió d’un element, s’incorpora un convertidor del nivell a digital.

Page 18: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 18

Generació de PWM (Pulse With Modulation), molts microcontroladors incorporen un mòdul per generar els polsos d’una manera més còmoda i automàtica. Comunicacions amb l’exterior, per poder interactuar amb l’exterior s’incorpora varis mòduls per poder rebre i enviar dades des de memòries, ports sèrie o d’altres elements que també incloguin un mòdul de comunicació. Alguns dels dispositius de comunicació són els següents: SPI (Serial Peripherical Interface), I2C (Inter-Integrated Circuit), UART (Universal Asynchronous Receiver-Transmiter), USB (Universal Serial Bus), CAN (Controller Area Network). Interrupcions, per al tractament de canvis en el flux del programa, tots els microcontroladors disposen de tractament d’interrupcions.

Hi ha d’altres elements que es van integrant als microcontroladors a mesura que

s’estandarditza el seu us, com poden ser mòduls de vigilància de la tensió d’alimentació, cristalls interns o comparadors analògics.

El microcontrolador escollit per al projecte és del fabricant Microchip [http://www.microchip.com], aquest fabricant ofereix una gran varietat de models i anomena PIC als seus microcontroladors, per entendre en que es diferencien aquests PIC entre ells, a continuació s’expliquen les característiques generals i les seves gammes i famílies. La major característica dels microcontroladors PIC és que són dispositius RISC i amb una estructura Hardvard de busos. Això fa que trobem PIC amb 12/14/16 bits de memòria de programa, però que les seves dades siguin de 8 bits. Una altra característica és que totes les instruccions ocupen una paraula i tarden el mateix temps a efectuar-se. Aquests fets provoquen que es puguin classificar en tres gammes diferents depenent de les instruccions de que disposen: § Gamma baixa 33 instruccions. § Gamma mitja 35 instruccions. § Gamma alta 58 i 77 instruccions.

Dins d’aquestes gammes també podem trobar diferents famílies depenent dels

dispositius que tenen i dels bits de memòria de programa. Altres característiques i dispositius que solen tenir són els següents:

§ Mode baix consum (SLEEP). § Protecció de codi i dades. § Identificació amb codi o nombre de sèrie. § Diferents tipus de memòria de programa i dades (per a dades RAM i EEPROM

interna), C = CMOS OTP/EPROM, CR = CMOS ROM, F = FLASH, LF = Low Voltage Flash, LC = Low Voltage OTP, LCR = Low Voltage ROM.

§ Protecció amb Watchdog programable. § Necessiten d’un nombre molt reduït de perifèrics per funcionar.

Page 19: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 19

Els microcontroladors PIC són molt estesos i han aconseguit uns preus de mercat molt assequible. Això ha estat gràcies a la facilitat que han donat amb les eines de desenvolupament i la simplicitat dels seus circuits.

3.7. Hardware de la tarja d’adquisició/emissió

Per poder adquirir les dades i enviar-les es confecciona una tarja electrònica amb els mòduls necessaris per aquest fi. Per això a continuació es detallen les parts necessàries explicant la seva elecció. 3.7.1. PIC 18F2550

Hi ha varis punts que intervenen en l’elecció d’un microcontrolador per a una

aplicació, alguns són molt restrictius i d’altres només aconsellables, ja que es podrien adquirir d’altres maneres, però que poden facilitat el desenvolupament del projecte o de la possible ampliació. Els punts sensibles per aquest projecte són els següents:

§ Capacitat per la creació d’una base de temps amb una resolució petita. § Baix consum d’energia. § Captació d’entrades digitals per interrupció. § Captació d’altres entrades digitals i analògiques (el projecte serà ampliat). § Facilitat i capacitat d’ampliació del codi. § Dimensions no molt grans. § Cost per unitat. § Capacitat de comunicació. § Bastant volum de memòria de dades RAM. § Entorn de programació agradable, econòmic i facilitats en eines per la gravació i

depuració. El microcontrolador PIC escollit a estat el 18F2550, aquest és de la família 18F i

de gamma alta. Primerament s’havia pensat amb un 16F per la realització d’aquesta tarja, però essent aquest de dimensions igual, cost similar a un 16F876 i prestacions superior ha fet que sigui escollit. Si que era aconsellable un microcontrolador amb memòria de programa FLASH, ja que el codi s’ha de poder adaptar en un futur. A continuació es detallen les característiques del PIC 18F2550 fent menció als punts més decisius:

ü Memòria FLASH =32 K Bytes, 16384 Instruccions ü SRAM =2048 Bytes § EEPROM =256 Bytes ü PINS I/O =24 amb 3 interrupcions externes ü Canals A/D 10 bits =10 § CCP PWM =2 § SPI =SI § Master I2C =SI ü EAUSART =1, UART millorada per a LIN bus i per a síncrona § Comparadors =2 ü Timers 8/16bits =1/3, 4 timers en total ü Modes d’oscil·lador:

Page 20: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 20

1. Exterior fins a 48MHz 2. Exterior auxiliar, per a mòdul USB 3. Interior amb RC 4. Interior programable de 31kHz fins 8MHz

ü Modes de funcionament: 1. Run: CPU on, peripherals on, funcionament normal. 2. Idle: CPU off, peripherals on, en espera de canvis. 3. Sleep: CPU off, peripherals off, mode baix consum només respon a

interrupcions. ü Watchdog Timer (WDT). Període programable des de 41ms a 131s § Prioritat per les interrupcions § Multiplicador hardware 8x8 en un cicle. ü Programmable Code Protection ü Rang de voltatge des de 2V fins 5.5V ü Single-supply 5V In-Circuit Serial Programming™ (ICSP™) i In-Circuit Debug

(ICD) via 2 pins. § USB V2.0 Compliant, Low Speed (1.5 Mb/s) and Full Speed (12 Mb/s) ü Interrupcions: 3 interrupcions d’entrades externes, interrupció canvi estat al

portB, interrupcions dels Timers, interrupció de la UART al enviar i al rebre, interrupció de final conversió A/D, interrupció del USB, etc...

Figura 18: pins del PIC 18F2550

A part dels dispositius de que disposa aquest PIC, les raons de més pes per la

programació per escollir un de la família de 18F són el joc d’instruccions i el sistema de memòria lineal.

La família 18F disposa de 77 instruccions envers a 35 de la família 16F, això

facilita la confecció del codi.

Però sens dubte el fet que facilita més la programació és l’estructura de la memòria interna, tant la memòria de dades com la de programa. Els PIC de les famílies inferiors a la 18F només poden accedir a direccions de 8 bits, per aquest motiu la memòria de dades està dividida en Banks, així canviant de Bank es pot accedir a 256 posicions més. Per la memòria de programa passa el mateix però la divisió es realitza en pàgines, la

Page 21: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 21

filosofia es la mateixa i si el teu codi supera una pàgina, cada vegada que s’accedeix a l’altra pàgina s’han de canviar els bits de pàgina corresponents. Aquest sistema provoca una complexitat al codi i a afinar amb l’estructuració (el més fàcil és posar funcions a les pàgines i el codi principal a la primera). Els PIC 18F disposen de memòria lineal i poden direccionar-la tota, per això no fa falta vigilar on posar el codi, la memòria de dades també està en banks però es pot direccionar directament, d’aquesta manera es pot crear un buffer lineal amb més seguretat.

3.7.2. Emissor de radio utilitzat

S’ha incorporat a la tarja de comunicació per radio unidireccional, s’han escollit un mòdul econòmics i de baix consum. Aquest utilitza una modulació OOK per enviar les dades.

Figura 19: dimensions i pins del emissor

Per l’emissió de les dades per part de la tarja s’utilitza el mòdul emissor de Aurel

[http://www.aurelwireless.com/] TX-SAW433. A continuació s’exposen les característiques: Emissor Aurel TX-SAW433:

Freqüència central de treball: 433.92MHz Alimentació. RF: 5V. ±0.5V. (estabilitzada) Corrent absorbida 4mA Potència sortida RF (E.R.P.) +10dBm Impedància de sortida pin 11: 50W Emissions RF espúries -50dBm Freqüència modulació 4kHz Nivell baix lògic 0.2V Nivell alt lògic 5 ±0.5V Temperatura de treball -20 +80°C Dimensions 38.1 x 13.2 x 3mm

Figura 20: consum, tensió i freqüència de modulació

Page 22: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 22

Depenent de la freqüència a la que volem enviar les dades i de la tensió de funcionament entrarem les dades a enviar pel pin 2 o el pin 3, per aquest motiu al circuit s’ha disposat d’un Jumper per poder fer proves.

Figura 21: esquema de connexió de l’emissor

3.7.3. Circuit del Cristall

El PIC escollit disposa de diferents maneres de funcionament, entre les que hi ha un cristall intern de 8MHz o un RC intern, també pot funcionar amb un circuit RC extern, però com que en aquesta aplicació s’ha de realitzar una base de temps, s’hauria de intentar que la freqüència de funcionament sigui la major possible, amb bona precisió i amb el mínim cost i espai. Per aquest motiu s’ha realitzat un circuit amb un cristall de 20MHz i condensadors d’acoblament. Si la freqüència es major hi ha un major consum, però ens interessa més la precisió que el consum i com que la major part del temps estarà funcionant en baix consum aquest increment no és molt considerable.

El circuit del microcontrolador amb el cristall es mostra a continuació:

Page 23: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 23

Figura 22: esquema del circuit del cristall

3.7.4. Adquisició d’entrades

El sistema d’adquisició/emissió està creant la base de temps i en el moment que es detecta un pas per l’entrada A o B es guarda l’instant de temps junt amb el punt detectat. La manera de detectar aquest punt, és mitjançant interrupció així el sistema pot estar realitzant tasques diferents (base de temps o baix consum). La línia d’entrada (A o B) està connectada directament a l’entrada del microcontrolador PIC amb un pull-up per evitar fluctuacions, interferències de pics de tensió i errors.

Figura 23: esquema dels circuits d’entrades digitals

3.7.5. Alimentació i consums

Posat que tots els elements de la tarja treballen o poden treballar a 5V, aquesta serà la tensió del sistema, s’aconsegueix una tensió de 5V amb un regulador 7805, ja que, es disposa d’una entrada major (una bateria de 9V, o font d’alimentació a 12V). Ja que és un equip que estarà apartat del suport informàtic, hi ha moltes possibilitats que

Page 24: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 24

també estigui apartat una alimentació costant, per aquest motiu es pot pensar d’alimentar a partir d’una bateria o pila, però deixant la porta oberta a una alimentació a partir d’un rectificador.

Figura 24: esquema del rectificador

A continuació es detallen els consums més determinants a la tarja d’adaptació: § Emissor Aurel en emissió a 5V = 4mA, en repòs = 3mA § Entrades a pull-up ~0A, sense corrent per la resistència mentre no es posa un ‘0’. § Consum del regulador 7805 de 12 a 5V ~ 2mA § Microcontrolador a 5V:

1. En funcionament a 20MHz 10mA 2. Idle mode 5.8 µA 3. Sleep mode 0.1 µA

Tenint en compte que el funcionament normal serà amb el microcontrolador en

repòs i sense enviar dades, s’espera un consum mig de 5mA. 3.7.6. Esquema general

Page 25: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 25

Figura 25: esquema general de la tarja d’adquisició/emissió

A part dels mòduls imprescindibles també s’afegeixen connexions per a entrades

auxiliar, i per la connexió del sistema de gravació i depuració de codi, o un LED indicatiu. Per si es necessari fer proves s’ha posat el connector per un receptor de radio també. 3.7.7. Layout

Després de definir l’encapsa’t de tots els components s’ha passat a rutejar a una cara la tarja (la confecció es realitza a mà amb àcids), quedant dos ponts per la cara de components.

Page 26: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 26

Figura 26: layout de la tarja d’adquisició/emissió

3.8. Programari de la tarja d’adquisició/emissió

La tarja d’adquisició/emissió disposa per tant d’un microcontrolador per a

realitzar totes les tasques, aquest es pot programar directament amb llenguatge ensamblador o amb un llenguatge de més alt nivell com pot ser C ansi, Basic o d’altres compiladors. Per aquest projecte s’ha escollit fer-lo en ensamblador, ja que disposa d’eines totalment gratuïtes i és un llenguatge que optimitza molt la capacitat del microcontrolador, cosa que no passaria escollint un altre compilador. També és el llenguatge més bo per aprendre l’estructura i funcionament del microcontrolador.

Quan s’envien dades per la UART, aquestes s’envien amb un bit d’start i un

d’stop, mentre està en espera està a nivell alt, el bit d’start es detecta posant-se a nivell baix. Això no succeeix amb el receptor de radio, ja que si no detecta la portadora (si no hi ha dades) està a nivell baix. Aquest fet pot ocasionar que la primera dada enviada no sigui rebuda correctament. Per solucionar aquest problema es podria enviar tota l’estona dades no vinculants i quan enviem les dades bones arribarien sense problemes, però el fet de passar a baix consum impedeix aquest funcionament, el que es fa doncs, és enviar primer una sèrie de dades abans per sincronitzar i desprès les dades que necessitem. Aquestes dades seran caràcters el més semblant possible a una ona quadrada (h55 i hAA).

La funció d’aqueta tarja és informar en quins moments s’ha detectat un canvi pels

punts A i B, per aquest fi es crea un temps relatiu i es guarden les deteccions en memòria per ser enviats posteriorment.

Page 27: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 27

A continuació es mostra el diagrama de flux de la tarja d’adquisició/emissió:

INICI

HI HA DADES?

BAIX CONSUM

Tarja d’adquisicióFuncionament global

ENVIAINICI

Configuració de paràmetres, comunicació i entrades.Es programa la base de temps.

NO

ENVIAMENTDE

DADESSI

ENVIARINICI

NO

SI

Figura 27: diagrama de funcionament de la tarja d’adquisició/emissió

Quan s’energitza la tarja d’adquisició/emissió el primer que es fa és configurar els diferents paràmetres. A part de posar a punt les variables del sistema es configura la base de temps, les interrupcions, els ports d’entrada/sortida i la comunicació per la UART. Codi bucle principal: ;********************************************************************* INICI: NOP ;********************************************************************* BTFSC SIINI ;ENVIAR INICI? CALL ENVINI ;********************************************************************* BTFSC DADES ;HI HA DADES? CALL ENVIR ;********************************************************************* NOP NOP NOP ;********************************************************************* SLEEP ;BAIX CONSUM NOP NOP NOP BRA INICI ;*********************************************************************

Page 28: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 28

3.8.1. Temps relatiu

L’aplicació posterior del projecte serà per mesures d’un podòleg, el que suggereix que una base de temps amb una resolució de l’ordre de 100mseg serà suficient. Tot i això tenint en compte l’espai necessari per guardar aquesta base de temps a la memòria i el cristall de que disposem es configura una base de temps amb una resolució de 4mseg.

Quan es detecta el pas per un punt, es guarda a la memòria RAM quin ha estat

aquest punt i a quin temps, això es guarda en format byte i fa que es defineixi un byte per als milisegons, un per als segons i un per als minuts de la base de temps. Amb aquests tres bytes podem guardar fins a 256 minuts, per al byte dels milisegons cada increment serà 4 milisegons, així quan valgui 250 es posarà a zero i incrementarà els segons, que a la vegada si són 60 incrementarà els minuts.

El PIC 18F2550 disposa de 3 timers de 16 bits i un de 8 bits, com que només

necessitem un, per anar sobre segur s’escull utilitzar el Timer0, ja que també es pot configurar com a 8 bits. Per una resolució de 4mseg per a que faci la interrupció a aquest valor es programa el Timer0 com segueix: La freqüència de funcionament del sistema és de 20MHz, això vol dir que cada interrupció va a una freqüència 4 vegades inferior (totes les instruccions dels PIC duren 4 cicles) i per tardarà 200nseg. Els timers dels PIC disposen d’un registre (dos en el cas dels de 16bits) on es carrega un valor que es va incrementant a cada instrucció fins que es desborda i provoca la interrupció (si no està activada només aixecarà el flag corresponent), llavors es tracta de saber quin valor carregar a aquest registre per a que es desbordi cada 4mseg. Es disposa també de un prescaler, el qual es un multiplicador per a que els increments es facin cada 2, 4, 8, 16, 32, 64, 128 o 256 instruccions. Per la nostra aplicació es pot arribar a 4mseg sense prescaler i així tindrem més marge per ajustar-lo.

nseginstrucciótempsdMHz

200'

420

1== nsinstruccio

nsegmseg

200002004

=

Amb un Timer0 de 16 bits podem arribar fins 65535 instruccions (FFFFh),

llavors el valor a carregar cada cop és: 65535 – 20000 = 45535 = B1DFh

Aquest valor després de les proves es veurà incrementat, ja que dins de la interrupció hi ha una sèrie d’instruccions (24) essent el valor final carregat B1F7h. Configuració dels timers del PIC 18F2550: ;*********************************************************************

;CONFIGURACIÓ TIMERS BCF INTCON,INT0IE MOVLW B'10001000' MOVWF T0CON ; 16 BITS SENSE PRESCALER MOVLW 0X00

Page 29: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 29

MOVWF T1CON ; NO S’UTILITZA MOVLW B'01111110' MOVWF T2CON ; S’UTILITZA PER RETARDS MOVLW 0X00 MOVWF T3CON ; NO S’UTILITZA ;********************************************************************* Inicialització de la base de temps: BCF INTCON,TMR0IF ;BORRAR INTERRUPCIÓ MOVLW 0XB1 MOVWF TMR0H MOVLW 0XF7 MOVWF TMR0L ;CARGA DEL TIMER BSF INTCON,TMR0IE ;INT TIMER0 Actualització de les variables de temps cada interrupció del Timer0 (4mseg): ;****************************************************** ; ACTUALITZA TEMPS ;Entrada: Hi ha una interrupció del timer ;Sortida: les variables de la base de temps actualitzades ;_________________________________________________ ACTUAL: MOVLW 0XB1 MOVWF TMR0H MOVLW 0XF7 MOVWF TMR0L ;CARGA DEL TIMER INCF MILIS,1 ;SUMA 1 A MILISEGONS ;SI == 250 POSA 0 I ;SUMA 1 A SEGONS ;SI == 60 POSA 0 I ;SUMA MINUTS MOVLW D'250' XORWF MILIS,0 BTFSS STATUS,2 RETURN CLRF MILIS SISEG: INCF SEGONS,1 ;INCREMENTO SEGONS MOVLW D'60' XORWF SEGONS,0 BTFSS STATUS,2 RETURN CLRF SEGONS SIMINU: INCF MINUTS,1 ;INCREMENTO MINUTS MOVLW 0XFF XORWF SEGONS,0 BTFSS STATUS,2 RETURN CLRF MINUTS ;SI =255 MINUTS A ZERO BSF SIINI ;ENVIO INICI RETURN ;******************************************************

Page 30: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 30

3.8.2. Interrupcions

Aquest projecte utilitza el mode de baix consum, per la qual cosa la detecció de les entrades serà necessari utilitzar interrupcions. Es disposa de tres línies externes d’interrupció així com la detecció de canvi d’estat al portB, utilitzant aquesta última desprès seria necessari escanejar quin PIN a saltat, per tant s’utilitzen les interrupcions INT0 per al punt A i INT1 per al B.

Aquest microcontrolador disposa de dos nivells de interrupció, un d’alta prioritat

i un altre de baixa prioritat. Per aquesta aplicació s’utilitza només un vector d’interrupció i no es fa distinció entre la prioritat de les interrupcions, dins de la rutina es mira quina interrupció ha saltat, s’actua en consideració i s’esborren els flags corresponents. Configuració de les interrupcions: ;********************************************************************* ;INTERRUPCIONS ;CONFIGURACIÓ PRIORITAT INT MOVLW 0X00 ;NO PRIORITATS MOVWF RCON MOVLW B'00000000' MOVWF PIE1 ; INTERRUPCIONS DE PERIFÈRICS MOVLW B'00000000' MOVWF PIE2 MOVLW B'11000000' MOVWF INTCON ; S’ACTIVA INTERRUPCIONS GENERALS I PERIFÈRICS MOVLW B'01100011' MOVWF INTCON2 ; INTERRUPCIONS MOVLW B'11000000' MOVWF INTCON3 ; NO S’ACTIVA INTERRUPCIONS MOVLW 0X00 MOVWF PIR1 ; LLIMPIO FLAGS MOVLW 0X00 MOVWF PIR2 ; LLIMPIO FLAGS MOVLW 0XFF MOVWF IPR1 ; TOT HIGH PRIORITY MOVLW 0XFF MOVWF IPR2 ; TOT HIGH PRIORITY ;********************************************************************* Quan hi ha una interrupció del punt A o B aquest s’indica guardant a la variable ESTAT el caràcter ASCII ‘A’ o ‘B’ i es guarda aquest valor a la RAM juntament amb el valor que te el temps en aquest moment.

Page 31: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 31

La base de temps també està programada per funcionar amb interrupció, per aquest motiu quan s’entra a la rutina de la interrupció es mira si ha estat el Timer0, la entrada INT0 o la INT1.

,17( 5 5 8 3&,Ï

( 67,0 ( 5

( 6,1 7

( 6,1 7

6 8 5 7,�5 ( 67$8 5 $

1 2

1 2

1 2

$&78$ / ,7=$0 ,1 8 766( * 2 1 6

0 ,/ ,6 ( * 2 1 6

* 8 $ 5 ' $' $ ' $�$,�7( 0 36

* 8 $ 5 ' $' $ ' $�%,�7( 0 36

6,

6,

6 ,

Figura 28: diagrama de flux de la interrupció

3.8.3. Comunicació

Per la transmissió de les dades s’utilitza la UART que només difereix d’un port sèrie RS-232 pels nivells de tensió, per tant tot el protocol es compleix. La UART d’aquest PIC pot enviar dades de 8 bits o 9 bits i amb un bit d’stop o dos. També es pot programar una interrupció per quan a arribat una dada o quan s’ha transmès (quan estem enviant s’està generant la base de dades i guardant dades per interrupció, per tant s’enviarà sense interrupció), i es pot programar la velocitat de transmissió (tenint en compte el cristall que tenim). Per la nostra aplicació es programa amb 8 bits de dades i un bit d’stop a 2400bauds, la manera de programar la velocitat és mitjançant la càrrega d’un valor al registre SPBRG, aquest valor es calcula a partir de la taula i formula següent:

Page 32: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 32

Figura 29: taula de formula pel baudrate

Es realitza una comunicació asíncrona (SYNC=0) a baixa velocitat (BRGH=0) i

carreguem només 8 bits (BRG16=0). Al tenir un cristall de 20MHz i al funcionar a 2400bauds la formula queda de la següent manera:

baudsn

FOSC=

+ )1(64 n

baudsFOSC

=−∗

164

12920.129124006420

≈=−∗ bauds

MHz

A continuació es mostra la configuració de la UART: ;*********************************************************************

;CONFIGURACIÓ UART MOVLW 0X22 MOVWF TXSTA ; CONFIGURACIÓ TRANSMISSIÓ MOVLW 0X90 MOVWF RCSTA ; CONFIGURACIÓ RECEPCIÓ MOVLW 0X00 MOVWF BAUDCON ; CONFIGURACIÓ 8BIT ; MOVLW D'32' ; MOVWF SPBRG ; CONFIGURACIÓ 9600 BAUDS ; MOVLW D'64' ; MOVWF SPBRG ; CONFIGURACIÓ 4800 BAUDS MOVLW D'129' MOVWF SPBRG ; CONFIGURACIÓ 2400 BAUDS ;********************************************************************* 3.8.4. Enviament d’inicialització

Quan comença el funcionament del programa i s’inicialitza la base de temps s’envia uns strings d’INICI per indicar-ho al software del PC, quan les variables de la base de temps arriben al seu màxim, es posen a zero i també s’envia una comanda d’INICI. Aquesta comanda va precedida d’una sèrie de bytes de sincronisme i s’envien dos strings amb cinc vegades aquesta comanda, per poder donar més seguretat de que arribi, el software del PC s’encarregarà de no repetir-ho.

Page 33: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 33

3.8.5. Emmagatzematge i enviament de dades

Per aquest projecte les dades a guardar són 3 bytes de l’instant de temps i un byte de l’estat que es detecta (A o B), quan s’ampliï l’aplicació cada dada podrà ser més gran depenent de la naturalesa d’aquestes. Per aquest motiu i per que el més normal és que quan adquirim les dades es faci a un ritme més ràpid que la seva transmissió, s’ha realitzat un buffer a la memòria RAM des don s’enviaran les dades.

El PIC 18F2550 disposa de 2kbytes (2048 bytes) hi ha un sector que s’ha de

reservar si es vol utilitzar el mòdul USB del PIC, però en el nostre cas no farà falta, per tant en el cas que guardem 48 posicions per a variables, podem disposar de fins a 2000bytes (800h) (500 dades per al nostre cas). Es defineix unes variables per al principi i final d’aquest buffer, el qual tindrà una forma circular, ja que al arribar al final es reiniciarà el punter. ;********************************************************************* CBLOCK 0x100 ;INICI DADES INDADES ENDC CBLOCK 0x300 ;FINAL DADES (4 BYTES CADA DADA) FIDADES ;AQUEST VALOR NO HA DE SER ASSOLIT ENDC ;********************************************************************* (....) LFSR2,INDADES ;CARGA PUNTER RAM DADES PER GUARDAR LFSR1,INDADES ;CARGA PUNTER RAM DADES PER ENVIAR LFSR0,FIDADES ;CARGA PUNTER FINAL DADES MOVFF FSR0L,PUNTCUAL MOVFF FSR0H,PUNTCUAH ;********************************************************************* La variable PUNTCUAL i PUNTCUAH guarda fins a quin punt es pot arribar dins el buffer, mentre que el punter indirecte FSR0 es auxiliar el FSR1 apunta sempre al principi de les dades que es tenen que enviar i el FSR2 apunta al començament de les dades que es tenen que guardar.

Figura 30: esquema de la memòria de dades

Page 34: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 34

Quan es detecta que hi ha dades per enviar, la forma d’enviar-les és mitjançant strings de cinc dades cadascun, si només hi ha una dada per enviar aquesta serà enviada 5 cops, mentre que si hi ha més es comença per on havia quedat el punter d’enviar (cada cop que envia un string incrementa una posició) i s’envien dades fins al final o fins a cinc, d’aquesta manera ens assegurem que cada dada ha estat enviada un mínim de cinc cops. Per a que el receptor pugui identificar les nostres dades s’ha creat un protocol específic que indica el principi i final de cada dada i el final de l’string, el principi de dada s’identifica enviant dues vegades el valor decimal ‘252’ i el final de dada enviant dos cops el valor decimal ‘253’, mentre que el final d’string s’identifica amb enviant tres vegades el valor ‘254’, això queda de la següent manera: 234 23 98 90 23 90 93 45 49 11 00 89 67 54 252 252 2 45 2 A I 253 253 (···)254 254 254 Informació aleatòria de la radio no dades | principi dada |final dada | final string Per a més seguretat a cada dada s’hi afegeix un byte que indica la paritat, d’aquesta manera es redueixen els errors per haver arribat malament una dada. Per la confecció d’aquesta paritat (paritat par) es segueix el següent criteri: Es suma els minuts, segons i els milisegons/4, també es suma el valor ASCII de l’estat (serà A (65) o B (66) ), després de la suma s’hi afegeix una lletra per fer que sigui par, I (73) per si és imparell i P (80) si és parell. 3.9. Hardware de la tarja de recepció

Per poder rebre la informació adquirida s’ha decidit realitzar una tarja de recepció entre un mòdul receptor de radio i el port sèrie del PC. Actualment el port sèrie està desapareixent de les targes de PC i estan sent substituïts per USB, però el sistema d’obtenir la informació (mode asíncron de paquets) ha quedat d’una manera bastant estàndard per la qual cosa existeixen molts convertidors de USB a port sèrie RS-232, creant el driver un port virtual. Sistema que utilitzen molts elements USB. En aquest projecte he volgut realitzar un sistema fàcil en comunicació i estàndard, ja que alguns drivers poden causar problemes mentre que el port sèrie no.

Algunes de les avantatges que normalment es nombren sobre el USB és la

capacitat d’alimentar els circuit des del mateix bus, aquesta tarja també s’alimenta del port sèrie aprofitant les línies de control i que el consum és molt reduït. Aquesta tarja per tant consta del receptor radio, l’adaptació entre TTL i RS-232 i l’alimentació. 3.9.1. Receptor de radio utilitzat

El receptor escollit ha estat un model del fabricant Aurel [http://www.aurelwireless.com/] BC-NBK, aquest utilitza un sistema super-heterodí i les característiques són les següents:

Page 35: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 35

Receptor Aurel BC-NBK:

Freqüència: 433.92Mhz. Alimentació: 3-12V ±0.5V Corrent absorbida: de 2,7 a 4 mA per a 5Vcc Sensibilitat RF: -97 dBm Nivell baix lògic 0.1 V Nivell alt lògic 3.8 V Emissions RF espúries de l’antena -65 -60 dBm Temps de posta en marxa 2 s Temperatura de treball -20 +80 °C Dimensions 38.1 x 13.7 x 5.5 mm

Figura 31: pins del receptor de radio

Figura 32: esquema del receptor de radio

3.9.2. Adaptació de nivells

Les dades arriben per part del mòdul de radio en nivell de tensió TTL, però amb el mateix protocol del RS-232, per tant el nivell de tensió haurà de ser adaptat, això es realitza mitjançant un circuit integrat MAX3235 del fabricant Maxim [http://www.maxim-ic.com], similar al popular MAX232 però sense condensadors.

Page 36: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 36

Figura 33: esquema del MAX3235

Aquest integrat disposa de dues línies per passar de TTL a RS-232 i dues més per la inversa. No necessita de més hardware extern, ja que integra condensadors per fer la tensió inversa necessària, així doncs només necessita alimentació a 5V. 3.9.3. Alimentació i consums

Per tal de realitzar una tarja el més autònoma possible, es realitza un sistema

d’alimentació a partir de les senyal del port sèrie del PC, d’altra banda també hi ha la possibilitat d’alimentar-la a partir d’una font externa major de 5V. La regulació dels 5V necessaris per al mòdul de radio i per al Max3235, es realitzarà mitjançant un 7805 amb un encapsat TO22 amb un corrent màxim de 100mA, la corrent que ha de permetre aquest es defineix a continuació: § Receptor Aurel= 4mA § Max3235= 10mA

Aquest consum màxim assegura que es pugui garantir l’alimentació a partir del port

sèrie.

Page 37: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 37

Figura 34: esquema de les connexions al port sèrie

Com es pot veure l’alimentació s’aconsegueix de les línies 6 i 4 (DSR i DTR si no està preparat per rebre 12V) i de les 7 i 8 (RTS i CTS si no vol enviar hi ha 12V). 3.9.4. Esquema general

El no necessitar d’elements actius ha fet que l’esquema del circuit sigui bastant simple.

Page 38: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 38

Figura 35: esquema de la tarja de recepció

Page 39: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 39

3.9.5. Layout

Desprès de fer el encapsat dels components s’ha rutejat la tarja amb dues cares i s’ha confeccionat.

Figura 36: layout de la tarja de recepció

3.10. Programari del PC Per poder visualitzar correctament les dades que arriben de la tarja de recepció es realitza un software al PC, d’aquesta tarja es rebrà la informació obtinguda per la tarja d’adquisició/emissió i es gestionaran les dades, la finalitat es obtenir un historial de tots els instants en els que s’ha detectat el punt A i B per poder realitzar desprès una altra aplicació que pugui tractar aquestes dades, per aquest motiu es crea un arxiu text anomenat dades.txt. Com que poden arribar caràcters de tota mena, es defineix un string com una sèrie de caràcters acabats amb dos caràcters ‘254’, la nostra aplicació envia aquests caràcters al acabar les dades. A cada string hi pot haver una sèrie de comandes (si tot ha arribat sense interferències hi ha cinc dades). Quan tenim la dada, aquesta pot estar repetida, el software s’encarrega de buscar si ja estava al historial o no. El primer pas és saber si hi ha alguna comanda dins l’string, desprès passar-lo a decimal per mostrar-lo, convertir-lo a minuts, segons i milisegons (sempre la paritat sigui correcta), mostrar aquesta conversió i mirar si ja teníem aquest valor al historial, de no ser així s’afegirà.

Page 40: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 40

Per l’elaboració d’aquest software es seguirà el següent diagrama de flux:

Figura 37: funcionament del software

Page 41: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 41

3.10.1. Conversió a decimal

Les dades arriben en forma hexadecimal i amb un cert significat, cada dada comença amb dos caràcters 252 i acaba amb dos 253, entre aquests hi ha cinc bytes més, minuts, segons, milisegons, estat i paritat. Per poder mostrar aquestes dades, es passa a decimal cada byte i separat amb un espai, si el byte és A, B, I, P o INICI es deixa com a caràcter ASCII, d’aquesta manera tindrà més sentit la informació. La comanda pot quedar així:

10 30 100 A I

Per fer aquesta conversió s’utilitza la següent funció:

'************************************************* 'retorna la comanda en forma de decimal '************************************************* Public Function MostraD(coman As String) As String Dim n As Integer Dim auxt As String MostraD = "" For n = 1 To Len(coman) auxt = Mid(coman, n, 1) Select Case auxt Case "A", "B", "I", "P", "N", "C" 'caracters que si que mostra MostraD = MostraD & auxt MostraD = MostraD & " " Case Else MostraD = MostraD & Asc(auxt) MostraD = MostraD & " " 'espai entre caracters End Select Next n End Function A aquesta funció es pot passar qualsevol string i retorna un string amb decimal, però mantenint ASCII els caràcters A, B, I, P, N i C. S’utilitza per mostrar tot l’string d’arribada i per les comandes separades. 3.10.2. Discriminació de dades

Quan ja tenim la comanda separada de l’string, el que es fa es saber si aquesta compleix amb la paritat i si no és així s’indica, si compleix amb la paritat es passa a la seva conversió en temps i estat. S’uneixen els bytes indicant minuts, segons, milisegons (el byte que teníem es multiplicat per 4) i l’estat (A o B) quedant de la següent forma:

10:30:400A

Aquesta és la funció que realitza aquesta conversió: '************************************************* 'converteixo la comanda de decimal a ascii '************************************************* Public Function convertir(coman As String) As String

Page 42: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 42

Dim milis As String Dim segons As String Dim minuts As String Dim estat As String Dim paritat As String Dim n As Integer n = 0 convertir = "0" If coman = "INICI" Then convertir = coman Else If Len(coman) = 5 Then minuts = Mid(coman, 1, 1) segons = Mid(coman, 2, 1) milis = Mid(coman, 3, 1) estat = Mid(coman, 4, 1) paritat = Mid(coman, 5, 1) n = Asc(milis) + Asc(segons) + Asc(minuts) + Asc(estat) + Asc(paritat) n = n Mod 2 If n = 0 Then n = 4 * Asc(milis) ' el valor de milis es per 4 milis = n segons = Asc(segons) minuts = Asc(minuts) convertir = minuts convertir = convertir & ":" convertir = convertir & segons convertir = convertir & ":" convertir = convertir & milis convertir = convertir & estat 'convertir = convertir & paritat Else convertir = "0" 'comanda incorrecta no paritat End If Else ' si no son 5 caracers convertir = "0" 'comanda incorrecta End If End If ' fi si no es INICI End Function S’entra l’string de comanda amb decimal i retorna l’string convertit o un string =”0” si la paritat és dolenta o falta algun byte. 3.10.3. Comparació amb el historial

En el moment que ja tenim una comanda bona, el que hem de fer és mirar el historial per saber si ja la teníem (totes les comandes arriben repetides). Com que la base de temps que tenim a la tarja d’adquisició/emissió es relativa al seu comptatge (es reinicia cada 256 minuts), serà necessari mirar si la dada es repeteix només des de l’ultima dada fins el pròxim string INICI que hi hagi al historial

Page 43: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 43

A continuació es mostra la funció que indica si hi ha la comanda repetida al historial o no, s’entra l’string de la comanda i retorna FALSE si ja està la dada al historial i TRUE si tenim que gravar-la. '************************************************* 'comparo string amb el fitxer historial per si esta repetida la dada '************************************************* Public Function posar(coman As String) As Boolean Dim Char As String Dim xChar As String Dim stry As String Dim auxstry As String Dim ni As Integer 'per bucle Dim n As Integer 'numero d'string del fitxer Dim m As Integer 'index de l'string coman dins el fitxer Dim ini As Integer 'index de INICI dins el fitxer n = 0 m = 0 ini = 0 stry = "" Char = "" Open fitxerdad For Input As #1 'obrir fitxer Do While Not EOF(1) Char = Input(1, #1) xChar = xChar & Char If Char <> vbLf Then stry = stry & Char Else 'tinc string amb comilles n = n + 1 auxstry = "" auxstry = stry 'treure comilles stry = "" ni = 1 Do While Mid(auxstry, ni, 1) = Chr(34) ni = ni + 1 Loop For ni = 2 To Len(auxstry) - 2 stry = stry & Mid(auxstry, ni, 1) Next ni If stry = coman Then m = n 'si es la mateixa comanda If stry = "INICI" Then ini = n 'si es INICI stry = "" End If 'final string Loop 'final fitxer Close #1 'tanco fitxer

'despres de recorrer el fitxer s'avalue

If coman = "INICI" Then If ini = n Then posar = False Else posar = True End If Else If m = 0 Then

Page 44: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 44

posar = True ElseIf m > ini Then posar = False Else posar = True End If End If End Function Un exemple de historial seria el següent:

"INICI" "53:15:476B" "53:15:488B" "53:15:896B" "53:16:128B" "63:49:576B" "63:49:640B" "63:50:588A" "63:51:780B" "63:53:396A" "63:53:968A" "63:54:248A" "63:55:324B" "63:55:460B" "63:56:288A" "63:56:292A"

Page 45: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 45

4. Proves realitzades i conclusions

Consum: una vegada muntada la tarja d’adquisició/emissió, el tema que més interessava era saber quin consum tenia, ja que en un futur podria anar alimentat amb bateries. Per aquest motiu s’ha comprovat el consum provant varies configuracions, activant el baix consum, amb emissió de dades, amb entrades a pull-up o pull-down i alimentant del mòdul de radio o no.

Vcc Radio Pull-up Emissió Sleep Corrent

NO SI SI NO 16.7mA SI SI SI NO 27.6mA

NO SI SI NO 17.1mA NO NO SI NO 15mA SI SI NO SI 4mA SI NO NO SI 4mA

NO SI NO SI 1mA Figura 38: proves de consums de la tarja d’adquisició/emissió.

El que s’extrau d’aquestes proves es que es podria aconseguir un consum per sota

de 1mA si s’elimina el regulador 7805 (aquest te un consum relatiu a la seva regulació) i es treu l’alimentació del mòdul de radio quan no volem enviar, això provoca que quan vulguem enviar hem d’esperar un temps per la posta en marxa d’aquest. Aquesta alimentació no és possible tal com tenim el circuit, ja que les sortides del PIC no podem alimentar-lo directament.

També es pot comprovar que la tarja consumeix el mateix amb les entrades a pull-

up com en pull-down. I s’ha pogut comprovar la disminució de la intensitat al passar a baix consum.

Distància: aquesta aplicació tindrà en una mateixa sala l’emissor i el receptor per

la qual cosa la distància que es demana no és molt elevada. S’ha pogut comprovar que dins el laboratori (uns 10 metres línia recta i sense obstacles) la comunicació és correcta, però també s’ha pogut observar que no és adequat per a mòduls en moviment i que al moment d’instal·lació s’ha de comprovar la comunicació. Per millorar aquesta comunicació s’han posat antenes de 50? i amb un pla de massa, l’altura de les antenes i el radi mínim del pla de massa ha de ser ¼ de la longitud d’ona, per saber aquesta distància s’utilitza la següent fórmula:

)(')(

monalongdcMHzFk

= m69,0095433300

= ¼˜ 17cm

k=300 (velocitat de la llum 300.000km.seg) c= 0.95 correcció capacitat de l’antena

Per solucionar problemes de recepció s’ha provat de posar per software a 1 la línia d’enviament i per hardware amb un pull-up i encara que l’emissor enviï la portadora tota l’estona, el receptor no detecta modulació i ho interpreta com a que no hi ha dades.

Page 46: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 46

Per això s’ha d’enviar unes dades de sincronisme abans d’enviar les dades que volem transmetre, d’aquesta manera es perdran menys dades pel fet d’estar apagat el receptor.

Velocitat: les especificacions del mòdul emissor ens diu que la freqüència màxima de modulació és 4kHz, però s’ha aconseguit transmetre a 9600 bauds (bits per segon), però es necessari enviar tota l’estona una senyal de sincronia, fet que no és compatible amb el consum. Proves del sistema: s’ha provat el sistema en funcionament, polsant els dos punts A i B i observant el resultat al software. Comprovació de possibles d’errors en el funcionament o per mala utilització:

Figura 39: error de mala entrada del nombre del port

En aquest exemple es pot veure també que el historial ja estava creat amb 82 dades i amb varis INICI.

Page 47: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 47

Figura 40: error d’obertura del port

Figura 41: error al no trobar el fitxer

Page 48: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 48

Figura 42: imatge del programa havent rebut una comanda d’INICI

Figura 43: imatge del programa rebent comandes

Page 49: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 49

A la imatge es pot veure que una comanda va arribar amb error de paritat, també es pot veure a l’esquerra com arriben els strings, com es desglossen les comandes i com són convertides.

Page 50: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 50

5. Bibliografia [1] Visual Basic 6 Black book, Coriolis Group, Steven Holzner isbn:1576102831 8-1-98 [2] Orcad Layout para Windows, Orcad Inc MN-01-5044 Segunda edición 30 Junio [3] DS39632A PIC18F2455/2550/4455/4550 Data Sheet 28/40/44-Pin High-performance, Enhanced Flash USB Microcontrollers with nanoWatt Technology [4] http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2008 Maxim, Max3235 [5] http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2054 Microcontroller Reference Manuals

Page 51: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 51

6. Apèndix 6.1. Codi tarja d’adquisició/emissió

El codi de la tarja d’adquisició/emissió està repartit en dos fitxers, ambdós amb extensió ASM, el primer (HCAP.ASM) amb el cos del programa i un segon (FUNS.ASM) amb funcions per al seu funcionament. A continuació es mostra el codi del fitxer HCAP.ASM: ;************************************************************************* ; Filename: HCAP.ASM ; Date: JUNY 2005 ; File Version: 1.5 ; Author: ANTONI VALLÉS ROIGÉ ; Company: Universitat Rovira i Virgili ;************************************************************************* ; Files required: P18F2550.INC ; FUNS.ASM ;************************************************************************* ; 2 ENTRADES DIGITALS ; 1 SORTIDA LED ; TRANSMISSIÓ DE LES DADES PER LA UART ;************************************************************************* LIST P=18F2550 #include <P18F2550.INC> ;************************************************************************* ;Configuration bits __CONFIG _CONFIG1L, _USBDIV_1_1L & _CPUDIV_OSC1_PLL2_1L & _PLLDIV_12_1L __CONFIG _CONFIG1H, _FOSC_HS_1H & _FCMEM_OFF_1H & _IESO_OFF_1H __CONFIG _CONFIG2L, _PWRT_OFF_2L & _BOR_OFF_2L & _VREGEN_OFF_2L __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_32768_2H __CONFIG _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_ON_3H & _PBADEN_ON_3H & _CCP2MX_ON_3H __CONFIG _CONFIG4L, _XINST_OFF_4L & _ICPRT_OFF_4L & _STVREN_ON_4L & _LVP_OFF_4L & _DEBUG_ON_4L ; __CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L ; __CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H ; __CONFIG _CONFIG6L, _WRT0_ON_6L & _WRT1_ON_6L & _WRT2_ON_6L & _WRT3_ON_6L ; __CONFIG _CONFIG6H, _WRTB_ON_6H & _WRTC_ON_6H & _WRTD_ON_6H ; __CONFIG _CONFIG7L, _EBTR0_ON_7L & _EBTR1_ON_7L & _EBTR2_ON_7L & _EBTR3_ON_7L ; __CONFIG _CONFIG7H, _EBTRB_ON_7H ;************************************************************************* #define ENT2 PORTB,0 ;ENTRADA A #define ENT1 PORTB,1 ;ENTRADA B #define VCCRF PORTA,0 ;ALIMENTACIÓ DEL EMISSOR #define LED PORTC,0 ;LED INDICADOR

Page 52: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 52

#define DADES VARIF,0 ;SI ES =0 NO DADES SI ES =1 DADES PER ENVIAR #define SICOM VARIF,1 ;SI ES =0 COMPARACIO FALSE SI ES =1 COMPARACIO TRUE #define SIINI VARIF,2 ;SI ES =0 NO ENVIO INICI SI ES =1 SI ;******************************************************** ; MACROS ;******************************************************** ; GESTIO LED LEDON MACRO BSF LED ENDM LEDOFF MACRO BCF LED ENDM ;******************************************************** ; GESTIO INTERRUPCIONS ENABLE MACRO BSF INTCON,INT0IE ;INT0 BSF INTCON3,INT1IE ;INT1 ENDM DISABLE MACRO BCF INTCON,INT0IE ;INT0 BCF INTCON3,INT1IE ;INT1 ENDM ENAD MACRO BSF ADCON0,ADON ENDM DEAD MACRO BCF ADCON0,ADON ENDM ; WATCHDOG ONWD MACRO BSF WDTCON,0 ENDM OFWD MACRO CLRF WDTCON ENDM ;****************************************************** ;VariableS CBLOCK 0x000 ; 240 VARIABLES WREG_TEMP ;variable used for context saving STATUS_TEMP ;variable used for context saving BSR_TEMP ;variable used for context saving WREG_TEMPH ;variable used for context saving STATUS_TEMPH;variable used for context saving BSR_TEMPH ;variable used for context saving VAR VARIF ;VARIES VARIABLES NIVELL BIT BUCLER ;CONTADOR PER A BUCLES BUCLES ;CONTADOR PER A BUCLES CONTA ;CONTADOR DE VOLTES

Page 53: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 53

VTEMP ;VARIABLE DE RETARDO MILIS ;VALOR DE MILISEGONS (4m) SEGONS ;VALOR DE SEGONS MINUTS ;VALOR DE MINUTS ESTAT ;SI ES A O B PARITAT ;BYTE DE PARITAT PUNTCUAL ;FINAL DE LES DADES LOW PUNTCUAH ;FINAL DE LES DADES HIGH PUNTCAPL ;FINAL DE LES DADES A TRANSMETRE LOW PUNTCAPH ;FINAL DE LES DADES A TRANSMETRE HIGH ENDC ;CONSTANTS DADA EQU D'4' ;VOLUM DE CADA DADA REPE EQU D'5' ;COPS A REPETIR LES DADES ;************************************************************************* CBLOCK 0x100 ;INICI DADES INDADES ENDC CBLOCK 0x300 ;FINAL DADES (4 BYTES CADA DADA) FIDADES ;AQUEST VALOR NO HA DE SER ASSOLIT ENDC ;************************************************************************* ;************************************************************************* ORG 0x0000 goto Main ;go to start of main code ;************************************************************************* ORG 0x0008 bra HighInt ;go to high priority interrupt routine ;************************************************************************* ;High priority interrupt routine ; INT0, INT1, TIMER HighInt:DISABLE movff STATUS,STATUS_TEMPH ;save STATUS register movff WREG,WREG_TEMPH ;save working register movff BSR,BSR_TEMPH ;save BSR register ; *** high priority interrupt*** ; MIRAR LA FONT DE LA INTERRUPCIÓ BTFSC INTCON,TMR0IF ;MIRAR TIMER0 BRA INTTIM BTFSC INTCON,INT0IF ;MIRAR INT0 BRA INTPOR0 BTFSC INTCON3,INT1IF ;MIRAR INT1 BRA INTPOR1 BRA FINAL ;SI NO ES CAP ANAR A FINAL ;************************************************************************* ;MIRAR TIMER INTTIM: NOP ;CARREGAR TIMER

Page 54: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 54

;ACTUALITZAR CONTADOR CALL ACTUAL BRA FINAL ;************************************************************************* ;MIRAR ENTRADA INTPOR0:MOVLW A'A' MOVWF ESTAT CALL INDAT BRA FINAL ;************************************************************************* ;MIRAR ENTRADA INTPOR1:MOVLW A'B' MOVWF ESTAT CALL INDAT BRA FINAL ;************************************************************************* FINAL: MOVLW 0X00 MOVWF PIR1; LLIMPIO FLAGS MOVLW 0X00 MOVWF PIR2 ; LLIMPIO FLAGS BCF INTCON,TMR0IF ;BORRAR INTERRUPCIÓ BCF INTCON,INT0IF ;LLIMPIO INT0 BCF INTCON3,INT1IF ;LLIMPIO INT1 movff BSR_TEMPH,BSR ;restore BSR register movff WREG_TEMPH,WREG ;restore working register movff STATUS_TEMPH,STATUS ;restore STATUS register ENABLE retfie FAST ;************************************************************************* Main: ;************************************************************************* ; CONFIGURACIONS ;************************************************************************* ; CONFIGURACIO PRIORITAT INT MOVLW 0X00 ; NO PRIORITATS MOVWF RCON ;************************************************************************* ; CONFIGURACIO ENTRADES/SORTIDES ;************************************************************************* ; CONFIGURACIO PORTA CLRF PORTA CLRF LATA movlw B'00000000' ; movwf ADCON0 movlw B'00001111' ;TOT DIGITAL movwf ADCON1 ;VDD and VSS references movlw B'00001000' ;right Fosc/2

Page 55: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 55

movwf ADCON2 MOVLW B'00000000' MOVWF TRISA ;************************************************************************* ; CONFIGURACIO PORTB CLRF PORTB CLRF LATB BCF INTCON2,7 MOVLW B'00000011' MOVWF TRISB ;************************************************************************* ; CONFIGURACIO PORTC CLRF PORTC CLRF LATC MOVLW B'10000000' MOVWF TRISC ;************************************************************************* ; CONFIGURACIO UART1 MOVLW 0X22 MOVWF TXSTA ; CONFIGURACIO TRANSMISIÓ MOVLW 0X90 MOVWF RCSTA ; CONFIGURACIO RECEPCIÓ MOVLW 0X00 MOVWF BAUDCON ; CONFIGURACIO 8BIT ; MOVLW D'32' ; MOVWF SPBRG ; CONFIGURACIO 9600 BAUDS ; MOVLW D'64' ; MOVWF SPBRG ; CONFIGURACIO 4800 BAUDS MOVLW D'129' MOVWF SPBRG ; CONFIGURACIO 2400 BAUDS ;************************************************************************* ; CONFIGURACIO TIMERS BCF INTCON,INT0IE MOVLW B'10001000' MOVWF T0CON ; 16 BITS SENSE PRESCALER MOVLW 0X00 MOVWF T1CON ; NO S'UTILITZA MOVLW B'01111110' MOVWF T2CON ; S'UTILITZA MOVLW 0X00 MOVWF T3CON ; NO S'UTILITZA ;************************************************************************* ;INTERRUPCIONS MOVLW B'00000000'

Page 56: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 56

MOVWF PIE1 ; INTERRUPCIONS DE PERIFERICS MOVLW B'00000000' MOVWF PIE2 ; BSF PIE1,TXIE ;INTERRUPCIO TX MOVLW B'11000000' MOVWF INTCON ; S'ACTIVA INTERUPCIONS GENERALS I PERIFERICS MOVLW B'01100011' MOVWF INTCON2 ; INTERUPCIONS MOVLW B'11000000' MOVWF INTCON3 ; NO S'ACTIVA INTERUPCIONS MOVLW 0X00 MOVWF PIR1; LLIMPIO FLAGS MOVLW 0X00 MOVWF PIR2 ; LLIMPIO FLAGS MOVLW 0XFF MOVWF IPR1; TOT HIGH PRIORITY MOVLW 0XFF MOVWF IPR2; TOT HIGH PRIORITY ;************************************************************************* ;************************************************************************* ;************************************************************************* SOMI: LFSR FSR0,0X000 ;TOTES LES VARIABLES A 0 NEXT: CLRF POSTINC0 BTFSS FSR0H,1 GOTO NEXT LFSR 2,INDADES ;CARGA PUNTER RAM DADES PER GUARDAR LFSR 1,INDADES ;CARGA PUNTER RAM DADES PER ENVIAR LFSR 0,FIDADES ;CARGA PUNTER FINAL DADES MOVFF FSR0L,PUNTCUAL MOVFF FSR0H,PUNTCUAH BCF INTCON,TMR0IF ;BORRAR INTERRUPCIÓ MOVLW 0XB1 MOVWF TMR0H MOVLW 0XF7 MOVWF TMR0L ;CARGA DEL TIMER BSF INTCON,TMR0IE ;INT TIMER0 BSF INTCON,INT0IE ;INT0 BSF INTCON3,INT1IE ;INT1 BSF SIINI ;PER ENVIAR INICI ;************************************************************************* ;************************************************************************* INICI: NOP

Page 57: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 57

;************************************************************************* BTFSC SIINI ;ENVIAR INICI? CALL ENVINI ;************************************************************************* BTFSC DADES ;HI HA DADES? CALL ENVIR ;************************************************************************* NOP NOP NOP ;************************************************************************* SLEEP ;BAIX CONSUM NOP NOP NOP BRA INICI ;************************************************************************* ;End of program #include <funs.asm> ;FUNCIONS PER AL PROGRAMA END A continuació es mostra el codi del fitxer FUNS.ASM: ;****************************************************** ;NOM DE L’ARXIU: FUNS.ASM ;FUNCIONS BÀSIQUES QUE UTILITZA EL PIC 18F ;****************************************************** ;_________________________________________________ ; TEMPS D’ESPERA ;Entrada: per W el nombre de iteracions, cadascuna 1.3mseg ;Sortida: ;_________________________________________________ DELI: MOVWF VTEMP ;EL W PORTA EL NOMBRE DE VOLTES TORNI: MOVLW D'0' ;VALOR A CARREGAR TIMER MOVWF TMR2 TYM: BTFSS PIR1,1 ;ESPEREM A QUE ACAVI GOTO TYM BCF PIR1,1 ;LLIMPIEM EL BIT DE OVERFLOW TIMER DECFSZ VTEMP,1 ;DECREMENTEM CONTADOR GOTO TORNI RETURN ;****************************************************** ; ENVIA PER LA UART un Byte ;Entrada: Dada a enviar per W ;Sortida: contingut per la UART ;_________________________________________________ ENBYTE: BTFSS TXSTA,TRMT ;ESPEREM A QUE ES PUGUI TRANSMETRE GOTO ENBYTE MOVWF TXREG ;ENVIEM DATO RETURN ;******************************************************

Page 58: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 58

; ENVIA PER LA UART DESDE LA RAM ;Entrada: hi ha DADES ;Sortida: dades per la UART ;_________________________________________________ ENVIR: LEDON ;LED ENVIAMENT MOVFF FSR1L,FSR0L ;PUNTER INICIAL MOVFF FSR1H,FSR0H MOVFF FSR2H,PUNTCUAH ;PUNTER MAXIM MOVFF FSR2L,PUNTCUAL MOVF POSTINC0,0 MOVF POSTINC0,0 MOVF POSTINC0,0 MOVF POSTINC0,0 MOVF FSR0L,0 XORWF FSR2L,0 BTFSS STATUS,2 BRA ENVIR0 ;INCREMENTA MOVF FSR0H,0 XORWF FSR2H,0 BTFSC STATUS,2 BRA ENVIR01 ;NO INCREMENTA ENVIR0: MOVFF FSR0H,FSR1H ;PUNTER PROXIM MOVFF FSR0L,FSR1L ENVIR01: MOVF POSTDEC0,0 ;APUNTAR AL PRINCIPI DE LES DADES A ENVIAR MOVF POSTDEC0,0 MOVF POSTDEC0,0 MOVF POSTDEC0,0 MOVLW D'50' ;ENVIA 55 AA CALL ACTIVRF MOVLW REPE ;CARGA CONTADORS MOVWF BUCLES ENDADA: MOVLW DADA ;CARGA CONTADORS MOVWF CONTA MOVLW D'252' ;INICI DADA CALL ENBYTE MOVLW D'252' CALL ENBYTE CLRF PARITAT ;LLIMPIO PARITAT ENDADA1: BTFSS TXSTA,TRMT ;ESPERO QUE ES PUGUI TRANSMETRE GOTO ENDADA1 MOVFF INDF0,TXREG ;ENVIEM DATO BTFSC POSTINC0,0 INCF PARITAT ;ACTUALITZO PARITAT DECFSZ CONTA BRA ENDADA1 ;BUCLE 4 BYTES DE DADA MOVLW A'P' BTFSC PARITAT,0 ;P SI ES PAR I I SI NO MOVLW A'I'

Page 59: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 59

CALL ENBYTE ;FINAL DADA MOVLW D'253' CALL ENBYTE MOVLW D'253' CALL ENBYTE DCFSNZ BUCLES ;CONTADOR DE REPETICIONS BRA SURT ;SI REPE VEGADES SURT MOVF FSR0L,0 XORWF PUNTCUAL,0 BTFSS STATUS,2 BRA ENDADA ;INCREMENTA MOVF FSR0H,0 XORWF PUNTCUAH,0 BTFSS STATUS,2 BRA ENDADA ;INCREMENTA MOVFF FSR1L,FSR0L ;TORNA A INICI MOVFF FSR1H,FSR0H BRA ENDADA SURT: MOVF FSR0L,0 XORWF FSR2L,0 BTFSS STATUS,2 BRA SURT2 MOVF FSR0H,0 XORWF FSR2H,0 BTFSC STATUS,2 ;SI ESTEM AL FINAL DE LES DADES BCF DADES ;BAIXAR FLAG ENVIAMENT SURT2: MOVLW D'254' ;FINAL STRING CALL ENBYTE MOVLW D'254' CALL ENBYTE MOVLW D'254' CALL ENBYTE MOVLW D'25' ;RETARDO CALL DELI LEDOFF ENABLE RETURN ;****************************************************** ; ACTIVAR RF ;Entrada: Repeticions pel W ;Sortida: envia senyal de sincronisme per la UART ;_________________________________________________ ACTIVRF: MOVWF BUCLER ACTV1: MOVLW 0XAA CALL ENBYTE MOVLW 0X55 CALL ENBYTE DECFSZ BUCLER,1 ;DECREMENTEM CONTADOR BRA ACTV1 RETURN ;******************************************************

Page 60: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 60

; ACTUALITZA TEMPS ;Entrada: Hi ha una interrupció del timer ;Sortida: les variables de la base de temps actualitzades ;_________________________________________________ ACTUAL: MOVLW 0XB1 MOVWF TMR0H MOVLW 0XF7 MOVWF TMR0L ;CARGA DEL TIMER INCF MILIS,1 ;SUMA 1 A MILISEGONS ;SI == 250 POSA 0 I ;SUMA 1 A SEGONS ;SI == 60 POSA 0 I ;SUMA MINUTS MOVLW D'250' XORWF MILIS,0 BTFSS STATUS,2 RETURN CLRF MILIS SISEG: INCF SEGONS,1 ;INCREMENTO SEGONS MOVLW D'60' XORWF SEGONS,0 BTFSS STATUS,2 RETURN CLRF SEGONS SIMINU: INCF MINUTS,1 ;INCREMENTO MINUTS MOVLW 0XFF XORWF SEGONS,0 BTFSS STATUS,2 RETURN CLRF MINUTS ;SI =255 MINUTS A ZERO BSF SIINI ;ENVIO INICI RETURN ;****************************************************** ; GUARDO DADA ;Entrada: FSR2(DADES) punter a dades final ;Sortida: Hi ha DADES activat ;_________________________________________________ INDAT: MOVFF MINUTS,POSTINC2 ;GUARDO MINUTS MOVFF SEGONS,POSTINC2 ;GUARDO SEGONS MOVFF MILIS,POSTINC2 ;GUARDO MILISEGONS MOVFF ESTAT,POSTINC2 ;GUARDEM ESTAT A RAM MOVLW D'17' ;TEMPS PER REBOTS CALL DELI BSF DADES ;ACTIVACIO HI HA DADES MOVLW 0X00 ;COMPARACIÓ FINAL BUFFER XORWF FSR1H,0 BTFSS STATUS,2 RETURN MOVF PUNTCUAH,0 ;COMPARACIÓ FINAL BUFFER XORWF FSR1H,0 BTFSS STATUS,2 RETURN

Page 61: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 61

LFSR 2,INDADES ;CARGO PUNTER AL INICI RETURN ;****************************************************** ; ENVIA INICI ;Entrada: SIINI activat, s'ha d'enviar INICI ;Sortida: S'envia sequencia d'inici de temps ;_________________________________________________ ENVINI: LEDON BCF SIINI ;LLIMPIAR FLAG ENVIAR INICI MOVLW D'2' MOVWF CONTA ;REPETICIONS DE L'ENVIAMENT ENVINI3: MOVLW D'20' ;S'ENVIA SINCRONISME X VEGADES CALL ACTIVRF MOVLW D'5' MOVWF BUCLER ;REPETICIONS DE L'STRING INICI ENVINI2: MOVLW D'252' ;MARCA INICI DADA CALL ENBYTE MOVLW D'252' CALL ENBYTE MOVLW A'I' CALL ENBYTE MOVLW A'N' CALL ENBYTE MOVLW A'I' CALL ENBYTE MOVLW A'C' CALL ENBYTE MOVLW A'I' CALL ENBYTE MOVLW D'253' ;MARCA FINAL DADA CALL ENBYTE MOVLW D'253' CALL ENBYTE DECFSZ BUCLER,1 ;DECREMENTO CONTADOR BRA ENVINI2 MOVLW D'254' ;MARCA FINAL STRING CALL ENBYTE MOVLW D'254' CALL ENBYTE MOVLW D'254' CALL ENBYTE DECFSZ CONTA,1 BRA ENVINI3 MOVLW D'25' CALL DELI ;RETARDO LEDOFF RETURN

Page 62: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 62

6.2. Codi del PC

El software del programa ha estat realitzat en Visual Basic 6.0 amb un sol Form, el qual es mostra a continuació: '************************************************* '************************************************* 'SOFT PFC: Adquisició de dades amb PIC via radio 'Nom arxiu: pfcpicrf.vbp 'Alumne: Antoni Vallés Roigé 'Director: Nicolau Cañellas Alberich 'Data: Juny 2005 'Lloc: Universitat Rovira i Virgili (Tarragona) 'Descripció: Recepció pel port sèrie d'strings que venen d'un mòdul 'de radio. Guarda i mostra en un Historial txt les comandes. '************************************************* Option Explicit 'variables globals Public fitxerdad As String 'direcció i nom del fitxer Public index As Integer 'index per recorrer strings 'Public KEY As Integer '************************************************* 'COS DEL PROGRAMA '************************************************* Private Sub comando_Click() On Error GoTo err1 'salta a err1 si hi ha errors Dim rebre As String 'variables del form Dim auxrebre As String Dim vel As Integer Dim Cdades As Integer Dim Chistorial As Integer Dim Ccomandes As Integer Dim Cparitat As Integer Dim i As Integer Dim j As Integer Dim valor As String Dim bool As Boolean Dim file1, txtfile Dim WshShell '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Set WshShell = CreateObject("WScript.Shell") Cdades = 0 'inicialització variables Chistorial = 0 Ccomandes = 0 arribada = "" Tdades = "TOTAL=" & Cdades 'mostrar contador strings Tcomandes = "TOTAL=" & Ccomandes fitxerdad = "D:\pfc picrf\soft\dades.txt" historial.LoadFile fitxerdad Chistorial = WshShell.RegRead("HKEY_CURRENT_USER\Software\PFCPICRF\Chisto")

Page 63: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 63

Thistorial = "TOTAL=" & Chistorial vel = Trim(mvelocitat.Text) 'velocitat en bauds '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ If comando.Caption = "Obrir" Then 'obrir o tanar el port If com.PortOpen = False Then com.Settings = vel & ",n,8,1" 'paràmetres del port com.CommPort = Trim(mport.Text) com.PortOpen = True comando.Caption = "Tancar" '------------------------------BUCLE DE FUNCIONAMENT------------------- 10: rebre = "" 'LLIMPIAR STRINGS auxrebre = "" valor = "" Do Until InStr(rebre, Chr(254) & Chr(254)) 'esperar string DoEvents 'final string 254 254 If com.PortOpen = True Then rebre = rebre & com.Input End If Loop 'hi ha string For i = 1 To Len(rebre) 'buscar 252 252 If Mid(rebre, i, 2) = Chr(252) & Chr(252) Then Exit For Next i If i >= Len(rebre) Then GoTo 10 'si NO hi ha 252 252 sortim For j = i To Len(rebre) auxrebre = auxrebre & Mid(rebre, j, 1) 'treure principi fins 252 252 Next j rebre = auxrebre 'hem tret principi fins 252 252 auxrebre = "" For i = 1 To Len(rebre) auxrebre = auxrebre & Mid(rebre, i, 1) 'treure final fins 254 254 per si decas If Mid(rebre, i, 2) = Chr(254) & Chr(254) Then Exit For Next i rebre = auxrebre auxrebre = "" auxrebre = MostraD(rebre) 'converteixo a decimal Cdades = Cdades + 1 'incremento contador strings arribada = arribada & "**********************************************************************************************************************************" arribada = arribada & vbCrLf Tdades = "TOTAL=" & Cdades 'mostrar contador strings arribada = arribada & auxrebre 'mostrar string d'entrada arribada = arribada & vbCrLf arribada = arribada & vbCrLf arribada.SelStart = Len(arribada)

Page 64: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 64

'------------------------------------------------------------- index = 1 'inicialitzacio contador comandes valor = treudat(rebre) 'si hi ha comanda Do While valor <> "fi" auxrebre = MostraD(valor) arribada = arribada & auxrebre 'mostrar comanda arribada = arribada & " -----------> " arribada.SelStart = Len(arribada) auxrebre = convertir(valor) 'convertir la comanda Ccomandes = Ccomandes + 1 'incremento contador comandes Tcomandes = "TOTAL=" & Ccomandes If auxrebre <> "0" Then 'si comanda correcta arribada = arribada & auxrebre 'mostrar comanda bona arribada = arribada & vbCrLf arribada.SelStart = Len(arribada) bool = posar(auxrebre) 'mirar si afegir a historial If bool Then Open fitxerdad For Append As #1 'grabar comanda a historial Write #1, auxrebre Close #1 historial.LoadFile fitxerdad historial.SelStart = Len(historial) Chistorial = Chistorial + 1 'incremento contador comandes bones WshShell.RegWrite "HKEY_CURRENT_USER\Software\PFCPICRF\Chisto", Chistorial, "REG_SZ" Thistorial = "TOTAL=" & Chistorial End If Else Cparitat = Cparitat + 1 'incremento contador mala paritat Tparitat = "ERROR DADES PARITAT=" & Cparitat arribada = arribada & "ERROR DADA PARITAT" 'si la comanda no es bona arribada = arribada & vbCrLf arribada.SelStart = Len(arribada) End If valor = treudat(rebre) 'conseguir pròxima comanda Loop arribada = arribada & "**********************************************************************************************************************************" arribada = arribada & vbCrLf arribada.SelStart = Len(arribada) '------------------------------------------------------------- End If 'final boto obert

Page 65: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 65

GoTo 10 '----------------------------------------------------------- err1: 'possibles errors Select Case Err.Number Case 8002 MsgBox "NO ES POT OBRIR EL PORT!!!", vbInformation, "ERROR" Case 75 Set file1 = CreateObject("Scripting.FileSystemObject") 'crear txt Set txtfile = file1.CreateTextFile(fitxerdad, True) txtfile.Close WshShell.RegWrite "HKEY_CURRENT_USER\Software\PFCPICRF\Chisto", "0", "REG_SZ" Open fitxerdad For Append As #1 'grabar INICI a historial Write #1, "INICI" Close #1 historial.LoadFile fitxerdad MsgBox "NO HI HAVIA FITXER" & vbCrLf & "FITXER CREAT" & vbCrLf & "OBRIR PORT!!!", vbInformation, "ERROR" Case 13 MsgBox "ERROR EN EL NOMBRE DE PORT!!!", vbInformation, "ERROR" Case Else MsgBox "S'HA PRODUIT EL SEGÜENT" & vbCr & "ERROR: " & Err.Number, vbInformation, "ERROR" End Select Else comando.Caption = "Obrir" 'tancar boto If com.PortOpen = True Then com.PortOpen = False End If End If End Sub '************************************************* 'sortir del programa '************************************************* Private Sub Form_Terminate() 'Si tanquem el programa tanquem port If com.PortOpen = True Then com.PortOpen = False Else End If End End Sub '************************************************* 'sortir del programa '************************************************* Private Sub Form_Unload(Cancel As Integer) If com.PortOpen = True Then 'Si tanquem el programa tanquem port com.PortOpen = False Else

Page 66: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 66

End If End End Sub '************************************************* 'trec la comanda de dins de l'string 'utilitza variable global index '************************************************* Public Function treudat(coman As String) As String Dim n As Integer Dim auxt As String Dim aux2 As String For index = index To Len(coman) 'busco inici If Mid(coman, index, 2) = Chr(252) & Chr(252) Then Exit For treudat = treudat & Mid(coman, index, 1) Next index If index >= Len(coman) Then treudat = "fi" 'retorn per defecte Exit Function 'si no hi ha 252 252 sortim End If treudat = "" For n = index + 2 To Len(coman) 'busco final If Mid(coman, n, 2) = Chr(253) & Chr(253) Then Exit For treudat = treudat & Mid(coman, n, 1) Next n If n >= Len(coman) Then treudat = "fi" 'retorn per defecte Exit Function 'si no hi ha 253 253 sortim End If index = n End Function '************************************************* 'comparo string amb el fitxer historial per si esta repetida la dada '************************************************* Public Function posar(coman As String) As Boolean Dim Char As String Dim xChar As String Dim stry As String Dim auxstry As String Dim ni As Integer 'per bucle Dim n As Integer 'numero d'string del fitxer Dim m As Integer 'index de l'string coman dins el fitxer Dim ini As Integer 'index de INICI dins el fitxer n = 0 m = 0 ini = 0 stry = "" Char = "" Open fitxerdad For Input As #1 'obrir fitxer Do While Not EOF(1) Char = Input(1, #1) xChar = xChar & Char If Char <> vbLf Then

Page 67: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 67

stry = stry & Char Else 'tinc string amb comilles n = n + 1 auxstry = "" auxstry = stry 'treure comilles stry = "" ni = 1 Do While Mid(auxstry, ni, 1) = Chr(34) ni = ni + 1 Loop For ni = 2 To Len(auxstry) - 2 stry = stry & Mid(auxstry, ni, 1) Next ni If stry = coman Then m = n 'si es la mateixa comanda If stry = "INICI" Then ini = n 'si es INICI stry = "" End If 'final string Loop 'final fitxer Close #1 'tanco fitxer 'despres de recorrer el fitxer s'avalue If coman = "INICI" Then If ini = n Then posar = False Else posar = True End If Else If m = 0 Then posar = True ElseIf m > ini Then posar = False Else posar = True End If End If End Function '************************************************* 'converteixo la comanda de decimal a ascii '************************************************* Public Function convertir(coman As String) As String Dim milis As String Dim segons As String Dim minuts As String Dim estat As String Dim paritat As String Dim n As Integer n = 0 convertir = "0" If coman = "INICI" Then convertir = coman Else If Len(coman) = 5 Then minuts = Mid(coman, 1, 1)

Page 68: Adquisició de dades amb PIC via radiodeeea.urv.cat/public/PROPOSTES/pub/pdf/450pub.pdf · 1.1. ANTECEDENTS ... B i el uport informàtic.s Per ... Per realitzar aquesta tasca hi ha

PFC: Adquisició de dades amb PIC via radio

pàgina: 68

segons = Mid(coman, 2, 1) milis = Mid(coman, 3, 1) estat = Mid(coman, 4, 1) paritat = Mid(coman, 5, 1) n = Asc(milis) + Asc(segons) + Asc(minuts) + Asc(estat) + Asc(paritat) n = n Mod 2 If n = 0 Then n = 4 * Asc(milis) ' el valor de milis es per 4 milis = n segons = Asc(segons) minuts = Asc(minuts) convertir = minuts convertir = convertir & ":" convertir = convertir & segons convertir = convertir & ":" convertir = convertir & milis convertir = convertir & estat 'convertir = convertir & paritat Else convertir = "0" 'comanda incorrecta no paritat End If Else ' si no son 5 caracers convertir = "0" 'comanda incorrecta End If End If ' fi si no es INICI End Function '************************************************* 'retorna la comanda en forma de decimal '************************************************* Public Function MostraD(coman As String) As String Dim n As Integer Dim auxt As String MostraD = "" For n = 1 To Len(coman) auxt = Mid(coman, n, 1) Select Case auxt Case "A", "B", "I", "P", "N", "C" 'caracters que si que mostra MostraD = MostraD & auxt MostraD = MostraD & " " Case Else MostraD = MostraD & Asc(auxt) MostraD = MostraD & " " 'espai entre caracters End Select Next n End Function