Kit Defumador a Carvão com Controle Preciso de Temperatura – Construa sua Obra-Prima de BBQ
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino MKR1000 | 1 |
| Soprador Brushless 5V | 1 |
| Módulo Driver MOSFET IRF520N | 1 |
| Termistores NTC 100K ohm | 1 |
| Protoboard (genérico) | 1 |
| Fios jumpers (genéricos) | 1 |
| Bateria LiPo 3.7V >= 700mAh | 1 |
Aplicativos e Serviços Online
- Arduino IDE - Para programação do microcontrolador
- Microsoft Visual Studio 2015 - Para desenvolvimento do app Windows Universal
Sobre o Projeto
A História
A maioria dos defumadores sérios sabe que o melhor sabor vem do uso de carvão para aquecer. Defumadores a gás propano e elétricos têm melhor controle de temperatura, mas perdem o sabor do carvão. Como fonte de calor, o carvão pode ser um incômodo. Você precisa monitorar constantemente a temperatura, ajustar as aberturas para tentar obter a temperatura certa, e brincar com isso algumas vezes para acertar. Então, tem que continuar fazendo isso a cada meia hora conforme o nível de carvão muda. Não seria ótimo apenas sentar no sofá, curtindo sua bebida gelada favorita e evento esportivo na TV enquanto o defumador faz seu trabalho?
O Projeto
Criar um controlador que monitora a temperatura no defumador e ajusta o fluxo de ar para o carvão para manter a temperatura correta. Também fornecer maneira de monitorar remotamente as temperaturas do defumador e das sondas de carne. Baseado no Arduino MKR1000 com Wi-Fi integrado e suporte para carregar bateria LiPo.
O Hardware
A temperatura no defumador é monitorada usando termistor NTC 100K em divisor de tensão conectado a uma entrada analógica do MKR. Este termistor foi escolhido pois é usado em hot ends de impressoras 3D Prusa RepRap, amplamente disponível e barato. Podem ser comprados já soldados a fio de silicone isolado para alta temperatura, ideal para sonda. O termistor é inserido em tubo fino de aço inoxidável (1/4 polegada ou menor) para proteção física, com uma extremidade fechada e fios fixados na outra com termoencolhível.
O divisor de tensão usa resistor de 10K como outra metade. Valor escolhido por ser próximo à resistência do termistor NTC 100K em temperaturas típicas de defumador (107°C / 225°F). Isso dá boa faixa de medição, com leituras de ~10°C a 150°C+ com granularidade razoável.
Pino A0 monitora temperatura do defumador com sonda curta colocada na grelha interna. Outros pinos analógicos podem criar mais sondas termistores e divisores de tensão para inserir na carne e monitorar temperatura interna.
Do outro lado, um pequeno soprador conecta à ventilação do defumador. Prato pequeno de aço inoxidável para ração de cachorro cobre a ventilação e o soprador conecta a furo no fundo. Serve duas funções: cobrir completamente a ventilação e isolar termicamente o corpo do defumador do soprador. O soprador é controlado usando MOSFET N-channel. Poderia ser ligado diretamente, mas para facilidade de construção usei módulo MOSFET. O gate do MOSFET conecta ao pino digital do Arduino.
A Construção
Na primeira implementação, tudo em protoboard para simplicidade. Pontes termistores fáceis de ligar: resistor 10K do Vcc (3.3V no MKR) a um lado do termistor, outro lado ao GND. Jumper entre centro da ponte e pino analógico no MKR. Corte tubo para sonda, feche uma extremidade em torno, dobre cantos para ponta mais afiada. Deslize termistor no tubo até o fim. Coloque termoencolhível na outra extremidade e fios. Aqueça para encolher e fixar fios.
Lado do soprador: fixe fios do soprador ao bloco terminal de saída do módulo MOSFET observando polaridade. Conecte bateria LiPo e fios de plugue JST ao bloco terminal de potência do módulo MOSFET, observando polaridade. Plugue JST no jack do carregador de bateria no MKR. Três jumpers para Vcc, GND e fio de controle dos pinos do módulo MOSFET ao MKR. Usei bateria 10.000 mAh para bastante autonomia com o soprador.
Na protoboard, adicionei itens não no esquemático: potenciômetro 10K variável para gerar tensões de teste (alternando jumper de termistor para cursor do potenciômetro; pontas do resistor em Vcc e GND). Também LED com resistor limitador 330 ohm no pino de saída 0 para indicar quando sketch liga/desliga ventilador.
O Software
Duas partes de software: sketch para controlar Arduino e app Universal Windows para monitoramento remoto em qualquer dispositivo Windows 10.
Sketch baseado em sketch de servidor WiFi do livro "Programming Arduino Next Steps: Going Further with Sketches" de Simon Monk.
Basicamente cria servidor Web simples servindo página com temperaturas medidas e permitindo definir temperatura alvo do defumador. Inicialização: configurar adaptador WiFi e atribuir IP fixo (para saber endereço quando não conectado a PC para ver IP DHCP). Pino 0 como saída. No loop: verifica se cliente tenta conectar, serve página web. Se houver requisição, verifica se inclui parâmetro na URL para definir temperatura alvo. Verifica temperatura do defumador e liga soprador se abaixo da alvo, desliga se acima.
Medição com termistor em divisor de tensão: da leitura analógica, determina queda de tensão no resistor fixo. Lei de Ohm (V=IR) para calcular corrente (I=V/R). Mesma corrente flui pelo termistor, usar Lei de Ohm novamente para calcular resistência do termistor (R=V/I). Usar R na equação Beta do termistor:
1/T = 1/T0 + 1/Beta * ln(R/R0)
Onde R0 é resistência do termistor a T0. (Todas temperaturas em Kelvin).
Servir página HTML simples: enviar blocos de cabeçalho HTML e códigos de formatação em torno das temperaturas medidas. Inclui input para temperatura alvo e botão para incluí-la em requisição de volta ao servidor.
O App Universal Windows
Permite sentar e relaxar sabendo que seu defumador produz o melhor brisket defumado a oeste do Pecos (ou rio de sua escolha). Carrega periodicamente página web do defumador, extrai temperaturas e exibe. Também permite definir temperatura alvo.
Código do sketch e app Universal disponíveis no repositório GitHub abaixo.
Código
Sketch Controlador do Defumador (Arduino)
// sketch_12_04_server_wifi
#include <SPI.h>
#include <WiFi101.h>
char ssid[] = "BeeBar2"; // seu SSID
char pass[] = "9254582716"; // sua senha
WiFiServer server(80);
WiFiClient client;
const int numPins = 10;
int pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int pinState[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
char line1[100];
char buffer[100];
IPAddress server_IP(192,168,123,90);
float targetTemperature = 225;
float smokerTemperature = 225;
float v0;
void setup() {
Serial.begin(9600);
while (!Serial) {};
for (int i = 0; i < numPins; i++) {
pinMode(pins[i], OUTPUT);
}
analogReadResolution(12); // ADC 12 bits
if (WiFi.begin(ssid, pass)) {
WiFi.config(server_IP);
printWifiStatus();
} else {
Serial.println("Could not connect to network");
}
server.begin();
}
void loop() {
client = server.available();
if (client) {
if (client.connected()) {
Serial.print("Request Received: ");
Serial.println(line1);
readHeader();
if (!pageNameIs("/")) {
Serial.print("Invalid Page Requested: ");
Serial.println(line1);
client.stop();
return;
}
readTargetTempParam();
client.println("HTTP/1.1 200 OK\nContent-Type: text/html\n");
sendBody();
delay(1);
client.stop();
} else {
Serial.println("No Client connected");
}
}
int reading = analogRead(0);
v0 = (float)reading / 1241.0;
smokerTemperature = ThermisterTemp(v0, 100000, 10000, 3950, 25);
digitalWrite(0, smokerTemperature < targetTemperature);
}
void sendBody() {
client.println("");
sendAnalogReadings();
client.println("\n");
}
void sendAnalogReadings() {
client.println("Temperatures
\n| Smoker "); client.print(" | "); client.print(smokerTemperature); client.println(" F |
| Probe "); client.print(i); client.print(" | "); client.print(T); client.println(" F |
Sketch e App Universal
Repositório GitHub: github.com/DuncanBarbee/SmokerController
Esquemáticos
O MKR1000 é representado por um Arduino Nano no Fritzing (ferramenta não tinha a peça). Arquivo: Smoker.fzz
Processo de manufatura
- Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
- Registrador de Temperatura e Umidade com Arduino, DHT11 e Ethernet Shield
- Construa um Homem de Ferro com Arduino: Componentes, Sensores e Guia Passo a Passo
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Construa um Braço Robótico 3D Impresso Funcional com Arduino – Guia Passo a Passo
- Controlador de Umidificador DIY com Arduino e Relé – Configuração Segura de Alta Tensão
- Portão de Triagem de Temperatura Sem Contato para Monitoramento Rápido e Preciso
- Jogo Pong Neon em Matriz NeoPixel com Arduino Nano
- Volante Joystick Arduino Personalizado para Jogos
- Construa um Receptor FM Potente com Arduino e Módulo TEA5767