Meu conhecimento em C é moderado e tenho desenvolvido um projeto complexo de automatização de fornos para uma carvoaria.
Vamos ao assunto:
Preciso desenvolver um programa em linguagem C (tenho usado o MikroC e o CCS, mas tenho preferência pelo primeiro) para montar o projeto de comandos pra um PIC, que já foi definido: PIC 12F675. Este pic é suficiente pro que estou precisando: ler uma entrada analógica que varia entre 0V e 5V, já linearizada e, em seguida, de acordo com o valor lido de tensão na porta analógica (AN0, no caso em que tentei), ativar uma saída digital (5V).
Quero ativar a saída se por acaso o valor de tensão lido for um valor próximo de 3,6V e 3,9V (o que no caso do circuito que já montei significa 360ºC 390ºC).
Como já comprei quase tudo, prefiro que o programa siga estas orientações.
Abaixo segue um programa que fiz no MikroC e que tentei simular com o Proteus7- ISIS, mas parece que o programa não funcionou como deveria, por favor dêem dicas de otimização, apontem erros, quaisquer que forem ou até mesmo postem um programa alternativo que use o pic 12f675:
Pergunta
Diego Marques
Olá pessoal, sou um novo membro aqui do fórum.
Meu conhecimento em C é moderado e tenho desenvolvido um projeto complexo de automatização de fornos para uma carvoaria.
Vamos ao assunto:
Preciso desenvolver um programa em linguagem C (tenho usado o MikroC e o CCS, mas tenho preferência pelo primeiro) para montar o projeto de comandos pra um PIC, que já foi definido: PIC 12F675. Este pic é suficiente pro que estou precisando: ler uma entrada analógica que varia entre 0V e 5V, já linearizada e, em seguida, de acordo com o valor lido de tensão na porta analógica (AN0, no caso em que tentei), ativar uma saída digital (5V).
Quero ativar a saída se por acaso o valor de tensão lido for um valor próximo de 3,6V e 3,9V (o que no caso do circuito que já montei significa 360ºC 390ºC).
Como já comprei quase tudo, prefiro que o programa siga estas orientações.
Abaixo segue um programa que fiz no MikroC e que tentei simular com o Proteus7- ISIS, mas parece que o programa não funcionou como deveria, por favor dêem dicas de otimização, apontem erros, quaisquer que forem ou até mesmo postem um programa alternativo que use o pic 12f675:
O datasheet desse pic segue abaixo também:
http://search.microchip.com/searchapp/sear...ge=10&id=24
Programa:
//Controle de temperatura para forno com PIC 12F675
// Autor: Diego Marques
#define temp_set_hi 390 // Definição da temperatura de acionamento da ventoinha em graus Celsius
#define temp_set_lo 360 // Definição da temperatura de desligamento da ventoinha em graus Celsius
#define vent gpio.f1 //Definição da porta que acionará a venoinha (porta 1)
float temp_read(void) //Função que lê o sinal do conersor A/D
{
float temp;
temp = Adc_Read(0); //Atribui à variavel temp o valor do A/D da porta 0
temp = temp*0.4884; //Conversão do valor para graus Celsius
// fundo de escala = 500 graus Celsius (1023 = 500 graus) => resolução de 0,5 grau
return temp;
}
void main(void)
{
float temp = 1000; //Inicialização arbitrária da variável
ADCON0 = 0b00000001; //Configuração do registrador do A/D (vide pag. 43 do datasheet)
TRISIO = 0b10000000; //Configuração do registrador das portas (vide pag. 20 do datasheet)
GPIO = 0; //Inicia com as portas de saída em 0
while(1) //Loop infinito
{
if(temp >= temp_set_hi)
{
vent = 1; //Ativa um relê
}
if(temp <= temp_set_lo)
{
vent = 0; //Desativa um relê
}
temp = temp_read(); //Atualização da temperatura
}
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.