• We have implemented the ability to gift someone a Supporting Membership now! When you access the Upgrade page there is now a 'Gift' button. Once you click that you can enter a username to gift an account Upgrade to. Great way to help support this forum plus give some kudos to anyone who has helped you.

BrewmaniacEX

Ajude o Home Brew Talk Brasil:

guilosch

Well-Known Member
Afiliado
3/12/15
Mensagens
59
Opa Dumpa.
Gostaria de saber qual a melhor forma de utilizar.
A quantidade que uso para infusão é de uns 25 litros.
Coloco essa quantidade e configuro o autotune para a temperatura de infusão?
Quanto Tempo demora?
Funciona mesmo? Vale o tempo gasto?

Obrigado.

sim, qual a dúvida?
 
Última edição:

dumpa

Well-Known Member
Afiliado
28/8/14
Mensagens
224
Opa Dumpa.
Gostaria de saber qual a melhor forma de utilizar.
A quantidade que uso para infusão é de uns 25 litros.
Coloco essa quantidade e configuro o autotune para a temperatura de infusão?
Quanto Tempo demora?
Funciona mesmo? Vale o tempo gasto?

Obrigado.
Normalmente é recomendado a água de mostura que normalmente vc usa e o setpoint dela. O tempo gasto é relativo, depende do material do equipamento, volume, temperatura ambiente... Em teoria é para funcionar. Mas basicamente ele vai ficar esquentando e deixando esfriar e sucessivamente e tentando manter o SP.

AUTO-TUNE
• Adicione água
• Entre no modo manual
• Configure a temperatura desejada, por ex. 50 ºC
• Ligue a resistência (HEAT) e a bomba se desejar ter a recirculação (recomendado)
• Quando atingir o SP segure o botão da resistência por uns 2s e solte, vai aparecer a pergunta TUNE PID? coloque SIM
• O TUNE PID irá começar e fará os ajustes necessários nos parâmetros
• Quando terminar os parâmetros estarão armazenados automaticamente
 

Robinho

Member
Afiliado
13/2/19
Mensagens
22
Localização
Sergipe
O autotune funciona bem sim, no meu equipamento leva cerca de 10 minutos.

Se fizer só com água o resultado já fica muito bom, mas para melhores resultados recomendo que faça exatamente da forma que costuma ser sua brassagem, com a mesma quantidade de água e malte.

Por exemplo, no dia que for brassar põe a água e o malte na panela, segue as instruções do dumpa programando o autotune para 50ºC, depois segue normalmente para suas rampas de sacarificação. Vai acrescentar muito pouco ao seu tempo de brassagem e seu aparelho vai ficar bem ajustado.
 

guilosch

Well-Known Member
Afiliado
3/12/15
Mensagens
59
Opa,
Você diz para colocar o malte com a agua fria e setar para 50 graus?
Ou esquento até 50 graus, coloco o malte e seto o autotune?
Isso não irá afetar a densidade pré fervura, etc?

Obrigado!
O autotune funciona bem sim, no meu equipamento leva cerca de 10 minutos.

Se fizer só com água o resultado já fica muito bom, mas para melhores resultados recomendo que faça exatamente da forma que costuma ser sua brassagem, com a mesma quantidade de água e malte.

Por exemplo, no dia que for brassar põe a água e o malte na panela, segue as instruções do dumpa programando o autotune para 50ºC, depois segue normalmente para suas rampas de sacarificação. Vai acrescentar muito pouco ao seu tempo de brassagem e seu aparelho vai ficar bem ajustado.
 

guilosch

Well-Known Member
Afiliado
3/12/15
Mensagens
59
Alguém pode ajudar?
Seto para 50 graus e coloco o malte. Ligo o autotune e depois avanço para a temp de infusão. Isso eu entendi.
A minha dúvida é se isso vai alterar alguma coisa na receita do beersmith.

Obrigado.

Opa,
Você diz para colocar o malte com a agua fria e setar para 50 graus?
Ou esquento até 50 graus, coloco o malte e seto o autotune?
Isso não irá afetar a densidade pré fervura, etc?

