Olá pessoal, é o seguinte:
Estou trabalhando em um sistema de controle de demanda eletrica aqui na nossa empresa, onde se ultrapassarmos o valor de demanda que compramos da CEMIG, pagaremos uma multa alta para a mesma. Os fornos de tratamento térmico aqui são todos automatizados e os sensores são termopares tipo j, k e outros, porém estes sinais do termopar vão direto para o controlador do forno onde é feito todo o controle de atmosfera, temperatura, porcentagem de carbono e etc.
O controlador de demanda, por obrigação deve desligar os equipamentos da empresa no horário de pico de demanda que é entre 18 e 21:00, (para não ultrapassar o valor de demanda que compramos da cemig) porém eu não posso "derrubar" o forno de uma vez, porque senão eu acabo com o tratamento.
O aquecimento do forno é feito por resistencias de alta potencia e estas resistencias são controladas por um equipamento que cria um PWM encima delas aplicando mais tensão ou menos de acordo com os sinais de temperatura que são coletados do termopar e enviados ao controlador de temperatura. Este controlador de temperatura repassa estes sinais na facha de 4 a 20mA para o equipamento que cria o PWM.
Entenderam até agora?!?!?!?
Pois é o principal é o seguinte:
O pic entra aqui:
Então, o controlador de demanda emite sinais de 4 a 20mA e o controlador de temperatura emite também sinais de 4 a 20mA para o equipamento de PWM, dessa forma eu devo coletar estes dois sinais, compará-los e repassar o menor valor de comparação onde criarei uma lógica digital com os pinos das portas para repassar a um conversor D/A que irá jogar este valor para o equipamento de PWM para abaixar a temperatura até a demanda elétrica estabilizar. Eu posso abaixar a temperatura do forno e não desligá-la. OK! Quero fazer isto com o pic 16f877A
Entenderam?!!??!?!?
Já consegui ler as portas independentes, porém não estou conseguindo compara-los, sou novo em pic, mas tenho esperanca de consegui.
Já fizeram até jogo de Xadrez com ele, porque que eu não vou conseguir fazer uma bobeirinha dessas.... heheheh...
O programa que estou trabalhando até agora é:
#include <16F877A.h>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
#include "LCD_8B.c"
void main() {
long adc1, adc2;
Setup_adc_ports(RA0_RA1_RA3_ANALOG);
setup_adc( ADC_CLOCK_INTERNAL );
lcd_ini();
delay_ms(500);
printf(lcd_escreve,"\f Leitura AD ");
delay_ms(1000);
printf(lcd_escreve,"\f");
while(TRUE)
{
set_adc_channel(0);
delay_us(15);
adc1 = read_adc();
lcd_pos_xy(1,1);
printf(lcd_escreve,"ADC1 = %4lu",adc1);
delay_ms(100);
set_adc_channel(1);
delay_us(15);
adc2 = read_adc();
printf(lcd_escreve,"\nADC2 = %4lu",adc2);
delay_ms(100);
}
}
Estou colocando o resultado apenas no display por enquanto.
obrigado a todos...
inté mais!!!