OBJETIVOS Diseñar y construir una tarjeta basada en microcontroladores, capaz de ser reprogramada sin utilizar un grabador especial de los varios que hay en el mercado Que sirva para elaborar pequeñas aplicaciones de automatización caseras Sirva de apoyo para los diseñadores de proyectos con microcontroladores Enseñe lo fácil que puede ser comunicar un software con una tarjeta de control
DESCRIPCIÓN DEL SISTEMA
DIAGRAMA DE BLOQUES SOFTWARE HARDWARE MUNDO REAL SOFTWARE Cualquier programa que pueda interactuar con la tarjeta HARDWARE Tarjeta de Control con cuatro entradas digitales, ocho salidas con relés, comunicación serial RS232, Temporizador y modulo de auto programación. MUNDO REAL Todo aquello que pueda interactuar con las entradas, salidas y módulo de comunicación serial de la tarjeta.
CARACTERISTICAS DEL SOFTWARE TESIS_RAPI Ambiente agradable y fácil de manejar Entorno de desarrollo IDE Crear, Editar y Compilar código fuente con las aplicaciones de usuario, programar al PIC. Capacidad para comunicarse con el Hardware Manejar protocolo para sincronizar tareas Software – Hardware
CARACTERISTICAS DEL HARDWARE Control en base a microcontrolador. Firmware con funciones básicas para comunicación serial, temporización y escritura en la memoria de programa. Entradas Digitales TON. Salidas con relés. Circuito acoplador de niveles RS232 con los del microcontrolador Circuito para manejar cada relé. Alimentación con 12VDC
CRITERIOS PARA LA SELECCIÓN DEL PIC Se necesitan 12 pines de E/S, 4 para entradas y 8 para salidas Requerimos 2 pines para comunicación serial con el PC, uno para transmisión y el otro para recepción. Se debe tener la capacidad para generar temporización de un segundo manejada con interrupciones. Es indispensable que el dispositivo tenga memoria de programa tipo FLASH o EEPROM, para poder grabar y borrar desde el software. Debe poseer suficiente memoria para programa y datos Accequibilidad en el mercado local
DIAGRAMA DE BLOQUES DE LA TARJETA Controlador PIC16F877 Acoplador de Señales Drivers para Relés Comunicación con PC Banco de Relés
DIAGRAMA ESQUEMATICO
Circuito Equivalente de una puerta de E/S banksel PORTA clrf PORTA banksel ADCON1 movlw 0x06 movwf ADCON1 movlw 0x3F movwf TRISA bsf TRISC,7 bsf TRISC,6
Diagrama de bloques del Transmisor
Pasos a seguir al preparar una Transmisión Asíncrona Inicialice el registro SPBRG con la tasa de baudio apropiada. Si es deseada una tasa de baudios de alta velocidad , ponga a uno el bit BRGH. 2. Habilite el puerto serie asíncrono limpiando el bit SYNC y poniendo a uno el bit SPEN. 3. Si se desean interrupciones, entonces ponga a uno los bits TXIE, GIE y PEIE. 4. Si se desea transmisión de 9-bits, entonces ponga a uno el bit TX9. 5. Habilite la transmisión poniendo a uno el bit TXEN que también pondrá a uno el bit TXIF. 6. Si se selecciona transmisión de 9-bits, el noveno bit debe cargarse en el bit TX9D . 7. Cargar los datos en el registro TXREG (inicia la transmisión).
Diagrama de Bloques del Receptor
Pasos a seguir para preparar una Recepción Asíncrona 1. Inicialice el registro SPBRG con la tasa de baudios apropiada. Si se desea una tasa de baudios de alta velocidad, ponga a uno el bit BRGH. 2. Habilite el puerto serial asíncrono limpiando el bit SYNC, y poniendo a uno el bit SPEN. 3. Si se desean interrupciones, entonces ponga a uno los bits RCIE, GIE y PEIE. 4. Si se desea recepción de 9-bits, ponga a uno el bit RX9. 5. Habilite la recepción poniendo a uno el bit CREN. 6. La bandera RCIF se pondrá a uno cuando la recepción esté completa y una interrupción se generará si el bit RCIE fue puesto a uno. 7. Lea el regisro RCSTA para obtener el noveno bit (si lo habilitó) y determine si ocurrió algún error durante la recepción. 8. Obtenga los 8-bits de datos recibidos leyendo el registro RCREG. 9. Si cualquier error ocurriera, borre el error limpiando el bit CREN.
DISEÑO DEL FIRMWARE DEL PIC
DIAGRAMA DE FLUJO GENERAL RESET Limpiar Variables Configurar USART Configurar TIMER2 Configurar Puertos de E/S Aplicación del Usuario FIN
RUTINAS DE SERVICIO DE INTERRUPCIÓN SALIR Guarda Contenido de Registros Tipo Interrupción Rutina de Recepción Rutina Completar Segundo Rx Timer2 Restaura
RUTINA DE COMUNICACIÓN SERIAL Borrar bandera Rutina de Autoprogramación Rutina Recibir Comandos Tarea? Autop Cmd SALIR INICIO
RUTINA DE TEMPORIZACIÓN INICIO Cont = 25 Incremento Contador Segundos SALIR NO SI
RUTINA DE AUTOPROGRAMACIÓN DE LA MEMORIA DE PROGRAMA INICIO Es 1er Dato? Guardar en Dato_H Es 2do Es 3er Fin de Programación? Es 4to Dato_L ADD_H ADD_L Escribir en Memoria Limpiar bandera SALIR RESET SI NO
ÁREA DE MEMORIA PARA EL USUARIO Vector de Reset 0000h Vector de Interrupciones 0005h Memoria para Usuario 1000h Subrutinas del Firmware 0032h 1FFFh
DISEÑO DEL SOFTWARE
DIAGRAMA DE FLUJO GENERAL INICIO Mostrar Pantalla Principal Opción Menú B A D C E Archivo Configuración Opciones Ventanas Ayuda
MENÚ ARCHIVO A Mostrar Hoja en Blanco Menú Archivo Mostrar Cuadro Selección Abrir Nuevo Abrir Guardar en Archivo Abierto Archivo Elegido Guardar Guardar como Terminar Aplicación Cerrar
MENÚ CONFIGURAR B Mostrar Cuadro Elegir COM1 o COM2
MENÚ OPCIONES C Compilar Archivo Abierto Menú Opciones Mostrar Cuadro Programar Compilar Prog. Aplicación
MENÚ VENTANA D Mostrar Lista de Archivos Hay Archivos Abiertos Mostrar Vacío SI NO
MENÚ AYUDA E Menú Ayuda Mostrar Cuadro Mostrar Datos Del Autor De Características Menú Ayuda Mostrar Datos Del Autor Acerca de TESIS_RAPI Acerca del Autor Mostrar Archivo de Ayuda Contenido
ELECCIÓN DEL PAQUETE DE PROGRAMACIÓN PLATAFORMA Visual C++ Windows Visual Basic C++ Java Varias Visual C++ , Potente pero muy Complejo. No existe mucha información sobre como acceder a los recursos de la MFC Visual Basic, Muy fácil de aprender. Posee una gran cantidad de Controles Active X listos para ser usados. C++, existen muchos ejemplos y tutoriales sobre este lenguaje pero en cambio hay que diseñar las clases necesarias para crear cada objeto que se necesite. Java, tiene una ventaja enorme frente a los otros lenguajes que es poder correr en varia plataformas o sistemas operativos, pero en cambio tiene su grado de complejidad a la hora de manejar los puertos de comunicaciones
RESULTADOS DE LA COMPILACIÓN
PROGRAMACIÓN DE TAREAS DE USUARIO
ENSAMBLADO DEL CODIGO FUENTE
ESQUEMA DE DIRECTORIOS
COMPILACIÓN Y ENLACE CON MPLINK
TEMAS DE AYUDA
ACERCA DEL PROGRAMA
IMPLEMENTACION DEL SISTEMA
PRUEBAS REALIZADAS
ESTIMULOS PARA LAS ENTRADAS
VISTA DE LA PILA CUANDO HAY UNA LLAMADA A SUBRUTINA
FORMATO HEXADECIMAL VARIEDAD INTEL DE 8 BITS FORMATO INTEL INHX8M Ejemplos
FORMATO INTEL INHX8M :BBAAAATTHHHHHH....HHHHCC Donde: : Es el caracter dos puntos, y representa el comienzo de un registro. BB Es un byte de dos dígitos hexadecimales que representan el doble de la cantidad de bytes de datos que contiene la línea. AAAA Es una dirección de cuatro dígitos hexadecimales que representan la dirección de comienzo del registro de datos (multiplicada por dos). TT Es un byte de dos dígitos hexadecimales que siempre es '00', excepto en el registro de final de archivo, en donde es '01'. HH..HH Son pares de bytes de dos dígitos hexadecimales, de la forma byte bajo - byte alto, y representan los datos a grabar en el PIC. CC Es un byte de dos dígitos hexadecimales que representan el checksum de verificación de errores del registro de datos. Se calcula como el complemento a dos de la suma de todos los bytes anteriores en el registro.
Revisemos ahora el siguiente fragmento de archivo .HEX EJEMPLOS Revisemos ahora el siguiente fragmento de archivo .HEX :02 400E 00 F13F 80 --> Una sola instrucción en la posición 2007h :080008 00 00008A0117088207BD --> 4 instrucciones a partir de la dirección 0004h :00000001FF --> Indicador de fin de archivo HEX
CARACTERISTICAS DEL PIC 16F877 Características del núcleo del Microcontrolador: Características de Periféricos:
Características del núcleo del Microcontrolador CPU RISC de alto desempeño Sólo 35 instrucciones de una palabra para aprender Todas las instrucciones son de un ciclo excepto las de bifurcación que son de dos ciclos Velocidad de Operación : DC - 20 MHz entrada de reloj DC - 200 ns ciclo de instrucción 8K x 14 palabras de Memoria FLASH de Programa, 368 x 8 bytes de Memoria de Datos (RAM) 256 x 8 bytes de Memoria de Datos EEPROM Diagrama de Pines compatible con PIC16C73B/74B/76/77 Capacidad de Interrupciones (hasta 14 fuentes) Ocho niveles de pila en hardware Modos de direccionamiento directo, indirecto y relativo Reset en el Encendido (POR) Temporizador de estabilización de la energía (PWRT) y Temporizador de estabilización del Oscilador (OST)
Temporizador Perro Guardián (WDT) con su propio oscilador RC integrado Protección de Código programable Modo SLEEP para ahorro de energía Opciones para elegir el oscilador Memoria de Programa FLASH/EEPROM con tecnología CMOS de bajo consumo y alta velocidad Diseño completamente estático Programación serial en circuito (ICSP) por medio de dos pines Capacidad de programación en circuito con fuente de 5V Depuración en circuito a través de dos pines Procesador con acceso a leer/escribir memoria de programa Amplio rango de voltaje de operación: 2.0V to 5.5V Gran manejo de corriente: 25 mA Rangos de temperatura Comercial e Industrial Bajo cosumo de energía: -< 2 mA tipico @ 5V, 4 MHz -20 mA típico @ 3V, 32 kHz -< 1 mA típico en reposo
CARACTERISTICAS PRINCIPALES PIC16F877 Frecuencia de operación DC - 20 MHz Resets (y Retardos) POR, BOR (PWRT, OST) Memoria FLASH de Programa (Palabras de14-bits ) 8K Memoria de Datos (bytes) 368 Memoria de Datos EEPROM 256 Interrupciones 14 Puertas de E/S Puertas A,B,C,D,E Temporizadores 3 Módulos de Captura/Comparación/PWM 2 Comunicación Serial MSSP, USART Comunicación Paralela PSP Módulo Convertidor A/D de 10-bits 8 canales Conjunto de Instrucciones 35 Instrucciones