Bom dia! Estou desenvolvendo um controle de temperatura, utilizando controlador P mas não está rodando mais e não consigo encontrar o problema. Se alguém puder por favor ajudar aí!!

Componentes:

- Termopar

- Nanoshield Triac

- Nanoshield Zero Cross

- Nanoshield Interface

- Base Board

- Lâmpada

Código


#include <max6675.h> //INCLUSÃO DE BIBLIOTECA
#include <Dimmer.h>

// Configura a lampa no Triac: pino D3
Dimmer lamp(3);


int ktcSO = 5; //PINO DIGITAL (SO)
int ktcCS = 6; //PINO DIGITAL (CS)
int ktcCLK = 7; //PINO DIGITAL (CLK / SCK)


MAX6675 ktc(ktcCLK, ktcCS, ktcSO); //CRIA UMA INSTÂNCIA UTILIZANDO OS PINOS (CLK, CS, SO)

// CONTROLE PROPORCIONAL

double setPoint = 40;
double erro0 = 0;
double kc = 1;
double p = 0;


void setup(){
Serial.begin(9600); //INICIALIZA A SERIAL
delay(500); //INTERVALO DE 500 MILISSEGUNDOS

// Inicializa a lâmpada dimerizada
lamp.begin();
}

void loop(){
Serial.print("Temperatura: "); //IMPRIME O TEXTO NO MONITOR SERIAL
Serial.print(ktc.readCelsius()); //IMPRIME NO MONITOR SERIAL A TEMPERATURA MEDIDA
Serial.println("*C"); //IMPRIME O TEXTO NO MONITOR SERIAL
delay(2000); //INTERVALO DE 1000 MILISSEGUNDOS

// IMPLEMENTAÇÃO P

erro0 = setPoint - (ktc.readCelsius());
p = abs (erro0)*kc;

//SAÍDA DO CONTROLE '
digitalWrite (3,p);

Serial.print("ERRO = ");
Serial.println(erro0, DEC);


}

Exibições: 213

Responder esta

Respostas a este tópico

Boa tarde Srta. BOR, (se não gosta que te chame pelas iniciais, avise),

   gostaria muito de te ajudar, mas para isto recomendo as seguintes ações:


1Remova seu sketch da área de texto do seu tópico;

    Remova todos!!!!!!

2Clique em : " Arquivos "  e depois anexe o arquivo  com o seu sketch completo;


3. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar


4. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer

     com cada linha e facilita a ajuda.

    Mas fique 'a vontade caso não queira seguir minhas recomendações.

RV

Olá.

  Deve ter outras questões, mas lendo por alto, a linha:

digitalWrite (3,p);

Não pode ser assim. Melhor vc imprimir esse valor de p para entender melhor o que está vindo.

O digitalWrite aceita HIGH ou LOW como parametros. Isso é da biblioteca e deve ser respeitado.

O segundo parametro certamente não é um double.. 

Vem logo na cabeça de que LOW é 0 e HIGH é qq coisa diferente de zero, mas não sei... O importante é seguir a documentação para que de tudo certo, vide:
https://www.arduino.cc/reference/pt/language/functions/digital-io/d...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço