Sei sulla pagina 1di 19

Universidad Nacional de Quilmes Sistemas Digitales

Sistemas Digitales
Trabajo Prctico final
Implementacin de un entorno de desarrollo para proyectos con microcontroladores

Desarrollo: Guillermo Carrera Legajo 4213 Fecha: Julio de 2005.

Guillermo H. Carrera 4213

Hoja 1 de 19

Universidad Nacional de Quilmes Sistemas Digitales

Consigna. Desarrollar e implementar un entorno de programacin y grabado de un microcontrolador. Particularmente se aplicara lo desarrollado para implementar el uso de un conversor A/D externo y la comunicacin bi direccional entre un microcontrolador y una PC de escritorio. Utilidad. Tanto el software como el hardware desarrollado incrementarn las herramientas a disposicin de la Universidad Nacional de Quilmes, las cuales podrn brindarse como alternativas de los kits de desarrollo ya utilizados en la universidad. Por lo tanto la finalidad del proyecto se basa en brindar a los estudiantes un paquete de herramientas con su funcionamiento verificado, de modo tal que cada alumno que pretenda utilizar un microcontrolador, pueda utilizar este informe a modo de manual de uso para abordar cada proyecto en la instancia de programacin y no tener que desarrollar desde el inicio los entornos de grabacin y programacin, ni tampoco el hardware necesario. Objetivos mnimos propuestos.
1) Eleccin del microcontrolador Investigacin para la eleccin del microcontrolador apropiado. Recopilacin de informacin tcnica y anlisis de factibilidad de uso. 2) Eleccin del entorno de programacin del microcontrolador. Investigacin sobre el entorno de programacin ms adecuado para el proyecto. Obtencin del software a utilizar. Utilizacin del software para adquirir el manejo del mismo. 3) Eleccin del software y hardware para el grabado del microcontrolador. Investigacin sobre el esquema software-hardware ms conveniente para el proyecto. Obtencin del software a utilizar. Montaje del hardware para el grabado del microcontrolador. 4) Verificacin del funcionamiento del paquete completo de programacin del microcontrolador Realizacin de programas a modo de ejemplo para verificar y adoptar el modo de funcionamiento de los entornos de programacin y grabado. - Rutinas I/O, Timmers, Conversores, Comunicacin RS232, etc Comprobacin del funcionamiento del hardware para grabacin y aplicacin del microcontrolador. 5) Eleccin del conversor analgico digital Investigacin para la eleccin del conversor apropiado. Determinacin del uso de un nico conversor de dos canales, dos conversores de un canal o un conversor y el conversor interno del microcontrolador. Recopilacin de informacin tcnica y anlisis de factibilidad de uso. 6) Comunicacin microcontrolador-conversor Investigacin sobre el esquema IC Implementacin de la comunicacin microcontrolador-conversor 7) Actuacin PWM Investigacin sobre aplicacin PWM del microcontrolador Implementacin del PWM 8) Comunicacin microcontrolador-PC Investigacin para la eleccin del esquema de comunicacin ms adecuado. Guillermo H. Carrera 4213 Hoja 2 de 19

Universidad Nacional de Quilmes Sistemas Digitales


Implementacin de la comunicacin microcontrolador-PC.

1) Eleccin del microcontrolador


Existe una gran diversidad de microcontroladores. Quiz la clasificacin ms importante sea entre microcontroladores de 4, 8, 16 32 bits. Aunque las prestaciones de los microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten a desaparecer. La razn de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para la gran mayora de las aplicaciones, lo que hace absurdo emplear micros ms potentes y consecuentemente ms caros. Tambin los modernos microcontroladores de 32 bits van afianzando sus posiciones en el mercado, siendo las reas de ms inters el procesamiento de imgenes, las comunicaciones, las aplicaciones militares, los procesos industriales y el control de los dispositivos de almacenamiento masivo de datos. A la hora de escoger el microcontrolador a emplear en un diseo concreto hay que tener en cuenta multitud de factores, como la documentacin y herramientas de desarrollo disponibles y su precio, la cantidad de fabricantes que lo producen y por supuesto las caractersticas del microcontrolador (tipo de memoria de programa, nmero de temporizadores, interrupciones, etc.): Antes de seleccionar un microcontrolador es imprescindible analizar los requisitos de la aplicacin: Procesamiento de datos: puede ser necesario que el microcontrolador realice clculos crticos en un tiempo limitado. En ese caso debemos asegurarnos de seleccionar un dispositivo suficientemente rpido para ello. Por otro lado, habr que tener en cuenta la precisin de los datos a manejar: si no es suficiente con un microcontrolador de 8 bits, puede ser necesario acudir a microcontroladores de 16 32 bits, o incluso a hardware de coma flotante. Una alternativa ms barata y quiz suficiente es usar libreras para manejar los datos de alta precisin. Entrada Salida: para determinar las necesidades de Entrada/Salida del sistema es conveniente dibujar un diagrama de bloques del mismo, de tal forma que sea sencillo identificar la cantidad y tipo de seales a controlar. Una vez realizado este anlisis puede ser necesario aadir perifricos hardware externos o cambiar a otro microcontrolador ms adecuado a ese sistema. Memoria: para detectar las necesidades de memoria de nuestra aplicacin debemos separarla en memoria voltil (RAM), memoria no voltil (ROM, EPROM, etc.) y memoria no voltil modificable (EEPROM). Ancho de palabra: el criterio de diseo debe ser seleccionar el microcontrolador de menor ancho de palabra que satisfaga los requerimientos de la aplicacin. Usar un microcontrolador de 4 bits supondr una reduccin en los costes importante, mientras que uno de 8 bits puede ser el ms adecuado si el ancho de los datos es de un byte. Los microcontroladores de 16 y 32 bits, debido a su elevado coste, deben reservarse para aplicaciones que requieran sus altas prestaciones (Entrada/Salida potente o espacio de direccionamiento muy elevado). Diseo de la placa: la seleccin de un microcontrolador concreto condicionar el diseo de la placa de circuitos. Debe tenerse en cuenta que quiz usar un microcontrolador barato encarezca el resto de componentes del diseo.

Guillermo H. Carrera 4213

Hoja 3 de 19

Universidad Nacional de Quilmes Sistemas Digitales

Los microcontroladores ms populares son: 8048 (Intel). Es el padre de los microcontroladores actuales, el primero de todos. Su precio, disponibilidad y herramientas de desarrollo hacen que todava sea muy popular. 8051 (Intel y otros). Es sin duda el microcontrolador ms popular. Fcil de programar, pero potente. Est bien documentado y posee cientos de variantes e incontables herramientas de desarrollo. 80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los populares microprocesadores 8086 y 8088. Su principal ventaja es que permiten aprovechar las herramientas de desarrollo para PC. 68HC11 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente y popular con gran cantidad de variantes. 683xx (Motorola). Surgido a partir de la popular familia 68k, a la que se incorporan algunos perifricos. Son microcontroladores de altsimas prestaciones. PIC (MicroChip). Familia de microcontroladores que gana popularidad da a da. Fueron los primeros microcontroladores RISC. Es preciso resaltar en este punto que existen innumerables familias de microcontroladores, cada una de las cuales posee un gran nmero de variantes. En el caso particular de este proyecto la eleccin del microcontrolador se encontr influenciada por el uso en el entorno laboral de quin suscribe, de la familia de microcontroladores PIC. Por lo tanto casi a modo de necesidad se opt por utilizar un microcontrolador PIC, para adquirir experiencia con este tipo de microprocesadore. Por lo cual el proceso de eleccin tuvo su curso en sentido opuesto, es decir en lugar de enumerar las prestaciones que deba cumplir el microprocesador y en base a ello seleccionar el ms adecuado, se tom el PIC16F873A, que es el que utilizado en dicho entorno laboral, y se verific si el mismo cumpla los requisitos necesarios. Ampliando el estadio actual de la industria nacional, puede verificarse que los microcontroladores PIC son los mas utilizados. Los detalles ms importantes que hacen que la familia de microcontroladores PIC sea la ms utilizada hoy en da son los siguientes: - Sencillez de manejo: Tienen un juego de reducido de instrucciones (35). - Buena informacin, fcil de conseguir y econmica. - Precio: Su coste es comparativamente inferior al de sus competidores. - Poseen una elevada velocidad de funcionamiento. Buen promedio de parmetros: velocidad, consumo, tamao, alimentacin, cdigo compacto, etc. - Herramientas de desarrollo sencillas y de bajo costo. Muchas herramientas software se pueden obtener libremente a travs de Internet desde Microchip (http://www.microchip.com). - Existe una gran variedad de herramientas hardware que permiten grabar, depurar, borrar y comprobar el comportamiento de los PIC. En la hoja de datos anexa como 16F873.pdf del CD adjunto al informe, puede encontrarse el manual de uso de la familia de microcontroladores 16F8XX, en el cual se encontrar completa informacin sobre el funcionamiento y utilizacion del mismo.
Guillermo H. Carrera 4213 Hoja 4 de 19

Universidad Nacional de Quilmes Sistemas Digitales Algunas de las caractersticas ms relevantes son las que se detallan a continuacin:

Velocidad de operacin 20 MHz 8K x 14 words de memoria programable FLASH 368 x 8 bytes de RAM 256 x 8 bytes de EEPROM Data Memory Pinout compatible con PIC16C73B/74B/76/77 14 fuentes de interrupcin Modo de direccionamiento directo, indirecto y relativo Watchdog Timer (WDT) In-Circuit Serial Programming(ICSP) In-Circuit Debugging Timer0: 8-bit timer/counter con prescaler Timer1: 16-bit timer/counter con prescaler Timer2: 8-bit timer/counter con prescaler y postscaler Dos mdulos Capture, Compare o PWM Conversor 10-bit A/D multi-channel Synchronous Serial Port (SSP) con SPI(Master mode) y I2C(Master/Slave) Universal Synchronous Asynchronous Receiver Transmitter (USART/SCI) Parallel Slave Port (PSP)

2) Eleccin del entorno de programacin del microcontrolador.


Como condicin inicial para le eleccin del software de programacin se tuvo en cuenta la necesidad de programar en un lenguaje de alto nivel y en particular en lenguaje C que es el ms difundido para este tipo de aplicaciones. La necesidad de utilizar un lenguaje de alto nivel radica en las complicaciones que pueden surgir sobre todo en la implementacin de las rutinas de comunicacin con distintos perifricos. Dada la complejidad de dichas rutinas, se consider que el uso del lenguaje ensamblador podra acarrear muchas complicaciones. Siguiendo los lineamientos de la eleccin del microcontrolador, se intent implementar el uso del entorno de programacin utilizado en el entorno laboral de quien suscribe, de ese modo se comenz a investigar y utilizar el software PicAntIDE. El software PicAntIDE en su versin 5.1 incluye un compilador en C (BoostC compiler), con lo cual no se necesita ms que la instalacin del mismo para poder programar y compilar en lenguaje C. Tal es as que se comenzaron a programar e implementar pequeas rutinas de manejo de puertos. Pero el problema que se present con dicho software, es que el mismo no posee un emulador integrado para poder simular el funcionamiento del PIC y as poder verificar el programa realizado. Luego de varios intentos fallidos de agregar al paquete un emulador y no obtener los resultados esperados, se opto por utilizar otro entorno de programacin. El siguiente entorno investigado fue el Mplab. El atractivo de utilizar dicho entorno se basa en que es el software desarrollado por Microchip, empresa que desarrolla la familia de microcontroladores PIC, y adems por ser el ms difundido dentro de los entornos de programacin de microcontroladores. En el caso del entorno MPLAB, la principal dificultad radica en que solo la ltima versin del paquete, posee integrado un compilador en C. Cabe aclarar que la ltima versin del software no tiene distribucin gratuita, por lo cual es muy complicado poder utilizar el mismo si no se cuanta con la licencia correspondiente.
Guillermo H. Carrera 4213 Hoja 5 de 19

Universidad Nacional de Quilmes Sistemas Digitales Teniendo en cuenta lo anterior se opt por utilizar una versin anterior, de distribucin gratuita, a la cual se le puede agregar un compilador en C. La versin anterior que se puede obtener en la pgina oficial de Microchip es la versin 7.10. Dicha versin de MPLAB se encuentra adjunta al informe en el CD correspondiente bajo el nombre MPLAB710. En el CD tambin se encuentra una gua de introduccin al entorno (MPLAB tutorial.pdf) donde se detalla el proceso de instalacin del mismo y los pasos a seguir para realizar los primeros proyectos, adems de un patch de actualizacin del programa (ver gua para uso de entorno microcontroladores). El siguiente paso fue la eleccin del compilador de lenguaje C a utilizar, para ello se busc en Internet cuales eran los compiladores ms difundidos que soporta el MPLAB 7.10, llegando a la determinacin de elegir entre dos compiladores a saber: CC5X Versin 3.2 CCSC Versin 3.216

Si bien ambos compiladores pueden utilizarse en el entorno MPLAB, se opt por utilizar el CCSC que se diferencia del CC5X al poseer mayor cantidad de funciones propias y libraras a incluir. Por ejemplo, para el caso de las comunicaciones va IC y SPI, el compilador CCSC incluye funciones propias de lectura, escritura y configuracin de los perifricos. El compilador CCSC no es de distribucin gratuita, de todos modos se adjunta al informe en el CD correspondiente. La instalacin del mismo no es sencilla y debido a la difusin de algunos parches se deben seguir los pasos indicados en la gua para uso de entorno microcontroladores anexa a este informe. El compilador CCSC posee una completa bibliografa sobre el uso de sus funciones internas, en el CD adjunto se brinda el manual del compilador bajo el nombre CCSC manual.pdf donde se puede encontrar una gua completa sobre el uso del compilador, el uso de sus funciones especficas as como tambin ejemplos de aplicacin.

3) Eleccin del software y hardware para el grabado del microcontrolador.


