Sensor de Corriente con pic16f887

Sensor de Corriente con pic16f887 simulado en proteus

Objetivos:

Mostrar en una LCD la corriente usando un sensor corriente mcp

Diagrama de proteus

Código en Pic C

#include <16F887.h>
#device adc=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOCPD                    //No EE protection
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOWRT                    //Program memory not write protected
#FUSES BORV40                   //Brownout reset at 4.0V

#use delay(clock=8000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#include «lcd.c»

void main()
{

int16 corrientedi;    // variable donde guardo la lectura digital
float32 corriente;   //  varibale que voy escribir  en el lcd

setup_adc_ports(sAN0|VSS_VDD);  // seleccionamos rA0 con entrada analogica

setup_adc(ADC_CLOCK_INTERNAL);

set_adc_channel(0); //Seleccionar Canal 0 para sensor de Temperatura

lcd_init();                   // Activa lcd
//

while(true){

corrientedi=read_adc(); //Leer ADC

corriente=(75.75*corrientedi/1024)-37.87 ; //Escalizar señal de salida temperatura 625

lcd_gotoxy(1,1);  // cursor en columna 1 renglon 2

printf(lcd_putc,»Analog %2.1f A»,corriente);

lcd_gotoxy(1,2);  // cursor en columna 1 renglon 2
printf(lcd_putc,»Digital %Lu»,corrientedi);

printf(«%2.1f n»,corriente);

delay_ms(100); //Periodo de actualizacion lectura

}
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *