Курильщик древесного угля с контролем температуры
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
| ||||
|
Об этом проекте
Предыстория
Самые серьезные курильщики барбекю знают, что лучший вкус - это использование древесного угля для разогрева курильщиков. Пропановые и электрические курильщики лучше контролируют температуру, но теряют привкус древесного угля. В качестве источника тепла древесный уголь может причинить боль. Вам нужно постоянно следить за температурой, регулировать вентиляционные отверстия, чтобы попытаться получить нужную температуру, и нужно несколько раз поиграть с ней, чтобы добиться нужной температуры. Затем вы должны продолжать делать это каждые полчаса, поскольку уровень древесного угля у курильщика меняется. Разве не было бы здорово просто расслабиться на диване, насладиться любимым холодным напитком и спортивным мероприятием по телевизору, позволяя курильщику делать свое дело?
Проект
Создайте контроллер, который отслеживает температуру в курильщике и регулирует поток воздуха к углю для поддержания правильной температуры. Кроме того, предоставьте возможность удаленно контролировать температуру зондов для копчения и мяса. Это основано на скором выпуске Arduino MKR1000 со встроенным Wi-Fi и поддержкой зарядки LiPo батареи.
Оборудование
Температура дыма контролируется термистором 100K NTC в делителе напряжения, подключенном к одному из аналоговых входов MKR. Этот термистор был выбран, поскольку он используется для горячих концов Prusa RepRab в 3D-принтерах, поэтому они широко доступны и недороги. Его можно купить уже припаянным к высокотемпературному проводу с силиконовой изоляцией, чтобы получился идеальный датчик температуры. Термистор вставляется в длинную тонкую (1/4 дюйма или меньше) трубку из нержавеющей стали для физической защиты, причем один конец обжимается, чтобы закрыть ее, а провода закрепляются на другом конце с помощью термоусадки.
В делителе напряжения в качестве другой половины делителя напряжения используется резистор 10 кОм. Это значение было выбрано, поскольку оно близко к сопротивлению термистора NTC 100 кОм при типичных температурах курильщика (225 F). Это дает хороший диапазон для измерения температуры, обеспечивая показания от 50 до 300 F с разумной степенью детализации.
A0 используется для контроля температуры. Он использует более короткий зонд, который помещается на решетку внутри коптильни. Другие аналоговые контакты можно использовать для создания дополнительных термисторных зондов и делителей напряжения, которые можно вставить в копченное мясо, чтобы контролировать внутреннюю температуру мяса, чтобы знать, когда оно готово.
С другой стороны, к вентиляционному отверстию коптильни прикреплен небольшой вентилятор. Небольшая тарелка для собачьего корма из нержавеющей стали прикреплена к вентиляционному отверстию на коптильне, а воздуходувка прикреплена к отверстию в дне тарелки. Он выполняет две функции:во-первых, полностью закрывает вентиляционное отверстие, а во-вторых, обеспечивает некоторую тепловую изоляцию между корпусом курильщика и нагнетателем. Воздуходувка управляется с помощью N-канального полевого МОП-транзистора. Он мог быть подключен напрямую, но для простоты конструкции использовалась модель MOSFET. Затвор на полевом МОП-транзисторе подключен к цифровому выводу Arduino
Сборка
Для первой реализации все делается на макетной плате для простоты. Термисторный мост (ы) легко подключить, резистор 10 кОм от Vcc (3,3 В для MKR) к одной стороне термистора, а другая сторона идет на землю. Подключите перемычку между центром моста и аналоговым контактом MKR. Отрежьте кусок трубки для датчика, обожмите один конец в тисках, чтобы запечатать его. Затем плоскогубцами загибают углы гофрированной трубки, чтобы сделать острие острие. вставьте термистор в трубку до конца. Накиньте кусок термоусадочной пленки на другой конец и провода. Примените тепло, чтобы сжать его и закрепить провода.
Сторона нагнетателя почти такая же простая. Прикрепите провода к воздуходувке к выходной клеммной колодке на модуле MOSFET, соблюдая полярность. Подсоедините аккумуляторную батарею LiPo и провода от вилки JST к клеммной колодке питания на модуле MOSFET, снова соблюдая полярность. Вставьте штекер JST в гнездо JST для зарядного устройства MKR. Подключите три перемычки для Vcc, заземления и управляющего провода от контактов на плате MOSFET к MKR. Аккумулятор емкостью 10 000 мАч был использован, чтобы обеспечить продолжительное время автономной работы с воздуходувкой.
На макетной плате была добавлена пара элементов, которых нет на схеме. Есть переменный резистор 10 кОм, который можно использовать для генерации напряжения для проверки скетча путем переключения одной из перемычек с термистора на ползунок на переменном резисторе (концы резистора подключены к Vcc и заземлению). Также к выходному контакту 0 подключен светодиод с резистором, ограничивающим ток 330 Ом, который указывает, когда эскиз включает и выключает вентилятор.
Программное обеспечение
Здесь задействованы две части программного обеспечения. Один - это эскиз для управления Arduino, а другой - универсальное приложение для Windows, поэтому за курильщиком можно удаленно следить на любом устройстве с Windows 10.
Эскиз в значительной степени основан на эскизе сервера Wi-Fi из книги Саймона Монкса «Программирование следующих шагов Arduino:дальнейшее развитие с помощью эскизов» (http://www.amazon.com/Programming-Arduino-Next-Steps-Sketches/dp / 0071830251 / ref =sr_1_6? Ie =UTF8 &qid =1459448622 &sr =8-6).
По сути, он создает простой веб-сервер, который обслуживает одну страницу, отображающую измеренные температуры, и позволяет установить целевую температуру для курильщика. Инициализация состоит из настройки адаптера Wi-Fi и назначения фиксированного IP-адреса, чтобы знать, к чему подключаться, когда он не подключен к компьютеру, чтобы увидеть назначенный DHCP-адресом. Контакт 0 настроен на выход. В цикле он проверяет, пытается ли подключиться клиент, и, если да, то обслуживает веб-страницу. Если есть запрос, он также проверяет, содержит ли он параметр в URL-адресе для установки целевой температуры. Затем он проверяет температуру курильщика и включает вентилятор, если она ниже заданной температуры, и выключает, если она выше.
Измерение температуры с помощью термистора в делителе напряжения относительно просто. Сначала по показаниям аналогового входа мы можем определить падение напряжения на постоянном резисторе (показание, если постоянный резистор подключен к земле, Vcc - показание, если он подключен к Vcc) Затем мы используем закон Ома (V =IR) для вычисления тока (I) через резистор (I =V / R). Поскольку тот же ток течет через термистор, мы снова используем закон Ома для вычисления сопротивления термистора. R =V / I, где V - это падение напряжения на термисторе (показание аналогового входа или Vcc - показание в зависимости от того, на какой стороне делителя он находится), а I - это ток, который мы только что вычислили. Используя R, мы можем подключить его к уравнению бета-версии термистора:
1 / T =1 / T0 + 1 / Beta * ln (R / R0)
Где R0 - сопротивление термистора при T0
(Обратите внимание, что все температуры указаны в градусах Кельвина, поэтому обязательно примите это во внимание)
Обслуживание простой веб-страницы HTML в основном включает отправку блоков заголовков html и кодов форматирования html вокруг измеренных температур. Он также включает в себя ввод для целевой температуры и кнопку, чтобы включить ее в запрос обратно на сервер.
Универсальное приложение для Windows
Это блюдо, которое позволяет вам сесть и расслабиться, зная, что ваш курильщик сбивает лучшую копченую говяжью грудинку к западу от Пекоса (или любой другой реки по вашему выбору). Он периодически загружает веб-страницу от курильщика, анализирует температуры и отображает их. Он также позволяет установить целевую температуру для курильщика.
Код для скетча и универсального приложения доступен в репозитории GitHub, указанном ниже.
Код
- Эскиз контроллера Smoker
Эскиз контроллера Smoker Arduino
// sketch_12_04_server_wifi # include#include char ssid [] ="BeeBar2"; // SSID вашей сети (имя) char pass [] ="9254582716"; // ваш сетевой пароль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) {}; // Леонардо это нужно для (int i =0; i "); sendAnalogReadings (); client.println (" \ n