La gran cantidad de informacin que se obtiene en internet evidencia la gran cantidad de placas que existen para el grabado de los PIC. En su mayora se trata de empresas que venden el kit de desarrollo la placa de grabacin y el software (programmer) que generalmente es compatible con Mplab. De ese modo puede utilizarse el entorno Mplab para todas las tareas necesarias de desarrollo que son programacin, compilado, simulacin y grabacin. Lamentablemente, por lo investigado, es dificultoso conseguir un programmer de distribucin gratuita que adems brinde la posibilidad de acceder al diseo de la placa de grabacin (sin tener que comprarla). Planteado el problema, se opt por utilizar un programmer en forma individual al entorno Mplab, con lo que se concluy en la utilizacin del software Icprog y una placa de grabacin que cuyo funcionamiento se detalla a continuacin: (Extracto de http://www.pablin.com.ar/electron/circuito/mc/ppp/index.htm) El funcionamiento del circuito es muy simple: los pines del puerto paralelo 2, 3, 5 y 10 (Ver figura 1) permiten interconectar el circuito con la PC. El pin 2 es el encargado de traer los datos (desde la PC hacia el integrado). El pin 3 es el envo de los pulsos de reloj (desde la PC hacia el integrado). En tanto el pin 10 permite a la PC leer los datos desde el programador. El pin 5, por ltimo, es el encargado de controlar la tensin de programacin (Vpp) necesaria para leer o escribir en un PIC. La tensin de programacin VPP es necesaria para indicarle al PIC que deseamos leerlo o programarlo. Si en este pin (que es compartido con la entrada de RESET del micro) ponemos masa, el
Guillermo H. Carrera 4213 Hoja 6 de 19

Universidad Nacional de Quilmes Sistemas Digitales PIC sufre un reset, si ponemos el pin en alto (5v) el PIC trabaja normalmente mientras que si ponemos el pin a 12v el PIC se inicializa en modo programacin, quedando dos de los pines de E/S destinados a datos (SDA) y reloj (SCL). El integrado 74LS04 est formado internamente por seis buffers inversores. Estos permiten por un lado obtener niveles TTL a su salida y por el otro no cargar de forma excesiva al puerto. Se colocan las compuertas en serie para obtener a la salida el mismo nivel de entrada, sin invertir. Las resistencias de 1K dan seguridad al sistema para evitar que circule corriente excesiva. El control de la tensin de programacin lo efecta el transistor NPN. Estando el pin 5 del puerto paralelo a masa (en 0) tendremos al transistor abierto por lo que la corriente proveniente de +V (12v) pasar por el diodo LED el cual no encender y se portar como un diodo comn polarizado en directa, pasar por la resistencia limitadora de corriente del LED la cual no ofrecer mucha resistencia y ser inyectada al PIC en su terminal MCLR/VPP. Poniendo en 1 el bit que controla el pin 5 del puerto paralelo, en cambio, el transistor se cierra y hace circular masa hacia el PIC haciendo, adems, encender el LED al quedar a masa el otro extremo de la resistencia limitadora de corriente. La placa a disposicin de la universidad se diferencia de la representada en la figura 1 ya que en la misma se le agreg un transformador 220/12V y un circuito rectificador para poder conectar la misma a la red de alimentacin de 220V 50Hz.

Figura 1 - Diagrama del circuito a utilizar para el grabado de PICs

4) Verificacin del funcionamiento del paquete completo de programacin del microcontrolador


Una vez definido el paquete de desarrollo se realizaron pequeos programas utilizando las funciones internas del compilador C para verificar el funcionamiento del entorno, de ese modo con rutinas cortas de manejo de puertos I/O, Timmers, interrupciones, etc. Se puede lograr un fluido manejo del entorno de programacin y simulacin. Las rutinas aplicadas no estn incluidas en este informe dada la sencillez de las mismas, pero cada una de las aplicaciones puede apreciarse en el cdigo del proyecto final, donde se utilizan funciones de comunicacin con los perifricos, manejo de los puertos, timmers e interrupciones. Al realizar dichas implementaciones, se pude verificar el correcto funcionamiento del entorno desarrollado. Un resumen del manejo del entorno puede encontrarse en la gua de uso de entorno de desarrollo de microcontroladores anexa.
Guillermo H. Carrera 4213 Hoja 7 de 19

Universidad Nacional de Quilmes Sistemas Digitales Por otro lado en el manual del compilador C, puede encontrarse una detallada explicacin de las funciones internas del compilador, acompaado por buena cantidad de ejemplos que ayudan a reforzar los conceptos.

5) Eleccin del conversor analgico digital


Como objetivo del proyecto se haba planteado el uso de un conversor externo para aumentar la presicin de las lecturas. Se parti de la base que el conversor interno del PIC es de 10 bits, con lo que una condicin fundamental era que el conversor tenga una resolucin mayor a 10 bits, por ejemplo 12, 14 o 16. Por otro lado la idea inicial fue realizar una comunicacin con el conversor va IC, si bien ese protocolo de comunicacin no es el ms indicado para un dispositivo maestro con un solo esclavo, se opt por esa comunicacin por la enseanza didctica que se podra haber obtenido de la aplicacin. Otra de las condiciones que se impuso fue que el conversor fuera de la lnea Microchip, simplemente por el hecho de utilizar un esquema Microprocesador-perisfrico de una misma marca para llevar cierta correlacin entre la bibliografa y la informacin que se pudiera conseguir de cada componente. Siguiendo las imposiciones anteriores se seleccion el conversor MCP3221, el cual cumple con todas las condiciones, adems de poseer varios canales eliminando as la necesidad de utilizar el conversor A/D interno del micro. El problema surgi al intentar adquirir dicho conversor, ya que el representante en argentina de Microchip (Cika) no lo posea en stock y el representante para Latinoamrica (Ibars) aplica costos de envo sustancialmente elevados. En siguiente correo resume lo anterior
----- Original Message ----From: Iris Feliciano To: laboratorio@sicaelec.com Cc: Lourdes.Ibars@ibars.com Sent: Wednesday, April 06, 2005 11:11 AM Subject: FW: ask about MCP3221 / consulta sobre MCP3221 Estimado Sr. Carrera: Buenos dias, gracias por su comunicacin con Ibars Electronics y por su interes en los productos de nuestra representada Microchip Technology. Permitame informarle que el programa de muestras implementado por Microchip est enfocado exclusivamente al sector comercial. Siendo as, con mucho gusto procederemos a cotizarle el convertidor solicitado. Actualmente no disponemos de este en stock pero podemos solicitarlo a la Division de Pequeas Ordenes de Microchip y se demora entre 5 a 7 das en que recibamos la mercanca: MCP3221A5T-I/OT 1 a 25 piezas @ $2.41 cada pieza Su mercanca puede ser despachada va DHL hacia su destino por un costo de $25.00 dolares. Como forma de pago aceptamos tarjeta de crdito Visa o Master Card. Nuevamente agradecemos su comunicacin y estaremos en espera de su respuesta para procesar su orden segn sus instrucciones. Respetuosamente, Iris Feliciano Operations Assistant Ibars Electronics Corp. Phone: (954) 680-7989 Fax: (954) 680-6589 http://www.ibars.com From: Guillermo Carrera [mailto:laboratorio@sicaelec.com] Sent: Monday, April 04, 2005 12:02 PM To: sales@ibars.com

