Кран, ключ за топла вода - 3 бр., софтуер, Freelancer Chronicles
Добре, продължавам да правя превключвател без топла вода. Устройството за потребителите на Lvovteploenergo е много необходимо, тъй като изключването на подаването на студена вода, която минава през горещи тръби, е много важно.
Сега всъщност има всички компоненти, скобата за температурния датчик вече е монтирана, сглобявам оформлението.
- Arduino "Uno" - за управление на всички неща, предимството е наличието на таймер за наблюдение.
- индикатор 1602 - за извеждане на данни.
- Модул с две релета - за включване/изключване на серво крана
- Сензор на 18b20 - отчитане на температурата на околната среда.
- Клавиатура - всъщност резистивен разделител с ключове - за управление
Така изглежда, часовникът не е бил нужен, показано е на снимката за красота.
Ние запояваме всичко с MGTF, въпреки че по принцип всичко може да бъде измислено на сандвич платка. Всъщност ще сложа всичко в кутията на готовото устройство, така че реших да запоя всичко наведнъж.След свързването коригирах няколко неточности. Забравих да включа захранването на модулите, това са още два проводника и изключих релето от 13-ия изход, превключих на втория. В противен случай започва да щрака, когато е включен.
В RTC модула отзад е поставена батерия за енергонезависимо съхранение на данни.
Програмиране, такива устройства, обикновено правя итеративно. Тоест добавяне на възможности и тяхното умножаване. Първо проверих как работи клавиатурата.
Най-простата скица, която показва напрежението в цифрова форма.
vo ,i_keyb); lcd.setCursor(0,1); LCD печат (buff); >
Този код просто показва десетичното представяне на входното напрежение. Клавиатурата е просто резистивен разделител. Свързване с едно натискане на бутонрезистор и изходът се изтегля до захранващото напрежение.
За нормалната работа на клавиатурата обаче е много желателно да зададете прекъсване на нейното събитие. За да направите това, можете да усложните веригата, да направите прекъсвач на импулс на 555-ия IC. Току-що свалих изходното напрежение на клавиатурата до нула с помощта на резистор и промених полярността на захранването на клавиатурата. което няма значение. В резултат на това прекъсването се улавя на 2-ри изход на Arduino, без никакви "допълнителни" подробности.
Всъщност се оказа такава таблица за съответствие за клавиатурата: освен това тя не зависи от захранващото напрежение на Arduino.
- Всичко е пуснато - 386
- SW1 (вляво) - 1023
- SW2 (нагоре) - 890
- SW3 (надолу) - 748
- SW4 (вдясно) - 635
- SW4 (вход) - 508
В някои позиции стойностите се променят, това е следствие от точността на Arduino ADC UNO, ограничена до 10 бита. Това е напълно достатъчно за работа с клавиатурата. Въпреки това, за да се изключи влиянието на този фактор, струва си да се направи интервал за сравнение, избрах го на 20 единици от „средната позиция“. Променям скицата, така че да показва натиснатия бутон. Създавам функция за показване на номера на бутона и показване на неговия резултат.
int key_pressed() < int i_keyb = analogRead(A1); int i_numkey[5] = ; inkeypressed=-1; // нищо за (int i=0; i =i_numkey[i]-20 && i_keyb температура на включване 10С…80С. Точност 1 градус. 2/ Температурен интервал -> диапазон от температури, при които състоянието на крана няма да се промени 0,1…9,9С 3/ Време на превключване Продължителност на импулса за включване/изключване на крана 1…10сек
Когато елемент от менюто се показва в горния ред, в долния ред се чете индикатор, който се променя на + -1 при натискане на бутоните нагоре / надолу. Записът се извършва при промяна на елемент от менюто илиизход от него. Менюто се затваря автоматично след около 10 секунди със запис.
Всъщност цялото това нещо е внедрено, ето няколко екранни снимки на изхода на контролния блок.
Като начало, окончателната, добре, почти, версия на оформлението. Часовник за реално време тук не е необходим, оказа се. Данните се съхраняват в Arduino в енергонезависима памет. А часовникът беше просто безполезен.
Плюс на първа позиция - кранът е включен. Следва режимът, има автоматичен - тоест контрол на температурата, постоянно включен или постоянно изключен режим. Първият ред в края показва температурата на включване и диапазона. Кранът се отваря, когато е изключен, температурата се повишава и температурата е по-голяма от сбора на тези две стойности. Съответно, точно обратното, кранът се изключва.Вторият ред показва текущата температура (0.06C точност на сензора) и “***”, ако кранът е захранен.
Температурата на задействане се конфигурира в менютоДиапазонът също еВреме на захранване от кранаИма и броячи на изминатия.Които могат да бъдат прегледани или изчистениТака програмата за крана е готова. Сега трябва да направим корпус, да измерим работния ток на крана, да изберем захранване на 12V и да проверим всичко като монтаж.UPD1. Добавен таймер за наблюдение, тъй като тази платка Arduino UNO го поддържа, коригирани грешки. Актуализирани скриптове - avalve_01-003.
UPD2. Поправени грешки, добавено запазване на състоянието при изключване. Актуализирани скриптове - avalve_01-004
UPD3. Въведена е част, която проверява валидността на показанията на сензора и едва след това ги предава на устройството. Актуализирани скриптове - avalve_01_005
UPD4. Видео на оформлението на първата версия на автокрана. Сега има по-малко грешки. Но има и други.
UPD6 - АктуализиранСофтуер, коригирани грешки при показване на знаци. Открих грешка в неограничаването на взетите показания. Сега, така че сензорът понякога да не се раздава за глупости (смущения в дълга линия), той няма да бъде приет. Можете да изтеглите - тук avalve_01-006