Сигнализатор температуры
- Войдите на сайт для отправки комментариев
Всем привет!
Примерно год назад купил китайский Ардуино Нано, помигал встроенным светодиодом, попищал пьезодинамиком и забросил до лучших времен на полку. Наступила зима, и пришло время снова его запустить, за вечер набросал скетч, собрав по кусочкам с разных статей. Первые запуски, питаясь от юсб входа, прошли успешно!
Проработав две ночи, на третье включение началась неполадки с показаниями датчика. Пробовал разные вариаенты питания юсб, читал фрумы, узнал что нужен другой более стабильный источник.
Пока что вопросов нету, просто такий мини расказ о первых шагах )
Скетч
int temp; // освобождаем память для переменной "temp" float grad; // освобождаем память для переменной "grad" void setup() // процедура setup { pinMode(4, OUTPUT); pinMode(13, OUTPUT); pinMode(A3, INPUT); // сенсор LM35 подключим к аналоговому входу A0 Serial.begin(9600); // подключаем монитор порта } void loop() // процедура loop { temp = analogRead(A3); // переменная находится в интервале 0 - 1023 grad = ( temp/1023.0 )*5.0*1000/10; // формулу можно изменять Serial.println(grad); // выводим значение датчика на монитор delay(1000); // ставим небольшую задержку if (grad > 48) noTone(4); else tone(4, 2000); // pinMode(13, HIGH); }
Схема тестовая, поэтому строки оставг\шиеся от пробных включений не удалял, чтобы в случае чего быстро подправить.
Да, датчик и пьезодинамик подключены без сопротивлений, только потом узнал что они важны, в следующей версии добавлю
К такому сигнализатору лучше сразу добавить еще одно условие и реализовать гистерезис.
Проработав две ночи, на третье включение началась неполадки с показаниями датчика. Пробовал разные вариаенты питания юсб, читал фрумы, узнал что нужен другой более стабильный источник.
К такому сигнализатору лучше сразу добавить еще одно условие и реализовать гистерезис.
После прочтения заглянул в вики, но еще больше запутался, оставил до лучших времен это слово ) но все равно спасибо за вариант!
Ну раз нет вопросов, то оставлю тут. В работе не проверял
/**/
const byte BeepPin =/*пин*/4;
const byte LedPin =/*пин*/13;
const byte SensPin =/*пин*/A3;
const int MaxTemp = 48;
enum state_t {sLOW = 0, sHIGH} state;
void stand(state_t s) {
state = s;
switch (state) {
case sLOW :
noTone(BeepPin);
pinMode(LedPin, HIGH);
break;
case sHIGH :
tone(BeepPin, 2000);
pinMode(LedPin, HIGH);
break;
}
}
unsigned long past = 0;
//-----------------------------
void setup() {
Serial.begin(9600); // подключаем монитор порта
pinMode(BeepPin, OUTPUT);
pinMode(LedPin, OUTPUT);
pinMode(SensPin , INPUT); // сенсор LM35 подключим к аналоговому входу A0
}
void loop() {
if (millis() - past >= 1000) {
past = millis();
float grad = ( analogRead(SensPin ) / 1023.0 ) * 5.0 * 1000 / 10; // формулу можно изменять
Serial.println(grad); // выводим значение датчика на монитор
switch (state) {
case sLOW :
if (grad >= MaxTemp)stand( sHIGH);
break;
case sHIGH :
if (grad < MaxTemp - 1)stand(sLOW);
break;
}
}
}
/**/
Спасибо, как только налажу питание и помехи, попробую изучить ваш код!
По дашику для измерения отрицательных температур его в минус тянуть нужно, от источника питания юсб или какого либо другого стабилизированного однополярного источника измерения температуры +2...+150. Как вы датчик подключаете для измерения отрицательных температур?
Читал про это, там типовая схема приводится но разбиратся не стал. В моем случае температуры плюсовые, важно получит сигнал когда труба горячая, но уже ниже чем рабочая температура системы. В будущем попробую и минус измерить, но уже с другой платой, но это на пятилетку задача)
К такому сигнализатору лучше сразу добавить еще одно условие и реализовать гистерезис.
После прочтения заглянул в вики, но еще больше запутался, оставил до лучших времен это слово ) но все равно спасибо за вариант!
https://helpiks.org/8-11314.html - тут всё разрисовано.
К такому сигнализатору лучше сразу добавить еще одно условие и реализовать гистерезис.
После прочтения заглянул в вики, но еще больше запутался, оставил до лучших времен это слово ) но все равно спасибо за вариант!
Если простым языком, то включить когда опустилась до 25°С, а выключить когда достигла 28°С.(условно).
Спасибо, за гистерезис понял!
--но в моем случае это не нужно, важно зафиксировать именно остывание ,а дальше я ручками подсыплю уголь )
Спасибо, за гистерезис понял!
--но в моем случае это не нужно, важно зафиксировать именно остывание ,а дальше я ручками подсыплю уголь )
интересно, а я уголь подсыпал когда старая порция полностью разгорелась