Guillermo H. Carrera 4213

Hoja 8 de 19

Universidad Nacional de Quilmes Sistemas Digitales


Cc: info@ibars.com; rsaco@unq.edu.ar Subject: ask about MCP3221 / consulta sobre MCP3221 Dear Sirs Ibars I'm writing you from National University of Quilmes (Argentina), career of Industrial Automation and Control Engineering. We are developing a new project where we use a micro procesor PIC and an A/D converter by IC. We are trying to use Microchip devices, but we can't get in Argentina your MCP3221 converter. We asked for it to Microchip representative in Argentina (Cika Electrnica), and they adviced us to contact straight you. We want to purchase three units of that model. Cika said they can't ask Microchip for so low quantity, and advice us to get them as "samples". Anyway, we are prepared to pay for them and for delivery costs. Please, we need you advice us about steps to get them. I would appreciate very much your cooperation, and I will be waiting for your answer. Thank you very much in advance! Best regards Seores Ibars Me comunico en representacin de la Universidad Nacional de Quilmes - Ingeniera en Automatizacin y Control Industrial por el siguiente motivo: Estamos desarrollando un proyecto en el cual realizaremos una comunicacin mediante un microcontrolador PIC y un conversor A/D va IC. En nuestro afn de utilizar productos de la lnea Microchip, se nos presenta el problema de no poder conseguir en la Argentina el conversor MCP3221. De aqu se desprende nuestra necesidad de comunicarnos con Uds. ya que el representante de Microchip en Argentina, Cika Electrnica, no posee el mismo y nos encomend a ustedes. Por tal motivo nuestro inters radica en poder adquirir 3 (tres) unidades del mencionado conversor. El personal de Cika nos indic que deberamos tratar el tema como "solicitud de muestras" ya que no se pueden solicitar envos por tan pequeas cantidades, no obstante queremos que tengan en cuenta que estamos dispuestos a abonar el precio del producto y los gastos de envo de ser necesario. Apreciara que me indiquen que pasos debemos seguir para poder obtener los mismos. A espera de vuestra respuesta saludo a Uds. atentamente y les adjunto los datos de nuestra Universidad. Guillermo H. Carrera. Estudiante. Legajo 4213. Docentes a cargo del proyecto: Sebastin Mallo - Roberto Saco Universidad Nacional de Quilmes - Area Automatizacin y Control Industrial. Av. Calchaqu 5800 km 23.5 - Florencio Varela (CP 1888) Buenos Aires - Argentina. Tel: (5411) 4275-7714 Fax: (5411) 4275-7716. http://iaci.unq.edu.ar/

Dado el elevado costo de adquisicin del conversor MCP3221, se opt por seleccionar otro conversor de la lnea Microchip. Fue as que se opt por utilizar el conversor MCP3208 de Microchip, el cual cumple las condiciones preestablecidas con la diferencia que para su comunicacin utiliza el protocolo SPI en lugar del protocolo IC. Dado que el microcontrolador posee un mdulo de comunicacin SPI, y que este tipo de comunicacin es ms acorde al esquema a implementar (1 maestro 1 esclavo), se opt por el uso de dicho conversor En el CD adjunto, se incluye la hoja de datos con las caractersticas del conversor, las que en forma resumida se detallan a continuacin: 12-bit de resolucin 1 LSB max DNL 2 LSB max INL (MCP3204/3208-C) 8 canales de entrada On-chip sample and hold interface serial SPI 100 ksps max. sampling
Guillermo H. Carrera 4213 Hoja 9 de 19

Universidad Nacional de Quilmes Sistemas Digitales

6) Comunicacin microcontrolador-conversor
Interfaz SPI La interfaz SPI consta de cuatro seales bsicas que cada una de ellas corresponde a una interconexin de pines entre al microcontrolador y el conversor, las seales son: - MOSI (Master Output/Slave Input) - MISO (Master Input/Slave Output) - SCLK (Serial Clock), - SS (Slave Selector). La comunicacin se inicia desde el dispositivo maestro (microcontrolador) al colocar en bajo la seal en el canal SS del dispositivo esclavo. El primer pulso de reloj recibido con el SS en bajo y MOSI en alto establece el bit de strart (ver Figura 2). La comunicacin contina desde el dispositivo maestro escribiendo cuatro bits de configuracin en el dispositivo esclavo desde el canal MOSI. Los cuatro bits de configuracin establecen el modo de conversin del dispositivo esclavo, cada uno de ellos representa lo siguiente: 1 bit - Modo de conversin. Puede seleccionarse entre modo simple y modo diferencial. 2 a 4 bit - Seleccin del canal. Puede seleccionarse cualquiera de los 8 canales del conversor. La funcin de cada uno de los 4 bits de configuracin pueden apreciarse en resumen en la siguiente tabla:

Configuracin del conversor

Figura 2 Comunicacin SPI

Guillermo H. Carrera 4213

Hoja 10 de 19

Universidad Nacional de Quilmes Sistemas Digitales

El conversor muestrea la entrada analogica del canal seleccionado a partir del cuarto pulso de reloj a partir del bit de start (ver figura 2). Una vez ingresado el bit de configuracin D0, es necesario un pulso ms de reloj para completar el perodo de muestreo y retencin. En el siguiente pulso de reloj el conversor pone en el canal de salida MISO un bit null (0). En los proximos 12 pulsos de reloj establece el resultado de la conversin colocando al inicio el bit ms significativo en el canal MISO. A continuacin se detalla un algortmo de lectura de dos canales analgicos de 0 a 5V que se imprimen va RS232.
void main() { long int value; adc_init(); printf("Sampling:\r\n"); do { delay_ms(1000); value = read_analog(0); printf("\n\rCh0: "); display_data( value ); value = read_analog(1); printf(" Ch1: "); display_data( value ); } while (TRUE); }

Las funciones a utilizar pueden agregarse en el mismo algortmo o mediante un include y son las siguientes:
#define MCP3208_CLK PIN_B0 #define MCP3208_DOUT PIN_B1 #define MCP3208_DIN PIN_B2 #define MCP3208_CS PIN_B3 void adc_init() { output_high(MCP3208_CS); } void write_adc_byte(BYTE data_byte, BYTE number_of_bits) { BYTE i; delay_us(2); for(i=0; i<number_of_bits; ++i) { output_low(MCP3208_CLK); if((data_byte & 1)==0) output_low(MCP3208_DIN); else output_high(MCP3208_DIN); data_byte=data_byte>>1; delay_us(50); output_high(MCP3208_CLK); delay_us(50); } } BYTE read_adc_byte(BYTE number_of_bits) { BYTE i,data; data=0; for(i=0;i<number_of_bits;++i) { output_low(MCP3208_CLK); delay_us(50); shift_left(&data,1,input(MCP3208_DOUT)); output_high(MCP3208_CLK);

Guillermo H. Carrera 4213

Hoja 11 de 19

Universidad Nacional de Quilmes Sistemas Digitales


delay_us(50); } return(data); } long int read_analog_mcp(BYTE channel, BYTE mode) { int l; long int h; BYTE ctrl_bits; delay_us(200); if(mode!=0) mode=1; output_low(MCP3208_CLK); output_high(MCP3208_DIN); output_low(MCP3208_CS); if(channel==1) ctrl_bits=4; else if(channel==3) ctrl_bits=6; else if(channel==4) ctrl_bits=1; else if(channel==6) ctrl_bits=3; else ctrl_bits=channel; ctrl_bits=ctrl_bits<<1; if(mode==1) ctrl_bits |= 1; else ctrl_bits &= 0xfe; ctrl_bits=ctrl_bits<<1; ctrl_bits |= 1; write_adc_byte( ctrl_bits, 7); h=read_adc_byte(8); l=read_adc_byte(4)<<4; output_high(MCP3208_CS); return((h<<8)|l); } long int read_analog( BYTE channel ) // Auto specifies single mode { return read_analog_mcp( channel, 1); } void convert_to_volts( long int data, char volts[6]) { BYTE i, d, div_h, div_l; long int temp,div; div=0x3330; for(i=0;i<=4;i++) { temp=data/div; volts[i]=(BYTE)temp+'0'; if(i==0) { volts[1]='.'; i++; } temp=div*(BYTE)temp; data=data-temp; div=div/10; } volts[i]='\0'; }

Guillermo H. Carrera 4213

Hoja 12 de 19

Universidad Nacional de Quilmes Sistemas Digitales

Precauciones referentes al uso del conversor 1) Dada la precisin (12 bits) del conversor, debe eliminarse toda fuente de ruido que pueda afectar a la medicin. Son prcticas aconsejables la inclusin de un filtro pasa bajos en la entrada analgica del conversor y una correcta separacin de masas analgicas y digitales. 2) Debe tenerse principal precaucin de no aplicar tensin en el pin de referencia (Vref) si el chip no est alimentado en Vdd, de ocurrir esa secuencia el conversor se quema. Para evitar ese problema puede colocarse una resistencia en serie en la entrada Vref, que es de alta impedancia, de ese modo se limita la corriente aplicada.

7)

Actuacin PWM

El PIC 16F873 posee dos mdulos de captura, comparacin o PWM, dichos mdulos trabajan analizando alguno de los dos timers del dispositivo y pueden configurarse para realizar una comparacin, conteo o PWM en base al timmer seleccionado. Para este caso se utiliz el mdulo 1 (CCP1) para implementar un PWM, dicho mdulo trabaja con el timmer2 del PIC. Para la implementacin se utilizaron las siguientes funciones internas del compilador CCSC setup_ccp1(CCP_PWM); // Configura CCP1 como PWM setup_timer_2(T2_DIV_BY_4, 127, 1); // perodo=(1/clock)*4*t2div*(period+1)=512micS=>1,95Kh set_pwm1_duty(ct_pwm); // Setea ciclo de trabajo A continuacin se explica cada una: a) setup_ccp1 (mode) Esta funcin setea el modo de trabajo del CCP1. En modo conteo, cuenta los pulsos del timme1, en modo comparacin genera un evento en el pin de salida cuando el valor de timmer1 se iguala con el valor inicializado en el cmdulo, y en modo PWM genera una onda cuadrada en el pin de salida. - mode es una constante vlida definida en el archivo .h correspondiente al dispositivo y puede tomar: Anulacin del mpdulo CCP: Seteo del modulo CCP como conteo: CCP_OFF CCP_CAPTURE_FE Incrementa en pulso descendente CCP_CAPTURE_RE Incrementa en pulso descendente CCP_CAPTURE_DIV_4 Incrementa luego de 4 pulsos CCP_CAPTURE_DIV_16 Incrementa luego de 16 pulsos Seteo del mdulo CCP como comparador: CCP_CMP Seteo del mdulo CCP como PWM: CCP_PWM b) setup_timer_2 (mode, period, postscale) El timmer2 es un contador de 8 bits, y la funcin setup_timmer_2 se utiliza para inicializar el modo de funcionamiento del mismo, se debe prestar principal atencin al seteo del timmer ya que de ello depende la frecuencia del PWM

Guillermo H. Carrera 4213

Hoja 13 de 19

Universidad Nacional de Quilmes Sistemas Digitales - mode especifica la divisin del oscilador y puede tomar: T2_DISABLED T2_DIV_BY_1 T2_DIV_BY_4 T2_DIV_BY_16 - period es un entero de 0 a 255 que determina en que valor se resetea el timmer. (recordar que cuenta 8 bits) - postscale es un nmero que determina cuantos reseteos del timmer deben ocurrir para que se produzca la interrupcin o evento. c) set_pwm1_duty (value) Esta funcin determina la el perodo que se mantiene la seal activa PWM, es decir determina el ciclo de trabajo. - value escribe el registro de 0 bits que determina el ciclo de trabajo del PWM. Debe tenerse en cuenta que segn la velocidad a la que trabaja el oscilador, el registro de 10 bits, puede reducirse a 8. Para ms informacin, referirse al pgina 61 de la hoja de datos del PIC16f873.

8) Comunicacin microcontrolador-PC
El primer paso a realizar en una comunicacin PIC-PC es la adaptacin de la etapa fsica del canal de comunicacin. Dado que el microcontrolador opera con niveles de tensin TTL (0-5V) y el protocolo RS-232 con niveles de 312V, se hace necesaria la inclusin de una adaptacin de los niveles de tensin utilizados por el PIC. Uno de los dispositivos ms utilizados para realizar dicha adaptacin de seal es el chip MAX-232. A continuacin se exponen sus principales caractersticas

Guillermo H. Carrera 4213

Hoja 14 de 19

Universidad Nacional de Quilmes Sistemas Digitales La conexin del mismo es la siguiente:

Funciones para la comunicacin RS232. El compilador CCSC brinda una gran cantidad de funciones de libreras C para el manejo de la comunicacin va RS232. En el siguiente cuadro se listan las funciones disponibles: En el lateral derecho de cada funcin se indica la pgina del manual CCSC, en donde se detalla el uso de cada una de las funciones.

Guillermo H. Carrera 4213

Hoja 15 de 19

Universidad Nacional de Quilmes Sistemas Digitales

Algortmo desarrollado.
El cdigo utilizado para verificar el funcionamiento de los items desarrollados anteriormente es el siguiente:
#include <16F873A.h> #fuses HS,NOWDT,NOPROTECT #use delay(clock=20000000) #use rs232(baud=38400, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12 #include <mcp3208m1.c> #include <stdlib.h> #include<ctype.h> //---- Interrupcin por overflow Timer0 #INT_TIMER0 void control(void) { output_toggle(PIN_A5); } void main() { //-------------- Definicin de variables long int value_0=0,value_1=0 ; //lectura del conversor A/D char puerto; //Entrada desde RS232 long ct_pwm; //ciclo de trabajo PWM char escribir; //bandera para empezar a escribir int transmitir; //variable para seguir escribiendo char trama[4] ; int cont=0; //cantidad de conversiones transmitidas //-------------- Inicializacin de variables ct_pwm=0; //Rango 0 a 512 //-------------- Seteos set_tris_a(0xb100110); // Setea modo port A setup_ccp1(CCP_PWM); // Configura CCP1 como PWM setup_timer_2(T2_DIV_BY_4, 127, 1); // perodo=(1/clock)*4*t2div*(period+1)=512micS=>1,95Kh set_pwm1_duty(ct_pwm); // Setea ciclo de trabajo setup_timer_0(RTCC_DIV_16); // perodo=clock/16/256/4 256=8 bit timer0 //-------------- Inicializaciones adc_init(); //inicializa el conversor enable_interrupts(INT_TIMER0); //habilita interrupcin del timmer0 enable_interrupts(GLOBAL); do { //------------- Lectura RS232 if(kbhit()) { gets(trama); escribir=trama[0]; } //---------- Lectura del Conversor value_0 = read_analog(0); value_1 = read_analog(1); //---------- Escritura RS232 if(escribir==73) //Recibe una I parea empezar a transmititr { ct_pwm=512; set_pwm1_duty(ct_pwm); // Setea ciclo de trabajo printf("p"); printf("%04lu",value_0); printf("s"); printf("%04lu",value_1); printf("t"); printf("%03lu",ct_pwm); } // Primer Canal // Segundo Canal // Ciclo de trabajo //Si debe leer el puerto

Guillermo H. Carrera 4213

Hoja 16 de 19

Universidad Nacional de Quilmes Sistemas Digitales


else { ct_pwm=0; set_pwm1_duty(ct_pwm); } //---------- Lectura del portA // Setea ciclo de trabajo

if(input(PIN_A1)==1 || input(PIN_A2)==1) { ct_pwm=0; set_pwm1_duty(ct_pwm); } } while (TRUE); } ARCHIVO mcp3208m1.c #ifndef MCP3208_CS #define MCP3208_CLK PIN_B0 #define MCP3208_DOUT PIN_B1 #define MCP3208_DIN PIN_B2 #define MCP3208_CS PIN_B4 #endif void adc_init() { output_high(MCP3208_CS); } //inicializa el conversor

void write_adc_byte(BYTE data_byte, BYTE number_of_bits) //Escribe los bits de configuracin en el conversor { BYTE i; delay_us(1); for(i=0; i<number_of_bits; ++i) { output_low(MCP3208_CLK); if((data_byte & 1)==0) output_low(MCP3208_DIN); else output_high(MCP3208_DIN); data_byte=data_byte>>1; delay_us(1); output_high(MCP3208_CLK); delay_us(1); } } BYTE read_adc_byte(BYTE number_of_bits) //Lee los bits de conversin { BYTE i,data; data=0; for(i=0;i<number_of_bits;++i) { output_low(MCP3208_CLK); delay_us(1); shift_left(&data,1,input(MCP3208_DOUT)); output_high(MCP3208_CLK); delay_us(1); } return(data); } long int read_analog(BYTE channel) //Arma una trama con los bits de configuracin y los 12 bits ledos del conversor { int l; long int h; BYTE ctrl_bits; delay_us(100); output_low(MCP3208_CS); output_low(MCP3208_CLK); output_high(MCP3208_DIN); if(channel==1) ctrl_bits=4; else

Guillermo H. Carrera 4213

Hoja 17 de 19

Universidad Nacional de Quilmes Sistemas Digitales


ctrl_bits=channel; ctrl_bits=ctrl_bits<<1; ctrl_bits |= 1; ctrl_bits=ctrl_bits<<1; ctrl_bits |= 1; write_adc_byte( ctrl_bits, 7); h=read_adc_byte(8); l=read_adc_byte(4); output_high(MCP3208_CS); return((h<<4)|l); }

El funcionamiento del programa puede verificarse mediante conexin del Pic con una PC mediante una herramienta de comunicacin como por ejemplo el Hiperterminal de Windows. Al escribir la letra i desde el Hiperterminal, se inicializa el proceso de conversin y se setea el PWM al 100% del ciclo de trabajo. La trama recibida tendr el siguiente formato: p D1 D2 D3 D4 s D1 D2 D3 D4 t D1 D2 D3 Donde los 4 datos luego de la letra p representan el valor convertido del canal 0 de 0 a 4096 (12 bits), los datos seguidos por s los del canal 1 y los datos seguidos por t el valor seteado del ciclo de trabajo de 0 a 512 (9 bits). Para verificar el funcionamiento del portA, si se pone un bajo 0 en el pin A1 o A2, el ciclo de trabajo pasa a 0%. Tambin puede verificarse el funcionamiento de las interrupciones midiendo con un osciloscopio el pin A5, donde puede observarse el toggle del mismo. El circuito utilizado es el siguiente:

Guillermo H. Carrera 4213

Hoja 18 de 19

Universidad Nacional de Quilmes Sistemas Digitales

Guillermo H. Carrera 4213

Hoja 19 de 19

Potrebbero piacerti anche