Si estás interesado en el mundo de la electrónica y la programación, seguramente has escuchado hablar del PIC16F84. Este microcontrolador ha sido clave en el desarrollo de numerosos proyectos y su versatilidad lo ha convertido en uno de los preferidos por los entusiastas. En este artículo te contaremos todo lo que necesitas saber sobre el PIC16F84: sus características, aplicaciones y cómo sacarle el máximo provecho en tus propios proyectos. ¡Sigue leyendo para descubrirlo!
¿Está buscando un microcontrolador con el equilibrio perfecto entre potencia y rendimiento? No busque más, el PIC16F84. Este microcontrolador versátil ha seguido siendo popular entre ingenieros y aficionados desde su introducción en 1996, debido a las amplias funciones que ofrece. Esta publicación de blog descubrirá todo lo que el PIC16F84 tiene para ofrecer y brindará una descripción general de lo que lo convierte en un dispositivo tan excelente. ¡Abróchese el cinturón y explore las funciones de este revolucionario microcontrolador!
¿Qué es PIC16F84?
El PIC16F84 es un microcontrolador de 8 bits de gama media de Microchip Technology, Inc. Se introdujo en 2001 y ahora se utiliza ampliamente para una variedad de proyectos electrónicos. Este chip cuenta con 6 puertos de E/S, 128 bytes de RAM, 14 temporizadores, 25 instrucciones y una pila de hardware de 8 niveles. El PIC16F84 se puede programar usando ensamblador o un compilador de lenguaje C. Se ha vuelto popular debido a su bajo costo y pequeño tamaño, así como a su capacidad para controlar dispositivos simples sin necesidad de memoria o componentes externos. Esto lo hace ideal para su uso en proyectos que requieren una complejidad mínima, como sistemas de automatización del hogar, juguetes controlados a distancia y sistemas integrados. El PIC16F84 también incluye algunas funciones analógicas, como un convertidor analógico a digital, un comparador y una referencia de voltaje. Esto lo hace útil para aplicaciones como acondicionamiento y medición de señales.
El PIC16F84 es una pieza popular debido a su pequeño tamaño, costo relativamente bajo y facilidad de uso. Se ha utilizado en muchos proyectos diferentes, desde aficionados hasta ingenieros profesionales. El bajo consumo de energía del chip también lo hace adecuado para dispositivos que funcionan con baterías. Además, la amplia gama de instrucciones disponibles lo hace ideal para personalizar programas para adaptarlos a aplicaciones específicas. Su arquitectura modular también permite a los usuarios agregar fácilmente memoria o componentes externos si es necesario.
Con estas características combinadas con su exclusivo conjunto de instrucciones, el PIC16F84 es perfecto para proyectos basados en microcontroladores que requieren un control simple pero confiable. Su bajo costo y pequeño tamaño lo convierten en una opción ideal para los aficionados que buscan crear sus propios proyectos o agregar funciones a sistemas existentes. Incluso los usuarios más experimentados pueden beneficiarse de la amplia gama de instrucciones del PIC16F84, lo que hace que la personalización de programas sea fácil y eficiente. Ya sea que necesite un controlador básico o uno avanzado con muchas funciones, el PIC16F84 seguramente tendrá algo que satisfaga sus necesidades.
Características del PIC16F84
Programación
El PIC16F84 tiene un módulo de programación integrado que le permite programarlo sin ningún hardware externo. Se programa mediante un protocolo serie de bajo voltaje llamado ISP (In System Programming). El programador se conecta directamente al chip y lo programa a través de SPI (Interfaz periférica serie) o HVP (Programación de alto voltaje).
Memoria
El PIC16F84 Tiene 1 kilobyte de memoria Flash para almacenar instrucciones y datos. Esto se puede utilizar para el almacenamiento de programas, así como para almacenar variables. Además, el chip también incluye 64 bytes de RAM (memoria de acceso aleatorio), que se pueden utilizar para un acceso y manipulación rápidos de datos.
Temporizadores/Contadores
El PIC16F84 Tiene dos temporizadores/contadores de 8 bits que se pueden utilizar para contar eventos y generar interrupciones. El chip también incluye un temporizador de vigilancia (WDT) en el chip para monitorear el funcionamiento del sistema. Esto garantiza que el sistema esté funcionando correctamente y permite que el programa se reinicie si ocurre un error.
Puertos de E/S
El PIC16F84 tiene cuatro puertos de E/S, cada uno de los cuales consta de 8 pines. Estos puertos se pueden utilizar para controlar dispositivos externos y leer datos de sensores. Cada puerto tiene sus propios ajustes de configuración independientes que le permiten configurar diferentes funciones de pin (como entrada o salida) en cada puerto.
Interrumpe
El PIC16F84 admite tres fuentes de interrupción: el temporizador/contadores, un evento de captura de entrada de datos y una interrupción externa. Las interrupciones se utilizan para responder a eventos rápidamente sin tener que sondear constantemente los registros periféricos en busca de cambios.
Comunicación
El PIC16F84 admite varios tipos de protocolos de comunicación, incluidos I2C (circuitos interintegrados) y SPI (interfaz periférica en serie). Esto le permite comunicarse con otros dispositivos como sensores o pantallas LCD. También incluye soporte integrado para UART (Transmisor receptor asíncrono universal) que se puede utilizar para comunicarse con una PC u otro dispositivo serie.
Gestión de energía
El PIC16F84 tiene varias funciones de administración de energía, incluida la capacidad de apagar los periféricos no utilizados, reducir la velocidad del reloj cuando no están en uso y administrar el consumo de energía. Esto permite su uso para aplicaciones de baja potencia, como nodos sensores o dispositivos portátiles.
Conexiones ICSP
El PIC16F84 tiene dos conexiones ICSP (Programación serie en circuito), lo que le permite programar y depurar el chip sin tener que retirarlo del circuito. Esto permite tiempos de desarrollo más rápidos y ayuda a reducir los costos de depuración.
Modos de oscilador
El PIC16F84 se puede utilizar con varios modos de oscilador diferentes, incluido el oscilador RC interno, un cristal o resonador externo y un reloj controlado por software. Esto le permite elegir el modo más adecuado para su aplicación y maximizar el rendimiento del sistema.
Parpadeando un LED
El PIC16F84 se puede utilizar fácilmente para controlar un dispositivo de salida como un LED. El programa está escrito en lenguaje ensamblador y almacenado en la memoria flash del chip. Una vez programado, el chip se puede conectar a un LED y a una fuente de alimentación, lo que le permite encender o apagar el LED según las instrucciones del programa. Este es un ejemplo simple de lo poderoso que puede ser este microcontrolador cuando se combina con conocimientos de programación. [2].
Funciones del PIC16F84a
Temporizador0
El PIC16F84a Contiene un temporizador/contador de 8 bits (Timer0) que se puede utilizar para operaciones de temporización y conteo. También se utiliza para generar retrasos de tiempo, medir eventos, modulación de ancho de pulso (PWM) y actuar como oscilador. El módulo Temporizador 0 tiene un registro de período PR0 de 8 bits que define el valor máximo de un ciclo de temporizador/contador. También incluye dos modos de funcionamiento: uno con preescalador y otro sin él.
USART
El módulo transmisor receptor asíncrono síncrono universal (USART) transmite y recibe datos en serie en líneas de comunicación asíncronas y síncronas. Sus componentes principales son el búfer de transmisión, el búfer de recepción, la lógica de detección de direcciones, el generador de velocidad en baudios y los registros de estado y control. USART se puede utilizar junto con el módulo Timer0 para proporcionar un reloj para la transmisión de datos.
Convertidor analógico a digital (ADC)
El módulo convertidor analógico a digital (ADC) se utiliza para convertir señales analógicas en señales digitales. Tiene una resolución de 8 bits, 7 canales de entrada programables, un multiplexor de entrada y un registro de puerto de salida que almacena los datos convertidos. El ADC también presenta dos modos de funcionamiento: modo de conversión única que realiza un ciclo de conversión por ciclo de instrucción y modo de conversión continua que realiza conversiones consecutivas hasta que se desactiva.
Controlador de interrupción
El controlador de interrupciones maneja todas las interrupciones generadas por el PIC16F84a. Tiene cuatro fuentes de interrupción: Desbordamiento del temporizador 0, interrupciones externas (INT0 e INT1), registro de recepción USART lleno y conversión ADC completa. El controlador de interrupciones también contiene un registro de máscara de prioridad que se puede utilizar para habilitar o deshabilitar interrupciones específicas. Finalmente, incluye un registro de indicador de interrupción que almacena el estado de cada interrupción habilitada.
Programación en serie en circuito (ICSP)
El PIC16F84a Cuenta con un puerto de programación serie en circuito (ICSP) que se puede utilizar para programar el dispositivo sin tener que retirarlo del circuito. Permite programar y depurar código mientras el dispositivo está conectado a una fuente de alimentación, lo que lo hace ideal para la creación de prototipos. Admite modos de programación de bajo y alto voltaje, así como autoprogramación.
Puertos de entrada/salida de uso general (GPIO)
El PIC16F84a tiene tres puertos de entrada/salida de uso general que se pueden utilizar para controlar dispositivos externos como LED o interruptores. Cada puerto GPIO tiene cuatro pines de E/S con resistencias pull-up seleccionables que se pueden usar para leer señales de entrada digitales o controlar señales de salida digitales. Los puertos GPIO también son configurables, lo que permite utilizarlos como entradas o salidas.
Temporizador de vigilancia (WDT)
El temporizador de vigilancia (WDT) se utiliza para restablecer el dispositivo en caso de un mal funcionamiento del sistema. Tiene un registro de período PR0 de 8 bits que se puede programar en cualquier valor entre 128 y 255. El WDT también incluye dos modos de funcionamiento: uno con preescalador y otro sin él. Cuando está habilitado, monitoreará continuamente la ejecución del programa y reiniciará el dispositivo si detecta un error. Esto es útil para prevenir fallas del sistema causadas por eventos inesperados como sobrecargas de energía o programación incorrecta.
Memoria EEPROM
El PIC16F84a Cuenta con 256 bytes de memoria EEPROM que se pueden usar para almacenar datos que deben conservarse incluso después de un ciclo de encendido o reinicio. Esta memoria no es volátil, lo que significa que no se borrará cuando se apague o reinicie el dispositivo. También se puede utilizar para almacenar configuraciones de usuario, como velocidad en baudios y bits de configuración.
Comparador
El PIC16F84a contiene un módulo comparador que se puede utilizar para comparar dos voltajes analógicos y generar una señal de salida basada en el resultado de la comparación. Este módulo tiene un único canal de entrada con resistencias pull-up seleccionables y un registro de salida digital de 8 bits que puede almacenar el resultado de la comparación en formato binario. El comparador se utiliza a menudo junto con el módulo ADC para proporcionar lecturas más precisas de las entradas analógicas.
Modo de sueño
El PIC16F84a cuenta con un modo de suspensión que se puede utilizar para reducir el consumo de energía cuando el dispositivo no se utiliza activamente. En el modo de suspensión, el oscilador dejará de funcionar y todos los demás módulos (excepto el temporizador de vigilancia) se desactivarán. Cuando está en modo de suspensión, solo una interrupción externa o una señal de reinicio puede activar el dispositivo. Esto lo hace ideal para aplicaciones donde la duración de la batería es importante.
Reinicio de encendido
El PIC16F84a también incluye un circuito de reinicio de encendido (POR) que garantiza que todos los registros se inicialicen a sus valores predeterminados después de una pérdida repentina de energía. El circuito POR monitorea el pin VDD y genera una señal de reinicio cada vez que detecta una caída de voltaje por debajo de cierto nivel. Esto permite que el dispositivo se reinicie desde un estado conocido y evita la corrupción de datos.
Reinicio de apagón
El PIC16F84a también incluye un circuito de reinicio de caída (BOR) que monitorea el pin VDD y genera una señal de reinicio cada vez que detecta una caída de voltaje por debajo de cierto nivel. Esto es útil para aplicaciones donde los cortes repentinos de energía son comunes, ya que garantiza que todos los registros se inicialicen a sus valores predeterminados antes de que se restablezca la energía. El circuito BOR también tiene umbrales seleccionables, lo que permite a los usuarios ajustar su sensibilidad según los requisitos de su aplicación. [3].
¿Cómo utilizar PIC16F84?
El PIC16F84 presenta una arquitectura básica que permite una programación sencilla, lo que lo convierte en un microcontrolador ideal para principiantes. El usuario puede escribir programas simples y ver rápidamente los resultados en los LED o LCD incluidos.
Para utilizar el PIC16F84 de forma eficaz, es necesario comprender cómo programarlo. Afortunadamente, hay muchos recursos disponibles en línea que enseñan los conceptos básicos de programación del microcontrolador. Un buen punto de partida es el tutorial «Introducción a los MCU PICmicro®» de Microchip, que cubre todos los fundamentos para utilizar este modelo en particular.
El PIC16F84 es una excelente manera de comenzar con la programación de sistemas integrados y es una excelente opción para cualquier programador principiante. Con su bajo costo y facilidad de uso, ofrece un gran potencial para la experimentación. Entonces, si está buscando una introducción al mundo de la programación de sistemas integrados, ¡este microcontrolador puede ser el adecuado para usted!
Preguntas más frecuentes
¿Para qué se utiliza el PIC16F84A?
PIC16F84A es un microcontrolador utilizado en sistemas integrados. Se utiliza ampliamente por su rentabilidad, bajo consumo de energía y capacidades de alto rendimiento. PIC16F84A se puede utilizar para crear aplicaciones personalizadas como control de motores, adquisición de datos, interfaces de comunicaciones, aplicaciones automotrices y más. También se puede utilizar para desarrollar controladores de dispositivos y software de sistema de bajo nivel. Sus diversas características lo convierten en una opción ideal para proyectos de desarrollo que requieren un procesador potente pero eficiente.
Con la ayuda de este microcontrolador, los ingenieros pueden desarrollar aplicaciones de pequeña y mediana escala con facilidad. También ofrece buena flexibilidad cuando se trata de lenguajes de programación como el lenguaje ensamblador y C/C++. Finalmente, PIC16F84A proporciona una amplia colección de periféricos en chip para manejar operaciones de E/S analógicas y digitales. Esto lo convierte en una excelente opción para aplicaciones que requieren funciones avanzadas como comunicación en serie, PWM (modulación de ancho de pulso) y compatibilidad con EEPROM.
¿Son buenos los microcontroladores PIC?
Sí, los microcontroladores PIC son buenos para muchas aplicaciones. Tienen un bajo consumo de energía y ofrecen una amplia gama de funciones, como conversión de analógico a digital de alta resolución y módulos avanzados de temporizador/contador. También ofrecen una amplia colección de periféricos en chip para admitir diversas operaciones como comunicación en serie, PWM (modulación de ancho de pulso), I2C (circuito interintegrado), SPI (interfaz de periféricos en serie), etc. Además, el pequeño tamaño de estos Los microcontroladores los hacen perfectos para crear soluciones integradas en dispositivos móviles.
¿Cuáles son las ventajas de utilizar un microcontrolador PIC?
Las ventajas de utilizar un microcontrolador PIC incluyen su bajo costo, bajo consumo de energía y rendimiento eficiente. Se puede programar fácilmente utilizando una variedad de lenguajes como lenguaje ensamblador y C/C++. Su amplia gama de funciones facilita la creación de aplicaciones personalizadas para muchos propósitos diferentes. Además, su pequeño tamaño lo hace ideal para crear soluciones móviles. Finalmente, los microcontroladores PIC ofrecen una amplia colección de periféricos en chip que se pueden utilizar para manejar diversas operaciones como conversión de analógico a digital, comunicación en serie, modulación de ancho de pulso (PWM), etc.
¿Cuáles son las desventajas de utilizar un microcontrolador PIC?
Algunas de las desventajas de utilizar un microcontrolador PIC incluyen su tamaño de memoria limitado y la falta de soporte para operaciones de punto flotante. También carece de capacidades de depuración de hardware en comparación con otros tipos de microcontroladores. Además, puede requerir un alto grado de experiencia para programar y depurar. Finalmente, su velocidad de reloj limitada puede limitar el rendimiento de algunas aplicaciones.
En general, los microcontroladores PIC son excelentes para crear aplicaciones personalizadas con bajo costo y rendimiento eficiente, pero tienen algunas limitaciones que deben tenerse en cuenta.
¿Por qué el PIC16F84A es bueno para sistemas integrados?
PIC16F84A es una excelente opción para sistemas integrados debido a su bajo costo, bajo consumo de energía y rendimiento eficiente. Ofrece una amplia gama de funciones, como conversión de analógico a digital de alta resolución, periféricos en chip como comunicación en serie, modulación de ancho de pulso (PWM), I2C (circuito interintegrado), SPI (interfaz de periféricos en serie), etc. Además, tiene un tamaño pequeño que lo hace ideal para soluciones móviles y otras aplicaciones donde el espacio es limitado. Finalmente, el dispositivo se puede programar fácilmente usando lenguaje ensamblador o C/C++, lo que facilita a los desarrolladores la creación de aplicaciones personalizadas de manera rápida y confiable.
¿Qué lenguaje de programación debo usar con PIC16F84A?
Los lenguajes más utilizados para programar un microcontrolador PIC son el lenguaje ensamblador y C/C++. El lenguaje ensamblador permite a los desarrolladores crear aplicaciones potentes rápidamente, mientras que C/C++ proporciona una forma más sencilla de programar operaciones más complejas. Además, algunos desarrolladores también utilizan otros lenguajes como Forth o Basic para programar su microcontrolador PIC. En última instancia, el mejor lenguaje para usar con un PIC16F84A dependerá de la aplicación y del nivel de experiencia del desarrollador.
Vídeo útil: introducción al microcontrolador pic16f84a
Párrafo de conclusión
El microcontrolador PIC PIC16F84 es una herramienta importante para los ingenieros de sistemas integrados, ya que les permite crear diseños altamente eficientes y confiables de manera rentable. La amplia gama de periféricos disponibles en el PIC16F84 permite al diseñador construir sistemas complejos con el mínimo esfuerzo. También admite varias herramientas de desarrollo que facilitan el diseño, la codificación y la depuración. Considerándolo todo, el microcontrolador PIC16F84 proporciona una excelente opción para cualquier aplicación integrada.
Es adecuado tanto para usuarios principiantes como avanzados debido a su arquitectura simple y potentes funciones. Además, la capacidad de crear prototipos de aplicaciones rápidamente hace que este controlador sea una excelente opción para proyectos de creación rápida de prototipos. Su pequeño tamaño lo hace ideal para su uso en diseños con limitaciones de espacio que requieren bajo consumo de energía y alto rendimiento.
Referencias
- https://www.teachmemicro.com/pic16f84a-beginner-microcontroller
- https://www.best-microcontroller-projects.com/pic16f84.html
- https://resources.pcb.cadence.com/blog/2020-what-is-a-pic-microcontroller-the-harvard-architecture