Programando PICs em Ladder

Programação ladder (de contatos) para PIC:

Software LDMICRO

Ladder Logic for PIC and AVR
www.cq.cx/ladder.pl
www.cq.cx/ladder-pt.html

O Programa é livre.

Apostila:
www.mecatronica.org.br/disciplinas/programacao/019/LADDER.pdf

Projeto de segurança para Inversores de Tensão...


Utilizei o microprocessador PIC 12F675 no projeto, que tem a função de segurança do dispositivo.

Funcionamento:

Após 3 segundos ao ser energizado, será ativada a saída GP0, que dá início ao processo, esse tempo é para o carregamento dos capacitores.

Configurado como ADC, quando a tensão na entrada do GP1 for maior que 1volt, a proteção contra curto-circuitos será habilitada, enviando sinal alto a saída GP4, que desligará o sistema.

A entrada GP2 também foi configurada como analógica, quando a tensão for maior que 2 volts, a saída GP5 terá sinal alto, que tem a função de avisar se a bateria está fraca.


Código de fonte:

#include <12f675.h>

#device adc=10
#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO,PUT,NOPROTECT,BROWNOUT,NOMCLR,NOCPD
#define Mode PIN_A3 // GPIO.3
#byte GPIO = 0x00

long ad = 0;

void main()
{
   output_a(0x00);
   set_tris_a (0x0E); // GPIO.5, GPIO.4 e GPIO.0 como saidas

   setup_adc_ports(sAN1|sAN2|VSS_VDD);
   setup_adc (ADC_CLOCK_DIV_8); // A/D clock/8 @4MHz, Tempo A/D = 2uS
   setup_comparator (NC_NC_NC_NC);

   delay_ms (3000); // tempo de inicialização
   OUTPUT_HIGH(PIN_A0);

while (true)
{

   ad = 0;
   set_adc_channel (1);
   delay_us (20);
   ad = read_adc ();
   delay_us (20);

   if (ad <= 102) OUTPUT_LOW (PIN_A4);
   ELSE OUTPUT_HIGH (PIN_A4);

   delay_ms (20) ;

   ad = 0;
   set_adc_channel (2);
   delay_us (20);
   ad = read_adc ();
   delay_us (20);

   if (ad <= 409) OUTPUT_LOW (PIN_A5);
   ELSE OUTPUT_HIGH (PIN_A5);

   delay_ms(20);

}
}

Imagem do circuito: