Ir para conteúdo

Fazendo um controlador de temperatura com arduino


Postagens recomendadas

Aqui funcionou tudo. Os botões estão ainda um pouco bagunçados, mas dá para alterar o heater e o fan, bem como zerar o timer. Não vejo muita utilidade nesse modo. Prefiro controlar por computador.

 

introduzi uma linha no código para acionar o fan (no pin 2, já que aqui o 10 está ocupado pelo shield lcd (ligado diretamente no arduino).

 

É a seguinte:

 

 

else if (key != NULL && key.equals(CMD_FAN)) {

val = strtok_r(NULL, "=", &c);

if (val != NULL) {

fan = atoi(val);

// fan = roundOutput( fan );

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

float pow = 2.55 * fan;

pinMode (2, OUTPUT);

analogWrite (2, 2.55 * fan); // output values are 0 to 255

// io3.Out( round( pow ) );

 

Valeu.

 

Dê uma chance para o OSPID, vai ver que é mais completo no modo PID (sem computador).

Abraço.

Link para o comentário
Compartilhar em outros sites

acho que o bizu vai ser OSPid para usar sem o PC e roastmaster para usar com o PC.

 

Você diz que o pino 10 está ocupado mas isso é só fisicamente, correto? Pode soldar um fio saindo por cima do shield que funciona. O 2 não é PWM, talvez a pessoa que quiser usa torrador esquema pipoqueira terá problema em controlar a velocidade do ar.

Link para o comentário
Compartilhar em outros sites

Ainda havia um bug no código do OSPID. Corrigi.

 

Segue novo arquivo:

 

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

Link para o comentário
Compartilhar em outros sites

O sketch do OSPID está totalmente adaptado ao nosso hardware. Quem quiser montar seu pid, basta encomendar os seguintes componentes:

 

ARDUINO (ESSE É UM POUCO MAIS CARO, MAS VALE A PENA POR FACILITAR AS LIGAÇÕES)

 

139808

 

 

ADAPTADOR BLUETOOTH (ESSE TEM QUE SER LIGADO AOS PINOS 0 E 1 (TX E RX)), BEM COMO AO GROUND E VOLTAGEM (V))

 

http://dx.com/p/jy-mcu-arduino-bluetooth-wireless-serial-port-module-104299

 

SENSOR TERMOPAR

 

http://www.ebay.com/itm/111133370195

 

cabos jumper (macho/fêmea) (servem para conectar tanto o sensor termopar como também o bluetooth (ele já vem com cabos desse tipo)

 

http://dx.com/p/male-to-female-dupont-breadboard-jumper-wires-for-arduino-40-piece-pack-20cm-length-146935

 

LCD (se quiser usar o pid desconectado do computador ou para visualizar direto no pid)

 

http://dx.com/p/lcd-keypad-shield-for-arduino-duemilanove-lcd-1602-118059

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

SEGUE ARQUIVO COM CURVA DE TORRA

 

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

 

PONHA NA PASTA PROFILES DE ONDE EXECUTOU O FRONTEND (SE FOR NA PASTA WINDOWS, NA PASTA PROFILES DENTRO DELA

Link para o comentário
Compartilhar em outros sites

pois é, desperdicei meio quilo do meu monte verde.

Já tenho duas suspeitas, um dela certeira.

 

O biblioteca de PID do nosso beta está zuada. Diminui o refresh no user.h e também aumentei os filtros, mas continua zuado. Não sei se é porque estamos buscando o T2 da ambiente do chip, o correto era outro chip.

acho que meu thermocouple está muito mal posicionado. Na segunda tentativa de torra, acho que assei os grãos. A temperatura não chegou nos 195 de verdade. Amanhã vou ligar um termometro no multimetro para ver quando está realmente. Com meu infravermelho não estou conseguindo medir.

 

Você sabia que já tinha uma sketch pronta para o MAX, mas sem botões e LCD? Estou experimentando ela agora.

Ela é feita para 2 chips MAX, tem que por // na frente das tomadas de temperatura do chip T2. Veja o link aí embaixo.

 

http://homepage.ntlworld.com/green_bean/coffee/roastlogger/downloads/RoastLogger-MAX38155-IDE1.0.zip

Link para o comentário
Compartilhar em outros sites

testei o sketch especifico do Max, funciona, mas tem algo errado nele que mantém o SSR ligado o tempo todo, é alguma função lógica de operação standalone, amanhã vou tentar.

Quais parametros de tune você usa no OSPid? Tentei fazer o autotune nele mas o front end se perde do arduino.

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

P 290

I 75

D 5

 

Esses parâmetros são apropriados para controle de resistências elétricas em forno do tamanho do nosso (ainda não são suficientes para fazer o PID ficar exatamente na linha da curva, mas diminuem bem a variação - em torno de 5 graus para cima e 3 para baixo).

 

Você tem que introduzi-los via frontend, pois no teclado só aceita até 99.

Link para o comentário
Compartilhar em outros sites

De fato, o autotune não está funcionando. Não faço idéia por qual motivo. Vou investigar. Será que é porque estou usando a biblioteca adafruit ao invés da original?

Link para o comentário
Compartilhar em outros sites

Olhando com maior atenção, percebi que o autotune depende da existência da epprom. A minha deve chegar essa semana ou na próxima. Depois que instalar dou o feedback.

 

Enquanto isso, a melhor solução é deixar o PID em automatic e configurar o P o I e o D com os parâmetros descritos no post anterior 290, 75 e 5. Com isso, vai funcionar adequadamente para torrar café. Já usar o OSPID para controle de uma máquina de espresso não seria adequado por ora, ante a oscilação de alguns graus para cima e para baixo.

Link para o comentário
Compartilhar em outros sites

Leo,

 

Relendo os tópicos no forum do OSPID, bem como o seguinte link ( ), verifiquei que o autotune não funciona da forma como pensávamos. Não dá para realizar uma torra com o autotune. Ele só serve para definir os parâmetros P, I e D, mediante cálculos.

 

Assim, o autotune deve ser utilizado da seguinte forma: defina o setpoint; quando a temperatura medida estiver cruzando o setpoint, ative o autotune. Em três a cinco tentativas, em torno de um minuto, ele tentará definir os melhores valores aos parâmetros PID. Os parâmetros a serem definidos no autotune são: qual é o ruido da curva (chuto que é a variação máxima a ser considerada dentro da variação de temperatura (1ºC a xºC); a janela de segundos a ser considerada em cada loop (o padrão é 10 segundos - loop back); e, quantos pontos devem ser adicionados em cada ciclo ao output.

 

Penso que o loop back, para um forno do porte do philco, deve ser em torno de 20s. Acho, também, que o parâmetro padrão do step point (20) é adequado. Resta a curva de ruido (A pergunta aqui é qual variação é aceitável 1, 2, 3, 10, 15ºC?). Acho que, para um forno destinado a torrar café a tambor, bem como com calor, prioritariamente, por condução, cinco graus está de bom tamanho. Em uma máquina de espresso, eu chutaria uma variação de 1 a 2ºC, já que, nelas, o tempo de resposta é muito mais rápido.

 

Ps: segue foto do PID que eu fiz, usando o sketch do OSPID. Controla saída de calor e saída de ar frio (esta, via relé, no PIN 2, uma vez que o PIN 10 é responsável pelo controle do grau de iluminação do nosso shield LCD, que, infelizmente, liguei diretamente ao arduino (a próxima vez, será via cabos jumper)).

 

Link para o comentário
Compartilhar em outros sites

eu sabia que era para achar os valores de ajuste, mas não consegui ativá-lo simplesmente enviando o comando. Vou tentar desse jeito que você colocou.

 

quanto a sua curva do OSPid, ela não está muito curta para a torra? São apenas 6 minutos programados.

Até não estão batendo com a descrição:

 

CAFECITY //first row is Profile Name

3, 30, 0 //Step Setpoint to 30, wait 0 seconds

2, 0, 0 //Wait for PID Input to cross setpoint

1, 195, 300 //Rampa setpoint ate 200, com duração de 4 min

1, 180, 60 //Rampa setpoint até 180, com duração de 3 minutos

2, 0, 0 //Wait for PID Input to cross setpoint

1, 30,0

127, 0, 5 //buzz for 5 second

 

Vamos ver se eu entendi:

 

inicialmente o forno liga e vai a 30º (fácil, pois aqui em Bsb já está 30º na sombra :))

o que seria isso? "2, 0, 0 //Wait for PID Input to cross setpoint "

o terceiro passo descreve 200º em 4 minutos mas na verdade está programado 195º em 5 min.

o quarto passo descreve 180º em 3 mas na verdade está 180º em 1 min.

 

A idéia seria colocar o café no forno frio, rampa até 195º em 5min (desidratação), depois permanecer nessa temperatura até o final do primeiro crack e retirar o café para fazer o resfriamento?

Link para o comentário
Compartilhar em outros sites

Leo,

 

Peço desculpas. Essa curva está totalmente errada.

É uma que comecei a alterar e depois parti para outra.

 

 

copie e cole os seguintes parametros no arquivo que baixou (lembro que é uma curva partindo do forno frio). Aconselho, depois do primeiro crack, deixar entre dois a três minutos no máximo, acompanhando o cheiro e a cor do café no tambor, bem como evitando o segundo crack para que o café não passe do ponto e fique amargo demais.

 

CAFECITY //first row is Profile Name

3, 30, 0 //Step Setpoint to 30, wait 0 seconds

2, 0, 0 //Wait for PID Input to cross setpoint

1, 200, 420 //Rampa setpoint ate 200, em 7 minutos

1, 160, 120 //Rampa setpoint ate 160, em 2 minutos

1, 195, 240 // Rampa setpoint ate 195, em 4 minutos (aqui voce varia entre 3 e 5 minutos)

1, 180, 60 //Rampa setpoint até 180, em 1 minuto

2, 0, 0 //Wait for PID Input to cross setpoint

1, 30,0 // define para 30 a fim de manter as resistencias desligadas durante o tempo da retirada do cafe

127, 0, 5 //buzz for 5 seconds

Link para o comentário
Compartilhar em outros sites

Um conselho (se fosse bom eu vendia he he), mas vai mesmo assim:

 

Posicione o sensor termopar logo abaixo do eixo do motor (em torno de 1 a 2 cm abaixo).

O meu sensor era coberto por uma capa de metal. Retirei ela e deixei a ponta (metálica) do fio descoberto. Assim, as temperaturas passaram a se alterar bem mais rapidamente, refletindo a realidade. Com ele recoberto (é uma espécie de parafuso, para você rosquear no lugar onde será medido o calor (indução)), há um certo isolamento térmico entre o sensor e o ambiente de medição (por causa do ar que fica entre o sensor e a capa). Daí o tempo de resposta diminui. Não chega a ser de extrema relevância, mas, na minha percepção, ficou melhor.

 

Outra coisa: é imprescindível isolar o sensor das paredes do forno. Caso contrário, há interferência na medição e o frontend fica repleto de erros de leitura.

 

Abraço.

Link para o comentário
Compartilhar em outros sites

 

o que seria isso? "2, 0, 0 //Wait for PID Input to cross setpoint "

 

 

Com esse parâmetro, enquanto a temperatura setpoint não bater com a temperatura medida (input), ele não passa para a próxima etapa. Cuidado, no meio da curva o uso dele pode ser perigoso (demorar mais do que seria ideal para a temperatura ser alcançada).

 

Na curva que tracei, apenas essa primeira etapa é definida assim, a fim de uniformizar todas as torras. Com isso, independentemente da temperatura ambiente, a torra não começa efetivamente até que a temperatura de 30ºC seja alcançada (se o forno estiver muito quente, essa curva não deve ser utilizada).

 

As demais rampas, eu não defini dessa forma (Suas temperaturas parâmetros, exceto no meio da rampa, não chegam a ser alcançadas). Mas, descobri que é melhor assim.

Obviamente, você pode fazer testes e definir, com base na curva de aquecimento do forno (tempo para que determinada temperatura seja alcançada, partindo de outra determinada), que determinadas temperaturas tenham que ser alcançadas, durante a torra, para que a fase seguinte tenha início.

 

o profile que passei agora a pouco é o que venho usando e alcançado bons resultados no meu forno (total de 2100W). Em outros fornos, por exemplo, 110V, o tempo de aquecimento pode ser ligeiramente diferente, uma vez que o terceiro jogo de resistências que uso neles é um pouco menos potente (600W, ao invés de 800W), de forma a equalizar a amperagem máxima um pouco abaixo de 20A. Em rede de 220V, a coisa é diferente, uma vez que a "banda" é mais larga.

Link para o comentário
Compartilhar em outros sites

Esqueci de mencionar que o primeiro crack, para 200g de café, está ocorrendo sempre aos 12min (a partir de 11min você deve ficar de olho). Minhas torras têm durado entre 13 a 14min, quando retiro os grãos e os resfrio. Na verdade, sempre retiro aos 13 minutos (ao menos, assim procedi nas últimas cinco, obtendo um café city - com 13 a 13,5% de perda de massa). Eu partiria dessa curva (que já inclui um minuto a mais na fase mais quente) e faria modificações pontuais, a partir da experimentação. Tenho sempre um café mais barato para experiências. Sugiro que você faça o mesmo - aquele de paracatu, da nuance (manhumirim) é uma boa pedida (desde que você compre ao menos uns 3kg dele e peça envio via PAC, uma vez que o frete mata a economia). É gostosinho, embora não mostre nada demais na xícara. Um café mediano, nada extraordinário, mas com boa doçura, equilíbrio e corpo, puxando mais para acúcar mascavo e caramelo com chocolate amargo.

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

Sobre o roastlogger, ontem, li o manual. Uma forma de controlá-lo é fazer uma torra on the fly e repetí-la, gravando-a, deixando todos os campos t1, etc, em branco antes de fazê-la.

Link para o comentário
Compartilhar em outros sites

o meu está com 2100W também, mas vou ver o que está acontecendo, pois as resistências do fundo e de cima ficam vermelhas e a de baixo não.

 

Leo, não esta acontecendo nada, o meu que é um Titã é a mesma coisa, tanto na resistência que já veio nele como na que coloquei.

Link para o comentário
Compartilhar em outros sites

o meu está com 2100W também, mas vou ver o que está acontecendo, pois as resistências do fundo e de cima ficam vermelhas e a de baixo não.

 

As minhas ficam todas vermelhas, embora as de baixo em menor intensidade.

Link para o comentário
Compartilhar em outros sites

Leo,

 

Acabei de testar o roastlogger.

Zerei todos os parâmetros intitulados actions (apaguei tudo)

ativei o modo PID e introduzi algumas rampas (os mesmos princípios das rampas do OSPID - você estabelece a temperatura inicial e a final da rampa, bem como o tempo em que a temperatura final deva ser alcançada; quando chega ao final do tempo, passa para a rampa seguinte e assim em diante)

fiz um teste fora do forno, mas utilizando uma lâmpada próxima ao sensor para fazer as vezes da fonte de calor. Ele faz a variação automaticamente na potência do heater.

 

Hei de observar o seguinte: acho que, no roastlogger TC4, o controle é por potência (deve ter um relê de pulso que entende as variações de voltagem que saem do arduino no pino PMW); ao menos no meu arduino, uso um rele ssr comum, de forma que, enquanto a energia fornecida pelo arduino for acima da mínima permitida pelo rele, ele permite a passagem de energia, fechando o circuito e, assim, aquecendo as resistências e, consequentemente, o forno. Em razão disso, o parâmetro P deve ser configurado no máximo, de forma a acelerar o tempo de resposta do controlador.

 

Mas, ressalto, aqui funcionou tudo corretamente conectado via USB no roastlogger. Enquanto a temperatura estava abaixo da setpoint (que variou durante a rampa), ele controlou o HEATER de forma a responder à falta ou ao excesso de calor.

 

Não desistamos, portanto, do roastlogger.

 

Abraço,

 

Guilherme.

Link para o comentário
Compartilhar em outros sites

Voltando ao OSPID:

Hoje a noite resolvi tentar novamente o autotune (não rola sem a eeprom). Ante o insucesso, passei a mexer, manualmente, nas configurações P I D. A dica que tinha dado e, por sua vez, recebido em outro fórum estava na direção errada. Depois de fuçar um pouco, agora, a variação de temperatura no forno está de um grau para cima e para baixo. Posto os parâmetros:

 

P 20.00

I 3.00

D 170.00.

 

Descobri, empiricamente, que é no derivative que o PID faz a antecipação, acionando e desligando as resistências antes mesmo da temperatura setpoint ser alcançada. Acho que se fuçar mais ainda da para melhorar mais um pouco.

Link para o comentário
Compartilhar em outros sites

Alucinei de vez. Aumentei o KD em mais 100 pontos. Não é que agora esta estável. Variação mínima para um forno do porte do Philco. Nem com o eroeletronic no smart eu conseguia isso. Novo parâmetro KD 270

Link para o comentário
Compartilhar em outros sites

Leo,

 

Acabei de testar o roastlogger.

Zerei todos os parâmetros intitulados actions (apaguei tudo)

ativei o modo PID e introduzi algumas rampas (os mesmos princípios das rampas do OSPID - você estabelece a temperatura inicial e a final da rampa, bem como o tempo em que a temperatura final deva ser alcançada; quando chega ao final do tempo, passa para a rampa seguinte e assim em diante)

fiz um teste fora do forno, mas utilizando uma lâmpada próxima ao sensor para fazer as vezes da fonte de calor. Ele faz a variação automaticamente na potência do heater.

 

Hei de observar o seguinte: acho que, no roastlogger TC4, o controle é por potência (deve ter um relê de pulso que entende as variações de voltagem que saem do arduino no pino PMW); ao menos no meu arduino, uso um rele ssr comum, de forma que, enquanto a energia fornecida pelo arduino for acima da mínima permitida pelo rele, ele permite a passagem de energia, fechando o circuito e, assim, aquecendo as resistências e, consequentemente, o forno. Em razão disso, o parâmetro P deve ser configurado no máximo, de forma a acelerar o tempo de resposta do controlador.

 

Mas, ressalto, aqui funcionou tudo corretamente conectado via USB no roastlogger. Enquanto a temperatura estava abaixo da setpoint (que variou durante a rampa), ele controlou o HEATER de forma a responder à falta ou ao excesso de calor.

 

Não desistamos, portanto, do roastlogger.

 

Abraço,

 

Guilherme.

 

eu tinha conversado isso com o Bruno, mas na análise dele o SSR no TC4 roastlogger funciona em PWM mesmo. o SSR deveria usar essa função. Medindo com multimetro a gente "acha" que ele está mandando 2,5V quando colocamos o heater a 50% mas na verdade ele está mandando metade da onda. Com um osciloscópio a gente veria isso.

Vou tentar esse artifício, colocar o heater no máximo e deixar ele alterar no tempo.

Hoje amanheci muito derrubado, amanhã vou mexer no forno novamente.

Link para o comentário
Compartilhar em outros sites

Léo,

 

No sketch do OSPID, ao resolver os artefatos do LCD, compliquei o tempo das rampas. Procure por char buffer e altere de 999 para 2. Vai voltar o bug do LCD, mas as rampas vão funcionar.

 

Como não uso LCD no meu arduino que esta conectado ao forno, não havia percebido

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...