Galera,
Consegui fazer o programa, porém não sei se funciona. Tem algum programa que consigo testar e ir inserindo as entradas e tal?
Alguém poderia me dizer se esta correto essa programação? Ela está baseada no fluxograma da postagem acima.
Estou usando o CCS C compiler.
#include <Flexis PLUS CCS.h>
#include <stdlib.h>
// Define os nomes dos pinos de saída
#define Y1 PIN_B0
#define Y2 PIN_B1
#define Y3 PIN_B2
#define Y4 PIN_B3
#define Y5 PIN_B4
#define Y6 PIN_B5
#define Y7 PIN_B6
#define Y8 PIN_B7
#define Y9 PIN_E0
#define Y10 PIN_E1
#define Y11 PIN_E2
#define Y12 PIN_C0
// Define os nomes dos pinos de entrada
#define IN1 PIN_D0
#define IN2 PIN_D1
#define IN3 PIN_D2
#define IN4 PIN_D3
#define IN5 PIN_D4
#define IN6 PIN_D5
#define IN7 PIN_D6
#define IN8 PIN_D7
#define IN9 PIN_A2
#define IN10 PIN_A3
#define IN11 PIN_A4
#define IN12 PIN_A5
int16 AN0;
int16 AN1;
int16 AN2;
char TempMax[8];
char TempMin[8];
char tensão[8];
void Board_init () //função que faz as configurações do PIC
{
setup_adc_ports(sAN0|sAN1); //configura os pinos A0 e A1 como canais analógicos
setup_adc(ADC_CLOCK_INTERNAL);
}
while (1)
{
output_high(Y4); // Liga Relé para leitura do sensor Frio do pistão
delay_ms (10);
set_adc_channel(0); // seleciona o canal analógico A0
delay_ms (10);
AN0 = read_adc(); // Lê o canal Analogico e coloca o valor na variavel AN0 (TEMPERATURA MINIMA)
delay_us(100);
itoa (AN0,10,TempMim); // Transforma a variavel int16 (AN0) em uma char (TempMim)
output_low (Y4); // Desliga o rele
set_adc_channel(0); // seleciona o canal analógico A0
delay_ms (10);
AN1 = read_adc(); // Lê o canal Analogico e coloca o valor na variavel AN1 (Temperatura Maxima)
delay_us(100);
itoa (AN1,10,TempMax); // Transforma a variavel int16 (AN1) em uma char (TempMax)
set_adc_channel(1); // seleciona o canal analógico A1
delay_ms (10);
AN3 = read_adc(); // Lê o canal Analogico e coloca o valor na variavel AN3 (Tensão gerada pelo motor)
delay_us(100);
itoa (AN3,10,tensão); // Transforma a variavel int16 (AN3) em uma char (tensão)
while ( tensão = 0)
{
while (TempMax < 1500); // Se a temperatura for maior que 150°C equivalente a 1500mA - Saia do While de sinal de aquicimento.
{
output_high (Y1) // Liga Led solicitando aquecimento.
output_high(Y4); // Liga Relé para leitura do sensor Frio do pistão
set_adc_channel(0); // seleciona o canal analógico A0
delay_ms (10);
AN0 = read_adc(); // Lê o canal Analogico e coloca o valor na variavel AN0 (TEMPERATURA MINIMA)
delay_us(100);
itoa (AN0,10,TempMim); // Transforma a variavel int16 (AN0) em uma char (TempMim)
output_low (Y4); // Desliga o rele do sensor ístao frio
set_adc_channel(0); // seleciona o canal analógico A0
delay_ms (10);
AN1 = read_adc(); // Lê o canal Analogico e coloca o valor na variavel AN1 (Temperatura Maxima)
delay_us(100);
itoa (AN1,10,TempMax); // Transforma a variavel int16 (AN1) em uma char (TempMax)
}
output_low (Y1); // desliga Led solicitando aquecimento.
output_high(Y2); // Liga rele de acionamento do motor como arranque
output_high(Y3); //Liga motor de arranque
delay_ms (5000); // Mantem o motor de arranque ligado por 20 segundos
output_low(Y2); // Desliga rele de acionamento do motor como arranque
output_low(Y3); //desliga motor de arranque
delay_ms (5000); // Aguarda 5 segundos para gerar energia
set_adc_channel(1); // seleciona o canal analógico A1
delay_ms (10);
AN3 = read_adc(); // Lê o canal Analogico e coloca o valor na variavel AN3 (Tensão gerada pelo motor)
delay_us(100);
itoa (AN3,10,tensão); // Transforma a variavel int16 (AN3) em uma char (tensão)
}
}