Tabla de contenido:

Multímetro PIC16F877: 6 pasos
Multímetro PIC16F877: 6 pasos

Video: Multímetro PIC16F877: 6 pasos

Video: Multímetro PIC16F877: 6 pasos
Video: TARJETA ENTRENADORA para PIC16f877a similar al de ARDUINO UNO |Construcción PASO A PASO 2024, Mes de julio
Anonim
Multímetro PIC16F877
Multímetro PIC16F877

Introducción al PICMETER

Este proyecto PICMETER se ha convertido en una herramienta útil y confiable para cualquier entusiasta de la electrónica.

  • Se ejecuta en un microcontrolador PIC16F877 / 877A.
  • Es un sistema de desarrollo PIC
  • Es multímetro de 19 funciones (voltímetro, medidor de frecuencia, generador de señales, termómetro …)
  • Es un verificador de componentes (R, L, C, diodo…) con hasta 5 rangos en cada función.
  • Tiene una radio ASK de banda de 433MHz, que espera algún tipo de aplicación.
  • Es un sistema de adquisición remota, donde otra computadora (PC) puede recopilar datos a través del puerto serie para visualización gráfica. (Se ha utilizado como parte frontal del proyecto ECG).
  • Tiene una función de registro (para el registro de datos durante horas), los resultados se cargan desde EEPROM.
  • Produce señales de prueba para impulsar algunos motores.
  • Ha sido probado minuciosamente, vea las fotografías en el Paso 5.
  • El software se lanza como código abierto

Este Instructable es una versión reducida de la Documentación completa. Describe el hardware y el software suficiente para que otros lo construyan como un proyecto terminado, o lo utilicen como un sistema de desarrollo para realizar más cambios, o simplemente busque ideas para usar en otros proyectos.

Suministros

El único chip crítico para comprar es el Microchip PIC16F877A-I / P

  • A = la última revisión que difiere de la original en la definición de bits de configuración.
  • I = rango de temperatura industrial
  • P = Paquete en línea doble de plástico de 40 conductores, 10 MHz, límites normales de VDD.

También el Hitachi LM032LN LCD de 20 caracteres por 2 líneas que tiene un controlador HD44780 integrado.

Las otras partes son solo componentes eléctricos genéricos, PCB de placa de circuito impreso, LM340, LM311, LM431, transistores de baja potencia de uso general, etc.

Paso 1: Descripción de PICBIOS

Descripción de PICBIOS
Descripción de PICBIOS

Descripción de PICBIOS

Este software se ejecuta en una placa PIC16F877 y ocupa los 4k inferiores de la memoria del programa. Proporciona el entorno de software para un programa de aplicación que ocupa la mitad superior de la memoria del programa. Es similar en idea al BIOS de la PC con algunos comandos de "depuración" para el desarrollo de programas y tiene 5 componentes:

  1. Menú de arranque
  2. Programa de instalación
  3. Interfaz de línea de comandos (a través del puerto serie)
  4. Controladores de kernel y dispositivo
  5. Interfaz de programación de aplicaciones

Paso 2: Descripción del PICMETER

PICMETER Descripción
PICMETER Descripción

PICMETER Descripción

Introducción

Como un multímetro (voltios, amperios, ohmios) tiene muchas funciones que se seleccionan mediante un sistema de menú. Pero al ser una combinación de hardware y software, es muy versátil, por ejemplo, están disponibles funciones como el registro durante períodos prolongados y el envío de datos en serie.

El menú es el "corazón" donde las funciones se seleccionan mediante los botones [izquierda] y [derecha]. Luego, para cada función, se seleccionan diferentes rangos mediante los botones [inc] y [dec]. Por ejemplo, los condensadores se miden desde aproximadamente 0,1 nF a 9000 uF por medio de 5 rangos separados.

2.1 Software PICMETER

Esto está organizado como un programa de aplicación que ocupa los 4k superiores de la memoria del programa y se basa en las funciones del PICBIOS para la E / S del dispositivo y el manejo de interrupciones. Consiste en la sección del menú que se ejecuta como tarea en segundo plano y sondea los botones cada 20 ms. Cuando se presiona un botón para cambiar la función o el rango, se llama a la rutina correspondiente. Cuando no se presiona ningún botón, la lectura medida se actualiza a intervalos de aproximadamente 0,5 segundos. Básicamente, el menú es una tabla de búsqueda.

2.2 Función del medidor - secciones

Hay muchas funciones, por lo que esta parte se divide en secciones, cada una de las cuales se ocupa de funciones de naturaleza similar. Esta es una breve lista de las secciones, consulte la documentación completa para ver cómo funciona cada sección en detalle. Debido a las limitaciones del puerto, hay 3 variaciones del proyecto (consulte la documentación completa). Las funciones en fuente normal son comunes a todos los proyectos. Las funciones SUBRAYADAS solo se incluyen en el proyecto PICMETER1. Las funciones en ITALICS solo se incluyen en proyectos PICMETER2 o PICMETER3.

Sección VoltMeter: el archivo de origen es vmeter.asm

Contiene funciones que se basan en la medición de voltaje usando el ADC.

  • Voltaje ADC (lee el voltaje en la entrada seleccionada, AN0 a AN4)
  • AD2 Dual (muestra voltaje en AN0 y AN1 simultáneamente)
  • Termómetro TMP -10 a 80? degC (2N3904 o transductor doble LM334)
  • LOG: establece el intervalo de registro
  • OHM: medición de resistencia (método de potenciómetro) de 0Ω a 39MΩ en 4 rangos
  • DIO - Diodo, mide voltaje directo (0-2.5V)
  • CON - Continuidad (emite un pitido cuando la resistencia es inferior al umbral de 25, 50 o 100)

Componente Meter1: el archivo de origen es meter1.asm

Medición de condensadores, inductores y resistencias mediante el circuito comparador LM311. Basado en la medición del tiempo de un ciclo de carga.

  • CAL - calibración - mide 80nf y 10μF fijos para autocomprobación y ajuste
  • Cx1: medición de condensadores de 0,1 nF a 9000 μF en 5 rangos
  • Lx1 - medición de inductor de 1mH a ?? mH en 2 rangos
  • Rx1 - medición de resistencia de 100Ω a 99MΩ en 3 rangos

Componente Archivo fuente de Meter2 Meter2.asm

Medición de componentes utilizando un oscilador de relajación alternativo LM311 y un oscilador Colpitts. Basado en la medición del período de tiempo de N ciclos. Este es un poco más preciso que el método anterior ya que se mide el tiempo de N = hasta 1000 ciclos. Es más una solución de hardware y requiere más construcción.

  • Cx2: medición de condensadores de 10pF a 1000 μF en 5 rangos.
  • Rx2: medición de resistencia de 100 ohmios a 99 M en 5 rangos.
  • Lx2: medición de inductor de 1 mH a 60 mH en 1 rango.
  • osc - medición del inductor (método Colpitts) de 70μH a 5000μH? en 2 rangos.

Medidor de frecuencia - archivo fuente Fmeter.asm

Contiene funciones que usan contadores y temporizadores PIC, y poco más;

  • FREQ - Medidor de frecuencia de 0Hz a 1000kHz en 3 rangos
  • XTL: mide la frecuencia de los cristales LP (no probado)
  • SIG - generador de señal de 10Hz a 5KHz en 10 pasos
  • SMR - motor paso a paso - dirección inversa
  • SMF - motor paso a paso - dirección de avance.

Comunicaciones: el archivo de origen es comms.asm

Funciones para transmitir / recibir señal para probar periféricos en serie y SPI;

  • Prueba UTX serie TX & inc y dec bit rate de 0.6 a 9.6k
  • Prueba URX serial RX & inc y dec bit rate de 0.6 a 9.6k
  • SPM: prueba SPI en modo maestro
  • SPS: prueba SPI en modo esclavo

Módulo de radio FSK: el archivo de origen es Radio.asm

Funciones que utilizan módulos de transmisión y recepción de radio RM01 y RM02. Estos módulos se conectan a través de SPI, que utiliza la mayoría de los pines del puerto C.

  • RMB - establece la tasa de baudios del módulo de radio
  • RMF - establecer la frecuencia de RF del módulo de radio
  • RMC: establece la frecuencia del reloj del módulo de radio
  • XLC: ajusta la carga de capacitancia del cristal
  • POW - establece la potencia del transmisor
  • RM2 - transmitir datos de prueba (módulo RM02)
  • RM1 - recibir datos de prueba (módulo RM01)

Módulo de control: archivo de origen control.asm

  • SV1 - Salida servo (usando CCP1) de 1 ms a 2 ms en pasos de 0,1 ms
  • SV2 - Salida servo (usando CCP2) de 1 ms a 2 ms en pasos de 0,1 ms
  • PW1 - Salida PWM (usando CCP1) de 0 a 100% en pasos del 10%
  • PW2 - Salida PWM (usando CCP2) de 0 a 100% en pasos del 10%

Adquisición remota de datos: el archivo de origen es remote.asm

Modo remoto (Rem): un conjunto de comandos para que el medidor se pueda operar desde una computadora a través de una interfaz en serie. Un comando recopila datos registrados en EEPROM durante un período de horas. Otro comando lee los voltajes a la velocidad máxima del ADC en el búfer de memoria, luego transmite el búfer a la PC, donde los resultados se pueden mostrar gráficamente. Efectivamente, este es un osciloscopio, que trabaja en un rango de frecuencia de audio

Hora: el archivo de origen es time.asm

Tim: solo muestra la hora en formato hh: mm: ss y permite cambiar con 4 botones

Paso 3: descripción del circuito

Descripción del circuito
Descripción del circuito
Descripción del circuito
Descripción del circuito

Descripción del circuito

3.1 Placa de desarrollo básica

La Figura 1 muestra una placa de desarrollo básica para ejecutar PICBIOS. Es una fuente de alimentación regulada de 5V muy estándar y sencilla y condensadores de desacoplamiento, C1, C2….

El reloj es de cristal de 4 MHz, por lo que TMR1 hace tictac en intervalos de 1us. Los condensadores de 22pF C6, C7 son recomendados por Microchip, pero no parecen ser realmente necesarios. El encabezado ICSP (programación en serie en circuito) se utiliza para programar inicialmente un PIC en blanco con el PICBIOS.

El puerto serie (COM1): tenga en cuenta que TX y RX se intercambian, es decir, COM1-TX está conectado al puerto C-RX, y COM1-RX está conectado al puerto C-TX (comúnmente conocido como "módem nulo"). Además, los niveles de señal requeridos para RS232 deberían ser + 12V (espacio) y -12V (marca). Sin embargo, los niveles de voltaje de 5V (espacio) y 0V (marca) parecen adecuados para todas las PC que he usado. Por lo tanto, los niveles de señal de RX y TX simplemente se invierten mediante el controlador de línea (Q3) y el receptor de línea (Q2).

La pantalla LCD LM032LN (2 filas de 20 caracteres) utiliza la “interfaz HD44780” estándar. El software utiliza el modo nibble de 4 bits y solo escritura, que utiliza 6 pines del puerto D. El software se puede configurar para nibble low (puertos D bits 0-3) o nibble high (puerto D bits 4-7) como se usa aquí.

Los interruptores de botón proporcionan cuatro entradas para la selección del menú. Use push para hacer interruptores ya que el software detecta el flanco descendente. Las resistencias pull-up (= 25k) son internas al PUERTO B. El puerto RB6 no se puede usar para interruptores, debido al límite de 1nF (que se recomienda para ICSP). ¿No es necesario un interruptor de reinicio?

button0

opciones de menú a la izquierda [◄]

botón 1

opciones de menú derecha [►]

button2

Incrementar rango / valor / seleccionar [▲]

button3

disminuir rango / valor / seleccionar [▼]

3.2 Comprobador de componentes y entradas analógicas - Placa 1

La Figura 2 muestra los circuitos analógicos para PICMETER1. Las entradas analógicas AN0 y AN1 se utilizan para la medición de voltaje de propósito general. Seleccione valores de resistencia para que los atenuadores proporcionen 5 V en los pines de entrada AN0 / AN1.

Para rango de entrada de 10 V, m = 1 + R1 / R2 = 1 + 10k / 10k = 2

Para un rango de entrada de 20 V, m = 1 + (R3 + R22) / R4 = 1 + 30k / 10k = 4

AN2 se utiliza para la medición de temperatura utilizando el transistor Q1 como un transductor de temperatura "crudo". Coeficiente de temperatura del transistor NPN a 20 celcuis = -Vbe / (273 + 20) = - 0.626 / 293 = -2.1 mV / K. (ver medición de temperatura en la sección Analógica). El LM431 (U1) proporciona una referencia de voltaje de 2,5 V en AN3. Finalmente, AN4 se utiliza para pruebas de componentes en la sección Analógica.

Para la medición de componentes, el componente de prueba se conecta a través de RE2 (D_OUT) y la entrada AN4. Los resistores R14 a R18 proporcionan cinco valores diferentes de resistencia utilizados para la medición de resistencia (método de potenciómetro) en la sección analógica. Las resistencias se “conectan en circuito” configurando los pines del Puerto C / Puerto E como Entrada o Salida.

Meter1 realiza la medición de componentes cargando varias combinaciones de condensador y resistencia conocidos / desconocidos. LM311 (U2) se utiliza para crear interrupciones CCP1 cuando un condensador se carga al umbral superior (75% VDD) y se descarga al umbral inferior (25% VDD). Estos voltajes de umbral se establecen mediante R8, R9, R11 y el potenciómetro R10, lo que da una ligera ajustamiento. Al probar los condensadores, el condensador C13 (= 47pF) más la capacitancia parásita de la placa proporcionan un ajuste de 100pF. Esto asegura que, cuando se quita el componente de prueba, el intervalo entre las interrupciones del CCP1 excede los 100us y no sobrecarga el PIC. Este valor de ajuste (100pF) se resta de la medición del componente por software. D3 (1N4148) proporciona la ruta de descarga cuando se prueban inductores y protege D_OUT, evitando que el voltaje se vuelva negativo.

λΩπμ

Paso 4: Guía de construcción

Guía de construcción
Guía de construcción
Guía de construcción
Guía de construcción

Guía de construcción

Lo bueno es que este proyecto se construye y se prueba en etapas. Planifique su proyecto. Para estas instrucciones, supongo que está construyendo PICMETER1, aunque el procedimiento es similar para PICMETER2 y 3.

4.1 Placa de desarrollo PCB

Debe construir la placa de desarrollo básica (Figura 1) que debe caber en una PCB de tamaño estándar de 100 por 160 mm, planifique el diseño para mantenerlo lo más ordenado posible. Limpie su PCB y estañe todo el cobre, use componentes y conectores confiables, probados siempre que sea posible. Utilice una toma de 40 pines para el PIC. Verifique la continuidad de todas las uniones soldadas. Puede ser útil mirar las fotos de diseño de mi tablero de arriba.

Ahora tiene un PIC en blanco y necesita programar PICBIOS en la memoria flash. Si ya tiene un método de programación, está bien. Si no, recomiendo el siguiente método que he utilizado con éxito.

4.2 Programador AN589

Este es un pequeño circuito de interfaz que permite que un PIC se programe desde una PC usando el puerto de impresora (LPT1). El diseño fue publicado originalmente por Microchip en una nota de aplicación. (referencia 3). Obtenga o cree un programador compatible con AN589. He utilizado un diseño AN589 mejorado que se describe aquí. Esto es ICSP, lo que significa que inserta el PIC en el zócalo de 40 pines para programarlo. Luego, conecte el cable de la impresora a la entrada AN539 y el cable ICSP de AN589 a la placa de desarrollo. El diseño de mi programador toma su poder de la placa de desarrollo a través del cable ICSP.

4.3 Configuración de PICPGM

Ahora necesita algún software de programación para ejecutarse en la PC. PICPGM funciona con varios programadores, incluido AN589, y se descarga de forma gratuita. (Ver referencias).

En el menú de hardware, seleccione Programador AN589, en LPT1

Dispositivo = PIC16F877 o 877A o detección automática.

Seleccionar archivo hexadecimal: PICBIOS1. HEX

Seleccione Borrar PIC, luego Programar PIC, luego Verificar PIC. Con un poco de suerte, obtendrá un mensaje de finalización satisfactoria.

Retire el cable ICSP, Reinicie el PIC, es de esperar que vea la pantalla PICBIOS en la pantalla LCD; de lo contrario, verifique sus conexiones. Verifique el menú de inicio presionando los botones izquierdo y derecho.

4.4 Conexión en serie (hiperterminal o masilla)

Ahora verifique la conexión serial entre PIC y PC. Conecte el cable serial de PC COM1 a la placa de desarrollo y ejecute un programa de comunicación, como el antiguo Hyper-Terminal Win-XP, o PUTTY.

Si usa Hyperterminal, configure de la siguiente manera. Desde el menú principal, Llamar> Desconectar. Luego Archivo> Propiedades> Conectar a pestaña. Seleccione Com1, luego haga clic en el botón Configurar. Seleccione 9600 bps, sin paridad, 8 bits, 1 parada. Control de flujo de hardware”. Luego Llamar> Llamar para conectarse.

Si usa PuTTY, Conexión> Serie> Conectar a COM1 y 9600 bps, sin paridad, 8 bits, 1 parada. Seleccione “RTS / CTS”. Luego Sesión> Serie> Abrir

En el menú de arranque de PICBIOS, seleccione “Modo de comando”, luego presione [inc] o [dec]. El mensaje "PIC16F877>" debería aparecer en la pantalla (si no es así, verifique su interfaz serial). Prensa ? para ver la lista de comandos.

