fabio.cunha Postado 5 Outubro 2015 Denunciar Share Postado 5 Outubro 2015 Já encomendei Fabio http://www.ebay.com/ulk/itm/201428669851 Já está a caminho, rsss Se quiser, quando eu for mandar fazer a plaquinha em inox, mando fazer duas Na realidade pretendo deixar o lcd embutido na placa de madeira mesmo. Más fiquei curioso de como ficará essa plaquinha de inox. Uma ideia que tenho Guilherme é a seguinte: O LCD é interligado na placa eletrônica via um cabo Flat. O lcd em si é colado na placa. Minha intenção seria fazer um corte na vertical do painel e atravessar somente o LCD para a frente da fiamma, deixando o circuito atrás do inóx. Assim consigo fazer o acabamento de madeira faceando com o lcd e com o mínimo de cortes. Pensa na ideia. acho que madeira fica um acabamento melhor e é mais fácil de trabalhar do que o inóx. Citar Link para o comentário Compartilhar em outros sites More sharing options...
paulohvs Postado 5 Outubro 2015 Denunciar Share Postado 5 Outubro 2015 Não existe LCD deste tipo sendo capacitivo? Seria bem mais durável e resistente, além de não depender de pressão para funcionar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 5 Outubro 2015 Denunciar Share Postado 5 Outubro 2015 Ainda não Ao menos, não nesse tipo de interface. Citar Link para o comentário Compartilhar em outros sites More sharing options...
fabio.cunha Postado 5 Outubro 2015 Denunciar Share Postado 5 Outubro 2015 Pra raspberry pi acho que tem, más nesse caso é matar formiga com bazuca. Vou aguardar o kit do Guilherme para esse projeto com LCD. Pena que o dolar tá caro, vou esperar um pouquinho pra ver se abaixa. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 5 Outubro 2015 Denunciar Share Postado 5 Outubro 2015 Na realidade pretendo deixar o lcd embutido na placa de madeira mesmo. Más fiquei curioso de como ficará essa plaquinha de inox. Uma ideia que tenho Guilherme é a seguinte: O LCD é interligado na placa eletrônica via um cabo Flat. O lcd em si é colado na placa. Minha intenção seria fazer um corte na vertical do painel e atravessar somente o LCD para a frente da fiamma, deixando o circuito atrás do inóx. Assim consigo fazer o acabamento de madeira faceando com o lcd e com o mínimo de cortes. Pensa na ideia. acho que madeira fica um acabamento melhor e é mais fácil de trabalhar do que o inóx. Fábio, Minha idéia é essencialmente a mesma da sua. Exceto que o corte será onde hoje ficam os botões da máquina. Se a área traseira do lcd (onde ficam os chips, transistores, resistores e o slot do micro sd) fosse do mesmo tamanho daquela hoje preenchida pelos botões, não teria que fazer qualquer alteração na área frontal da máquina (nenhum corte). No entanto, estimo que o espaço a ser ocupado não seja o mesmo. Como a placa não é da espessura de uma chapa de aço 1 a 2mm (que acho que é a espessura do aço inox da fiamma), simplesmente colocá-la em frente ao painel hoje existente é inviável, a não ser que se parta para uso de madeira esculpida que seja, ao menos, um pouco mais grossa (profundidade maior) do que a espessura da tela tft touch. Mas, nesse caso, a placa de madeira ficará bem mais aparente do que uma simples textura embaixo de um painel de controle (que era o que eu pensava que você pretendia fazer Fábio), saltando para fora da superfície da máquina. Pode vir até a ficar ainda mais bonita assim. Realmente não sei dizer ao certo, enquanto não ver a idéia implementada (como um painel de madeira saltando de uma superfície, como se vê em carros mais luxuosos). No entanto, vou me ater ao que pretendi inicialmente, um painel mais moderno (e mais belo do que o anterior), na mesma linha da máquina (mesmo material e acabamento). Obviamente, terei que cortar a laser para que seja nível industrial de acabamento. Como, no futuro, pretendo fazer mais unidades do torrador, aproveito a leva numa próxima encomenda e mando fazer a plaquinha. O corte aqui eu faço bem fácil, uma vez que não terei que me preocupar muito com o acabamento do corte, que ficará por baixo da placa nova. Basta uma dremel e o meu fiel kit de steel thin cut (que custa os olhos da cara, mas vale cada centavo). Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 5 Outubro 2015 Denunciar Share Postado 5 Outubro 2015 Acrescento que se for fazer um painel de madeira na frente do anterior, sequer será necessário fazer qualquer corte. Vc aproveita o corte que já existe para o painel de botões. Que é o que vou fazer na versão atual. Citar Link para o comentário Compartilhar em outros sites More sharing options...
fabio.cunha Postado 5 Outubro 2015 Denunciar Share Postado 5 Outubro 2015 Na realidade vou aproveitar sim o furo dos botões, 2 no caso. Em relação a madeira ela vai ficar sim em torno de 2mm passando da face da fiamma, uma vez que tem aquela parte funda ( desnível) onde fica a etiqueta cinza. Pretendo fazer as bordas com 45º para não ficar aparente. Mandei cortar a madeira fora, pois não consegui aqui, uma vez que era muito dura. Devo pegar essa semana e aguardar a chegada dos botões que estão em atraso devido a greve dos correios. Qual o modelo de torrador que está implementando atualmente Guilherme? Tem algum tópico dele? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 5 Outubro 2015 Denunciar Share Postado 5 Outubro 2015 Sim STC quatro lá no tópico torradores dentro de torra domestica. Quando montar o frank criarei tópico específico dele Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 5 Outubro 2015 Denunciar Share Postado 5 Outubro 2015 Comecei a brincar com a programação do visor tft nextion. Ainda tenho muito o que aprender, em relação à interface que ele vai fazer com o arduino. Então, será um longo e arduoso processo. Bom, fiz uma tela com alguns botões, apenas para ver como seria o comportamento. É bem tosca. Devo melhorar bastante os botões e o comportamento (terei que melhorar bastante, usando transparências etc, se é que é possível). Mas, feito às pressas é o que se tem por ora: 3 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 Desmontei a máquina ontem e fiquei de 22:40 às 3:00 instalando o controlador. 3:00 fui dormir com a máquina travando (alguma coisa interferindo no Arduino). A boa notícia é que meu sistema de controle funcionou muito bem, acionando cada peça na hora certa. A má notícia é que o shield termopar não é o mais adequado para essa máquina uma vez que há vazamento de energia das resistências para a água e da água para o boiler de cobre (que é excelente condutor). Usando uma pasta cerâmica fixei um caninho cerâmico ao topo do boiler para agasalhar e isolar eletricamente o sensor. Com isso, meu tempo de resposta vai ficar bem precário e vai demandar código de compensação da diferença de temperatura medida. Não sei, talvez seja o caso de usar um sensor encapsulado, como o LM35. Vou ver se acho um bem fininho. O mini painel ficou estiloso. Depois posto fotos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
sergio.m Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 Ou um termistor. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 Valeu pela dica Sérgio. Comprei uns termistors para fazer testes. Quanto ao LM35, encontrei uma barreira que obsta seu uso (a não ser que alguém tenha uma sugestão viável). É que (enquanto não atualizo a placa para suportar o nextion (que usará pinos digitais 5 e 6 como rx e tx para se comunicar com o arduino), a leitura de quais botões (interruptores) estão ligados (entre eles há resistores 10k, em série) é feita pela porta A0 (analog). Por sua vez, tive que usar o código INPUT_PULLUP para que o arduino detecte que o circuito está aberto enquanto não ligo um desses interruptores (com pinMode INPUT o comportamento fica totalmente errático) (código em seguida). O problema é que não é viável fazer dois analogReads ao mesmo tempo (com o pinMode INPUT, atrapalha os botões, com o pinMode INPUT_PULLUP atrapalha o sensor LM35). CÓDIGO: COM O LM int val; int medetemperatura;int prepara = 0; // vai definir se algo esta sendo preparadoint verificabotao = 0; // verifica se o interruptor do cafe esta pressionadoint travamaquina = 0; // se ativado nao deixa preparar nada void setup () { pinMode(A0, INPUT_PULLUP ); } void temperatura() { val = analogRead(1); float mv = ( val/1024.0)*5000; float cel = mv/10; temp1 = cel; } void controlabotao(){ // inicio do void controlabotaoverificabotao = analogRead(0);if (verificabotao <500) {prepara=1; // diz para o programa que o botao de extracao esta pressionado}if (verificabotao <400) {prepara=2; // diz para o programa que o botao de agua esta pressionado}if (verificabotao <300) {prepara = 3; // diz para o programa que o botao do vapor esta ativado}if (verificabotao < 200) {prepara = 4; // diz para o programa que o botao do backflush esta ativado }if (verificabotao > 500) {prepara = 0; //(não deixa preparar nada)segundos = 0;}} // fim do void controlabotao SEM O LM uso a biblioteca do max 31855. Citar Link para o comentário Compartilhar em outros sites More sharing options...
sergio.m Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 Não tem entrada sobrando para ler o LM35 (ou o termistor)? Não precisa ser ao mesmo tempo que as outras entradas. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 Eu fiz mais ou menos isso aqui. Pus um delay de 10ms, mas apenas no lm. Me responde uma coisa: dá para usar um termistor 100k, ao inves de 10k? Citar Link para o comentário Compartilhar em outros sites More sharing options...
sergio.m Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 É provável que sim. Teria que calcular o ruído que é maior pois as resistências são mais altas, mas imagino que não seja significante quando se mede em torno de 1 C. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 (editado) Tinha até chegado a comprar de 100k, mas depois, pedi para o vendedor cancelar a venda (mercadolivre). Estou em dúvida sobre o valor máximo que ela poderá medir com 10k. Você sabe? A propósito: coloquei o código alternando a leitura entre uma e outra porta. Pus um intervalo de 10ms para tanto. Veja o código (integral até agora): // BIBLIOTECAS// EEPROM - SALVA E LE DADOS NA MEMORIA#include// OLED#include#include#include#include#define OLED_RESET 4Adafruit_SSD1306 display(OLED_RESET);// DEFINICAO PID#include // a magica da maquina acontece por meio do SISTEMA DE CALCULOS PIDdouble Setpoint, Input, Output; // temperaturadouble Setpoint1, Input1, Output1; // pressao normal// DEFINICAO PRESSAOint voltsensorpressao = 0;int inputpressure = 0;/*// SENSOR TERMOPAR#include "Adafruit_MAX31855.h"#includeconst int CS1 = 8; // CS (chip 1 select) pinconst int SO = 12; // SO pinconst int SCKa = 13; // SCK pinMAX31855 readt1(SCK, CS1, MISO);*/int val;int tempPin = A3;// definicao portas de saida resistencia e bomba de aguaconst int POWER1 = 3; // DEFININDO PIN D3 COMO SAIDA PARA RELE SSRconst int POWERAGUA = 2; // DEFININDO PIN D2 COMO SAIDA PARA O RELE DA BOMBA D'AGUA (RELE COMUM - ON/OFF)const int SOLENOIDE = 4; // DEFININDO PIN D4 PARA RELE DA SOLENOIDE (RELE COMUM ON/OFF)// VARIAVEIS DE TEMPOlong previousMillis = 0;long interval = 1000;long previousMillis2 = 0;long interval2 = 1000;long contpreparation = 1000;long previouspreparation = 0;long previousMillis3 = 0;long interval3 = 1000;int horas;int minutos;int segundos = 0;int segundos2; // definir contagem, em segundos, de uma preparacaoint segundos3; // contagem em segundos - verifica aquecimentoint segundos4; // contagem em segundos - para funcionar o flush aquecimentoint segundos5; // contagem em segundos - para preinfusaoconst int tcTimePeriod = 250;float calibrate1 = 0.0;float temp1 = 0.0;float t1 = 0.0;float tCumulative1 = 0.0;int noGoodReadings1 = 0;unsigned long lastTCTimerLoop;int tcLoopCount = 0;int power = 0;// variaveis globaisunsigned long CurTime = 0;unsigned long My_PRESSAO;unsigned long My_TEMP;unsigned long My_P;unsigned long My_I;unsigned long My_D;int medetemperatura;int prepara = 0; // vai definir se algo esta sendo preparadoint verificabotao = 0; // verifica se o interruptor do cafe esta pressionadoint travamaquina = 0; // se ativado nao deixa preparar nadavoid setup() {pinMode (POWER1, OUTPUT);// CONFIGURA PIDMy_P = 10;My_I = 5;My_D = 150;// CONFIGURA DISPLAYdisplay.begin( 0x3C);// display.display();// delay(2000);// Clear the buffer.display.clearDisplay();display.fillRect(0,0,128,19,WHITE);display.drawRect(0,20,128,44,WHITE);display.drawRect(0,32,128,44,WHITE);display.fillRect(0,22,128,10,WHITE);display.fillRect(0,36,128,10,WHITE);display.fillRect(0,49,128,18,WHITE);display.drawRect(65,48,128,44,BLACK);display.drawRect(65,35,128,14,BLACK);display.display();display.setTextSize(1);display.setTextColor(BLACK, WHITE);display.setCursor(0,6);display.println(" FIAMMA ESPRESSO ");display.setTextSize(1);display.setTextColor(BLACK, WHITE);display.setCursor(8,24);display.println ("TEMPERATURA:");display.setCursor(8,38);display.println ("PRESSAO:");display.setTextSize(1);display.setCursor(8,53);display.println ("SET:");display.setCursor (73, 53);display.println ("TIMER:");display.setCursor (73, 37);display.println ("Out:" );display.display();// le valores da memoriaMy_TEMP = EEPROM.read(1);// DEFINE OS PINSpinMode(A0, INPUT_PULLUP );pinMode(POWER1, OUTPUT);pinMode(POWERAGUA, OUTPUT);pinMode(SOLENOIDE, OUTPUT);}// fim do void setup// INICIO DOS VOIDS// CONTROLE DA MAQUINAvoid controlabotao(){ // inicio do void controlabotaoif (verificabotao <500) {prepara=1; // diz para o programa que o botao de extracao esta pressionado}if (verificabotao <400) {prepara=2; // diz para o programa que o botao de agua esta pressionado}if (verificabotao <300) {prepara = 3; // diz para o programa que o botao do vapor esta ativado}if (verificabotao < 200) {prepara = 4; // diz para o programa que o botao do backflush esta ativado}if (verificabotao > 500) {prepara = 0; //(não deixa preparar nada)segundos = 0;}} // fim do void controlabotaovoid controlaprepara() {if (prepara == 4) { // inicio do prepara = 4 - rotina backflushSetpoint = 98;display.setTextSize(1);display.setTextColor(BLACK, WHITE);if (segundos2 == 1) { // avisa do inicio da rotina do backflushdisplay.setCursor(0,6);display.println(" INICIAR RETROLAVAGEM");}if (segundos2 == 3) {// avisa das instrucoesdisplay.setCursor(0,6);display.println(" FLUSH 1 ");digitalWrite (SOLENOIDE, HIGH);digitalWrite (POWERAGUA, HIGH);}if (segundos2 == 13) {// fim do primeiro flushdisplay.setCursor(0,6);display.println(" EXPURGO 1 ");digitalWrite (SOLENOIDE, LOW);digitalWrite (POWERAGUA, LOW);}if (segundos2 == 15) {// inicio do flush 2display.setCursor(0,6);display.println(" FLUSH 2 ");digitalWrite (SOLENOIDE, HIGH);digitalWrite (POWERAGUA, HIGH);}if (segundos2 == 25) {// fim do segundo flushdisplay.setCursor(0,6);display.println(" EXPURGO 2 ");digitalWrite (SOLENOIDE, LOW);digitalWrite (POWERAGUA, LOW);}if (segundos2 == 28) {// inicio do flush 3display.setCursor(0,6);display.println(" FLUSH 3 ");digitalWrite (SOLENOIDE, HIGH);digitalWrite (POWERAGUA, HIGH);}if (segundos2 == 38) {// fim do terceiro flushdisplay.setCursor(0,6);display.println(" EXPURGO 3 ");digitalWrite (SOLENOIDE, LOW);digitalWrite (POWERAGUA, LOW);}if (segundos2 == 40) {// inicio do flush 4display.setCursor(0,6);display.println(" FLUSH 4 ");digitalWrite (SOLENOIDE, HIGH);digitalWrite (POWERAGUA, HIGH);}if (segundos2 == 50) {// fim do segundo flushdisplay.setCursor(0,6);display.println(" EXPURGO 4 ");digitalWrite (SOLENOIDE, LOW);digitalWrite (POWERAGUA, LOW);}if (segundos2 == 52) {// termina a rotinadisplay.setCursor(0,6);display.println(" ROTINA ENCERRADA ");}if (segundos2 == 55) {display.setCursor(0,6);display.println(" DESLIGUE INTERRUPTOR");Setpoint = 80;}} // fim do prepara = 4if (prepara == 3) {display.setTextSize(1);display.setTextColor(BLACK, WHITE);if (segundos2 == 8) {display.setCursor(0,6);display.println(" ESPRESSO EM PREPARO");segundos = 0;}display.setCursor(110,53);display.println(segundos);Setpoint = 105;display.setCursor (32,53);display.println(" ");display.setCursor (32,53);display.print (Setpoint, 0);if (segundos < 51) {digitalWrite (SOLENOIDE, HIGH);}// DEFINE AQUI O QUE FICA LIGADO E O QUE FICA DESLIGADO (AGUA E SOLENOIDE)if (segundos2 == 1) {digitalWrite (POWERAGUA, HIGH); // DA UM PULSO NA BOMBA D AGUA PARA PREINFUSAO POR UM SEGUNDOdisplay.setCursor(0,6);display.println(" PREINFUSAO ");}if (segundos2 == 2) {digitalWrite (POWERAGUA, LOW); // DESLIGA A BOMBA D AGUA APOS O PULSOdisplay.setCursor(0,6);display.println(" PREINFUSAO ");}if (segundos2 == 4) {digitalWrite (POWERAGUA, HIGH); // DA UM PULSO NA BOMBA D AGUA PARA PREINFUSAO POR UM SEGUNDOdisplay.setCursor(0,6);display.println(" PREINFUSAO ");}if (segundos2 == 5) {digitalWrite (POWERAGUA, LOW); // DESLIGA A BOMBA D AGUA APOS O PULSO}if (segundos2 > 8) {if (segundos2 < 59) {digitalWrite (POWERAGUA, HIGH);}}if (segundos2 == 58) { // se alterar o numero de segundos da rotina de seguranca tem que equivaler aqui tambemdigitalWrite (POWERAGUA, LOW);digitalWrite (SOLENOIDE, LOW);}// ROTINA DE SEGURANCA PARA EVITAR QUE A MAQUINA SEJA ACIONADA ACIDENTALMENTEif (segundos > 50) {travamaquina = 1; // estabelece rotina para travar a maquinadisplay.setTextSize(1);display.setTextColor(BLACK, WHITE);display.setCursor(0,6);display.println(" TEMPO EXCEDIDO ");display.setCursor(110,53);display.println(" E");segundos = 51;Setpoint = 80; // transcorrido o tempo maximo reduz o Setpointdisplay.setCursor (32,53);display.print (" ");display.setCursor (32,53);display.print (Setpoint, 0);}display.display(); // AS ALTERACOES QUE OCORREM DURANTE A EXTRACAO APARECEM POR CAUSA DESSA LINHA} // fim do prepara = 3if (prepara == 2) { // inicio do prepara = 2display.setTextSize(1);display.setTextColor(BLACK, WHITE);display.setCursor(0,6);display.println(" AGUA EM PREPARO");display.setCursor(110,53);display.println(segundos);if (segundos < 60) {digitalWrite (POWERAGUA, HIGH); // ACIONA A BOMBA}if (segundos == 60) {digitalWrite (POWERAGUA, LOW); // DESLIGA A BOMBA POR SEGURANCA}Setpoint = 105;display.setCursor (32,53);display.println(" ");display.setCursor (32,53);display.print (Setpoint, 0);if (segundos> 60) {travamaquina = 1; // estabelece rotina para travar a maquinadisplay.setTextSize(1);display.setTextColor(BLACK, WHITE);display.setCursor(0,6);display.println(" TEMPO EXCEDIDO ");display.setCursor(110,53);display.println(" E");segundos = 61;Setpoint = 80; // transcorrido o tempo maximo reduz o Setpointdisplay.setCursor (32,53);display.print (" ");display.setCursor (32,53);display.print (Setpoint, 0);}display.display();}// fim do prepara = 2if (prepara == 1) { // inicio do vapordisplay.setTextSize(1);display.setTextColor(BLACK, WHITE);display.setCursor(0,6);display.println(" VAPOR ACIONADO");// a partir daqui rotina para prevenir que o boiler tenha agua quando eu apertei o botao vaporif (segundos2 <10) {// inicio da rotinaif (segundos2 == 0) {// abre a solenoide e liga a bomba daqua (para encher o boiler)digitalWrite (SOLENOIDE, HIGH);digitalWrite (POWERAGUA, HIGH);}if (segundos2 == 3) { // verificar o tempo necessario para nao desperdicar agua demaisdigitalWrite (SOLENOIDE, LOW); // DESLIGA A SOLENOIDEdigitalWrite (POWERAGUA, LOW); // DESLIGA A AGUA}} // FIM DA ROTINAdisplay.setCursor(110,53);display.println(segundos);Setpoint = 140;display.setCursor (32,53);display.print (" ");display.setCursor (32,53);display.print (Setpoint, 0);if (segundos > 240) {travamaquina = 1; // estabelece rotina para travar a maquinadisplay.setTextSize(1);display.setTextColor(BLACK, WHITE);display.setCursor(0,6);display.println(" TEMPO EXCEDIDO ");display.setCursor(110,53);display.println(" E");segundos = 241;Setpoint = 80; // transcorrido o tempo maximo reduz o Setpointdisplay.setCursor (32,53);display.print (" ");display.setCursor (32,53);display.print (Setpoint, 0);}display.display(); // AS ALTERACOES NO VISOR DURANTE O PREPARO DO VAPOR ACONTECEM POR CAUSA DESSA LINHA} // fim do vaporif (prepara == 0) {segundos = 0;segundos2 = 0;digitalWrite (SOLENOIDE, LOW); // MANTEM A SOLENOIDE FECHADA PARA SAIDA DE AGUA DO BOILER VIA GRUPO - ABRE A SAIDA DE PRESSAO DO GRUPO PARA O CANINHO DE EXPURGO DA AGUA QUE RESTOU NO GRUPO APOS A EXTRACAOdigitalWrite (POWERAGUA, LOW); // MANTEM DESLIGADO O FLUXO DE AGUAdisplay.setTextSize(1);display.setTextColor(BLACK, WHITE);display.setCursor(0,6);display.println(" FIAMMA ESPRESSO ");display.setCursor(110,52);display.println(" ");display.setCursor(110,53);display.println(" ");Setpoint = 98;display.setCursor (32,53);display.println(" ");display.setCursor (32,53);display.print (Setpoint, 0);display.display();} // fim do prepara = 0} // fim do void controlapreparavoid contatempo(){ // inicio do void mede tempounsigned long currentMillis = millis();if(currentMillis - previousMillis > interval) {previousMillis = currentMillis;segundos = segundos + 1;segundos2 = segundos2 + 1;}}// fim do void mede tempovoid temperatura(){ /* inicio do void temperaturatemp1 = readt1.readCelsius();;if (temp1 < 2000) {tCumulative1 = tCumulative1 + temp1;noGoodReadings1 ++;}*/val = analogRead(1);float mv = ( val/1024.0)*5000;float cel = mv/10;temp1 = cel;}// fim do void temperaturavoid do250msLoop(){ // INICIO DO VOID DO250MSLOOPtemperatura();val = analogRead(1);if (tcLoopCount == 1){val = analogRead(1);float mv = ( val/1024.0)*5000;float cel = mv/10;temp1 = cel;delay(10);t1 = temp1;display.setCursor(80,24);display.println (" ");display.setCursor(80,24);display.println (t1, 0);display.display();}if (tcLoopCount == 2){verificabotao = analogRead(0);tcLoopCount = 0;}tcLoopCount++;/* if (noGoodReadings1 > 0) t1 = tCumulative1 / noGoodReadings1; else t1 = -1.0;noGoodReadings1 = 0;tCumulative1 = 0.0;display.setCursor(80,24);display.println (t1, 0);display.display();}tcLoopCount++;*/} // FIM DO VOID DO250MSLOOPvoid controlamaquina(){// inicio do void controlamaquinaPID TEMPERATURA (&Input, &Output, &Setpoint,My_P,My_I,My_D, DIRECT);TEMPERATURA.SetMode(AUTOMATIC); // CALCULANDO A SAIDA DE POTENCIA COM BASE NA TEMPERATURA MEDIDAInput = t1;TEMPERATURA.Compute();}// fim do void controlamaquinavoid controlacalor() { // inicio do void que manda potencia para as resistencias/*if (t1 == -1) { // linha que existia para o caso de erro de leitura do shield termopar - agora não presta mais para nadaanalogWrite (POWER1, 0);Output = 0;}else {analogWrite (POWER1, Output);}*/analogWrite (POWER1, Output);if (Output>10) {display.setCursor (100, 37);display.println (Output,0);display.display();}else {display.setCursor (100, 37);display.println (" " );display.display();}} // FIM DO VOID CONTROLACALOR// void medepressao (usa o sensor para medir pressao)void medepressao() { // inicio do void mede pressao (verifica pressao na tubulacao)pinMode (A2, INPUT); // define o PIN A2 como leitor da voltagem de saida do sensor de pressaovoltsensorpressao = (analogRead, A2); // le a voltagem do sensor de pressaoinputpressure = map(voltsensorpressao, 0, 1023, 0, 10); // faz a correspondencia entre a leitura da voltagem e o numero de bars resultantedisplay.setCursor (54,38);display.println (" ");display.setCursor(54,38);display.println (inputpressure);display.display();}// fim do void medepressaovoid loop() {if (millis() - lastTCTimerLoop >= 10){lastTCTimerLoop = millis();do250msLoop();}controlabotao();// checa botaocontrolaprepara(); // checa preparacontatempo();medepressao();controlamaquina();controlacalor();} Editado 9 Outubro 2015 por Igor Inseri o código no botão spoiler, a mensagem estava muito grande dificultando a leitura Citar Link para o comentário Compartilhar em outros sites More sharing options...
sergio.m Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 Tem que ver a especificação do termistor. Para usá-lo tem que montar no mínimo um divisor de voltagem com outro resistor, sabe né? E a relação para transformar resistência em temperatura não é linear. A fórmula, usando o beta do termistor, tem na wikipedia. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 Não, totalmente leigo, rss. Mas já estou estudando por aqui. Achei, inclusive, um tuto no labgaragem que eles disponibilizaram até uma biblioteca para fazer o cálculo. http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-termistor-ntc-com-arduino Citar Link para o comentário Compartilhar em outros sites More sharing options...
sergio.m Postado 9 Outubro 2015 Denunciar Share Postado 9 Outubro 2015 Blz, isso mesmo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Vamos às atualizações. Ontem, dei uma mexida na Fiamma. Reorganizei a fiação e troquei o sensor termopar por um LM35. Ainda não testei o funcionamento com uma extração com o novo sensor. O termopar definitivamente demandaria uma boa linha de código para recalcular a temperatura, uma vez que, como estava, estava acusando temperatura bem inferior à real. Fiz uma extração ontem quando ainda estava com o termopar. O café saiu fervendo e prejudicou um pouco o resultado. Mas a preinfusão funcionou adequadamente. Seguem fotos da máquina, ressaltando que ainda tenho que prender melhor os fios, deixando-os mais organizados. Na foto dá para ver o LM35, bem como o caninho cerâmico que tinha afixado para isolar o termopar (o que evitou erros de leitura, mas prejudicou sobremaneira a medição). O LM está em contato direto com o tipo da caldeira, então vai medir temperatura um pouco abaixo da real. Observem da última foto que deixei o termostato de vapor, como medida de segurança para evitar que a máquina passe de 145° caso alguma coisa de errado na execução da rotina. Citar Link para o comentário Compartilhar em outros sites More sharing options...
sergio.m Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Depois vc poderia colocar mais um pelote dessa cola (imagino que seja fita isolante líquida) em cima do LM para isolá-lo um pouco mais do ar, que o esfria. Citar Link para o comentário Compartilhar em outros sites More sharing options...
fabio.cunha Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Boa Guilherme. Você tentou aterrar a caldeira pra ver se diminui a interferência no sensor? Pelo que vi vc manteve os 3 relés de temperatura. Meu projeto aqui vai começar a andar, os botões chegaram ontem e a madeira tive que madar cortar fora pq era muito dura e não consegui cortar aqui. Devo dar uma adiantada esse fim de semana. Posto fotos assim que possível. Citar Link para o comentário Compartilhar em outros sites More sharing options...
fabio.cunha Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Uma solução possa ser usar pasta térmica para processador de pc, alguns são não condutores de energia, só de calor. Outra solução possa ser usar o isolante térmico em fita, tb para processador, mais esse apesar de bom condutor deve ter 1mm, no mínimo eu acho, pode ser muito grosso. Essa seria uma opção para não teque fazer o código para correção. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Boa ideia a da pasta térmica. Acho que tenho aqui. Ainda deu uma diferença. Menor do que a acusada pelo termopar, mas deu. Nada que uma linha map não resolva. Também oscilou um pouco o sensor, desta feita por conta do tempo de variação muito curto que coloquei para ler o interruptor e o sensor 10ms é pouco. Vou aumentar para 250. Viu mexer tb na preinfusão. Não precisa ser ativa porque o próprio boiler cria pressão quando aquecido. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Fotos da máquina antes de fechar 2 Citar Link para o comentário Compartilhar em outros sites More sharing options...
seiti Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Achei q fosse trocar o botao de ligar tb. Isso e colocando uma torneira/knob de metal ficaria sensacional. [emoji106] Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Esse painel é o provisório. O futuro painel vai ser touch e cobrirá toda a área cinza Boa ideia a do knob cromado. Sabe onde tem para vender? A lataria da máquina está pressionando a caixinha do Arduino e travando o sistema. Vou retirar e soldar todos os fios direto na plaquinha. Assim, mesmo que encoste na caixa, não vai fazer pressão em cima. Introduzi a linha map. Funcionou adequadamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
fabio.cunha Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Seria bom uma torneira inox pro vapor. Procurei aqui e não achei, por fim decidi fazer de madeira o knob de madeira mesmo. Guilherme, vc poderia colocar um video da maquina funcionando, fiquei curioso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Posso sim Fabio. Vou fazê-lo. Vou só soldar a placa antes e mais tarde, final da noite para amanhã, estará aqui. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Guilherme Torres Postado 10 Outubro 2015 Denunciar Share Postado 10 Outubro 2015 Passei a tarde inteira na rua. Fui assistir hotel transilvania 2 com os meninos. Cheguei em casa e tomei um Espresso com preinfusão na Fiamma. Feito a grão blend Espresso. Ficou maravilhoso. Voltei a rua. Final da noite volto a desmontar a máquina, soldar os fios e remontar. Depois faço vídeo demonstrativo 2 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Postagens recomendadas
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.