Sensor de Corriente con pic16f887 simulado en proteus

Sensor de Corriente con pic16f887 simulado en proteus

Escrito Por: admin Publicado En: Proyectos de microcontroladores PIC Fecha de Creación: 2016-08-23 visitas: 1297

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
   
   
   }
   

}