Obrigado!
 

dumpa

Well-Known Member
Afiliado
28/8/14
Mensagens
224
Alguém pode ajudar?
Seto para 50 graus e coloco o malte. Ligo o autotune e depois avanço para a temp de infusão. Isso eu entendi.
A minha dúvida é se isso vai alterar alguma coisa na receita do beersmith.

Obrigado.
Nunca fiz assim, mas entendi isso também, então coloca a água, seta para sua temp. desejada, um pouco antes adicione o malte, vai ocorrer queda de temperatura e o PID vai tentar compensar e passará do setpoint se colocar quando atingir, por isso acho que antes é o ideal. Quando atingir acione o autune e depois que ele finalizar siga com a brassagem. Mas tem vez que leva 1h o auto tune, um colega fez essa semana só com água e está brassando neste momento, o máximo que passou foi 0.5 ºC, na rampa de 66 ºC está se mantendo em 66.11 ºC.
 

guilosch

Well-Known Member
Afiliado
3/12/15
Mensagens
59
Bom dia, pessoal.
Alguém sabe o que significam os números 2, 1, 8 e 4 abaixo?
Consegui alterar os mapeamentos para a bomba, sensor e heater para a placa do Mazza mas somente os botões não estão funcionando.
Na placa dele, os botões foram associados aos pinos P1, P2, P3 e P4. Originalmente seriam nos P0, P1, P2 e P3.
Achei que esses números eram os pinos do PCF8574 mas aparentemente não é isso.
Refiz o código pois troquei o D1 por um D1 pro.

#define ButtonUpPin 2 // P1
#define ButtonDownPin 1 // p0 NODEMCU_PIN_D4
#define ButtonStartPin 8 //P3 NODEMCU_PIN_D5
#define ButtonEnterPin 4 //P2 NODEMCU_PIN_D6

Abs,
 
Última edição:

guilosch

Well-Known Member
Afiliado
3/12/15
Mensagens
59
Já consegui!

Abs,

Bom dia, pessoal.
Alguém sabe o que significam os números 2, 1, 8 e 4 abaixo?
Consegui alterar os mapeamentos para a bomba, sensor e heater para a placa do Mazza mas somente os botões não estão funcionando.
Na placa dele, os botões foram associados aos pinos P1, P2, P3 e P4. Originalmente seriam nos P0, P1, P2 e P3.
Achei que esses números eram os pinos do PCF8574 mas aparentemente não é isso.
Refiz o código pois troquei o D1 por um D1 pro.

#define ButtonUpPin 2 // P1
#define ButtonDownPin 1 // p0 NODEMCU_PIN_D4
#define ButtonStartPin 8 //P3 NODEMCU_PIN_D5
#define ButtonEnterPin 4 //P2 NODEMCU_PIN_D6

Abs,
 

guilosch

Well-Known Member
Afiliado
3/12/15
Mensagens
59
Opa,

Eu ia coloca meu pins.h aqui, mas verifiquei umas inconsistências (número dos BUS com relação aos D0, D5, etc).

Vou revisar aqui.

Poderia me passar as alterações que você fez no código para funcionar com a placa do mazza?

Eu até identifiquei algumas, mas queria confirmar antes de alterar e por na placa 😅
 
Última edição:

guilosch

Well-Known Member
Afiliado
3/12/15
Mensagens
59
Segue o conteúdo do pins.h
Peço por favor que revise e teste o funcionamento. Não me responsabilizo por possíveis problemas ocasionados. Abs!

#ifndef PINS_H
#define PINS_H
#include <pcf8574_esp.h>
/*
#define NODEMCU_PIN_A0 17
#define NODEMCU_PIN_D8 15 Buzzer
#define NODEMCU_PIN_D1 5 [I/O]SCL // I2C
#define NODEMCU_PIN_D2 4 [I/O]SDA // I2C
#define NODEMCU_PIN_D3 0
#define NODEMCU_PIN_D4 2
#define NODEMCU_PIN_D5 14 Pump
#define NODEMCU_PIN_D6 12 Sensor
#define NODEMCU_PIN_D0 16 Heater
#define NODEMCU_PIN_D7 13 AuxHeater
*/
#define BUTTON_USE_EXT true
#define HEATER_USE_EXT false
#define PUMP_USE_EXT false
#define BUZZER_USE_EXT false
//#define PUMP_INVERTED_LOGIC true
// with all address pins grounded, PCF8574 is 0x20 while pCF8574A is 0x38
#define PCF8574_ADDRESS 0x20
//#define PCF8574_ADDRESS 0x38
//Using ESP8266 PINs as input seems to be a good idea
#define I2C_SCL NODEMCU_PIN_D1
#define I2C_SDA NODEMCU_PIN_D2
#define SensorPin NODEMCU_PIN_D6

#define AuxHeatControlPin NODEMCU_PIN_D7
// the following pin are group into Output & Input
// Input is for button, while output is for heater,pump, and buzzer.
#if BUTTON_USE_EXT !=true
#define ButtonUpPin NODEMCU_PIN_D3
#define ButtonDownPin NODEMCU_PIN_D4
#define ButtonStartPin NODEMCU_PIN_D5
#define ButtonEnterPin NODEMCU_PIN_D7
#else
#define ButtonUpPin 2 // P1
#define ButtonDownPin 4 // p2 NODEMCU_PIN_D4
#define ButtonStartPin 8 //P3 NODEMCU_PIN_D5
#define ButtonEnterPin 16 //P4 NODEMCU_PIN_D6
#endif
#if EnableLevelSensor
#define LevelSensorOnIoExpander false
#if LevelSensorOnIoExpander
#define LevelSensorIOExpPin 32 //P5
#else
#define LevelSensorPin NODEMCU_PIN_D7
#endif
#define SensorNormalCloseOnNotFull true
#endif
#if PUMP_USE_EXT != true
#define PumpControlPin NODEMCU_PIN_D5
#else
#define ExPumpControlPin 5
#endif
#if HEATER_USE_EXT != true
#define HeatControlPin NODEMCU_PIN_D0
#define ExHeatControlPin 3
#endif
#if BUZZER_USE_EXT != true
#define BuzzControlPin NODEMCU_PIN_D7
#else
#define ExBuzzControlPin 6
#endif

#if (BUTTON_USE_EXT == true) || (HEATER_USE_EXT == true) || (PUMP_USE_EXT == true) ||( BUZZER_USE_EXT == true)
PCF8574 pcf8574(PCF8574_ADDRESS,I2C_SDA, I2C_SCL);
#endif
// Buttons are INPUT
// byte btnReadPin(byte p){ return digitalRead(p);}
#if BUTTON_USE_EXT !=true
void btnPrepareRead(void){}
#define btnReadPin digitalRead
#else
byte _portvalue;
void btnPrepareRead(void)
{
_portvalue=pcf8574.read8();
}
byte btnReadPin(byte pin)
{
return (_portvalue & pin);
}
#endif
// Heater, Pump, Buzz are OUTPUTs
inline void setHeaterOut(byte v)
{
#if HEATER_USE_EXT != true
digitalWrite (HeatControlPin, v);
#else
pcf8574.write(ExHeatControlPin,v);
#endif
}
inline void setPumpOut(byte v)
{
#if PUMP_USE_EXT != true
#if PUMP_INVERTED_LOGIC
digitalWrite (PumpControlPin, (v==LOW)? HIGH:LOW);
#else
digitalWrite (PumpControlPin, v);
#endif
#else
pcf8574.write(ExPumpControlPin,v);
#endif
}
inline void setBuzzOut(byte v)
{
#if BUZZER_USE_EXT != true
digitalWrite (BuzzControlPin, v);
#else
pcf8574.write(ExBuzzControlPin,v);
#endif
}
#if SpargeHeaterSupport == true
inline void setAuxHeaterOut(byte v)
{
digitalWrite (AuxHeatControlPin, v);
}
#endif
#if SecondaryHeaterSupport == true
inline void setSecondaryHeaterOut(byte v)
{
digitalWrite (AuxHeatControlPin, v);
}
#endif
void initIOPins(void)
{
#if (BUTTON_USE_EXT == true) || (HEATER_USE_EXT == true) || (PUMP_USE_EXT == true) ||( BUZZER_USE_EXT == true)
// pcf8574.begin();
#endif
#if BUTTON_USE_EXT !=true
pinMode (ButtonUpPin, INPUT_PULLUP);
pinMode (ButtonDownPin, INPUT_PULLUP);
pinMode (ButtonStartPin, INPUT_PULLUP);
pinMode (ButtonEnterPin, INPUT_PULLUP);
#else
_portvalue=0;
#endif
#if HEATER_USE_EXT != true
pinMode (HeatControlPin, OUTPUT);
#endif
setHeaterOut(LOW);
#if PUMP_USE_EXT != true
pinMode (PumpControlPin, OUTPUT);
#endif
setPumpOut(LOW);
#if BUZZER_USE_EXT != true
pinMode (BuzzControlPin, OUTPUT);
#endif
setBuzzOut(LOW);
#if SpargeHeaterSupport == true
pinMode (AuxHeatControlPin, OUTPUT);
setAuxHeaterOut(LOW);
#endif
#if EnableLevelSensor
#if LevelSensorOnIoExpander != true
pinMode (LevelSensorPin, INPUT_PULLUP);
#endif
#endif
}
#if EnableLevelSensor
// close/connected/ground: not full
// open/disconnected/V+: full
#if SensorNormalCloseOnNotFull
#if LevelSensorOnIoExpander
bool isWaterLevelFull(void){
// _portvalue is read for button every loop cycle
return (_portvalue & LevelSensorIOExpPin) !=0;
}
#else
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) != 0;
}
#endif
#else
#if LevelSensorOnIoExpander
bool isWaterLevelFull(void){
// _portvalue is read for button every loop cycle
return (_portvalue & LevelSensorIOExpPin) ==0;
}
#else
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) == 0;
}
#endif
#endif //#if SensorNormalCloseOnNotFull
#endif // EnableLevelSensor

#endif
 

Gu_MAZZA

Well-Known Member
Afiliado
12/3/17
Mensagens
250
Segue o conteúdo do pins.h
Peço por favor que revise e teste o funcionamento. Não me responsabilizo por possíveis problemas ocasionados. Abs!

#ifndef PINS_H
#define PINS_H
#include <pcf8574_esp.h>
/*
#define NODEMCU_PIN_A0 17
#define NODEMCU_PIN_D8 15 Buzzer
#define NODEMCU_PIN_D1 5 [I/O]SCL // I2C
#define NODEMCU_PIN_D2 4 [I/O]SDA // I2C
#define NODEMCU_PIN_D3 0
#define NODEMCU_PIN_D4 2
#define NODEMCU_PIN_D5 14 Pump
#define NODEMCU_PIN_D6 12 Sensor
#define NODEMCU_PIN_D0 16 Heater
#define NODEMCU_PIN_D7 13 AuxHeater
*/
#define BUTTON_USE_EXT true
#define HEATER_USE_EXT false
#define PUMP_USE_EXT false
#define BUZZER_USE_EXT false
//#define PUMP_INVERTED_LOGIC true
// with all address pins grounded, PCF8574 is 0x20 while pCF8574A is 0x38
#define PCF8574_ADDRESS 0x20
//#define PCF8574_ADDRESS 0x38
//Using ESP8266 PINs as input seems to be a good idea
#define I2C_SCL NODEMCU_PIN_D1
#define I2C_SDA NODEMCU_PIN_D2
#define SensorPin NODEMCU_PIN_D6