4.5 Programar PICMETER

Una vez que la conexión en serie está funcionando, programar la memoria flash es tan simple como enviar un archivo hexadecimal. Ingrese el comando "P", que responde con "Enviar archivo hexadecimal …".

Usando hiper-terminal, desde el menú Transferir> Enviar archivo de texto> PICMETER1. HEX> Abrir.

El progreso se indica con ":." ya que se programa cada línea de código hexadecimal. Finalmente cargue el éxito.

Si está utilizando PuTTY, es posible que deba usar el Bloc de notas y copiar / pegar todo el contenido de PICMETER1. HEX en PuTTY.

De manera similar para verificar, ingrese el comando “V”. En el hiper-terminal, desde el menú Transferir> Enviar archivo de texto> PICMETER1. HEX> Aceptar.

Advertencia = xx… Si programa un chip 16F877A, recibirá algunos mensajes de advertencia. Esto tiene que ver con las diferencias entre 877 y 877A, que se programa en bloques de 4 palabras. Desafortunadamente, el enlazador no alinea el inicio de las secciones en límites de 4 palabras. La solución simple es tener 3 instrucciones NOP al comienzo de cada sección, así que simplemente ignore las advertencias.

Reinicie y en el menú de arranque del BIOS, seleccione "Ejecutar aplicación". Debería ver PICMETER1 en la pantalla LCD.

4.6 Ejecutar PICMETER1

Ahora comience a construir más secciones de la placa de desarrollo (Figura 2) para que las funciones de Voltímetro y Medidor de componentes funcionen según sea necesario.

Meter1 necesita alguna calibración. En la función "Cal", ajuste R10 para dar lecturas de 80.00, 80.0nF y 10.000uF aprox. Luego lea un pequeño 100pF en la función Cx1. Si la lectura es incorrecta, cambie la tapa de ajuste C13 o cambie el valor de "trimc" en meter1.asm.

Ahora ejecute PICBIOS Setup y cambie algunas configuraciones de calibración en EEPROM. Calibre la temperatura ajustando la compensación de 16 bits (formato alto, bajo). Es posible que también deba cambiar el valor de "delayt".

Si su intención es construir el proyecto tal como está, felicidades, ¡ha terminado! Cuéntame sobre tu éxito en Instructables.

4,7 MPLAB

Pero si desea realizar modificaciones o desarrollar aún más el proyecto, debe reconstruir el software utilizando MPLAB. Descargue MPLAB de Microchip. Este es el "antiguo" que es simple y fácil de usar. No he probado la nueva herramienta de desarrollo labx, que parece mucho más complicada.

Detalles sobre cómo crear un nuevo proyecto y luego agregar archivos al proyecto en Documentación completa.

Paso 5: Fotos de la prueba

Fotos de prueba
Fotos de prueba
Fotos de prueba
Fotos de prueba
Fotos de prueba
Fotos de prueba

Foto de arriba del termómetro, lectura de 15 ° C

Frecuencia de prueba, lectura = 416k

Inductor de prueba marcado 440uF, lee 435u

Probando una resistencia de 100k, lee 101k, eso es fácil.

Prueba del condensador de 1000pF, la lectura es 1.021nF

Paso 6: referencias y enlaces

6.1 Hoja de datos de PIC16F87XA, Microchip Inc.

ww1.microchip.com/downloads/en/devicedoc/39582b.pdf

6.2 Especificación de programación de memoria FLASH PIC16F87XA, Microchip

ww1.microchip.com/downloads/en/devicedoc/39589b.pdf

6.3 Nota de aplicación AN589, Microchip Inc.

ww1.microchip.com/downloads/en/appnotes/00589a.pdf

6.4 Descarga de PICPGM

picpgm.picprojects.net/

6.5 MPLab IDE v8.92 descarga gratuita, Microchip

pic-microcontroller.com/mplab-ide-v8-92-free-download/

6.6 Fichas técnicas para los módulos Hope RFM01-433 y RFM02-433, RF Solutions

www.rfsolutions.co.uk/radio-modules-c10/hope-rf-c238

6.7 LT Spice, dispositivos analógicos

www.analog.com/en/design-center/design-tools-and-calculators/ltspice-simulator.html

6.8 Un circuito programador pic basado en AN589, Best-Microcontroller-Projects

www.best-microcontroller-projects.com/pic-programmer-circuit.html

6.9 Archivos de código abierto

fuente abierta

Recomendado: