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

[BrewUNO] Controlador de Brassagem para BIAB, Single Vessel e Tribloco

Ajude o Home Brew Talk Brasil:

Leonardo Lima

Member
Afiliado
21/6/20
Mensagens
23
Localização
Maricá/RJ
Os PCF só tem diferença quando são PCF8574A e PCF8574, o "P" e o "T" devem ser pra outra finalidade e não tem importância pra nós. Veja as tabelas a baixo, são os endereços de cada modelo de PCF.
Ver anexo 126364

Minha interface tem os pinos A0, A1 e A2 com sinal "0", o CI é o PCF8574 cujo endereço é o 0x20 que é o mesmo configurado no arquivo "platformio.ini" só que vários usuários relatam que não funciona mesmo mudando o endereço no código fonte, por isso eu acredito que só o CI PCF8574A vai funcionar e aquele endereço que dá pra modificar é o do i2C do LCD.
Minha dica é comprar uma placa i2C com o PCF8574A que normalmente é em SMD.
Ver anexo 126365
Valeu Massa.
Ontem rodei o I2C Scanner e o resultado foi 2 endereços o 0x20 e o 0x27 (achei estranho encontrar 2 mas como foi a primeira trabalhando com isso não sei se esta certo). Ja alterei no código o endereço como alguns ja fizeram e realmente não funcionou os teclados.

I2C_Scanner_result.png

Vou avaliar o fato de comprar uma placa I2C como voce falou.


I2C device found at address 0x20 -> PCF8574P
I2C device found at address 0x27 -> DISPLAY

Se o display esta no endereço 0x27, entendo que o endereço do código do brewuno não é do display.

-D PCF8574_ADDRESS=0x20


Obrigado!
 
Última edição:

Valmir.Santos

Well-Known Member
Afiliado
20/8/18
Mensagens
108
Localização
Catu-Ba
Valeu Massa.
Ontem rodei o I2C Scanner e o resultado foi 2 endereços o 0x20 e o 0x27 (achei estranho encontrar 2 mas como foi a primeira trabalhando com isso não sei se esta certo). Ja alterei no código o endereço como alguns ja fizeram e realmente não funcionou os teclados.

Ver anexo 126366

Vou avaliar o fato de comprar uma placa I2C como voce falou.


I2C device found at address 0x20 -> PCF8574P
I2C device found at address 0x27 -> DISPLAY

Se o display esta no endereço 0x27, entendo que o endereço do código do brewuno não é do display.

-D PCF8574_ADDRESS=0x20


Obrigado!
Leonardo, vc já olhou o datasheet do seu pcf pra ver qual endereço ele tá setado? Não entendo de programação e apanhei com isso quando montei o meu, mas fiz como vc e rodei o scanner e quando troquei funcionou, não sei onde fiz pq faz um tempinho e futuquei muito, mas vi q a nova versão o display já pode ser setado na configuração do brewuno e o pcf no arquivo platformio.ini.
 

Leonardo Lima

Member
Afiliado
21/6/20
Mensagens
23
Localização
Maricá/RJ
Leonardo, vc já olhou o datasheet do seu pcf pra ver qual endereço ele tá setado? Não entendo de programação e apanhei com isso quando montei o meu, mas fiz como vc e rodei o scanner e quando troquei funcionou, não sei onde fiz pq faz um tempinho e futuquei muito, mas vi q a nova versão o display já pode ser setado na configuração do brewuno e o pcf no arquivo platformio.ini.
Valmir, já olhei sim e o endereço está 0x20, assim como no scanner e também na configuração do platformio.ini e mesmo assim o teclado não funcionou.

Alguma idéia?
 

Valmir.Santos

Well-Known Member
Afiliado
20/8/18
Mensagens
108
Localização
Catu-Ba
Valmir, já olhei sim e o endereço está 0x20, assim como no scanner e também na configuração do platformio.ini e mesmo assim o teclado não funcionou.

Alguma idéia?
Tenta ver ss conexões, lembro q havia um desenho q faltava uma ligação e alguém chamou a atenção pra isso, conferi as conexões novamente pode ter passado algo despercebido.
 

Valmir.Santos

Well-Known Member
Afiliado
20/8/18
Mensagens
108
Localização
Catu-Ba
Já olhei, já revirei todas a conexões e nada... Essa ligação faltando vc viu aqui no fórum?
Olhei no git e foi corrigido, se pegou de lá o esquema tá correto, era o int do pcf para o pino 3 q faltava antes, quando olhei o desenho lembrei disso. No mais não sei o q dizer, pode ser problema do pcf. Eu uso o nodemcu e o pcf8574T.
 

Attachments

Gu_MAZZA

Well-Known Member
Afiliado
12/3/17
Mensagens
348
I2C device found at address 0x20 -> PCF8574P
I2C device found at address 0x27 -> DISPLAY

Se o display esta no endereço 0x27, entendo que o endereço do código do brewuno não é do display.

-D PCF8574_ADDRESS=0x20


Obrigado!
Pela lógica é isso mesmo, só que nem o Bruno soube responder o pq não funciona mudando ali.
Eu sei que se colocar o PCF8574A pros botões, vai funcionar.
É alguma configuração na biblioteca do PCF no BrewUno, no BMEX a biblioteca é mais antiga se não me engano e se mudar esse parâmetro ele aceita o PCF8574, no BrewUno deve ter alguma restrição na biblioteca mais atual.
 

Leonardo Lima

Member
Afiliado
21/6/20
Mensagens
23
Localização
Maricá/RJ
Pela lógica é isso mesmo, só que nem o Bruno soube responder o pq não funciona mudando ali.
Eu sei que se colocar o PCF8574A pros botões, vai funcionar.
É alguma configuração na biblioteca do PCF no BrewUno, no BMEX a biblioteca é mais antiga se não me engano e se mudar esse parâmetro ele aceita o PCF8574, no BrewUno deve ter alguma restrição na biblioteca mais atual.
Entendi. Estou tentando achar um controlador com o PCF8574A mas ta difícil pois a maioria vem com o PCF8574T ou PCF8574.
Você tem ideia de algum lugar que possa vendar o PCF8574A ?
 

Gu_MAZZA

Well-Known Member
Afiliado
12/3/17
Mensagens
348
Essa teoria do INT me intriga, pois nem no i2C do LCD nem no módulo externo tem a conexão com ele.

Não sei onde possa ter o modelo "A", tem que perguntar pros vendedores pra verificar.
 

Leonardo Lima

Member
Afiliado
21/6/20
Mensagens
23
Localização
Maricá/RJ
Pela lógica é isso mesmo, só que nem o Bruno soube responder o pq não funciona mudando ali.
Eu sei que se colocar o PCF8574A pros botões, vai funcionar.
É alguma configuração na biblioteca do PCF no BrewUno, no BMEX a biblioteca é mais antiga se não me engano e se mudar esse parâmetro ele aceita o PCF8574, no BrewUno deve ter alguma restrição na biblioteca mais atual.
Então Mazza, acredito que seu palpile sobre a biblioteca esteja certo, pois fiz um teste com um sketch que faz teste do keypad com o LCD e está funcionando a comunicação perfeitamente(esse sketch e para um keypad 3x4 mas da para testar o 1x4).

As bibliotecas usadas são diferentes da usadas no brewuno.

Código usado...

/* Arduino I2C-Keypad using an I2C_Expander module

Created by Yvan / Tutorials | Brainy-Bits
This code is in the public domain...
You can: copy it, use it, modify it, share it or just plain ignore it!
Thx!

*/

#include <Keypad_I2C.h> // I2C Keypad library by Joe Young joeyoung/arduino_keypads
#include <LiquidCrystal_I2C.h> // I2C LCD Library by Francisco Malpartida https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home

#define lcd_addr 0x27 // I2C address of typical I2C LCD Backpack
#define keypad_addr 0x20 // I2C address of I2C Expander module (A0-A1-A2 dip switch to off position)

// LCD Pins to I2C LCD Backpack - These are default for HD44780 LCD's
#define Rs_pin 0
#define Rw_pin 1
#define En_pin 2
#define BACKLIGHT_PIN 3
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

// Create instance for LCD called: i2c_lcd
LiquidCrystal_I2C i2c_lcd(lcd_addr,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

// Define the keypad pins
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};

// Keypad pins connected to the I2C-Expander pins P0-P6
byte rowPins[ROWS] = {0, 1, 2, 3}; // connect to the row pinouts of the keypad
byte colPins[COLS] = {4, 5, 6}; // connect to the column pinouts of the keypad

// Create instance of the Keypad name I2C_Keypad and using the PCF8574 chip
Keypad_I2C I2C_Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS, keypad_addr, PCF8574 );

void setup() {

i2c_lcd.begin (16,2); // our LCD is a 16x2, change for your LCD if needed

// LCD Backlight ON
i2c_lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
i2c_lcd.setBacklight(HIGH);
i2c_lcd.clear(); // Clear the LCD screen

I2C_Keypad.begin();

}

void loop() {

// Put value of pressed key on keypad in key variable
char key = I2C_Keypad.getKey();

// Light up key pressed on LCD
switch (key) {
case '1':
i2c_lcd.setCursor(0,0);
i2c_lcd.print(key);
break;

case '2':
i2c_lcd.setCursor(0,1);
i2c_lcd.print(key);
break;

case '3':
i2c_lcd.setCursor(3,0);
i2c_lcd.print(key);
break;

case '4':
i2c_lcd.setCursor(3,1);
i2c_lcd.print(key);
break;

case '5':
i2c_lcd.setCursor(6,0);
i2c_lcd.print(key);
break;

case '6':
i2c_lcd.setCursor(6,1);
i2c_lcd.print(key);
break;

case '7':
i2c_lcd.setCursor(9,0);
i2c_lcd.print(key);
break;

case '8':
i2c_lcd.setCursor(9,1);
i2c_lcd.print(key);
break;

case '9':
i2c_lcd.setCursor(12,0);
i2c_lcd.print(key);
break;

case '0':
i2c_lcd.setCursor(12,1);
i2c_lcd.print(key);
break;

case '*':
i2c_lcd.clear();
break;

case '#':
i2c_lcd.setCursor(15,0);
i2c_lcd.print(key);
break;
}
}
 

Leonardo Lima

Member
Afiliado
21/6/20
Mensagens
23
Localização
Maricá/RJ
O seu SSR3 é exatamente o que está ligado na GPIO2 conforme eu comentei ai em cima. Você vai ver que o problema não é no transistor mas o esquema. Eu acredito que vc vai continuar tendo o mesmo problema.
Já aproveita que vai comprar mais componentes e pega uns resistores (2k, 3k3, 4k7, 10k) pra fazer o pull-up.
@Guima Funcionou com o resistor de 2k. :)

Obrigado!
 

Guima

Member
Afiliado
15/11/20
Mensagens
11
Localização
France
@Guima Funcionou com o resistor de 2k. :)

Obrigado!
Boa!!!! Depois quando eu tiver um tempo eu posto aqui o esquema!!

Aproveitando o ensejo, alguém por ai que manja um pouco de programação para fazer uma parceria?

Existe uma melhoria que eu gostaria de implementar na logica do BrewUNO. Eu ate mandei um email to Bruno e abri um issue no site do GitHUB mas acho que ele não se empolgou muito com a ideia.
Com a logica atual pra quem usa SSR com "zero crossing" que são 90% das pessoas, a precisão do PMW não é muito boa. Ou seja, se o PMW esta em 70%, a potencia da resistencia nao esta ncessesariamente em 70%. (Eu fiz um post um tempo atras explicando minha teria disso). Mas basicamente pois a frequência do PWM é muito alta (1kHZ). A ideia é mudar essa frequência no BrewUNO para algo em torno de 1Hz ou menos. Desse jeito o controle sera muito mais preciso.
Eu tentei fazer algumas modificações no código mas não deu muito certo, precisaria alguém que manja mais de programação (principalmente de logica orientada a objetos).

Se alguém se empolgar me manda uma mensagem e agente faz essa parceria. Depois disponibilizamos aqui os resultados.

Abraços,
 

fabiano.bovo

Member
Afiliado
11/1/21
Mensagens
6
Localização
São Paulo
Caros, atualizei meu painel elétrico. Praticamente está finalizado, só falta cortar a tampa para colocar o LCD e os botões mas não é uma exigência.

 
Topo