-
Total de itens
5.364 -
Registro em
-
Última visita
-
Days Won
93
Tudo que Guilherme Torres postou
-
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
Achei esse aqui também. Parece ser um bom custo benefício, uma vez que posso conectar diretamente na tubulação (talvez mediante uso de um adaptador - redutor). Suporta até 12 bar. http://www.dx.com/p/carbon-steel-alloy-variable-pump-water-air-pressure-sensor-silver-black-dc-5v-343234#.VBdLPUD3Th4 Pelo que depreendi, você conecta os fios vermelho (vcc 5v) e preto (gnd) e o amarelo em uma porta analógica (input). De acordo com a pressão, haverá variação de voltagem entre 0,5 e 4.5vdc. Aí, para fazer a correpondência com a pressão (setpoint), basta usar o parâmetro map (). Por exemplo: map(ANALOG1, 0.5, 4.5, 0, 12); De qualquer forma, já postei uma pergunta lá no forum do DX questionando as conexões, o que corresponderia a cada fio. -
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
Sérgio, Se puder, depois manda (via mp ou por aqui) um tutorial de como fazer a ligação dele (vcc, gnd, analog in) que eu estudo como adicioná-lo no controlador. Pesquisei outros sensores na faixa de 0 a 10 bar e esse é o que se apresenta mais em conta. Valeu. Guilherme. -
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
A não ser que eu o utilize para a pre infusão ou para vapor. Mas, se eu colocar uma pressão nominal maior do que ele é capaz de medir, não avariaria o equip? -
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
Seria algo assim: Mas esse não serve porque só vai até 7bar http://produto.mercadolivre.com.br/MLB-587880455-sensor-de-presso-para-arduino-mcu-pic-em-recife-_JM Guilherme -
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
Certo. Poderia até usar o logaritmo PID para manter a pressão estável. Mas, onde comprar e onde instalar o sensor? Estimo que seja na tubulação que sai da bomba. -
Fiz alterações estéticas no STC, que segue firme e forte torrando os cafés daqui de casa:
-
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
Esse é só o esboço do painel de controle. Há muito o que ser feito ainda. Rsss. -
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
As libraries necessárias para rodar esse scketh estão no seguinte link: https://onedrive.live.com/redir?resid=9DF00062C19ACFD2!15018&authkey=!AO2b0bz4M-KiB14&ithint=file%2czip -
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
Existem vários controladores já prontos na internet para uso em máquinas de espresso. O mais legal, na minha opinião, é o crema. No entanto, como é muito difícil importar todos os componentes necessários (listados no site), penso em começar do zero. Bem, não é, na realidade, do zero. Alguma coisa a gente tem que aproveitar, por exemplo, esqueletos de outros sketchs que tem na WEB para usar como ponto de partida. Resolvi começar do menu, para depois ir introduzindo as demais funções. Esse é um esboço de um sketch de como o menu do controlador seria (usei um LCD I2C para poupar cabos): /* BASE DO MENU */ #include <MenuBackend.h> //MenuBackend library - copyright by Alexander Brevig #include <wire.h> // wire que precisa ser utilizado junto ao liquidCrystal I2C #include <LiquidCrystal_I2C.h> const int buttonPinLeft = 8; // pin for the Up button const int buttonPinRight = 9; // pin for the Down button const int buttonPinEsc = 10; // pin for the Esc button const int buttonPinEnter = 11; // pin for the Enter button int lastButtonPushed = 0; int lastButtonEnterState = LOW; // the previous reading from the Enter input pin int lastButtonEscState = LOW; // the previous reading from the Esc input pin int lastButtonLeftState = LOW; // the previous reading from the Left input pin int lastButtonRightState = LOW; // the previous reading from the Right input pin long lastEnterDebounceTime = 0; // the last time the output pin was toggled long lastEscDebounceTime = 0; // the last time the output pin was toggled long lastLeftDebounceTime = 0; // the last time the output pin was toggled long lastRightDebounceTime = 0; // the last time the output pin was toggled long debounceDelay = 500; // the debounce time // definção do endereço do adaptador I2C (o meu é esse endereço 0x27) LiquidCrystal_I2C lcd(0x27,16,2); //Menu variables MenuBackend menu = MenuBackend(menuUsed,menuChanged); //initialize menuitems MenuItem menu1Item1 = MenuItem("Item1"); MenuItem menuItem1SubItem1 = MenuItem("Item1SubItem1"); MenuItem menuItem1SubItem2 = MenuItem("Item1SubItem2"); MenuItem menu1Item2 = MenuItem("Item2"); MenuItem menuItem2SubItem1 = MenuItem("Item2SubItem1"); MenuItem menuItem2SubItem2 = MenuItem("Item2SubItem2"); MenuItem menuItem2SubItem3 = MenuItem("Item2SubItem3"); MenuItem menu1Item3 = MenuItem("Item3"); MenuItem menuItem3SubItem1 = MenuItem("Item3SubItem3"); MenuItem menuItem3SubItem2 = MenuItem("Item3SubItem2"); MenuItem menuItem3SubItem3 = MenuItem("Item3SubItem3"); MenuItem menu1Item4 = MenuItem("Item4"); void setup() { pinMode(buttonPinLeft, INPUT); pinMode(buttonPinRight, INPUT); pinMode(buttonPinEnter, INPUT); pinMode(buttonPinEsc, INPUT); lcd.begin(16, 2); //configure menu menu.getRoot().add(menu1Item1); menu1Item1.addRight(menu1Item2).addRight(menu1Item3).addRight(menu1Item4); menu1Item1.add(menuItem1SubItem1).addRight(menuItem1SubItem2); menu1Item2.add(menuItem2SubItem1).addRight(menuItem2SubItem2).addRight(menuItem2SubItem3); menu1Item3.add(menuItem3SubItem1).addRight(menuItem3SubItem2).addRight(menuItem3SubItem3); menu.toRoot(); lcd.setCursor(0,0); } // setup()... void loop() { readButtons(); //I splitted button reading and navigation in two procedures because navigateMenus(); //in some situations I want to use the button for other purpose (eg. to change some settings) } //loop()... void menuChanged(MenuChangeEvent changed){ MenuItem newMenuItem=changed.to; //get the destination menu lcd.setCursor(0,1); //set the start position for lcd printing to the second row if(newMenuItem.getName()==menu.getRoot()){ lcd.print("MENU"); }else if(newMenuItem.getName()=="Item1"){ lcd.print("PREPARAR"); }else if(newMenuItem.getName()=="Item1SubItem1"){ lcd.print("CURTO"); }else if(newMenuItem.getName()=="Item1SubItem2"){ lcd.print("LONGO"); }else if(newMenuItem.getName()=="Item2"){ lcd.print("CONFIGURAR"); }else if(newMenuItem.getName()=="Item2SubItem1"){ lcd.print("TEMPO CURTO"); }else if(newMenuItem.getName()=="Item2SubItem2"){ lcd.print("TEMPO LONGO"); }else if(newMenuItem.getName()=="Item2SubItem3"){ lcd.print("TEMPO PREINFUSAO "); }else if(newMenuItem.getName()=="Item3"){ lcd.print("DEFINIR PID"); }else if(newMenuItem.getName()=="Item3SubItem1"){ lcd.print("DEFINIR P"); }else if(newMenuItem.getName()=="Item3SubItem2"){ lcd.print("DEFINIR I"); }else if(newMenuItem.getName()=="Item3SubItem3"){ lcd.print("DEFINIR D"); }else if(newMenuItem.getName()=="Item4"){ lcd.print("DEFINIR TEMPERATURA"); } } // APENAS PARA VER O QUE FOI PRESSIONADO E QUAL O MENU USADO void menuUsed(MenuUseEvent used){ lcd.setCursor(0,0); lcd.print("FOI USADO "); lcd.setCursor(0,1); lcd.print(used.item.getName()); delay(3000); //delay to allow message reading menu.toRoot(); //back to Main } void readButtons(){ //read buttons status int reading; int buttonEnterState=LOW; // the current reading from the Enter input pin int buttonEscState=LOW; // the current reading from the input pin int buttonLeftState=LOW; // the current reading from the input pin int buttonRightState=LOW; // the current reading from the input pin //Enter button // read the state of the switch into a local variable: reading = digitalRead(buttonPinEnter); // check to see if you just pressed the enter button // (i.e. the input went from LOW to HIGH), and you've waited // long enough since the last press to ignore any noise: // If the switch changed, due to noise or pressing: if (reading != lastButtonEnterState) { // reset the debouncing timer lastEnterDebounceTime = millis(); } if ((millis() - lastEnterDebounceTime) > debounceDelay) { // whatever the reading is at, it's been there for longer // than the debounce delay, so take it as the actual current state: buttonEnterState=reading; lastEnterDebounceTime=millis(); } // save the reading. Next time through the loop, // it'll be the lastButtonState: lastButtonEnterState = reading; //Esc button // read the state of the switch into a local variable: reading = digitalRead(buttonPinEsc); // check to see if you just pressed the Down button // (i.e. the input went from LOW to HIGH), and you've waited // long enough since the last press to ignore any noise: // If the switch changed, due to noise or pressing: if (reading != lastButtonEscState) { // reset the debouncing timer lastEscDebounceTime = millis(); } if ((millis() - lastEscDebounceTime) > debounceDelay) { // whatever the reading is at, it's been there for longer // than the debounce delay, so take it as the actual current state: buttonEscState = reading; lastEscDebounceTime=millis(); } // save the reading. Next time through the loop, // it'll be the lastButtonState: lastButtonEscState = reading; //Down button // read the state of the switch into a local variable: reading = digitalRead(buttonPinRight); // check to see if you just pressed the Down button // (i.e. the input went from LOW to HIGH), and you've waited // long enough since the last press to ignore any noise: // If the switch changed, due to noise or pressing: if (reading != lastButtonRightState) { // reset the debouncing timer lastRightDebounceTime = millis(); } if ((millis() - lastRightDebounceTime) > debounceDelay) { // whatever the reading is at, it's been there for longer // than the debounce delay, so take it as the actual current state: buttonRightState = reading; lastRightDebounceTime =millis(); } // save the reading. Next time through the loop, // it'll be the lastButtonState: lastButtonRightState = reading; //Up button // read the state of the switch into a local variable: reading = digitalRead(buttonPinLeft); // check to see if you just pressed the Down button // (i.e. the input went from LOW to HIGH), and you've waited // long enough since the last press to ignore any noise: // If the switch changed, due to noise or pressing: if (reading != lastButtonLeftState) { // reset the debouncing timer lastLeftDebounceTime = millis(); } if ((millis() - lastLeftDebounceTime) > debounceDelay) { // whatever the reading is at, it's been there for longer // than the debounce delay, so take it as the actual current state: buttonLeftState = reading; lastLeftDebounceTime=millis();; } // save the reading. Next time through the loop, // it'll be the lastButtonState: lastButtonLeftState = reading; //records which button has been pressed if (buttonEnterState==HIGH){ lastButtonPushed=buttonPinEnter; }else if(buttonEscState==HIGH){ lastButtonPushed=buttonPinEsc; }else if(buttonRightState==HIGH){ lastButtonPushed=buttonPinRight; }else if(buttonLeftState==HIGH){ lastButtonPushed=buttonPinLeft; }else{ lastButtonPushed=0; } } void navigateMenus() { MenuItem currentMenu=menu.getCurrent(); switch (lastButtonPushed){ case buttonPinEnter: if(!(currentMenu.moveDown())){ //if the current menu has a child and has been pressed enter then menu navigate to item below menu.use(); }else{ //otherwise, if menu has no child and has been pressed enter the current menu is used menu.moveDown(); } break; case buttonPinEsc: menu.toRoot(); //back to main break; case buttonPinRight: menu.moveRight(); break; case buttonPinLeft: menu.moveLeft(); break; } lastButtonPushed=0; //reset the lastButtonPushed variable } -
Qual o grão no seu moinho HOJE (ou café na sua máquina, coador, aeropress etc.)?
Guilherme Torres respondeu a um tópico em Café Torrado
Eu tb Burny.- 8.497 respostas
-
- preferidos
- quem bebe o que
- (e 4 mais)
-
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
Acho que o bypass é muito mais fácil de implementar. Boa idéia. Vou tentar ambas as abordagens e ver qual vai resultar melhor na prática. O sensor LM é muito mais barato e suporta essa faixa de temperatura de máquinas de espresso. Valeu tb. Acho que tenho uns 3 em casa. O mais chato é bolar os menus, integrá-los com os botões. Estou achando que vou usar uma das diversas bibliotecas existentes especificamente para isso. Penso em primeiro definir essa parte do sketch e depois o controle propriamente dito. -
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
Aquela caixa do primeiro post eu comprei no ebay. A segunda tem na adafruit (se prepare que o frete e a carrier ou courier são de matar). Pesquise por lcd arduino enclosure. -
Fazendo um controlador arduino para máquina de café espresso
Guilherme Torres respondeu ao tópico de Guilherme Torres em Máquinas de Expresso
Lisca, eu posso programar e deixar o sketch e quais componentes comprar aqui para quem se animar a replicar. Quanto à caixa. Não encontrei nenhuma que suporte esse shield que vem com botões. A melhor que encontrei até agora foi essa. Tem também a seguinte: Mas ela é bem mais compacta e, a primeira vista, não tem espaço adequado para colocar botões. Estou pensando em usar um LCD comum mesmo (sem os botões). Uma boa saída seria usar com uma plaquina I2C ou diretamente um LCD I2C (mais ou menos 14 dólares no ebay). Os botões podem ser comprados em qualquer eletrônica, mesmo no plano piloto, em Brasília, onde só tem uma +ou- relativamente boa (Contato). Se for usar mesmo um LCD I2C, qualquer pin digital sobrando pode ser usado como input para verificar se o botão x ou y foi ou não pressionado e alterar o valor ou fazer o que o programinha mandar. Penso em dar um delay de 1 segundo no loop do programa. Assim, embora fique um pouquinho mais lento na definição manual dos parâmetros (nos botões), fica mais fácil inserir um contador de tempo. Estou pensando em fazer o mais simples possível. Aquela caixa é boa porque, no que se relaciona aos botões, posso adicioná-los com pequenos furos (broca nº 3 ou 4). Penso em afixá-los no case com cola quente, que é o comumente usado em se tratando de equipamentos feitos em casa, por ser o método mais fácil e relativamente resistente. -
Vou começar a projetar um controlador arduino para máquina de café espresso. O que vocês gostariam de ver nele? Penso em usar o seguinte case: Até o momento, minha idéia é que ele possua as seguintes funções: A) Medição de temperatura (na gaggia, externamente à caldeira) (tem um buraco para instalar o termostato, que serve para instalar também o sensor termopar (acho que vou usar tipo k, por ser mais barato), mas estou aberto a sugestões; Extração cronometrada (você define o número de segundos e o controlador, controla rss); C) Pré-infusão (não sei se vou conseguir essa; penso em usar potência mais baixa (leia-se, menor voltagem ou pulsos de voltagem mais longos) na bomba para diminuir a pressão, mas não tenho idéia se isso vai influenciar na hora de distribuir a água pelo chuveirinho); D) Definição da temperatura a ser mantida (setpoint); Como a gaggia coffee, que vai ser a cobaia desse projeto, não tem válvula solenoide, não vou mexer com isso nesse primeiro momento (seria muito complicado colocá-la nessa equação. Para usá-la teria que fazer um bypass por todo o sistema elétrico da cafeteira (na prática, retirar a placa controladora que vem nela da equação e controlar totalmente via arduino).
-
Fazendo uma máquina de espresso manual
Guilherme Torres respondeu ao tópico de sergio.m em Máquinas de Expresso
Sérgio, inspirado na sua iniciativa, bem como já cansado da imensa variação de temperatura da gaggia coffe aqui do trampo, decidi dar um tempo nos torradores e bolar um controlador de temperatura e tempo de extração para a cafeteira. Estou pensando em partir para um frontend gráfico que permita que eu selecione a temperatura desejada, bem como o tempo de extração. Se eu quero pré-infusão (posso variar a voltagem de saída da bomba para conferir menor pressão inicial) ou não. Vai dar um trabalhão, então vai demorar. Mas, se der certo, vai ser bem legal não acha? Ainda estou em dúvida se uso um LCD shield com botões integrados (usa mais pins) ou se parto para um LCD I2C e botões à parte (usa menos pins, mas nem tanto assim). Acho que vou fazer uma caixinha à parte, com conexão estilo a la Rocket Dual Boiller, na parte traseira da máquina. Penso em deixar o(s) relê(s) dentro da cafeteira, na parte inferior, para não esquentar tanto. Talvez, na parte que toca a base, porque, se a máquina estiver em uma bancada de pedra, o relé funciona em temperatura mais baixa, dissipando melhor o calor que ele produz. Depois, quando começar, abro tópico adequado. Ai, quem quiser, pode acompanhar. Está aqui -
Fazendo uma máquina de espresso manual
Guilherme Torres respondeu ao tópico de sergio.m em Máquinas de Expresso
Mesmo para um cabra bão como o Sérgio! -
Fazendo uma máquina de espresso manual
Guilherme Torres respondeu ao tópico de sergio.m em Máquinas de Expresso
O que talvez ele está dizendo é que não é moleza conceber, manufaturar e montar uma máquina de café espresso. Sem estrutura é tudo muito difícil. -
Estou com o torrador do Burny para alterar a forma de introdução do sensor BT. Mudei também o sensor ET. Pus um totalmente desencapsulado (ET) para melhor tempo de resposta na medição. O que pude constatar é que as resistências produzem calor de gente grande. Muito eficientes mesmo, para o pequeno consumo de energia (em proporção). Já alterei duas vezes a posição do sensor ET, mantendo-o, no entanto, próximo às resistências, mas as temperaturas medidas continuam estratosféricas. Cada dia que passa fico mais fã de resistências de quartzo. Além de muito mais eficientes na liberação de calor, por emitirem espectro infravermelho, são também mais eficientes em distribuí-lo de forma mais uniforme no alimento que está sendo preparado. A única coisa que lamento em relação a esse torrador - o que é uma vantagem dele e que se revela, ao mesmo tempo, em desvantagem - é o espaço muito compacto. Se fosse um forno, seria muito mais fácil mudar a posição do sensor de forma a refletir a temperatura que está rolando dentro do tambor (não na massa de grãos, mas no centro do torrador). Acho que vou acabar voltando-as para o lado direito, que possui mais espaço do que o esquerdo. Não queria fazer isso, porque manter todos os sensores no lado esquerdo fica muito mais prático para o operador na hora de conectar e organizar os cabos que vem da caixa controladora.
-
Qual o grão no seu moinho HOJE (ou café na sua máquina, coador, aeropress etc.)?
Guilherme Torres respondeu a um tópico em Café Torrado
Blend fim de café no trampo. FAF 322, Mundo novo (de um amigo) e BOB na cabeça, tudo junto e misturado. Ficou bom. Restam umas 60g apenas. Espresso no capricho.- 8.497 respostas
-
- preferidos
- quem bebe o que
- (e 4 mais)
-
Esqueci de mencionar que substitui o transformador do motor. Coloquei uma fonte de notebook com voltagem variável e maior amperagem (5A), deixando-a em lugar de fácil acesso (logo abaixo da cesta resfriadora). Com isso, dá para variar a voltagem de 12v a 24v. O motor aguenta 24v, de acordo com o fabricante, mas gira a uma velocidade exorbitante nessa voltagem. O ideal é deixar a voltagem e 12V e aumentar a depender do tamanho do bach a ser torrado. No bach de ontem, 230g, deixei em 18V no início, mas, acabei reduzindo para 12V porque estava girando rápido demais.
-
Testei ontem a nova adição. A resposta ficou bem mais ágil. Por conta da pressa, acabei deixando um fio (de baixa voltagem) encostar na lataria, o que atrapalhou um pouco a medição (fez os sensores variarem 10 graus para cima e para baixo durante a torra). O café ficou excepcionalmente bom, de qualquer forma. Mas, pelo que vi, agora dá para rolar uma ROR de 20, desde que o fluxo de ar esteja programado a partir de 40%. Gostei do resultado: (BOB O LINK) Perda de 14,5% - 55ag - aromático, doce e aftertaste duradouro. Encerrei a torra um pouco mais cedo dessa vez, com 2 minutos e meio de desenvolvimento.
-
Qual o grão no seu moinho HOJE (ou café na sua máquina, coador, aeropress etc.)?
Guilherme Torres respondeu a um tópico em Café Torrado
One love, one song - BOB mas O LINK KKKKKKK Espresso. Sweet as it can be.- 8.497 respostas
-
- preferidos
- quem bebe o que
- (e 4 mais)
-
Qual o grão no seu moinho HOJE (ou café na sua máquina, coador, aeropress etc.)?
Guilherme Torres respondeu a um tópico em Café Torrado
BOB O LINK - Coador.- 8.497 respostas
-
- preferidos
- quem bebe o que
- (e 4 mais)
-
Resultado da torra de ontem Ainda me acostumando com a nova adição. Ontem fiz uma torra com fluxo de ar bem maior do que usava antes. Por incrível que pareça, aparentemente, a perda foi menor, ao invés de maior. Encrerrei um pouco antes tb, porque a coisa estava saindo do meu controle (por culpa do novo jogo de resistência e, principalmente, do operador). Finalizei aos 2:30 de desenvolvimento. Tempo total 11min. O cheiro está bom, então, isso já é indício de que o café tb será. Ainda não provei. Vou fazer um coado dele no café da manhã.
-
Filtro IMS (Competition Filter)
Guilherme Torres respondeu ao tópico de carlos eduardo em Máquinas de Expresso
Boa idéia.