#define AuxHeatControlPin NODEMCU_PIN_D7
// the following pin are group into Output & Input
// Input is for button, while output is for heater,pump, and buzzer.
#if BUTTON_USE_EXT !=true
#define ButtonUpPin NODEMCU_PIN_D3
#define ButtonDownPin NODEMCU_PIN_D4
#define ButtonStartPin NODEMCU_PIN_D5
#define ButtonEnterPin NODEMCU_PIN_D7
#else
#define ButtonUpPin 2 // P1
#define ButtonDownPin 4 // p2 NODEMCU_PIN_D4
#define ButtonStartPin 8 //P3 NODEMCU_PIN_D5
#define ButtonEnterPin 16 //P4 NODEMCU_PIN_D6
#endif
#if EnableLevelSensor
#define LevelSensorOnIoExpander false
#if LevelSensorOnIoExpander
#define LevelSensorIOExpPin 32 //P5
#else
#define LevelSensorPin NODEMCU_PIN_D7
#endif
#define SensorNormalCloseOnNotFull true
#endif
#if PUMP_USE_EXT != true
#define PumpControlPin NODEMCU_PIN_D5
#else
#define ExPumpControlPin 5
#endif
#if HEATER_USE_EXT != true
#define HeatControlPin NODEMCU_PIN_D0
#define ExHeatControlPin 3
#endif
#if BUZZER_USE_EXT != true
#define BuzzControlPin NODEMCU_PIN_D7
#else
#define ExBuzzControlPin 6
#endif

#if (BUTTON_USE_EXT == true) || (HEATER_USE_EXT == true) || (PUMP_USE_EXT == true) ||( BUZZER_USE_EXT == true)
PCF8574 pcf8574(PCF8574_ADDRESS,I2C_SDA, I2C_SCL);
#endif
// Buttons are INPUT
// byte btnReadPin(byte p){ return digitalRead(p);}
#if BUTTON_USE_EXT !=true
void btnPrepareRead(void){}
#define btnReadPin digitalRead
#else
byte _portvalue;
void btnPrepareRead(void)
{
_portvalue=pcf8574.read8();
}
byte btnReadPin(byte pin)
{
return (_portvalue & pin);
}
#endif
// Heater, Pump, Buzz are OUTPUTs
inline void setHeaterOut(byte v)
{
#if HEATER_USE_EXT != true
digitalWrite (HeatControlPin, v);
#else
pcf8574.write(ExHeatControlPin,v);
#endif
}
inline void setPumpOut(byte v)
{
#if PUMP_USE_EXT != true
#if PUMP_INVERTED_LOGIC
digitalWrite (PumpControlPin, (v==LOW)? HIGH:LOW);
#else
digitalWrite (PumpControlPin, v);
#endif
#else
pcf8574.write(ExPumpControlPin,v);
#endif
}
inline void setBuzzOut(byte v)
{
#if BUZZER_USE_EXT != true
digitalWrite (BuzzControlPin, v);
#else
pcf8574.write(ExBuzzControlPin,v);
#endif
}
#if SpargeHeaterSupport == true
inline void setAuxHeaterOut(byte v)
{
digitalWrite (AuxHeatControlPin, v);
}
#endif
#if SecondaryHeaterSupport == true
inline void setSecondaryHeaterOut(byte v)
{
digitalWrite (AuxHeatControlPin, v);
}
#endif
void initIOPins(void)
{
#if (BUTTON_USE_EXT == true) || (HEATER_USE_EXT == true) || (PUMP_USE_EXT == true) ||( BUZZER_USE_EXT == true)
// pcf8574.begin();
#endif
#if BUTTON_USE_EXT !=true
pinMode (ButtonUpPin, INPUT_PULLUP);
pinMode (ButtonDownPin, INPUT_PULLUP);
pinMode (ButtonStartPin, INPUT_PULLUP);
pinMode (ButtonEnterPin, INPUT_PULLUP);
#else
_portvalue=0;
#endif
#if HEATER_USE_EXT != true
pinMode (HeatControlPin, OUTPUT);
#endif
setHeaterOut(LOW);
#if PUMP_USE_EXT != true
pinMode (PumpControlPin, OUTPUT);
#endif
setPumpOut(LOW);
#if BUZZER_USE_EXT != true
pinMode (BuzzControlPin, OUTPUT);
#endif
setBuzzOut(LOW);
#if SpargeHeaterSupport == true
pinMode (AuxHeatControlPin, OUTPUT);
setAuxHeaterOut(LOW);
#endif
#if EnableLevelSensor
#if LevelSensorOnIoExpander != true
pinMode (LevelSensorPin, INPUT_PULLUP);
#endif
#endif
}
#if EnableLevelSensor
// close/connected/ground: not full
// open/disconnected/V+: full
#if SensorNormalCloseOnNotFull
#if LevelSensorOnIoExpander
bool isWaterLevelFull(void){
// _portvalue is read for button every loop cycle
return (_portvalue & LevelSensorIOExpPin) !=0;
}
#else
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) != 0;
}
#endif
#else
#if LevelSensorOnIoExpander
bool isWaterLevelFull(void){
// _portvalue is read for button every loop cycle
return (_portvalue & LevelSensorIOExpPin) ==0;
}
#else
bool isWaterLevelFull(void){
return digitalRead(LevelSensorPin) == 0;
}
#endif
#endif //#if SensorNormalCloseOnNotFull
#endif // EnableLevelSensor

#endif
Tudo correto.
Como vc falou que já tinha achado a solução, então nem respondi.
 

leoportugal

Well-Known Member
Afiliado
22/10/13
Mensagens
99
Bom dia pessoal. Ontem terminei a montagem de um controlador brewmaniac. Estou usando a versão 49 com sparge e antes de conectar a bomba e as resistências, me surgiu algumas dúvidas!

Primeira: Usando o BM no modo auto, percebi que ele liga a pump e heat e não liga o sparge, mas quando dou pause, ele desliga o heat e pump e liga o sparge. Não minha concepção, ele deveria ligar os 3, para que ao fim da mostura a agua do sparge já esteja na temperatura. Como não deixei muito tempo ligado, depois de um tempo ele liga a sparge?

Segunda: Usando o BM no manual, não vi um botão para ligar/desligar o sparge

Obrigado a todos!
 

dumpa

Well-Known Member
Afiliado
28/8/14
Mensagens
224
Bom dia pessoal. Ontem terminei a montagem de um controlador brewmaniac. Estou usando a versão 49 com sparge e antes de conectar a bomba e as resistências, me surgiu algumas dúvidas!

Primeira: Usando o BM no modo auto, percebi que ele liga a pump e heat e não liga o sparge, mas quando dou pause, ele desliga o heat e pump e liga o sparge. Não minha concepção, ele deveria ligar os 3, para que ao fim da mostura a agua do sparge já esteja na temperatura. Como não deixei muito tempo ligado, depois de um tempo ele liga a sparge?

Segunda: Usando o BM no manual, não vi um botão para ligar/desligar o sparge

Obrigado a todos!
Resistência principal e resistência de sparge nunca atuam juntas, faz parte do projeto ser assim, sempre na pausa da principal a de sparge é acionada. No modo auto até o final da mostura a temperatura de sparge será atingida, não se preocupe. Modo manual não tem sparge.
 

leoportugal

Well-Known Member
Afiliado
22/10/13
Mensagens
99
Resistência principal e resistência de sparge nunca atuam juntas, faz parte do projeto ser assim, sempre na pausa da principal a de sparge é acionada. No modo auto até o final da mostura a temperatura de sparge será atingida, não se preocupe. Modo manual não tem sparge.
Dumpa, então enquanto a temperatura sobe a sparge fica desligada, chegou no setpoint, a sparge liga. Depois ficam alternando para manter ambas na temperatura correta?
Obrigado!
 

dumpa

Well-Known Member
Afiliado
28/8/14
Mensagens
224
Dumpa, então enquanto a temperatura sobe a sparge fica desligada, chegou no setpoint, a sparge liga. Depois ficam alternando para manter ambas na temperatura correta?
Obrigado!
Isso, enquanto não atingir o SP da principal a de sparge não é acionada, quando está para atingir e o PID entra em ação a de sparge já começa a ser acionada, e faz isso durante toda a mostura nas pausas da principal.
 

Latest posts

Topo