Ir para conteúdo

Fazendo um controlador de temperatura com arduino


Postagens recomendadas

Sei bem como é que é ter filhos pequenos. Os meus até que já são mais independentes. Mas ainda não rola sair com eles para encontrar os amigos para um cafezinho. O Bernardo, o Klause e o Márcio são testemunhas de que tentei.

 

Fiz um pequeno video demonstrando o roastlogger com o nosso TC4C. A ventoinha aciona sempre mesmo quando no automático (não posso afirmar que ela desliga em algum momento, já que meu teste foi no protótipo, sem ligar ao forno (sem variar temperaturas).

 

Os botões não funcionaram. Depois teste aí e me de um feedback.

 

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

tentei e nem rodou no meu. Tentei comunicar com o Tc4 do android e não funcionou também.

Andei lendo o sketch. Ainda tem que remover as bilbliotecas Eeprom e cadc. Temos ainda que trocar todas as fórmulas que estavam marcadas para a Cadc e colocar para o max31855.

 

Do jeito que está não entendi como você conseguiu capturar as temperaturas no roastlogger. Vou fuçar mais a tarde.

Link para o comentário
Compartilhar em outros sites

LEO,

 

Eu não mexi no código para não correr o risco de retirar algum parâmetro que afetasse a integridade do sistema.

Apenas atribui ao parâmetro t1 e ao parâmetro t2 novos valores, retirados do shield thermopar. O código acrescido é o que segue (no que se relaciona a essa parte):

 

t1_cur = thermocouple.readCelsius();

t2_cur = thermocouple.readInternal();

 

Procure essas linhas via control+f.

 

Quanto à ativação do relê de aquescimento (digital pin 3), acresci um parâmetro de acionamento na parte do programa responsável pelo controle de temperatura. Transcrevo o trecho (que vai estar um pouco diferente no sketch que postei (ao qual não tenho acesso agora, infelizmente), mas é a mesma lógica):

 

if (heater >= 0 && heater <101) {

output1.Out( heater, 0 ); // update the power output on the SSR drive Ot1

pinMode (3, OUTPUT);

analogWrite (3, 2.55 * heater);

 

A definição da saída do ventilador está em uma das bibliotecas, e não no sketch. É a mesma biblioteca que teve que ser alterada para arrumar a interferência do LCD, a PWM16.h. Posto as alterações necessárias:

 

Aqui é para resolver o problema do LCD:

 

#define pwmOutA A2 // ALTERADO DE PIN 9 PORQUE CAUSAVA CONFLITO NO LCD

#define pwmOutB A3 // ALTERADO DE PIN 10 PORQUE CAUSAVA CONFLITO NO LCD

 

Aqui é a parte de controle do ventilador, alterado para A1 (antes era D3):

 

#define IO3_PIN A1 // ALTERADO PARA A3 (ANTES ERA D3)

 

 

EDITADO:

 

Falta resolvermos o problema dos botões, que não estão funcionando.

 

Achava que o problema estava nessa linha:

 

#define ANLG2 A1 // arduino pin A1

 

Não é isso, contudo, uma vez que os botões são controlados pelo A0.

 

FIM DA EDIÇÃO.

 

 

Aqui está tudo funcionando, menos os botões, porque ainda não fiz ainda qualquer alteração adicional.

Veja se fez as ligações corretamente (no termopar as saídas D11, D12 e D13 devem estar ligadas cada qual em seu destinatário (DO = 12; CS = 11; CLK = 13); além disso, cuidado para não inverter o ground com o V, senão já era o shield).

 

Abraço,

 

Guilherme.

Link para o comentário
Compartilhar em outros sites

LEO,

 

Eu não mexi no código para não correr o risco de retirar algum parâmetro que afetasse a integridade do sistema.

Apenas atribui ao parâmetro t1 e ao parâmetro t2 novos valores, retirados do shield thermopar. O código acrescido é o que segue (no que se relaciona a essa parte):

 

t1_cur = thermocouple.readCelsius();

t2_cur = thermocouple.readInternal();

 

Procure essas linhas via control+f.

 

Quanto à ativação do relê de aquescimento (digital pin 3), acresci um parâmetro de acionamento na parte do programa responsável pelo controle de temperatura. Transcrevo o trecho (que vai estar um pouco diferente no sketch que postei (ao qual não tenho acesso agora, infelizmente), mas é a mesma lógica):

 

if (heater >= 0 && heater <101) {

output1.Out( heater, 0 ); // update the power output on the SSR drive Ot1

pinMode (3, OUTPUT);

analogWrite (3, 2.55 * heater);

 

A definição da saída do ventilador está em uma das bibliotecas, e não no sketch. É a mesma biblioteca que teve que ser alterada para arrumar a interferência do LCD, a PWM16.h. Posto as alterações necessárias:

 

Aqui é para resolver o problema do LCD:

 

#define pwmOutA A2 // ALTERADO DE PIN 9 PORQUE CAUSAVA CONFLITO NO LCD

#define pwmOutB A3 // ALTERADO DE PIN 10 PORQUE CAUSAVA CONFLITO NO LCD

 

Aqui é a parte de controle do ventilador, alterado para A1 (antes era D3):

 

#define IO3_PIN A1 // ALTERADO PARA A3 (ANTES ERA D3)

 

 

EDITADO:

 

Falta resolvermos o problema dos botões, que não estão funcionando.

 

Achava que o problema estava nessa linha:

 

#define ANLG2 A1 // arduino pin A1

 

Não é isso, contudo, uma vez que os botões são controlados pelo A0.

 

FIM DA EDIÇÃO.

 

 

Aqui está tudo funcionando, menos os botões, porque ainda não fiz ainda qualquer alteração adicional.

Veja se fez as ligações corretamente (no termopar as saídas D11, D12 e D13 devem estar ligadas cada qual em seu destinatário (DO = 12; CS = 11; CLK = 13); além disso, cuidado para não inverter o ground com o V, senão já era o shield).

 

Abraço,

 

Guilherme.

 

Os botões não estão funcionando porque eles estão na verdade no pino 3.

 

Eu particularmente testo todos os componentes isoladamente em outros sketches, para confirmar as ligações.

O LCD funciona isoladamente, está nos pinos padrão do DX (8,9,4,5,6,7)

Os botões funcionam isoladamente, está no pino 3

Max31855 funciona isoladamente, está nos pinos 11,12,13

Bluetooth meu não está funcionando, pareia mas não envia dados, está na serial padrão, 0,1

 

Nas minhas idéias mirabolantes temos que colocar o SSR em PWM, sobrou o pino 2.

 

confere?

 

 

Você importou as bibliotecas? Sem elas, da erro de compilação.

 

sim, tudo importado

 

Não se esqueça de baixar e importar a biblioteca do nosso shield no site da adafruit.

 

baixei essa e outra, MAX31855, as duas funcionam mas tem diferenças nos #define.

Link para o comentário
Compartilhar em outros sites

 

 

Os botões não estão funcionando porque eles estão na verdade no pino 3.

 

Os botões funcionam isoladamente, está no pino 3

 

 

Você ligou o shield LCD via cabos jumper? porque, originalmente, a leitura da voltagem de cada botão é realizada no A0

Link para o comentário
Compartilhar em outros sites

 

Nas minhas idéias mirabolantes temos que colocar o SSR em PWM, sobrou o pino 2.

 

 

O PINO 2 só funciona em modo on/off. Tentei, mas acho que fica muito limitado como PID, principalmente, se considerado a forma como o controle do roastlogger foi concebido.

 

Tem ainda algumas poucas portas analógicas disponíveis. Acho melhor usar uma delas para isso.

 

Se puder me indicar no sketch ou nas bibliotecas aonde foi selecionado o PIN3 como leitor da voltagem dos botões, facilitaria meu trabalho hehe.

Link para o comentário
Compartilhar em outros sites

Você ligou o shield LCD via cabos jumper? porque, originalmente, a leitura da voltagem de cada botão é realizada no A0

 

liguei com cabos sim.

Mas você está certo, o botões estão no analog0. Confundi o pino 3 com o lance do wiper lcd. Na biblioteca do DX ele ainda usava o pino 10 para um fade in/out com os botões up an down.

 

The circuit:

* LCD RS pin to digital pin 8

* LCD Enable pin to digital pin 9

* LCD D4 pin to digital pin 4

* LCD D5 pin to digital pin 5

* LCD D6 pin to digital pin 6

* LCD D7 pin to digital pin 7

* LCD R/W pin to ground

* 10K resistor:

* ends to +5V and ground

* wiper to LCD VO pin (pin 3)

 

 

O PINO 2 só funciona em modo on/off. Tentei, mas acho que fica muito limitado como PID, principalmente, se considerado a forma como o controle do roastlogger foi concebido.

 

Tem ainda algumas poucas portas analógicas disponíveis. Acho melhor usar uma delas para isso.

 

Se puder me indicar no sketch ou nas bibliotecas aonde foi selecionado o PIN3 como leitor da voltagem dos botões, facilitaria meu trabalho hehe.

 

considerando o analog 0 para os botões, estou olhando minha placa aqui e temos o 2 e o 3 disponíveis.

Nas nossas leituras aqui na sala achamos que servem. O Bruno acredita que no roastlogger está assim também, pois a resistência elétrica tem muita resiliência, ou seja, no intervalo de ligar e desligar ela não perde tanto o calor. Interpretando o código de liga e desliga ele achou a frequência adequada. Pode usar qualquer um desses dois pinos mesmo

Link para o comentário
Compartilhar em outros sites

considerando o analog 0 para os botões, estou olhando minha placa aqui e temos o 2 e o 3 disponíveis.

Nas nossas leituras aqui na sala achamos que servem. O Bruno acredita que no roastlogger está assim também, pois a resistência elétrica tem muita resiliência, ou seja, no intervalo de ligar e desligar ela não perde tanto o calor. Interpretando o código de liga e desliga ele achou a frequência adequada. Pode usar qualquer um desses dois pinos mesmo

 

Penso que o digital pin 2 pode não ser a melhor escolha, já que temos saídas analógicas ainda disponíveis. Não sei se, na prática, sem um relê ssr de pulso, isso vá fazer muita diferença, mas, nos meus testes, há alteração da intensidade da luz indicativa do relê usando o pin D3 (HEATER) e o A1 (FAN). Já estou até com vergonha de não ter testado isso no forno (Tenho usado minha versão do OSPID para torrar. Está dando tão certo, que até me acomodei um pouco. Mas, como dizem, a acomodação é uma m!. Decidi. Até amanhã faço esse teste e posto minhas impressões).

 

Sobre os botões, que não funcionam aqui (E olha que eu liguei o shield LCD direto no arduino, portanto, todas as conexões estão como originalmente previstas), usando de uma liberdade ainda não concedida, fiz um post lá no homehoasters pedindo ajuda.

Link para o comentário
Compartilhar em outros sites

Penso que o digital pin 2 pode não ser a melhor escolha, já que temos saídas analógicas ainda disponíveis. Não sei se, na prática, sem um relê ssr de pulso, isso vá fazer muita diferença, mas, nos meus testes, há alteração da intensidade da luz indicativa do relê usando o pin D3 (HEATER) e o A1 (FAN). Já estou até com vergonha de não ter testado isso no forno (Tenho usado minha versão do OSPID para torrar. Está dando tão certo, que até me acomodei um pouco. Mas, como dizem, a acomodação é uma m!. Decidi. Até amanhã faço esse teste e posto minhas impressões).

 

Sobre os botões, que não funcionam aqui (E olha que eu liguei o shield LCD direto no arduino, portanto, todas as conexões estão como originalmente previstas), usando de uma liberdade ainda não concedida, fiz um post lá no homehoasters pedindo ajuda.

 

estou estudando como fazer o debug do software para resolver isso. o mais fácil é print serial mas a merda do meu BT não funciona.

amanha vou ligar um cabo serial do arduino para o pc.

só assim para descobrir o que ocorre. essa é uma biblioteca toda nova.

Link para o comentário
Compartilhar em outros sites

O BT provavelmente esta funcionando. Hoje testei no forno. O BT do meu tb não funcionou, enquanto funciona com meu sketch do OSPID.

 

Ja até desconfio onde esta o erro. Na biblioteca dos botões, há uma linha que liga o sketch ao pin D1, que é usado pelo arduino por padrão para envio/leitura de dados (RX). Muda aí e veja se passa a funcionar.

 

Vou dormir. Abraço.

Link para o comentário
Compartilhar em outros sites

Leo,

 

Tentei e tentei de novo. Cheguei à conclusão de que nosso adaptador bluetooth não funciona com windows. Fiz o teste, mudando o dongle bluetooth. Enquanto, com o mac, consigo conexão com o arduino via bluetooth, com o PC não rola. Isso, destaco, usando o sketch que eu adaptei para usar com o OSPID Frontend; com o sketch do roastlogger não rola, nem no mac, nem no pc (vou fazer mais testes, contudo). Via bluetooth, no PC, funciona bem o sketch do roastlogger (mas não os botões do nosso shield LCD).

 

Como eu sei que o programinha do TC4 feito para Android só funciona com o sketch ArtisanQ_PID, entrei de cabeça nele. Já consegui fazer o Artisan ler os dois parâmetros do nosso shield Termopar (a temperatura ambiente e a medida pelo sensor termopar tipo k). Ainda não mexi nos demais parâmetros, mas vi que vai ser bem mais fácil do que aqueles utilizados pelo roastlogger, uma vez que, quanto aos relês, ele atribui especificamente saídas digitais no arduino. Fazer funcionar com o LCD é outra estória....

Link para o comentário
Compartilhar em outros sites

Fácil nada. Bati a cabeça ontem a tarde e a noite inteira e não consegui fazer as adaptações necessárias no sketch para o tc4 funcionar no nosso arduino. Ler as temperaturas e atualizar no programa foi fácil. Controlar o relê é outra estória completamente diferente. Parti para as primeiras versões (menos refinadas) para ver se consigo alguma coisa ou luz.

Link para o comentário
Compartilhar em outros sites

Considero o código do roastlogger praticamente acabado. É claro que falta arrumar os botões. Desisti de tentar fazer ele funcionar com nosso shield Bluetooth. Com o USB está perfeito. Deixei o fan no pin2 mesmo. A mudança para os analógicos não surtiu efeito nenhum. Pena que só vai funcionar conectado via USB.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

veja se esse resolveu os botões.

tentei deixar o máximo inalterado os comandos anteriores e adaptei os botões da esquerda e o up e down do lcd DX

https://docs.google.com/file/d/0B3E-0fZ2UI3bN1IxdlRRUTFOQ0U/edit?usp=sharing

Link para o comentário
Compartilhar em outros sites

manda o seu sketch se o meu não resolver os botões, vou ver com o Bruno se trabalhamos no código dos botões na segunda. O que está pegando é arrumar uma forma de debugar o programa. Tem que ser no serial com cabo pq desisti do BT.

Hoje pelo menos voltei no torneiro batata e arrumei o meu tambor. Vou informar se o meu motor AC vai dar conta do recado nesse fim de semana.

Link para o comentário
Compartilhar em outros sites

LEO,

 

Não duvido que o sketch esteja lendo os botões satisfatoriamente.

Fazendo uma comparação com o código original do roastlogger 2.0, cheguei à conclusão de que vocês retiraram linhas que seriam necessárias para o arduino funcionar como PID isoladamente do computador. Teremos que rever isso (se eu não estiver errado).

Pergunta básica: seu arduino, com esse sketch que você mandou, está lendo os botões e funcionando corretamente no modo PID?

Link para o comentário
Compartilhar em outros sites

na verdade tivemos o cuidado para não fazer isso.

O Bruno me deu a dica de não excluir nada, na verdade ele coloca tudo não usado como comentário.

Não testei essa última versão, fiz no final da tarde de sexta.

O lance é realizar o debug. Só assim para ver passo a passo o que o programa está fazendo.

 

O meu não chega no modo pid, pelo que eu lí ele entra no modo PID quando não detecta uma conexão. Ele está travando com algo antes disso

Link para o comentário
Compartilhar em outros sites

manda a sua última versão que está praticamente acabada que vamos resolver essa parada dos botões lá no trabalho essa semana.

manda os pinos que você está usando para eu não zuar o que está pronto.

Link para o comentário
Compartilhar em outros sites

manda a sua última versão que está praticamente acabada que vamos resolver essa parada dos botões lá no trabalho essa semana.

manda os pinos que você está usando para eu não zuar o que está pronto.

 

Minha ultima versão eu salvei no lugar da antiga. Pode ser que exista algum conflito de portas. Eu testei no forno via roastlogger e funcionou perfeitamente, mas o modo desconectado não.

 

https://docs.google.com/file/d/0ByeNNDDkmoEEek5MQWNvamlUQ0U/edit?usp=docslist_api

Link para o comentário
Compartilhar em outros sites

Mexi de novo no pmw16.h e alterei os pinos que originalmente eram d10 e D11 para A1 e A2. Com isso, o arduino passa de roastlogger versão x para o modo que mostra o tempo, a temperatura e o nível do heater e do fan. Mas os botões continuam não funcionando.

 

O que eu queria mesmo é controlá-lo via Bluetooth. Quem sabe um dia....

Link para o comentário
Compartilhar em outros sites

essa porcaria desse BT, será que é o windows? No trabalho tentei de tudo, fiz até o circuito para reduzir a voltagem do TX, que teoricamente deve ser de 3.3V na placa.

No meu celular android ele pareia mas não envia nada. No PC a mesma coisa.

Pode deixar que vou resolver os botões essa semana. Chato vai ser usar cabo, mas pelo jeito é a solução por enquanto.

Link para o comentário
Compartilhar em outros sites

Hoje quase terminei meu hardware. Faltaram alguns terminais espada, então vou finalizar no meio da semana. Vou isolar tudo e pegar a lã com meu pai, pode deixar que te aviso se conseguir em quantidade.

A resistência de 1000W que eu tinha não coube, então mantive as duas originais e coloquei uma extra de 500 no fundo.

Link para o comentário
Compartilhar em outros sites

Legal. Se tiver, me fala que eu pego contigo (essa semana estarei livre à tarde). Que bom que está finalizando o seu forno. O meu estou usando umas três vezes por semana para torrar café (2 para mim, outra para minha segunda mãe, que merece). Uso quase diariamente para outras aplicações (assados etc).

Gosto do Philco pela versatilidade.

 

Voltando ao assunto: enquanto não resolvemos o roastlogger, voltei ao OSPID.

 

Com ele, conecto via bluetooth no mac (no PC não rola, não sei por que).

Resolvi o problema do LCD (agora não tem mais artefatos)

Dá para guardar apenas um profile por vez, mas fica armazenado mesmo depois de desligar (uma curva pré-programada), por ora, enquanto não chega minha eeprom ic2.

As curvas são muito fáceis de editar - fica em um arquivo reflow na pasta profiles, dentro da pasta em que se encontra o frontend (pode ser compilado para mac, pc e linux)

os botões funcionam, de forma que dá para usar ele independentemente de encontrar-se conectado ao computador.

Tem todas as funções que o roastlogger tem, em relação ao sistema PID (PID, direto, reverso, autotune, alterações dos parâmetros P I D)

introduzi uma função fan (para aqueles que resolverem instalar uma ventoinha para acelerar e aprimorar as curvas)

 

mesmas conexões usadas no sketch do roastlogger

11, 12 e 13 para o sensor termopar

D2 - FANPIN (VENTOINHA)

D3 - HEATER (Aquecimento)

D0 e D1 (LIGAR NO SHIELD BLUETOOTH)

 

Segue o sketch

 

 

o link é:

 

https://docs.google....dit?usp=sharing

 

Segue o frontend (no windows, va para a pasta app - subpasta windows)

 

https://docs.google.com/file/d/0ByeNNDDkmoEEcXZsckJkcy1WdTA/edit?usp=sharing

Link para o comentário
Compartilhar em outros sites

Guilherme,

 

segue o arquivo atualizado.

O Bruno descobriu o problema dos botões. Era só uma variável que deveria ser "diferente" e estava "igual".

Os botões não apresentam muita funcionalidade, pelo que eu vi é só ligar ou desligar a resistência e o fan.

 

A biblioteca PWM16 foi retirada. Ela que dava pau com o LCD. Usamos a função analogwrite, que é a nativa do PWM do arduino, para controlar o heater.

O problema é que não tem mais porta PWM disponível para o FAN. Ou troca alguma do MAX ou não usa o fan. Nessa versão acho que o fan está desligado. Faça uma busca pelo analogwrite que você verá o que mudamos para usar o heater.

 

Essa versão está marcada como Beta mas já é perfeitamente funcional. Vou brigar mais com o bluetooth pois acho muito interessante controlar a torra pelo celular ou tablet.

 

https://docs.google.com/file/d/0B3E-0fZ2UI3bMVlybXRHSGt3c3c/edit?usp=sharing

Link para o comentário
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...
×
×
  • Criar Novo...