Nesse exemplo mostro como ler um sinal de 4 – 20 mA.

O circuito real e simulação são diferentes, pois tive dificuldades com o componentes de seleção que em modo corrente não funciona bem, portanto foi feita a conversão para tensão e depois passando pela seleção.

Usar no Proteus 7.10 ou superior.


Fazer o download:[PIC][MIKROC][PROTEUS] Lendo um Sinal de 4-20mA


Segue o código:

[sections] [section title=”Esquema Elétrico Real”]
Leitor 4-20mA Real
Leitor 4-20mA Real
[/section]

[section title="Esquema Elétrico Simulação"]
Leitor 4-20mA [Simulação]
Leitor 4-20mA [Simulação]
[/section]

[section title="Código Fonte"]

/*
DATEK Tecnologia Eletrônica Ltda.

********************************************************************************
PROGRAMA EXEMPLO: Mostrar como ler sinais de 4-20mA.
OBJETIVO: Aprender como ler sinais de 4-20mA.
AUTOR: Fabio Mulero.[fabio@datek.com.br]
********************************************************************************
MICROCONTROLADOR: PIC18F4550.

PLACA DE DESENVOLVIMENTO: SIMULAÇÃO NO PROTEUS

SOFTWARE: MikroC PRO for PIC Versão: 6.0

********************************************************************************
*/

// Variaveis globais

// Alias
// Lcd pinout settings
sbit LCD_RS at RC4_bit;
sbit LCD_EN at RC5_bit;
sbit LCD_D7 at RC3_bit;
sbit LCD_D6 at RC2_bit;
sbit LCD_D5 at RC1_bit;
sbit LCD_D4 at RC0_bit;

// Pin direction
sbit LCD_RS_Direction at TRISC4_bit;
sbit LCD_EN_Direction at TRISC5_bit;
sbit LCD_D7_Direction at TRISC3_bit;
sbit LCD_D6_Direction at TRISC2_bit;
sbit LCD_D5_Direction at TRISC1_bit;
sbit LCD_D4_Direction at TRISC0_bit;

// Funções auxiliares

// Função principal
void main()
{
   unsigned int uiValor;
   char txt[6];
   ADCON1=0X0E;
   TRISA=0xff;
   PORTA=0;
   Lcd_Init();

   Lcd_Cmd(_LCD_CLEAR); // Clear display
   Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off

   Lcd_Out(1,1," DATEK TECNOLOGIA ");
   Lcd_Out(2,1," LEITOR 4-20mA ");
   Lcd_Out(3,1," REVISAO 00 ");
   Lcd_Out(4,1,"Corrente: ");
   while(1)
   {
      uiValor = ADC_Read(0);
      if(uiValor<(1023/5)) // Abaixo de 1/5 do fundo de escala ou abaixo de 4 mA.
      {
         Lcd_Out(4,10," Aberto");
      }
      else
      {
         WordToStr(uiValor/51,txt); // dividido por 51 para gerar 20 com 1023 pontos do ADC.
         Lcd_Out(4,10,txt);
         Lcd_Out_CP("mA");
      }
   }//fim do while
}//fim do main



[/section]
[/sections]

Obrigado e até o próximo post.

DATEK Tecnologia Eletrônica
[PIC][MIKROC][PROTEUS] Lendo um Sinal de 4-20mA
Tags:                         

Deixe uma resposta

%d blogueiros gostam disto: