Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat per FPGA's
Full text
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 1 Resum La idea de realitzar aquest projecte ha sorgit de la necessitat del departament d’Electrònica de la ETSEIB de poder utilitzar la maqueta d’un ascensor controlat per un FPGA (Field Programmable Gate Array) d’una placa educativa d’Altera (fabricant) en unes classes de pràctiques. Aquestes pràctiques han d’estar dedicades a l’aprenentatge dels FPGA, uns dispositius de portes lògiques programables que proporcionen gran flexibilitat i possibilitats per al desenvolupament de sistemes electrònics. La placa d’Altera es comunica amb la maqueta mitjançant una placa d’interfície. Tot aquest sistema és el resultat del PFC “Sistema de control basado en FPGAs para un ascensor de 5 plantas”. L’aprenentatge en la programació de l’FPGA pot provocar errors en el control, que poden comportar danys a la maqueta, Per a evitar-los, s’ha decidit integrar a la placa d’interfície un sistema de seguretat o vigilància, capaç de detectar i bloquejar les situacions en que es puguin produir danys a la maqueta. Un altre objectiu del projecte és combinar la incorporació del sistema de seguretat, amb la d’un sistema de test del funcionament dels elements electromecànics de la maqueta. D’aquesta manera es contribueix a fer més fiable el seu funcionament, i es facilita la labor de detecció d’elements avariats. El darrer objectiu és realitzar un anàlisi del funcionament de la placa d’interfície. Es vol aprofitar la realització d’una nova placa d’interfície integrant el sistema de test i seguretat, per a millorar els punts febles que es puguin trobar en la placa d’interfície original. La base d’aquest sistema és un microcontrolador. Degut a la seva fiabilitat, versatilitat, velocitat, preu, facilitat d’ús, i la gran quantitat d’informació i eines de desenvolupament de que disposen, s’ha escollit un model de la família dels PIC. Un aspecte molt important és captar totes les dades que van de la maqueta a la placa d’Altera, analitzarles per a conèixer la situació en cada instant i actuar segons convingui. Per a fer passar totes les dades a través del PIC s’ha utilitzat un registre de desplaçament d’entrada i un de sortida de 48 posicions cadascun. El resultat final ha estat una nova placa d’interfície capaç de treballar en tres modes: seguretat o vigilància, test i transparent (la placa treballa con la placa original). A més, s’ha incorporat un sistema de detecció de sobrecàrrega dels motors i una modulació de l’ample d’ona de la seva tensió d’alimentació per a suavitzar-ne els moviments. S’ha fabricat un prototip d’aquesta placa i s’ha comprovat el seu correcte funcionament, certificant d’aquesta manera l’assoliment dels objectius del projecte.
Pàg. 2 Memòria
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 3 Sumari RESUM_________________________________________________________1 SUMARI ________________________________________________________3 1. INTRODUCCIÓ ______________________________________________5 1.1. Objectius del projecte ...........................................................................................5 2. ANÀLISI DE LA SITUACIÓ INICIAL. ____________________________7 2.1. Descripció de la maqueta.....................................................................................7 2.2. Descripció de la placa d’interfície........................................................................9 2.3. Limitacions de la maqueta i placa interfície......................................................10 2.4. Canvis necessaris per eliminar les limitacions del sistema............................13 3. ESTUDI DE LES SOLUCIONS PER RESOLDRE LES LIMITACIONS DEL SISTEMA. _____________________________________________15 3.1. Estudi de la solució a les limitacions de la font d’alimentació........................15 3.2. Estudi de la creació d’un sistema de control de situacions conflictives i d’un sistema de verificació..........................................................................................19 3.2.1. Ubicació...........................................................................................................19 3.2.2. Sistema de seguretat: funcions a complir; identificació situacions conflictives.20 3.2.3. Sistema de test: funcions a complir; protocol de verificació..............................21 3.2.4. Solució comú per a la creació dels dos sistemes.............................................25 3.3. Estudi d’altres millores........................................................................................27 4. ELECCIÓ DEL MICROCONTROLADOR: EL PIC_________________29 4.1. Característiques rellevants dels microcontroladors PIC .................................29 4.2. Model escollit.......................................................................................................31 5. DISSENY DE LA NOVA PLACA ELECTRÒNICA_________________33 5.1. Esquemàtics : disseny teòric..............................................................................33 5.1.1. Font d’alimentació............................................................................................33 5.1.2. Connectors, driver motors, 7-segments...........................................................34 5.1.3. Entrades i sortides : Registre de desplaçament...............................................36 5.1.4. Microcontrolador PIC.......................................................................................42 5.1.5. Programador PIC.............................................................................................44 5.2. Layout : disseny físic...........................................................................................46 6. PROGRAMACIÓ DEL MICROCONTROLADOR__________________49 6.1. Elecció del llenguatge de programació.............................................................49
Pàg. 4 Memòria 6.2. Definició de variables i posicions de memòria.................................................50 6.3. Configuració del PIC ...........................................................................................52 6.4. Descripció del programa.....................................................................................52 6.4.1. Rutina principal : elecció del mode de funcionament.......................................52 6.4.2. Rutina de lectura i escriptura............................................................................54 6.4.3. Programació dels modes de funcionament......................................................60 6.4.4. Temporitzacions...............................................................................................61 6.4.5. PWM motors....................................................................................................62 6.4.6. Conversor Analògic/Digital...............................................................................66 7. PROTOTIPS_______________________________________________ 69 7.1. Primer prototip: realització i muntatge...............................................................69 7.2. Primer prototip: proves i resultats......................................................................72 7.3. Millores a realitzar : redisseny de la solució.....................................................75 7.4. Segon Prototip: proves i resultats finals............................................................76 8. CONCLUSIONS____________________________________________ 79 AGRAÏMENTS _________________________________________________ 81 BIBLIOGRAFIA ________________________________________________ 83
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 5 1. Introducció L’objectiu d’aquest projecte és establir un sistema de test i seguretat en un ascensor controlat per un FPGA que es troba en una placa educativa d’Altera. Aquest ascensor és una maqueta que està destinada a realitzar pràctiques de programació de FPGA’s en assignatures cursades al Departament d’Enginyeria Electrònica de la ETSEIB. El disseny dels actuadors i sensors, la placa d’interfície original i el sistema de control van ser realitzats al Projecte Final de Carrera (PFC) “Sistema de control basado en FPGAs para un ascensor de 5 plantas”. Amb l’ús de la maqueta en el laboratori, s’ha pogut observar que els alumnes han de poder realitzar el seu programa, implementar-lo a l’FPGA i veure físicament el resultat de la seva programació amb el moviment de l’ascensor. Una correcte programació implicarà un funcionament correcte de l’ascensor, però una primera programació incorrecte pot comportar un mal funcionament de l’ascensor. Normalment els programes de FPGA’s, microcontroladors, etc., són realitzats mitjançant software de programació que té un entorn que permet simular uns estímuls a unes entrades i veure el comportament de les sortides, evitant possibles danys en el sistema que controlen deguts a una incorrecta programació. En canvi, al realitzar la prova del programa directament sobre l’ascensor, una mala programació i un resultat no esperat a les sortides, pot provocar una combinació de moviments de motors i actuadors que esdevingui en danys en la maqueta. 1.1. Objectius del projecte • Dissenyar i implementar un sistema de seguretat encarregat de monitoritzar l’estat de l’ascensor i les ordres que se li comuniquen des de la placa educativa d’Altera i en cas de detectar una situació de perill per la integritat de la maqueta aturar qualsevol moviment d’aquesta i bloquejar el sistema. • Dissenyar i implementar un sistema de test per verificar el funcionament dels sensors, làmpades, polsadors i motors de la maqueta per poder fer-hi un manteniment. • Implementar un mode de programació “transparent” de manera que el sistema de seguretat no intervingui sobre el control de la maqueta.
Pàg. 6 Memòria
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 7 2. Anàlisi de la situació inicial. 2.1. Descripció de la maqueta. La maqueta, que està formada per una estructura de metacrilat sobre una base de plàstic dur blanc, simula l’ascensor d’un edifici de 4 plantes. Les parets, el sostre, la cabina i el terra de cada pis estan fets a partir de làmines de metacrilat de 5mm de gruix tallades a la mida adequada i unides mitjançant un adhesiu de contacte. El fet que el material de que esta feta maqueta sigui transparent facilita la visualització de tots els moviments de l’ascensor. La cabina disposa d’unes peces d’alumini que fan la funció de patí sobre unes guies de metacrilat, que són les que guien la cabina per poder moure’s en sentit ascendent o descendent. La cabina esta agafada a un extrem d’un fil de niló, l’altre extrem d’aquest fil Fig. 2.1. Fotografia de la maqueta
Pàg. 8 Memòria està fixat al reductor d’un motor de 12V de corrent contínua. Aquest motor es troba situat al sostre de la maqueta i és el que fa que l’ascensor pugi o baixi, al girar en un sentit o un altre, enrotllant o desenrotllant el fil sobre un reductor solidari al seu eix. El motiu de la presència d’aquest reductor no és altre que aconseguir disminuir la velocitat de l’ascensor, ja que el motor gira a bastants revolucions, i guanyar una mica de parell per pujar la cabina. L’obertura i el tancament de la porta de la cabina el realitza un altre motor solidari a la cabina. Aquest motor mou un reductor que fa girar un pinyó que engrana amb una cadena. Aquesta cadena està fixada a una platina, on també hi ha fixada la porta, que llisca sobre una guia fent que la porta pugui obrir-se i tancar-se Per detectar quan la porta està completament oberta o completament tancada, hi ha situats uns sensors detectors de final de carrera que són uns microinterruptors accionats per la mateixa porta. A la cabina també hi ha un optoacoplador que funciona com a cèl·lula fotoelèctrica i ens serveix per indicar la presència d’alguna persona o objecte entrant o sortint de l’ascensor, tal i com ho fan els dispositius implantats en els ascensors reals. Aquesta cèl·lula ens dona un 1 lògic si el feix és interromput i un 0 lògic en el cas contrari. A cada pis hi ha situats uns microinterruptors que, activats per una llengüeta que hi ha situada a la cabina, serveixen per a indicar en quin moment l’ascensor es troba en un pis. Aquests microinterruptors són del mateix tipus que els utilitzats en els finals de cursa de la porta i disposen de 3 terminals dels quals només se n’utilitzen 2 ; un terminal és el comú i els altres dos serveixen per a determinar si volem treballar amb configuració normalment obert o normalment tancat. En aquest cas estan treballant en la configuració normalment obert, és a Fig. 2.2. Fotografia del motor elevador
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 9 dir, estan donant un nivell lògic 0 mentre no són polsats, moment en el que donen un nivell lògic 1. Al igual que en un ascensor real, a cada pis hi ha dos polsadors per seleccionar el servei de pujar o baixar, exceptuant al quart pis i a la planta baixa on només hi ha un polsador. També s’han utilitzat polsadors per a simular la botonera de l’interior de la cabina, però per raons obvies d’espai i de facilitat d’ús de la maqueta, aquests s’han situat a part. Aquests polsadors són de tipus industrial. El polsador en el seu estat normal està obert, és a dir, dona un 0 lògic, i quan és premut, tanca el seu circuit intern donant un 1 lògic. A més de la mecànica interna destinada a la funció pròpia del polsador, aquests polsadors contenen també il·luminació. Cadascun té una bombeta de 9V que s’il·luminarà, controlada pel software, quan el polsador sigui premut, i que no s’apagarà fins que el servei que reclama sigui cobert. D’un d’aquests polsadors en surten 4 cables, dos per al polsador i 2 per la bombeta. La maqueta també compta amb un display del tipus 7-segments que serveix per mostrar en quin pis es troba l’ascensor. Tots els elements que necessiten alimentació i que emeten o reben un senyal, estan degudament cablejats; d’aquesta manera tenim cables dels polsadors, les llums, els microinterruptors, la barrera òptica, els motors,... Tots aquests cables van a parar a un connector de 74 pins que va connectat a una placa d’interfície. Aquesta és la que s’encarrega de proporcionar l’alimentació als diferents elements de la maqueta i de realitzar el tractament adient als senyals que van o venen de la maqueta per adaptar-los als nivells de tensió adequats per a poder realitzar la connexió de la maqueta amb la placa de control, particularment en aquest cas el control el realitza una placa educativa UP1 d’Altera. 2.2. Descripció de la placa d’interfície Tal i com hem comentat, la placa d’interfície té diverses funcions: • Alimentar els dispositius de la maqueta. • Adaptar els senyals que provenen de la maqueta a senyals lògics TTL. Això es fa per que el dispositiu EPF10K20 de la placa educativa d’Altera treballa amb aquests nivells de tensió. D’aquesta manera, la maqueta pot ser controlada per qualsevol dispositiu genèric que utilitzi aquest estàndard. • Incorporar l’etapa de potència dels dos motors de la maqueta.
Pàg. 16 Memòria El transformador, és de 230/12V, 50/60Hz i 6VA, hi ha un regulador de tensió de 9V que alimenta els motors i les làmpades, i un altre regulador de tensió de 5V que s’encarrega d’alimentar tota la circuiteria lògica de la placa i els microinterruptors i polsadors de la maqueta. Una primera impressió que s’extreu al veure el disseny de l’alimentació d’aquesta placa és que el problema pot venir del fet que les làmpades i els motors pengin de la mateixa alimentació. El càlcul teòric de la potencia necessària per a tenir funcionant a la vegada un dels dos motors en règim permanent i totes les làmpades, és correcte, però s’ha de tenir en compte que els motors provoquen un consum elevat de corrent en l’arrencada que pot afectar als demés elements connectats a la mateixa línia d’alimentació, i si hi sumem el fet que tenir totes les làmpades enceses també representa un elevat consum de corrent, no és d’estranyar que els problemes puguin venir per aquí. Així doncs, el que s’ha fet ha estat veure la resposta del transformador als diferents requeriments que se li poden presentar. Hem mesurat la tensió entre la sortida del pont rectificador de díodes en diverses situacions d’encesa de llums i funcionament del motor per separat i combinats (l’elevador, ja que suporta una càrrega major). Els resultats els recull la següent taula: Vmig Vpic Vmax/Vmín Cap requeriment 18,5 V 360 mV 18,8/18,2 V 1 làmpada 17,4 V 360 mV 17,7/17,1 V Totes les làmpades 11,2 V 200 mV 11,4/11,0 V 7seg.+totes làmpades 11,0 V 220 mV 11,2/10,8 V Làmpades + 7 segments 1 dels 7 segments 18,4 v 280 mV 18,7/18,1 V Pujant 9,3 V 840 mV 9,7/8,9 V Motor elevador + làmpades Baixant 10,9 V 760 mV 11,2/10,6 V
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 17 Com es pot apreciar, hi ha situacions en que la tensió de sortida del secundari un cop rectificada, baixa dels 12V, que és la tensió mínima que ha de garantir el transformador, i quan estan en funcionament tots els llums i el motor, el voltatge arriba a baixar dels 9V. Al no poder subministrar una tensió constant superior als 9V, el regulador de tensió de 9V, que s’encarrega d’alimentar els llums i els motors, no és capaç de satisfer de manera correcte tota la demanda que rep. Aquest fet és degut a un mal dimensionament del transformador, a una manca de potencia. Al tractar-se d’un transformador encapsulat fet per a ser muntat sobre placa electrònica, el seu tamany és reduït i no és capaç de suportar la càrrega que li estem aplicant. Degut a això, tot i que els llums s’encenen i el motor funciona, no pot fer-los funcionar proporcionar-los les prestacions correctes que els hauria de donar. Aquest problema té dues possibles solucions : 1. Posar un transformador de potencia superior a l’actual, que seria més gran. 2. Diferenciar la línia d’alimentació dels llums dels polsadors, de la línia d’alimentació dels motors. Això s’aconsegueix posant dos transformadors com el que ja existeix, d’un penjaran els motors i de l’altre els llums i tota l’alimentació de la circuiteria de la placa, evitant les possibles fluctuacions provocades pels motors. La primera solució seria fàcil d’implementar, tan sols caldria dessoldar el transformador de la placa i connectar-hi el nou transformador més gran. El problema està en que el nou transformador no podria estar integrat a la placa ja que les seves dimensions ho impedirien, i s’hauria de fer un cablejat que anés des de l’entrada de l’alimentació de la xarxa a la placa fins al transformador, i des de la sortida del transformador a l’entrada del pont de díodes a la placa. Tot i poder ser vàlida i permetre estalviar el redisseny de la placa, aquesta manera d’implementar la primera solució no és una solució elegant i per a fer-ho bé s’hauria de redissenyar la placa. S’ha escollit la segona opció com a millor. Amb aquesta solució ens veuríem forçats a realitzar un nou disseny de la placa electrònica si es volen solucionar les altres limitacions de la placa, redisseny que resulta inevitable encara que finalment s’optés per la primera solució, ja que s’han de solucionar les altres limitacions. A més, aquesta segona alternativa ens permetrà realitzar un disseny de placa més compacte que si optéssim per la primera. L’altre gran avantatge és l’assegurament de la no interferència de la circuiteria dels motors amb la dels llums i viceversa.
Pàg. 18 Memòria Per tant, el nou esquemàtic resultant de redissenyar la font d’alimentació, separant les línies de 9V dels motors i dels llums, és el que es mostra a la següent imatge: 5V 9V 9Vb A/DConv ALIMENTACIOALIMENTACIOALIMENTACIO+ ALIMENTACIO+ 5V U10 L7809/TO220 1 3 2 VIN GND VOUT U9 L7805/TO220 1 3 2 VIN GND VOUT + CI1 0,33uF + C6 3300uF - + D10 BRIDGE 1 4 3 2 + CO2 1uF + CI2 0,33uF + CO1 1uF T1 TRANSFORMER 1 3 2 4 J2 B2S 1 2 R18 4K R19 1K T2 TRANSFORMER 1 3 2 4 - + D11 BRIDGE 1 4 3 2 + C7 3300uF + CIB1 0,33uF + COB1 1uF U11 L7809/TO220 1 3 2 VIN GND VOUT Com es pot observar, la part superior del disseny és exactament igual que l’anterior font d’alimentació. Al igual que abans, el regulador de tensió de 5V alimenta tots els elements que treballen amb nivells lògics de tensió TTL, la diferència es troba en que el regulador de tensió de 9V alimenta només a les làmpades dels connectors. A la part inferior s’ha afegit un altre transformador, del que penja un altre pont rectificador de díodes i un altre regulador de tensió de 9V que serà l’encarregat d’alimentar els dos motors. Aquest circuit és idèntic al de l’alimentació de 9V dels llums, els components són els mateixos i el transformador també té les mateixes característiques, ja que a la placa antiga tenia potencia de sobres per fer anar els motors sols sense problema. S’ha decidit posar per separat la línia dels motors i no la dels llums perquè els motors poden produir fluctuacions del corrent al arrencar i parar, que poden ser negatives per al circuit generador dels 5V. Fig. 5.2. Esquemàtic de la nova font d’alimentació
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 19 3.2. Estudi de la creació d’un sistema de control de situacions conflictives i d’un sistema de verificació. 3.2.1. Ubicació La idea amb la que es va realitzar la placa interfície, era la de realitzar una placa electrònica que alimentés la maqueta i que alhora fes d’adaptador entre la maqueta i el sistema de control que s’emprés. D’aquesta manera, es podria realitzar el control amb un sistema basat en FPGA’s, com ha estat el cas, o mitjançant microcontroladors, o amb qualsevol altre sistema que utilitzés nivells de voltatge TTL. Un sistema seguretat o de control de les situacions conflictives que poden produir-se en el funcionament de la maqueta, és un sistema que ha de conèixer quines són aquestes situacions conflictives, vigilar si alguna d’aquestes situacions es produeix, i en cas de que sigui així, actuar per neutralitzar-la. La manera de vigilar si es produeixen aquestes situacions, és mitjançant les entrades i sortides de la maqueta. Les sortides ens diuen quin és l’estat actual de la maqueta, i les entrades quines ordres se li estan donant. Si s’incorpora el sistema de seguretat a la placa interfície, el control de les situacions conflictives es realitzarà sigui quin sigui l’element que controli la maqueta, i sempre es tindrà la certesa de que no es produeix cap situació conflictiva que pugui repercutir en un dany a aquesta. Pel que fa al sistema de test o de verificació del funcionament dels elements electromecànics de la maqueta, aquest encara té més sentit que estigui incorporat a la placa interfície. L’assegurament del funcionament dels elements elèctrics i mecànics de la maqueta, és totalment independent del sistema encarregat de governar-la que es vulgui utilitzar. Integrant aquest sistema de verificació a la placa interfície, podrem assegurar sempre el manteniment i bon funcionament de la maqueta, i a més, en cas de que fent funcionar el sistema es produís una situació no esperada, es podria comprovar si aquesta s’ha degut a un mal funcionament dels elements de la maqueta (motor espatllat, sensors que no funcionen, bombeta fosa,….) o s’ha degut a un error de programació. Per tant, ambdós sistemes hauran d’anar integrats a la placa interfície.
Pàg. 20 Memòria 3.2.2. Sistema de seguretat: funcions a complir; identificació situacions conflictives. Funcions que ha de complir aquest sistema: - Aquest sistema ha de controlar en cada moment la situació en que es troba el sistema a controlar, en aquest cas la maqueta, per tal d’evitar situacions de funcionament no apropiat que puguin esdevenir un possible dany al sistema. - Ha de conèixer en tot moment l’estat de la maqueta, monitoritzant tots els senyals que en surten dels diferents sensors i coneixent l’estat dels elements motrius (si els motors estan funcionant o no). - Ha de monitoritzar les ordres que se li envien als elements motrius per poder determinar quina serà el proper estat del sistema. - Ha de tenir identificades totes les situacions conflictives o de funcionament no apropiat, per tal de poder detectar-les quan es produeixin. En el moment en que una d’aquestes situacions es detecti, el sistema de vigilància anul·larà el sistema de govern de la maqueta i en prendrà el control, portant-la a una situació segura. Identificació de situacions conflictives: Entenem com a situació conflictiva en el funcionament de la maqueta de l’ascensor, tota aquella situació que pugui esdevenir en un perill per a la integritat dels seus elements. La relació de situacions conflictives que s’han considerat és la següent : • La porta de la cabina de l’ascensor no està tancada i es dona l’ordre d’accionar el motor elevador (en qualsevol dels dos sentits). Si es produeix una d’aquestes situacions, més concretament aquella en que es dona la ordre de pujar, al estar la porta oberta, aquesta, al moure’s la cabina pot enganxar-se amb algun dels polsadors. S’evita així el perill de trencament tant de la cabina com d’algun dels polsadors o del seu cablejat. (veure fig. 4.4) • Els dos motors estan en funcionament alhora. El principi de funcionament d’un ascensor ja nega la possibilitat de l’existència d’aquesta situació. Al evitar-la, estem protegint la maqueta del perill de trencament dels seus elements. • La cabina de l’ascensor arriba a la planta baixa, activant-ne el sensor que ho indica, i el motor elevador no s’atura i segueix fent baixar la cabina. La cabina
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 21 arriba a la planta baixa i el motor segueix girant i llibertant cable, però arribarà un moment en que, com que el cable està agafat a una politja, aquest començarà a enrotllar-se fent que la cabina s’elevi. Si no s’evités aquesta situació, la cabina seguiria pujant fins a encastar-se amb la coberta. El motor podria arribar a cremar-se, el fil cable de la cabina podria trencar-se i aquesta cauria fins a la darrera planta pel seu propi pes sense cap dispositiu de frenada i podria trencarse. • La cabina de l’ascensor arriba a la quarta planta, activant-ne el sensor que ho indica, i el motor elevador no s’atura i segueix fent pujar la cabina. Si no s’evités aquesta situació, la cabina seguiria pujant fins a encastar-se amb la coberta. El motor podria arribar a cremar-se, el fil cable de la cabina podria trencar-se i aquesta cauria fins a la darrera planta pel seu propi pes sense cap dispositiu de frenada i podria trencar-se. • La porta de la cabina de l’ascensor es tanca, però en el moment en que està tancada del tot, el motor de la porta segueix treballant. El motor seguiria treballant indefinidament i podria arribar a cremar-se. • La porta de la cabina de l’ascensor s’obre, però en el moment en que s’ha obert del tot, el motor de la porta segueix treballant. El motor seguiria treballant indefinidament i podria arribar a cremar-se. • Es dona l’ordre d’obrir la porta i l’ascensor no es troba en cap de les posicions de planta. Només es pot obrir la porta si hi ha activat un sensor d’alguna de les plantes. De no ser així, es corre el risc de que la porta topi amb algun dels polsadors o el seu cablejat. S’evita possibles danys a la cabina i als polsadors. En el moment en que una d’aquestes situacions es detecti, el sistema de vigilància aturarà els motors de la maqueta i mostrarà la lletra “E” al display 7segments. 3.2.3. Sistema de test: funcions a complir; protocol de verificació. Funcions que ha de complir aquest sistema: - Aquest sistema ha de verificar el correcte funcionament de tots els elements electromecànics del sistema : els sensors, els motors, els polsadors, les làmpades dels polsadors i el 7-segments.
Pàg. 22 Memòria - El sistema de test o verificació, serà completament autònom del sistema de control o govern de la maqueta. La verificació es podrà realitzar inclòs quan el sistema de control no estigui connectat. - Degut a la naturalesa del sistema, i al fet que la verificació es realitzarà quan alguna persona ho ordeni, el més senzill és que aquesta persona col·labori en la verificació del sistema, pitjant els polsadors, corroborant que els llums s’encenen, etc.…D’aquesta manera es simplifica el disseny de la solució. - Per poder realitzar la funció de verificació, el sistema haurà de controlar els senyals d’entrada i sortida de la maqueta, ja que s’haurà de forçar l’encesa dels motors, de les làmpades dels polsadors, captar el senyal que emet un polsador en ser polsat, etc.… Protocol de verificació: La relació dels elements que han de ser verificats per assegurar un bon funcionament electromecànic de la maqueta es la següent: • 8 polsadors de planta • 8 llums o làmpades dels polsadors de planta • 5 polsadors de cabina • 5 llums o làmpades dels polsadors de cabina • Obertura i tancament de la porta de l’ascensor • Sensors de planta • Cèl·lula fotoelèctrica • Moviment ascendent i descendent de la cabina • 7 segments I aquests són els procediments que descriuen com s’efectuaran els tests o verificacions del funcionament dels elements recentment llistats. Test dels polsadors i les seves làmpades Els passos a seguir per tal de comprovar el funcionament correcte dels polsadors i les respectives làmpades dels polsadors de planta i de la cabina són els següents:
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 23 • Primerament es realitzarà una encesa simultània de totes les làmpades per comprovar visualment que totes s’il·luminen. El sistema esperarà l’ordre de que totes les làmpades funcionen correctament (mitjançant un polsador). Si al cap de mig minut no ha rebut aquesta ordre, es passarà a la situació de falla test. • Un cop rebuda l’ordre de que les làmpades estan en perfecte estat, aquestes s’apaguen. • Tot seguit s’encendran tots els segments del 7-segments i s’esperarà, al igual que abans, l’ordre que indica que el funcionament del 7-segments és el correcte, mitjançant un polsador abans de mig minut. • El següent pas és la comprovació del funcionament dels polsadors. Les làmpades dels polsadors s’encendran. S’aniran prement un per un els polsadors. Si el polsador funciona, la seva respectiva làmpada s’apagarà indicant el correcte funcionament del polsador. Un cop tots els polsadors hagin estat premuts i funcionant es passarà a la següent comprovació. Si al cap de mig minut d’haverse iniciat no es finalitza aquest test, es passarà a la situació de falla test. Fig. 5.3. Mode Test : comprovació del funcionament dels polsadors
Pàg. 24 Memòria Test sensors i actuadors encarregats del moviment de l’ascensor Un cop finalitzat amb èxit el test dels polsadors i les seves corresponents làmpades, es passa a realitzar el test dels sensors i actuadors encarregats del moviment de l’ascensor. Concretament es provaran els dos motors, els sensors de planta i els sensors de porta oberta i tancada. Els passos que es seguiran són els següents: • Es farà funcionar el motor elevador fent baixar la cabina fins rebre el senyal del sensor de la planta baixa. Un cop rebut aquest senyal s’aturarà el motor. Si no es rep aquest senyal en un temps de seguretat, s’interpretarà que l’ascensor ha baixat i ha accionat el microinterruptor, però aquest no funciona i no ha donat el senyal , i es passarà a la situació de falla de test. • El motor elevador tornarà a posar-se en marxa aquest cop fent pujar la cabina fins rebre el senyal del sensor del primer pis. Si passat un temps de seguretat no es rep aquest senyal s’interpreta que l’ascensor ha tingut temps per arribar a la posició del microinterruptor i activar-lo, però aquest no funciona correctament i no ha donat el senyal, i per tant es passarà a la situació de falla de test. • Es seguirà el mateix procediment pels successius sensors de cadascun dels pisos. Un cop s’hagi comprovat el funcionament de tots els sensors, el motor elevador farà baixar la cabina fins a la planta baixa. • Un cop l’ascensor es trobi situat a la planta baixa, es procedirà a l’obertura de la porta de la cabina. El motor de la porta, realitzarà el moviment d’obertura fins que el sensor de porta oberta sigui accionat o fins que hagi transcorregut un temps de seguretat. Un cop exhaurit aquest temps de passarà a la situació de falla de test. • Després d’obrir la porta, s’esperarà uns segons fins que l’usuari interrompi la cèl·lula fotoelèctrica per a verificar-ne el funcionament. Si passats aquests segons no s’ha rebut cap senyal de la cèl·lula, s’interpretarà que aquesta no funciona i per tant es passarà a la situació de falla de test. • Un cop oberta la porta, l’usuari tindrà un temps per a interrompre el feix de la cèl·lula. Si passats aquest temps no s’ha rebut cap senyal de la cèl·lula, es passarà a la situació de falla de test. • Al passar correctament el test de la cèl·lula, el motor de la porta realitzarà el moviment de tancament fins que el sensor de porta tancada sigui accionat, si
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 25 transcorregut un temps de seguretat no es rep el senyal esperat es passarà a la situació de falla de test. Si s’arriba a la situació de falla de test, el sistema farà el següent: • Aturar els dos motors de la maqueta. • Mostrar la lletra “E” en el display 7-segments. • L’ascensor no respondrà a cap ordre que sigui donada pitjant els polsadors ni a l’activació (forçada per part d’algun usuari) de cap dels sensors i actuadors. • La única manera de sortir d’aquesta situació és mitjançant el polsador de reset situat a la placa interfície. Al accionar aquest polsador, el sistema realitzarà la rutina d’inicialització que portarà l’ascensor a una posició inicial coneguda. Els diferents temps de seguretat mencionats en els punts anteriors es quantificaran al realitzar les proves de funcionament del nou prototip. 3.2.4. Solució comú per a la creació dels dos sistemes Dels dos subapartats anteriors a part de conèixer les funcions de cada sistema i com voldrem que treballin, hem extret les conclusions que els sistemes de vigilància i de manteniment hauran d’estar a la placa d’interfície, i que hauran de monitoritzar els senyals que són enviats des de la maqueta cap a la placa d’Altera i viceversa. Inicialment, el que es té és el següent: Maqueta Placa Altera Placa Interficie Alimentació Sortides Maqueta / Entrades Altera Entrades Maqueta / Sortides Altera Fig. 5.4. Esquema d’entrades i sortides inicial
Pàg. 32 Memòria • Conversor analògic-digital. • Port de comunicació sèrie. En la següent figura es pot veure l’encapsulat del PIC16F73 i el seu diagrama de blocs, on s’aprecia el funcionament intern del microprocessador. Per a una informació més complerta, es pot consultar a la documentació del CD adjunt, el “PIC167X Data sheet”, el llibre de característiques tècniques d’aquest model de microcontrolador, juntament amb el “PICmicro Mid-Range MCU Family Reference Manual”, el llibre on s’expliquen les característiques del PIC de gamma mitja. Fig. 6.1. Encapsulat i diagrama de blocs del PIC16F73
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 33 5. Disseny de la nova placa electrònica El disseny de la nova placa electrònica s’ha realitzat amb el paquet de software de disseny de circuits electrònics Orcad. Aquest paquet inclou entre altres, un programa per a la realització d’esquemàtics anomenat “Capture CIS” i un altre per a la realització de plaques de circuit imprès anomenat “Layout Plus”. Tots dos softwares estan relacionats entre sí per tal de facilitar el pas del disseny teòric o d’esquemes al disseny físic de la placa de circuit imprès. 5.1. Esquemàtics : disseny teòric 5.1.1. Font d’alimentació Durant l’estudi de la solució a les limitacions de la font d’alimentació de l’antiga placa d’interfície a l’apartat 5.1 s’ha presentat com serà la nova font d’alimentació. S’ha conservat l’esquema de l’antiga font d’alimentació per alimentar les làmpades dels polsadors a 9V i tots els elements lògics a 5V, i s’ha separat l’alimentació dels motors a 9V amb un transformador propi per evitar interferències en els llums dels polsadors. Tal i com s’ha explicat a l’apartat 5.3, per protegir els motors s’utilitzarà el conversor analògic/digital del microcontrolador per a mesurar la caiguda de la tensió a la sortida del rectificador de la font d’alimentació de la que pengen els motors. Aquesta tensió fluctua quan es produeix consum per part dels motors. Com més gran és la càrrega que han de vèncer els motors, més potencia consumeixen i per tant major consum i major fluctuació de la tensió en aquest punt. El voltatge en aquest punt és d’aproximadament 20,4V, el voltatge d’entrada al conversor A/D del microprocessador no pot ser superior a la d’alimentació d’aquest, 5V. Per tant cal utilitzar un divisió de tensió per tal que la tensió màxima que rebi el conversor A/D no sobrepassi els 5V. Aquest divisor de tensió constarà de dues resistències posades en sèrie entre la sortida del pont de díodes i terra, tal i com mostra la següent figura:
Pàg. 34 Memòria El valor de les resistències s’ha de calcular tenint en compte que es vol un voltatge inferior als 5V, ja que aquesta és la tensió màxima que admet el conversor del PIC. S’utilitza la formula per al càlcul del voltatge en un divisor de voltatge resistiu: ( ) V RR R Vconv 4,20 1918 19 • + = Utilitzant R19 = 1K i R18 = 4K, s’obté un valor teòric de Vconv = 4,08V, que a la pràctica pot variar unes dècimes depenent de la precisió de les resistències utilitzades. 5.1.2. Connectors, driver motors, 7-segments. La nova placa interfície, a part de tenir la funció d’alimentar la maqueta, ha de fer d’adaptador entre aquesta i el sistema encarregat de controlar el funcionament de l’ascensor, en aquest cas la placa d’Altera. A més com que es vol monitoritzar i quan sigui convenient modificar els senyals que s’envien la maqueta i la placa d’Altera, es fara passar els senyals que van d’un element a l’altre per un microcontrolador. Aquest microcontrolador els monitoritzarà i, si és necessari, modificarà. Per tal de diferenciar-los, tots els senyals de sortida de la maqueta i de sortida d’Altera, que seran entrades del microprocessador, s’han marcat en color blau en els esquemàtics, i tots els senyals d’entrada a la maqueta i d’entrada a Altera, que seran sortides del microprocessador, s’han marcat en color verd. Quan es parla de la funció d’adaptador entre la maqueta i la placa d’Altera, s’està referint a les connexions entre una i altra. Hi ha un connector que va de la maqueta a la placa interfície que porta tots els senyals d’entrada i sortida de la maqueta. Aquests senyals després de passar per el microprocessador, van a parar a dos connectors que van de la Fig. 7.1. Divisor resistiu a la font d’alimentació dels motors
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 35 placa interfície a la placa d’Altera. La placa d’interfície té la funció de fer que els senyals procedents d’un costat puguin ser dirigits cap a l’altra i viceversa. De la maqueta arriba un únic gran connector de 80 pins al que hi ha connectades 74 senyals que són d’entrada o sortida de la maqueta i d’alimentació dels diferents elements. Els que entren a la maqueta (de color verd) són els senyals encarregats d’encendre les làmpades dels polsadors, i els que en surten (de color blau) són els senyals que indiquen si un polsador està premut o no, i si els microinterruptors o sensors de planta i la barrera òptica de la cabina estan activats o no. Per tal de suportar la demanda de les làmpades, s’utilitzen drivers del tipus ULN2003A, el seu datasheet es troba al CD adjunt. Aquest esquemàtic no ha variat respecte al disseny de la antiga placa d’interfície: De la placa d’Altera arriben dos connectors, els esquemàtics dels quals tampoc han variat respecte la versió antiga de la placa d’interfície. Al igual que el que s’ha comentat per l’esquemàtic anterior, s’han marcat en verd i el blau els senyals segons si són entrades o sortides de la maqueta i la placa d’Altera. Pel que fa al driver dels motors, al no haver-hi cap problema també s’ha respectat el disseny anterior, canviant els colors dels senyals, segons si són entrades o sortides. Aquests esquemàtics, juntament amb tots els demés poden ser consultats a l’Annex. Fig. 7.2. Esquemàtic del connector que prové de la maqueta
Pàg. 36 Memòria 5.1.3. Entrades i sortides : Registre de desplaçament En el punt 5.2.4, s’ha introduït el problema que es deriva de l’elevat nombre d’entrades i sortides que s’han de tractar. S’ha decidit fer passar tots els senyals pel microprocessador, i aquest els tractarà d’una manera o d’una altra depenent de la funció que estigui realitzant. Per tal de tenir el control des del microcontrolador de tots els senyals, el millor és que tots passin a través d’ell, que aquest els monitoregi i si cal en canviï el valor, i després els tregui. Això provoca que es dobli el nombre de senyals ja que s’haurà de captar un conjunt de 45 entrades, tractar-les, i treure un nou conjunt de 45 sortides. En total, es té un conjunt de 90 senyals entre els que entren i els que surten del microprocessador. És important tenir en consideració i entendre que els senyals de sortida del microprocessador són els mateixos que els d’entrada després de ser tractats. Fins i tot seran exactament iguals quan el microprocessador només es dediqui a fer que el conjunt treballi com l’antiga placa d’interfície, sense sistema de seguretat ni de test, només fent d’enllaç entre la maqueta i la placa d’Altera. En aquest cas haurà de ser com si el microprocessador no hi fos, com si fos transparent i els senyals només passessin a través seu, com si fos una continuació de la pista electrònica per la que passa cada senyal. Utilitzar un microcontrolador que tingui 90 pins dedicats exclusivament a entrades i sortides, n’encareix el cost, i a més, dins de la família de microcontroladors que s’ha pensat utilitzar no n’hi ha cap amb aquesta característica. Per tant s’ha de pensar en algun sistema que permeti fer entrar i sortir un nombre tant elevat de senyals del microprocessador, utilitzant un nombre de pins més reduït. Una possible solució és el multiplexat de les entrades i de les sortides, però no s’han trobat multiplexors tan grans al mercat. A més no ofereixen la possibilitat de treballar en cadena i enllaçar un amb un altre, sinó que s’hauria de realitzar una multiplexació de multiplexors i complicaria molt les operacions al augmentar el nombre de senyals de control, i a més s’augmentaria els temps de lectura i escriptura. La solució que s’ha triat és treballar amb registres de desplaçament. Els registres de desplaçament estàndards que es poden trobar al mercat normalment són d’entrada o de sortida, i el seu funcionament és senzill:
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 37 Si el registre és d’entrada, a l’interior de cada chip, hi ha un registre de tantes posicions com entrades te el chip, normalment 8. Aquests registres tenen 8 entrades que es carreguen en paral·lel i una sortida on les dades carregades surten en sèrie. Mitjançant un senyal de càrrega (LD), el registre es carrega amb els valors lògics que hi ha als pins d’entrada. Un cop carregat el registre, mitjançant un senyal d’habilitació (EN) el contingut de les 8 posicions del registre, va desplaçant-se un lloc a la dreta (referit a la figura) per cada període de rellotge que rep (CLK). Així doncs, al cap d’un període de rellotge, el contingut de R7 ha sortit per RS, el de R6 ha passat a R7, el de R5 ha passat a R6 i així amb els demés. R0 s’ha omplert amb el valor de RE. D’aquesta manera, al cap de 8 períodes de rellotge, el contingut dels 8 senyals ha sortit per RS. Connectant la sortida RS d’un registre a l’entrada RE (entrada sèrie auxiliar) d’un altre, s’estan posant en sèrie i creant un registre de desplaçament de 16 posicions. Per a poder llegir el contingut de les 16 posicions enlloc de 8 períodes de rellotge en seran necessaris 16. Treballant amb els chips d’aquesta manera, es poden arribar a fer registres de desplaçament de tantes posicions com es vulgui (sempre múltiples de 8). Els registres de sortida de 8 bits tenen entrada sèrie, i 8 sortides en paral·lel. El primer que es fa és carregar en sèrie al registre les dades que es volen enviar, a través del pin d’entrada RE. Mitjançant el senyal d’habilitació (EN), a cada cicle de rellotge (CLK) es posa una dada a RE i al cap de 8 cicles, tot el registre està carregat amb la informació que es vol transmetre. En aquest moment es passa el contingut del registre a les sortides mitjançant el senyal de càrrega (LD). Posant els registres de sortida en sèrie amb l’ajut d’una sortida sèrie auxiliar, també es poden crear registres més grans adequats a les necessitats que es tingui. A part dels registres de desplaçament estàndard, n’hi ha d’especials fets a mida per a determinades aplicacions. És el cas d’un ASIC (Application Specific Integrated Circuit) que el Departament d’Electrònica de la ETSEIB va desenvolupar per a una empresa. Es tracta EN RS CLK R0 R1 R2 R3 R4 R5 R6 R7 Entrades o Sortides RE LD Fig. 7.3. Esquema d’un registre de desplaçament
Pàg. 38 Memòria d’un chip que pot treballar en 2 modes diferents. Un d’aquests dos modes es pot aplicar en aquest cas, ja que es tracta d’un registre de desplaçament de 32 posicions, on cada pin és autoconfigurable, és a dir que cada pin és capaç de “detectar” si ha de treballar com a entrada o com a sortida. Utilitzant 3 unitats d’aquest registre de desplaçament connectades en sèrie, es pot realitzar un gran registre de desplaçament amb capacitat per a cobrir les 90 entrades i sortides en un sol registre. D’aquesta manera al tenir les entrades i sortides concentrades en 3 chips s’aconsegueix una reducció del tamany de la nova placa d’interfície respecte al tamany que tindria si s’utilitzen els 12 chips que es necessitarien amb els registres estàndard, Aquests ASICs han estat els escollits a l’hora de fer el primer prototip, però com es pot veure més endavant a la memòria, finalment s’ha hagut de fer un segon prototip utilitzant registres de desplaçament estàndards per a solucionar els problemes derivats de la utilització dels ASIC. L’esquemàtic del primer prototip es pot consultar a l’apartat 9.1 de la memòria, i el que es comentarà ara és l’esquemàtic del segon prototip. Amb els registres de desplaçament estàndards el que s’ha fet és crear dos grans registres de desplaçament, un per les entrades, i l’altre per les sortides. El model de registre de desplaçament d’entrada que s’ha utilitzat és el 74HC165A, el datasheet del qual es pot trobar al Cd adjunt. Es tracta d’un registre de 8bits d’entrada en paral·lel o sèrie i una sortida sèrie. Aquest és el seu diagrama lògic: Fig. 7.4. Diagrama lògic del registre de desplaçament 74HC165A
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 39 Disposa de dues entrades de rellotge, ambdues poden usar-se per a la funció de rellotge. Mantenint-ne una a nivell lògic alt es produeix una inhibició del rellotge i l’estat del registre no canvia, és com una entrada d’habilitació. Aquesta funció s’ha descartat per a aquest disseny, connectant el senyal “clock_inhibit” a GND. El pin 1 quan es connecta a nivell lògic baix serveix per a habilitar la càrrega en paral·lel cap al registre, dels valors que hi ha a les 8 entrades. Quan passa a nivell lògic alt, habilita el desplaçament dins el registre. Quan es produeix un desplaçament, el valor que hi ha a la posició H del registre surt per Qh, i els altres valors es desplacen, G passa a H, F passa a G, i successivament fins al valor A. El valor de A al produir-se el desplaçament passa a B, i la posició A és coberta per el valor de l’entrada de dades sèrie Sa. Al cap de 8 períodes de rellotge, el contingut inicial del registre ha estat enviat a través de la sortida sèrie. Si es connecta la sortida sèrie d’un registre amb la entrada sèrie es pot crear un registre de desplaçament de 16 bits. El nombre de períodes de rellotge per a fer tot el desplaçament ha de ser de tan gran com nombre de bits té el registre. Fent servir aquest recurs s’ha creat el registre de desplaçament de 48 entrades necessari per a aquest projecte: Fig. 7.5. Esquemàtic dels registres de desplaçament d’entrada
Pàg. 40 Memòria Les primeres dades a sortir per la sortida sèrie DOUT cap al PIC són les de RE1, la primera és “L_CABINA_S_A”. Com que no es necessiten totes les entrades, només 45, les tres darreres entrades s’han connectat a GND. El model emprat per al registre de sortida és el 74HC595, i al igual que amb el d’entrada , el seu datasheet es troba al CD adjunt. Aquest és un registre de 8 bits amb entrada sèrie i sortida sèrie o paral·lel, format per un registre de desplaçament i un registre d’emmagatzematge, ambdós amb rellotges separats. Les dades van entrant al registre per l’entrada DS a cada flanc de pujada del senyal d’entrada de rellotge SH_CP, al cap de 8 flancs de pujada el registre ja està carregat amb les 8 dades que ha de treure a la seva sortida. Les dades del registre de desplaçament passen al registre d’emmagatzematge en un flanc de pujada del senyal d’entrada de rellotge ST_CP, i d’aquesta manera les dades ja surten per les sortides corresponents. Amb aquest sistema es pot tornar a carregar el registre de desplaçament sense afectar a les sortides, que ens interessa que estiguin sempre actives amb el darrer valor que han rebut. També disposa d’un reset asíncron actiu per nivell baix per al registre de desplaçament, i que s’ha inutilitzat connectant-lo a 5V. Les 8 sortides del registre d’emmagatzematge són de 3 estats, 5V, GND i alta impedància, aquest últim generat quan el senyal “OE”, habilitació de la sortida, es troba connectat a 5V. En l’esquemàtic es pot veure que OE s’ha connectat a GND per a evitar aquest estat d’alta impedància, ja que es vol que els senyals de sortida mantinguin sempre el seu valor fins que aquest no canviï a conseqüència d’una escriptura per part del PIC. Poden connectar-se varis registres de desplaçament mitjançant l’entrada sèrie DS i la sortida sèrie Q7’, Així, connectant 6 chips s’ha aconseguit un registre de sortida de 48 pins.
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 41 5V 5V 5V 5V 5V 5V 5V 5V 5V 5V 5V 5V MAIN CKOUT L_CABINA_PB_E_M L_CABINA_P2_E_M L_CABINA_P4_E_M P_PB_PUJAR_E_A P_P1_BAIXAR_E_A P_P1_PUJAR_E_A P_P2_PUJAR_E_A MAIN CKOUT CKOUT MAINMAIN CKOUT CKOUT MAINMAIN CKOUT P_P3_BAIXAR_E_A P_P3_PUJAR_E_A P_CABINA_P1_E_A P_CABINA_PB_E_A P_P4_BAIXAR_E_A P_CABINA_P2_E_A P_CABINA_P3_E_A P_CABINA_P4_E_A L_CABINA_P1_E_M L_P3_PUJAR_E_M L_P1_PUJAR_E_M L_P1_BAIXAR_E_M L_P2_BAIXAR_E_M L_P3_BAIXAR_E_M L_P4_BAIXAR_E_M G_7SEG_E_M L_CABINA_P3_E_M M_PRINC1_E_M M_PRINC2_E_M M_PORTA1_E_M M_PORTA2_E_M RDIN F_7SEG_E_M B_7SEG_E_M BARRERA_P3_E_A C_7SEG_E_M BARRERA_P2_E_A FC_TANCAT_E_A D_7SEG_E_M BARRERA_P1_E_A CEL_LULA_E_A FC_OBERT_E_A E_7SEG_E_M BARRERA_PB_E_A A_7SEG_E_M L_PB_PUJAR_E_M L_P2_PUJAR_E_M BARRERA P4_E_A P_P2_BAIXAR_E_A GND R32150 R30150 R28150 R26150 R34150 C13 10nF C12 10nF C11 10nF C10 10nF C910nF C8 10nF U15 74HC595 14 11 10 12 13 15 1 2 3 4 5 6 79 16 8 DS SH_CP MR ST_CP OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7 VCC GND U12 74HC595 14 11 10 12 13 15 1 2 3 4 5 6 79 16 8 DS SH_CP MR ST_CP OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7 VCC GND U13 74HC595 14 11 10 12 13 15 1 2 3 4 5 6 79 16 8 DS SH_CP MR ST_CP OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7 VCC GND R36150 R38150 R48150 R46150 R44150 R42150 R55150 R53150 R52150 R50150 R60150 R58150 R56150 R64 150R62150 U14 74HC595 14 11 10 12 13 15 1 2 3 4 5 6 79 16 8 DS SH_CP MR ST_CP OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7 VCC GND U17 74HC595 14 11 10 12 13 15 1 2 3 4 5 6 79 16 8 DS SH_CP MR ST_CP OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7 VCC GND R39 150 U16 74HC595 14 11 10 12 13 15 1 2 3 4 5 6 79 16 8 DS SH_CP MR ST_CP OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7 VCC GND R23 R R54 150 R24 150 R21 150 R33 150 R31 150 R29 150 R27 150 R35 150 R37 150 R47 150 R45 150 R43 150 R40 150 R51 150 R49 150 R59 150 R57 150 R63 150 R61 150 R25 150 R41 150 R20150 R22150 Com a mesura de seguretat, s’han posat unes resistències limitadores de la intensitat de sortida a cadascun dels pins de sortida dels 74HC595. Segons els seu datasheet, la seva resistència interna de sortida és de 50 Ω. I el corrent de sortida de cada pin és de 25 mA. Sabent la resistència de sortida del chip, i la intensitat màxima que ha de passar-hi, es troba el valor Zlim = 150 Ω. Fig. 7.6. Esquemàtic dels registres de desplaçament de sortida Zout = 50 Ω . Zlim 5V Fig. 7.7. Esquema per al càlcul de les resistències limitadores de corrent
Pàg. 48 Memòria Fig. 7.12. Disposició dels elements a la placa
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 49 6. Programació del microcontrolador 6.1. Elecció del llenguatge de programació Tal i com s’ha comentat amb anterioritat, aquesta gamma de microcontroladors, els PIC, estan molt estesos entre els consumidors sobretot per la gran quantitat d’eines de desenvolupament de que disposen. Això fa que hi hagi varis programes i també varis llenguatges de programació disponibles. Microchip, el fabricant dels PIC, aposta per dos llenguatges de programació, l’Ensamblador, amb el software MPLAB IDE v. x.xx i el C, amb el software MPLAB Cyy. El llenguatge Ensamblador és un llenguatge de baix nivell i, si es domina, representa un estalvi considerable de codi a l’hora de realitzar un programa, optimitza el tamany de la memòria que ocupa, i, el més important, la seva execució és molt ràpida. A més, el conjunt d’instruccions dels PIC és reduït, cosa que simplifica l’aprenentatge. El llenguatge C és un llenguatge d’alt nivell, no és tan proper al codi màquina usat per el microprocessador. És utilitzat per a fer programes més complexes per a PICs de la gamma alta, ja que és un llenguatge més conegut i que té molts recursos de programació. Tot i això, el que es guanya en comoditat a l’hora de programar, es perd en eficiència i temps d’execució, ja que els compiladors, que passen de llenguatge C a codi màquina, al fer aquesta conversió augmenten el tamany del programa i per tant en disminueixen la velocitat. A part de Microchip, hi ha varies empreses que tenen els seus softwares per al desenvolupament en C de programes i els seus propis compiladors. En aquest projecte, s'ha optat per a utilitzar el llenguatge Ensamblador per tal d’aprofitar la oportunitat de conèixer aquest llenguatge, per que es té un millor i precís control de les temporitzacions, i per que es tracta de la eina de la que més informació facilita el fabricant del PIC. El software utilitzat per al desenvolupament del programa és el que proporciona Microchip, el programa MPLAB IDE v.5.70. És tracta d’un software molt complet amb un compilador ràpid, i amb unes molt bones opcions de simulació que faciliten la labor del programador perfeccionant el programa abans de provar-lo al chip.
Pàg. 50 Memòria 6.2. Definició de variables i posicions de memòria El primer que es troba en un programa en Ensamblador són dues línies com les següents: list p=16f73 #include <P16F73.INC> La primera serveix per a definir amb quin model de pic s’està treballant, i la segona inclou en el programa tota les definicions de les posicions dels registres de funció especial, dins el mapa de memòria de dades del PIC,. Aquest registres son registres usats pel la CPU del microcontrolador i els mòduls perifèrics per controlar les operacions desitjades del dispositiu. La memòria de dades en aquest model de PIC esta partida en 4 bancs que contenen els registres de caràcter general i els registres de funció especial, tots de 8bits de longitud. Mitjançant els bits 6 i 5 del registre de funció especial STATUS, es selecciona en quin banc de la memòria es vol treballar. La següent imatge mostra els 4 bancs de memòria, amb els registres de funció especial, i les zones reservades per als registres de caràcter general : Fig. 8.1. Mapa de memòria del PIC16F73
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 51 Després, en el programa es troba la definició de “variables”, on el que es fa és assignar a cadascuna de les variables que s’utilitzaran al llarg del programa un registre de caràcter general, una posició en la memòria de dades. En el següent exemple, s’assigna a AUX_IN, AUX_OUT i CONTADOR els registres que hi ha a les posicions de memòria 2Dh fins a 2Fh: AUX_IN EQU 0x2D AUX_OUT EQU 0x2E CONTADOR EQU 0x2F A continuació arriba la capçalera que defineix la posició de les instruccions a la memòria de programa: ORG 0 goto inici ORG 4 goto interrupcio ORG 5 inici En el moment en que es genera un reset, el vector de reset apunta a la posició 0 de memòria, és a dir, que en el moment en que es produeix el reset, el programa és conduït a la instrucció que hi ha a la posició 0, ORG 0, que en aquest cas és la instrucció “goto inici”, vés a la rutina inici. Si el que es produeix durant el programa és una interrupció generada per qualsevol de les causes que la poden causar, llavors el vector d’interrupció apunta a la instrucció que hi ha a la posició 4 de memòria, ORG 4, en el cas de l’exemple, “goto interrupcio” , vés a la rutina interrupció. Amb ORG 5 i a continuació “inici” el que s’està fent és indicar que a la posició 5 hi ha la rutina inici, i a partir d’aquí en avall, cada línia del programa correspon a una nova posició de memòria de programa.
Pàg. 52 Memòria 6.3. Configuració del PIC Les primeres instruccions que hi ha a partir de la posició 5 de la memòria de programa, són utilitzades per a configurar el microprocessador. Aquí es dona valor als Registres de Funció Especial, i així es configuren per exemple si s’activen o no les interrupcions, i en el cas que s’activin, quins dels diferents tipus d’interrupcions es faran servir, també es pot activar el conversor analògic-digital, els comptadors o timers, ... en definitiva, es configuren tots els perifèrics i mòduls que té el PIC que s’està utilitzant. Un petit exemple extret del programa final: movlw 0x81 ;Configurem CAD ADCON0=10000001=81 movwf ADCON0 ;Rellotge CAD Fosc/32, CAD activat pin RA0 clrf ADRES Al donar al registre ADCON el valor 81h, s’està fent que el rellotge del conversor A/D tingui una freqüència d’oscil·lació igual a la freqüència del rellotge del PIC dividida de 32. També s’està activant el conversor i fent que aquest treballi llegint la tensió del pin RA0. Per a més informació sobre el funcionament del conversor A/D veure la pàgina 89 del “PIC16F7X DATA SHEET” que es troba al CD adjunt. 6.4. Descripció del programa 6.4.1. Rutina principal : elecció del mode de funcionament. Segons es desprèn de l’estudi fet al capítol 5, el microcontrolador haurà d’actuar de 3 maneres diferents: 1. Mode transparent : es vol tenir la possibilitat de que la nova placa actuï com l’antiga, fent només la funció d’adaptador o connector entre la maqueta i la placa d’Altera. En aquest mode de funcionament, el pic el que farà és rebre les dades i enviar-les tal i com li han arribat, sense modificar-les excepte per a la incorporació d’un pwm.
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 53 2. Mode vigilància : el microprocessador ha de rebre les dades, determinar amb la informació que aquestes li proporcionen si la maqueta es troba en una de les situacions conflictives definides, i en el cas de que sigui així, bloquejar-ne el funcionament, modificant les dades de sortida. Mentre no es detecti cap de les situacions conflictives, les dades sortiran sense ser modificades, al igual que en el mode transparent. 3. Mode test : el microprocessador, passarà uns tests amb l’ajuda de l’usuari per a verificar el correcte funcionament dels elements electromecànics de la maqueta. Per a escollir el mode de funcionament del microprocessador s’utilitzen els interruptors que hi ha connectats a les entrades dels pins 6 i 7 del PORTB. El programa, un cop feta la inicialització i configuració del PIC, entra en un bucle que serveix per a escollir el mode de funcionament. Depenent del valor de RB6 i RB7, hi haurà 4 possibles maneres de sortir d’aquest bucle, que portaran als 3 modes de funcionament. Aquest diagrama de blocs explica el funcionament d’aquesta part del programa: Fig. 8.2. Diagrama de blocs de l’elecció mode de funcionament
Pàg. 54 Memòria 6.4.2. Rutina de lectura i escriptura. Si s’analitza amb cura les funcions que han de realitzar els tres subprogrames, es pot observar que la funció principal i comú que tenen tots tres és la de rebre i enviar dades. Tots ells parteixen de la base de que han d’obtenir les dades, i enviar-les, ja sigui havent-les analitzat, o modificat, o sense haver-hi fet res. S’ha creat una rutina encarregada de fer la lectura i l’escriptura de dades en els registres de desplaçament. L’adquisició i l’escriptura es realitzen de manera simultània, s’ha començat treballant així en el primer prototipus degut a que la primera versió del programa s’ha fet treballant amb els ASIC com a registre de desplaçament. En aquest primer disseny, els ASIC formen un gran registre de desplaçament que adquireix les 45 dades d’entrada i envia les 45 dades de sortida a la vegada. En un primer cicle de desplaçament, s’adquireixen les entrades i s’envia unes sortides que generin una mena de estat inicial (làmpades apagades, motors parats,...), en el següent cicle de desplaçament, es llegeix l’estat de les entrades i es posa a les sortides l’estat de les entrades obtingut en el període anterior, un cop tractades per el microprocessador. Al adaptar el programa per al segon prototip, que té un separats els registres de desplaçament per a adquirir les dades i per a enviar-les, s’ha vist que al utilitzar la mateixa estructura de enviar i rebre a la vegada, es guanya temps, i en un cicle de desplaçament de 48 períodes de rellotge, es realitza la lectura i escriptura. El següent gràfic mostra el que s’acaba d’explicar, cada color correspon a un enviament i recepció de dades: Període T1 Període T2 Període T3 Període T0 Llegeix T0 Escriu Ini Llegeix T1 Escriu T0’ Llegeix T2 Escriu T1’ Llegeix T3 Escriu T2’ Fig. 8.3. Distribució temporal de la lectura i escriptura en el registre de desplaçament
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 55 Aquesta forma de tractar les dades és la més ràpida possible. Una altra opció és la de llegir les dades, tractar-les, enviar-les i tornar a llegir, però així es perd un temps que podria arribat a influir en el funcionament del conjunt. Les dades s’han organitzat en registres de 8 bits a la memòria, 6 registres per a les dades que es llegeixen i 6 més per a les dades que s’han d’escriure. L’ordre de les dades en aquestes paraules s’ha tret de l’ordre en que estan connectats els senyals als connectors. Per a facilitar la feina de programació, l’ordre dels senyals en les registres d’entrada i els de sortida és el mateix, així si per exemple es treballa en mode transparent, la única operació que s’ha de fer és copiar els valors dels registres d’entrada als de sortida. La següent taula mostra els registres amb el senyal que correspon a cada posició i la seva descripció. REGISTRE BIT NOM ASSOCIAT DESCRIPCIÓ 7 L_CABINA_PB_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum CABINA PB. 0 apagar. 6 L_CABINA_P2_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum CABINA P2. 0 apagar. 5 L_CABINA_P4_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum CABINA P4. 0 vol apagar. 4 P_PB_PUJAR_S_M Entrada a PIC prov. de la maqueta. 1 Polsador pujar pb premut. 0 no premut. 3 P_P1_BAIXAR_S_M Entrada a PIC prov. de la maqueta. 1 Polsador baixar p1 premut. 0 no premut. 2 P_P1_PUJAR_S_M Entrada a PIC prov. de la maqueta. 1 Polsador pujar p1 premut. 0 no premut. 1 P_P2_PUJAR_S_M Entrada a PIC prov. de la maqueta. 1 Polsador pujar p2 premut. 0 no premut. REG_IN_1 0 P_P2_BAIXAR_S_M Entrada a PIC prov. de la maqueta. 1 Polsador baixar p2 premut. 0 no premut. 7 P_P3_BAIXAR_S_M Entrada a PIC prov. de la maqueta. 1 Polsador baixar p3 premut. 0 no premut. 6 P_P3_PUJAR_S_M Entrada a PIC prov. de la maqueta. 1 Polsador pujar p3 premut. 0 no premut. 5 P_P4_BAIXAR_S_M Entrada a PIC prov. de la maqueta. 1 Polsador baixar p4 premut. 0 no premut. 4 P_CABINA_PB_S_M Entrada a PIC prov. de la maqueta. 1 Polsador cabina pb premut. 0 no premut. 3 P_CABINA_P1_S_M Entrada a PIC prov. de la maqueta. 1 Polsador cabina p1 premut. 0 no premut. 2 P_CABINA_P2_S_M Entrada a PIC prov. de la maqueta. 1 Polsador cabina p2 premut. 0 no premut. 1 P_CABINA_P3_S_M Entrada a PIC prov. de la maqueta. 1 Polsador cabina p3 premut. 0 no premut. REG_IN_2 0 P_CABINA_P4_S_M Entrada a PIC prov. de la maqueta. 1 Polsador cabina p4 premut. 0 no premut. 7 BARRERA_PB_S_M Entrada a PIC prov. de la maqueta. 1 si el microinterruptor de PB activat (ascensor a PB). 6 BARRERA_P1_S_M Entrada a PIC prov. de la maqueta. 1 si el microinterruptor de P1 activat (ascensor a P1). 5 BARRERA_P2_S_M Entrada a PIC prov. de la maqueta. 1 si el microinterruptor de P2 activat (ascensor a P2). 4 BARRERA_P3_S_M Entrada a PIC prov. de la maqueta. 1 si el microinterruptor de P3 activat (ascensor a P3). 3 BARRERA_P4_S_M Entrada a PIC prov. de la maqueta. 1 si el microinterruptor de P4 activat (ascensor a P4). 2 FC_OBERT_S_M Entrada a PIC prov. de la maqueta. 1 porta oberta, sensor final carrera activat. 1 FC_TANCAT_S_M Entrada a PIC prov. de la maqueta. 1 porta tancada, sensor final carrera activat. REG_IN_3 0 L_CABINA_P1_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum CABINA P1. 0 vol apagar. 7 L_P3_PUJAR_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum P3 PUJAR. 0 vol apagar. 6 L_P2_PUJAR_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum P2 PUJAR. 0 vol apagar. 5 L_P1_PUJAR_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum P1 PUJAR. 0 vol apagar. 4 L_PB_PUJAR_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum PB PUJAR. 0 vol apagar. 3 L_P1_BAIXAR_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum P1 BAIXAR. 0 vol apagar. 2 L_P2_BAIXAR_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum P2 BAIXAR. 0 vol apagar. 1 L_P3_BAIXAR_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum P3 BAIXAR. 0 vol apagar. REG_IN_4 0 L_P4_BAIXAR_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum P4 BAIXAR. 0 vol apagar. 7 G_7SEG_S_A Entrada a PIC prov. d'Altera. 0 Altera vol encendre llum segment G. 1 vol apagar. 6 F_7SEG_S_A Entrada a PIC prov. d'Altera. 0 Altera vol encendre llum segment F. 1 vol apagar. 5 E_7SEG_S_A Entrada a PIC prov. d'Altera. 0 Altera vol encendre llum segment E. 1 vol apagar. 4 D_7SEG_S_A Entrada a PIC prov. d'Altera. 0 Altera vol encendre llum segment D. 1 vol apagar. 3 C_7SEG_S_A Entrada a PIC prov. d'Altera. 0 Altera vol encendre llum segment C. 1 vol apagar. 2 B_7SEG_S_A Entrada a PIC prov. d'Altera. 0 Altera vol encendre llum segment B. 1 vol apagar. 1 A_7SEG_S_A Entrada a PIC prov. d'Altera. 0 Altera vol encendre llum segment A. 1 vol apagar. REG_IN_5 0 CEL.LULA_S_M Entrada a PIC prov. de la maqueta. 1 si feix de llum de cèl·lula és interromput.
Pàg. 56 Memòria REGISTRE BIT NOM ASSOCIAT DESCRIPCIÓ 7 L_CABINA_P3_S_A Entrada a PIC prov. d'Altera. 1 Altera vol encendre llum CABINA P3. 0 apagar. 6 M_PRINC1_S_A Entrada a PIC prov. d'Altera. 1 Altera vol accionar motor principal sentit ascendent. 5 M_PRINC2_S_A Entrada a PIC prov. d'Altera. 1 Altera vol accionar motor principal sentit descendent. 4 M_PORTA1_S_A Entrada a PIC prov. d'Altera. 1 Altera vol accionar motor porta en sentit ascendent. 3 M_PORTA2_S_A Entrada a PIC prov. d'Altera. 1 Altera vol accionar motor porta en sentit descendent. 2 1 REG_IN_6 0 7 L_CABINA_PB_E_M Sortida de PIC cap a la maqueta. 1 encén bombeta CABINA PB. 6 L_CABINA_P2_E_M Sortida de PIC cap a la maqueta. 1 encén bombeta CABINA P2. 5 L_CABINA_P4_E_M Sortida de PIC cap a la maqueta. 1 encén bombeta CABINA P4. 4 P_PB_PUJAR_E_A Sortida de PIC cap a Altera. 1 Polsador pujar pb premut. 0 no premut. 3 P_P1_BAIXAR_E_A Sortida de PIC cap a Altera. 1 Polsador baixar p1 premut. 0 no premut. 2 P_P1_PUJAR_E_A Sortida de PIC cap a Altera. 1 Polsador pujar p1 premut. 0 no premut. 1 P_P2_PUJAR_E_A Sortida de PIC cap a Altera. 1 Polsador pujar p2 premut. 0 no premut. REG_OUT_1 0 P_P2_BAIXAR_E_A Sortida de PIC cap a Altera. 1 Polsador baixar p2 premut. 0 no premut. 7 P_P3_BAIXAR_E_A Sortida de PIC cap a Altera. 1 Polsador baixar p3 premut. 0 no premut. 6 P_P3_PUJAR_E_A Sortida de PIC cap a Altera. 1 Polsador pujar p3 premut. 0 no premut. 5 P_P4_BAIXAR_E_A Sortida de PIC cap a Altera. 1 Polsador baixar p4 premut. 0 no premut. 4 P_CABINA_PB_E_A Sortida de PIC cap a Altera. 1 Polsador cabina pb premut. 0 no premut. 3 P_CABINA_P1_E_A Sortida de PIC cap a Altera. 1 Polsador cabina p1 premut. 0 no premut. 2 P_CABINA_P2_E_A Sortida de PIC cap a Altera. 1 Polsador cabina p2 premut. 0 no premut. 1 P_CABINA_P3_E_A Sortida de PIC cap a Altera. 1 Polsador cabina p3 premut. 0 no premut. REG_OUT_2 0 P_CABINA_P4_E_A Sortida de PIC cap a Altera. 1 Polsador cabina p4 premut. 0 no premut. 7 BARRERA_PB_E_A Sortida de PIC cap a Altera. 1 si el microinterruptor de PB esta activat (ascensor a PB). 6 BARRERA_P1_E_A Sortida de PIC cap a Altera. 1 si el microinterruptor de P1 esta activat (ascensor a P1). 5 BARRERA_P2_E_A Sortida de PIC cap a Altera. 1 si el microinterruptor de P2 esta activat (ascensor a P2). 4 BARRERA_P3_E_A Sortida de PIC cap a Altera. 1 si el microinterruptor de P3 esta activat (ascensor a P3). 3 BARRERA_P4_E_A Sortida de PIC cap a Altera. 1 si el microinterruptor de P4 esta activat (ascensor a P4). 2 FC_OBERT_E_A Sortida de PIC cap a Altera. 1 porta oberta, sensor final carrera activat. 1 FC_TANCAT_E_A Sortida de PIC cap a Altera. 1 porta tancada, sensor final carrera activat. REG_OUT_3 0 L_CABINA_P1_E_M Sortida de PIC cap a la maqueta. 1 encén bombeta CABINA P1. 7 L_P3_PUJAR_E_M Sortida de PIC cap a la maqueta. 1 encén bombeta P3 PUJAR. 6 L_P2_PUJAR_E_M Sortida de PIC cap a la maqueta. 1 encén bombeta P2 PUJAR. 5 L_P1_PUJAR_E_M Sortida de PIC cap a la maqueta. 1 encendre llum P1 PUJAR. 4 L_PB_PUJAR_E_M Sortida de PIC cap a la maqueta. 1 encendre llum PB PUJAR. 3 L_P1_BAIXAR_E_M Sortida de PIC cap a la maqueta. 1 encendre llum P1 BAIXAR. 2 L_P2_BAIXAR_E_M Sortida de PIC cap a la maqueta. 1 encendre llum P2 BAIXAR. 1 L_P3_BAIXAR_E_M Sortida de PIC cap a la maqueta. 1 encendre llum P3 BAIXAR. REG_OUT_4 0 L_P4_BAIXAR_E_M Sortida de PIC cap a la maqueta. 1 encendre llum P4 BAIXAR. 7 G_7SEG_E_M Sortida de PIC cap a la maqueta. 1 encendre segment G. 6 F_7SEG_E_M Sortida de PIC cap a la maqueta. 1 encendre segment F. 5 E_7SEG_E_M Sortida de PIC cap a la maqueta. 1 encendre segment E. 4 D_7SEG_E_M Sortida de PIC cap a la maqueta. 1 encendre segment D. 3 C_7SEG_E_M Sortida de PIC cap a la maqueta. 1 encendre segment C. 2 B_7SEG_E_M Sortida de PIC cap a la maqueta. 1 encendre segment B. 1 A_7SEG_E_M Sortida de PIC cap a la maqueta. 1 encendre segment A. REG_OUT_5 0 CEL.LULA_E_A Sortida de PIC cap a la maqueta. 1 si el feix de llum de la cèl·lula és interromput. 7 L_CABINA_P3_E_M Sortida de PIC cap a la maqueta. 1 encén bombeta CABINA P3. 6 M_PRINC1_E_M Sortida de PIC cap a la maqueta. 1 accionar motor principal en sentit ascendent. 5 M_PRINC2_E_M Sortida de PIC cap a la maqueta. 1 accionar motor principal en sentit descendent. 4 M_PORTA1_E_M Sortida de PIC cap a la maqueta. 1 accionar motor porta per tancar-la. 3 M_PORTA2_E_M Sortida de PIC cap a la maqueta. 1 accionar motor porta per obrir-la. 2 1 REG_OUT_6 0 Fig. 8.4. Posició de les dades en els registres de memòria del PIC
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 57 La operació més important i mes usada en el programa és la de lectura-escriptura. En cadascun dels subprogrames que formen el programa principal, s’han d’adquirir les noves dades, tractar-les i enviar-les. La diferencia entre cada subprograma es troba en la manera de tractar les dades. S’han creat uns registres auxiliars per a aquesta rutina, aquests són AUX_OUT i AUX_IN. Pel que fa a l’enviament o escriptura de les dades, es carreguen a AUX_OUT els 8 bits del registre que s’ha d’enviar, el primer serà REG_OUT_1, s’envia el bit més significatiu, el 7, i es corren tots els bits una posició a l’esquerra. Així es segueix fins que s’han enviat els 8 bits i es carrega a AUX_OUT el següent registres que es vol enviar. En la lectura, es van llegint d’un en un els bits i es van posant dins de AUX_IN. Es llegeix un bit, es posa a la posició 0 de AUX_IN i es corren tots els bits d’aquest registre una posició a l’esquerra. Es procedeix així fins que AUX_IN és ple amb 8 bits i es guarda el seu contingut en els registres REG_IN_X, on X és el nombre de registre. Els següents diagrames de blocs expliquen millor el funcionament d’aquesta rutina:
Pàg. 64 Memòria en l’apartat anterior, aquestes temporitzacions utilitzen en TMR0 com a temporitzador, i el temps del TMR0 més el temps de la rutina de lectura-escriptura són el temps en que un senyal manté el seu estat. Per tant el període del PWM en aquest cas és de aproximadament 30ms, el triple que en els altres modes de funcionament. Això pot notar-se en la velocitat de l’ascensor, però no influeix en el funcionament de la maqueta. La rutina “pwm” en aquests casos s’ha renombrat a “aux_pwm”, és exactament igual excepte que actua sobre un registre auxiliar usat per a aquestes rutines. El funcionament de la rutina PWM, sense tenir en compte les temporitzacions, el descriu el següent diagrama de blocs:
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 65 Fig. 8.6. Diagrama de blocs de la rutina PWM
Pàg. 66 Memòria 6.4.6. Conversor Analògic/Digital És un conversor d’analògic a digital de 8 bits amb una tensió de referència que pot ser interna (tensió d’alimentació) o externa (pin AN3/Vref, no pot ser superior a la d’alimentació). El conversor té diferents canals d’entrada, però se n’ha de seleccionar només un per a fer la conversió. El conversor A/D s’ha utilitzat per a mesurar la caiguda de tensió a la sortida del pont de díodes rectificador de la font d’alimentació dels motors, tal i com s’ha explicat en apartats anteriors. El valor d’entrada al conversor, mesurat a la placa, quan la maqueta està amb els motors parats i els llums apagats és de 4,2V, valor aproximat als 4,08V teòrics que s’han calculat a l’apartat 7.1.1. S’ha decidit fer servir el conversor A/D en tots els modes de funcionament del PIC, per d’aquesta manera protegir sempre els motors de possibles sobreescalfaments quan hi hagi encallades o mals funcionaments, i a la vegada protegir la maqueta de possibles trencaments quan es produeixin incidències com per exemple que s’elevi la cabina amb la porta oberta. Fins ara, degut a l’estructura del programa no s’han hagut d’utilitzar les interrupcions. Com que es vol utilitzar el conversor, i es vol que aquest funcioni sempre, s’ha programat el seu funcionament a part, fora de la rutina d’execució normal, i per això s’han fet servir les interrupcions. Una interrupció consisteix en una interrupció del programa en curs per a realitzar la rutina que correspongui a la causa que l’ha generada. Un cop finalitzada la rutina de la interrupció, es retorna al programa principal en el punt en que s’ha abandonat. Hi ha diferents esdeveniments que poden causar una interrupció en el PIC16F73: • L’activació del pin RBO/INT • El desbordament del TMR0 o del TMR1 • El mòdul CCP (capturador, comparador, pwm) • El canvi d’estat d’un dels pins del portB • El conversor A/D • Operacions amb la USART i el port paral·lel incorporats.
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 67 En el programa el que es fa és, en la part de les inicialitzacions, configurar el conversor per a que estigui activat, se li assigna el pin a través del qual ha d’adquirir el senyal a convertir, se li dona una freqüència de funcionament, s’activa la possibilitat de treballar amb interrupcions, i s’habilita només la interrupció generada per el conversor A/D. Després es dona la ordre de que comenci la primera conversió, i es comença l’execució normal del programa. El programa segueix la seva execució normal, i en el moment en que la conversió acaba es genera la interrupció i s’executa la rutina d’interrupció. Aquesta rutina s’ha programat per a obtenir el resultat de la conversió, comparar-lo amb un valor referència, i si el resultat de la conversió és major que el valor referència, el voltatge és correcte, es torna a donar la ordre de començar la conversió i es retorna de la interrupció. En el cas de que el valor de la conversió sigui inferior o igual que el valor referència, es passa a la situació d’error, s’atura tot a la maqueta i es mostra una “E” al 7-segments. El valor de voltatge de referència que s’ha decidit agafar en una primera aproximació ha estat de 13V a la sortida del rectificador. Aquest valor és lleugerament inferior als valors mesurats a l’apartat 5.3, però cal tenir present que aquests valors són valors mitjos i que el voltatge és fluctuant. Aquest valor s’ha de verificar en les proves de la placa i s’ha d’acabar d’ajustar.
Pàg. 68 Memòria
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 69 7. Prototips 7.1. Primer prototip: realització i muntatge Tal i com s’ha comentat al llarg de memòria, la versió explicada correspon a la del segon prototip. Es va fer un primer prototip basat en uns ASIC (Aplication Specific Integrated Circuit) que poden fer la funció de registres de desplaçament, dissenyats pel Departament d’Electrònica de la E.T.S.E.I.B per a una empresa. Aquests ASIC tenen 32 pins d’entrada/sortida autoconfigurables, cosa que redueix el nombre d’integrats utilitzats. Al poder utilitzar els pins com a entrada o com a sortida, es va decidir de fer un gran registre de desplaçament amb la meitat de pins treballant com a entrada i l’altra meitat com a sortida, una solució que equivaldria a posar en sèrie els 6 registres d’entrada i els 6 de sortida utilitzats al segon prototip. Per a enviar i rebre dades, calia fer un desplaçament de 96 períodes del senyal de rellotge del registre. En aquest primer prototip no es va incloure el gravador del PIC, ja que no es creia que pogués ser de tanta utilitat a l’hora de refinar el programa. Amb aquesta primera placa es va haver de treure i posar molts cops el PIC del seu sòcol i fins i tot es va arribar a fer malbé al trencar-se algun dels pins, fet que ja justifica el haver integrat el gravador en la nova placa. L’esquemàtic d’aquest gran registre de desplaçament amb tots els senyals d’entrada i sortida corresponentment marcats i amb els diferents senyals de control és el següent:
Pàg. 70 Memòria Per fer treballar l’ASIC con a registre de desplaçament, s’ha de connectar el pin LMODE a GND. El funcionament de l’ASIC com a registre de desplaçament és lleugerament diferent del funcionament dels registres de desplaçament estàndards. L’ASIC supervisa 32 senyals programables d’entrada/sortida amb camp (IO0 a IO31) i el seu canal sèrie associat. Aquest canal és controlat per un senyal d’habilitació (MAIN) i un senyal de rellotge (CK). A través d’ell l’ASIC envia les dades llegides pels pins configurats com a entrada i rep les dades que han de ser enviades pels pins configurats com a sortides. Aquestes dades es transmeten mitjançant trames de 32 bits, un bit per entrada/sortida. El pin RDIN rep la trama de 32 bits del microcontrolador on hi ha la informació per als pins de sortida, i el pin RDOUT li retorna al microcontrolador una altra trama de 32 bits amb la informació dels pins d’entrada. A més l’ASIC disposa d’un senyal de reset (CLR ) per a la seva inicialització. Fig. 9.1. Registre de desplaçament realitzat amb els ASIC
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 71 La informació rebuda sobre el funcionament d’aquest chip es troba a l’Annex. La següent figura mostra la forma de la placa del primer prototip i la distribució dels components: ASIC IO0 ÷ IO31 CLR MAIN RDIN CK DOUT LMODE = 0 Fig. 9.2. Esquema d’entrades i sortides d’un ASIC Fig. 9.3. Forma de la placa i situació dels elements en el primer prototip
Pàg. 72 Memòria El motiu de la peculiar forma que té la placa és el de poder aprofitar l’espai que hi ha a la maqueta. La placa té una amplada màxima de 26cm i una llargada màxima de 19.5cm. Les dimensions d’aquest placa són més reduïdes que les del segon prototip degut a l’ús dels ASIC com a registre de desplaçament. 7.2. Primer prototip: proves i resultats Per a poder realitzar les proves de funcionament necessàries sense la necessitat d’haver de fer servit la placa d’Altera, s’han creat unes petites plaques fetes a mà. Aquestes plaques tenen uns leds per a poder veure les sortides que envia la placa cap a Altera, i uns interruptors que commuten entre una tensió de 0V i una de 5V per a poder simular les entrades a la maqueta que provenen d’Altera. La següent imatge mostra aquestes plaques: Es va observar en varis integrats i connectors unes discordances entre la posició dels senyals en el programa Capture CIS i la seva posició en els footprint o plantilles en el Fig. 9.4. Fotografia de les plaques usades per a les proves
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 73 programa Layout Plus. Com a conseqüència d’aquestes diferencies, els connectors no es podien connectar de manera correcta, i alguns integrats no funcionaven. Per a solucionar aquests problemes de manera provisional i poder comprovar el funcionament de la placa es van fer uns adaptadors a mà. Un cop solucionats els primers problemes es va fer un petit programa bàsic, que contenia només la part de la rutina d’enviament i recepció de dades, el mode transparent. Es va comprovar que aquesta rutina funcionava correctament la majoria de cops, però es va observar que en algun cas es produïa una distorsió en les dades. Per a poder assegurar que la informació enviada per el PIC era rebuda correctament per cada ASIC i enviada sense problema, es va decidir modificar el programa per a enviar cadenes de dades prefixades i comprovar si aquestes eren transmeses correctament o no per els ASIC. Es va poder veure que hi havia casos estranys en que les dades s’enviaven bé o malament de manera aleatòria. Per exemple la següent imatge extreta de l’oscil·loscopi, mostra en el canal 2 l’entrada en un dels ASIC d’un tren d’uns i zeros que es va repetint periòdicament. El canal 1 mostra la sortida d’aquest tren de dades un cop ha passat per l’ASIC. Les dades haurien de sortir tal i com han entrat, però amb un desfasament de 32 períodes de rellotge (temps que triga una dada en recórrer tot l’ASIC). Es pot observar que hi ha cops en que les dades de la sortida no coincideixen amb les de l’entrada.
Pàg. 80 Memòria
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 81 Agraïments M’agradaria donar les gràcies a l’empresa Microchip Technology Inc., fabricant del microcontrolador PIC16F73 per haver facilitat mostres gratuïtes del microcontrolador. També li he d’agrair l’ajut que m’ha proporcionat en forma de documentació sobre els microcontroladors PIC i el subministrament de mostres gratuïtes a Sagitrón (S.A. General de Importaciones Electrónicas), empresa distribuïdora de material de Microchip, concretament a la señora Felisa Soriano. Finalment voldria agrair al professor Emili Lupón, del Departament d’Electrònica de la ETSEIB, l’haver posat a la meva disposició la maqueta i la memòria de l’antic projecte “Sistema de control basado en FPGAs para un ascensor de 5 plantas”,. També voldria agrair-li l’haver ofert els ASIC per a realitzar el registre de desplaçament i tot l’assessorament i informació que ha proporcionat sobre aquests.
Pàg. 82 Memòria
Sistema de test i seguretat, utilitzant un microcontrolador PIC, per a un ascensor controlat mitjançant FPGA’s Pág. 83 Bibliografia Referències bibliogràfiques [1] MICROCHIP TECHNOLOGY INC. PIC16F7X DATA SHEET. U.S.A., 2000. [2] MICROCHIP TECHNOLOGY INC. PICMicro Mid-Range MCU Family Reference Manual. U.S.A., 1997. [3] MICROCHIP TECHNOLOGY INC. IN-CIRCUIT SERIAL PROGRAMMING GUIDE. U.S.A., 2000. [4] CÉSAR FERNÁNDEZ GRUART. PROYECTO FINAL DE CARRERA “Sistema de control basado en FPGAs para un ascensor de 5 plantas”. Barcelona, 2001. Bibliografia complementaria [1] E. MARTÍN CUENCA, J.Mª. ANGULO USATEGUI, I. ANGULO MARTÍNEZ. Microcontroladores PIC La solución en un CHIP. Madrid, Editorial Paraninfo, 1999. [2] J.Mª. ANGULO USATEGUI, I. ANGULO MARTÍNEZ. Microcontroladores PIC Diseño práctico de aplicaciones. Madrid, Editorial McGraw-Hill, 1999.