Ви не увійшли.
Сторінки 1
Склав таблицю, за допомогою якої можна визначити повітрообмін в будинку за рівнем CO2 (або навпаки)
Либо кривые руки, либо откровенный брак китайцев
Проверил на распаянной нано с этого магазина - работает, не перегружается! Но ещё погоняю сутки на счет зависаний. У них есть отличия: в работающей старый бутлоадер (на фото слева), в глючной новый бутлоадер и при прошивке сигнатура чипа atmega328pb (со старым не прошивал), но может это и я накосячил с гребенками. Ещё отличаются маркировками на чипах и разводкой возле USB порта. От блока питания похоже не зависит, глючная через час зависла даже на новом БП от Sunny 9V 2A через VIN
Предистория: купил я значит домой монитор качества воздуха с датчиками температуры, влажности, углекислого газа, формальдегидов и летучих органических веществ, есть возможность повесить на стену, звуковая сигнализация, красота... должна была быть, а по факту оказалось:
- температура врет на 6 градусов! Там стоит простейший термистор на плате (даже не вынесен)
- влажность врет процентов на 15! Тоже стоит самый дешевый датчик
- вместо всех остальных дорогих датчиков поставили ОДИН самый дешевый VOC сенсор за 2 доллара
- соответственно показания CO2 и CH2O выводятся от фонаря когда срабатывает VOC, даже утром в спальне CO2 всегда показывает 450ppm
- звуковая сигнализация срабатывает после 800ppm, а поскольку от показаний VOC, то пищит когда жаришь картошку или жена зайдет с запахом духов
- разъем для зарядки СЗАДИ, на стену повесить можно, но придется снимать каждые 4 часа на подзарядку...
- достоинство только одно: можно использовать как ночник (правда дорогой)
Потому решил не испытывать судьбу с покупкой нового девайса, а попробовать собрать самому (в сети примеров хватает) и могу констатировать - получится в два раза дешевле и будет работать как нужно именно вам. У меня девайс висит на стене в гостинной (по центру дома) и кроме основной функции - помощь в точной настройке зимнего микропроветривания и дальнейшего контроля, является ещё и простым ночником (потому подсветка дисплея всегда включена).
Что потребуется:
- коробка (мне идеально подошла от старого коммутатора DES-1005A с массой готовых отверстий)
- ардуино нано
- датчик CO2 MH-Z19 (черный в GND, красный в 5V, зеленый RX в D2, синий TX в D3)
- датчик температуры и влажности типа SHTx/HTUx (SDA в A4, SCL в A5)
- дисплей LCD 1602 с I2C модулем (SDA в A4, SCL в A5)
- модуль с динамиком пищалкой (I/O в D5)
- кнопку для ручной калибровки MH-Z19 я выпаял из старой мышки (C в GND, NC в D10)
Что НЕ потребуется:
- всякие датчики формальдегидов, VOC, PM частиц и так далее (если вы будете поддерживать уровень CO2, то остальные гадости просто не успеют накапливаться, а девайс предназначен именно для жилых помещений)
Функции скетча:
- ручная (точная) калибровка на улице с обратным отсчетом (20 минут) и отключением автоматической (если через 20 минут на улице не 400-450ppm, значит обязательно откалибровать)
- вывод температуры, влажности и CO2
- вывод отдельно CO2 большими цифрами (чередуется с предыдущим)
- мигание подсветкой дисплея при превышении оптимальных значений
- звуковой сигнал при превышении допустимых значений
- вывод причины срабатывания (какие именно показания уплыли) с приоритетом: температура, влажность, CO2
Зимой сложно поддерживать CO2 и при этом не уплыть по влажности, попробуйте свои настройки:
TEMPERATURE_BLINK_LOW_LEVEL 16 // оптимальная для кладовой
TEMPERATURE_BLINK_HIGH_LEVEL 26 // оптимальная для ванной
TEMPERATURE_ALARM_LOW_LEVEL 12 // допустимая для кладовой
TEMPERATURE_ALARM_HIGH_LEVEL 32 // допустимая для гостиной с камином
HUMIDITY_BLINK_LOW_LEVEL 30 // допустимая влажность(%) зимой
HUMIDITY_BLINK_HIGH_LEVEL 70 // допустимая в сезон дождей
HUMIDITY_ALARM_LOW_LEVEL 20 // бактерии, вирусы
HUMIDITY_ALARM_HIGH_LEVEL 80 // конденсат, плесень
CO2_BLINK_HIGH_LEVEL 1500 // допустимый CO2(ppm) зимой для экономии
CO2_ALARM_HIGH_LEVEL 3000 // допустимый ночью по китайским нормам
Схема
Общий вид
Вывод с крупными цифрами
Я давно написал модель DCCduino Nano CH340, если Васятко не читает мои посты, то хотя бы мог посоветовать проверенную ардуину, а не язвить, спасибо за помощь.
Что за ардуинки такие
Где вы такой умный были 20 дней назад, когда я в первом посте спрашивал? Говорите какую конкретно взять ардуину и БП, а то я как-то купил готовый девайс за 1900грн, а эти козлы под видом дорогого датчика CO2 впаривают VOC за 2 копейки и все через ж... сделанное. Потому пришлось клепать самому, зато работает именно так, как надо мне, а не китайцам Позже закину в Проекты, может кому-то тоже пригодится
Я нашел в каком-то сломаном зарядном диод SS14 (вроде тоже Шоттки, но раза в три больше по размеру) поставил пока его - понаблюдаю. Тут все сложно для неразбирающегося в этом человека, для двух LM7805 мне надо найти место в коробочке, что-то передвинуть подальше от датчика температуры, непонимаю какие конденсаторы нужны или нет, но если это верное направление, то буду реализовывать
По даташиту у atmega328 Maximum operating voltage 6.0 V
По ATmega328PB_Datasheet.pdf нашел Operating Voltage: 1.8 - 5.5V, а может ещё напряжение скачет больше 6-ти, просто код не успевает это отловить или показать
теорию "фильтрующего" диода легко провенрить - берете диод, припаиваете его к пину 5V и подаете через него питание от БП
Подал на плату питание через диод, а на датчики и дисплей напрямую - плата не перегружается, дисплей не мерцает при падении напряжения, все счастливы или это костыль? И какой диод можно взять вместо того, только крупнее, а то я чуть глаза не выломал пока припаял к проводам...
скорее всего электролиты у ваших БП давно уже
Конечно есть много старых БП, но часть зарядок для телефонов довольно новые, я же когда в них засомневался, то сразу купил новый БП - цитирую "Блок питания для Arduino Uno, Mega, Leonardo и другой электроники на 9В 1А" и подключал его через VIN - все равно зависало. Какой есть проверенный БП с форм-фактором, что держится в розетке? Пробовать Sunny? На 5 вольт в 5V или 7.5 или 9 через VIN?
1. LM7805 (и два по 100мкф) сразу помог в простой схеме с дисплеем TM1637, перегрузок нет, максимальное 5.19V, работает от БП 9V 1A
2. Аналогично в сложной схеме с датчиком CO2 и LCD1602 помогает от частых перегрузок, но было зависание и один раз артефакты в виде полос на LCD, я тогда не успел добавить в код вывод напряжения, сейчас максимальное пока 5.34V, работает от БП 12V 1A
Получается какие-то скачки с датчиком CO2 все равно пролетают через стабилизатор, значит нужно пробовать на него отдельный стабилизатор или увеличить емкость конденсаторов? Неужели нету какого-то готового БП для ардуины, что убирает эти скачки и не обрезает напряжение как через USB?
Тут ещё получается LCD1602 и сам датчик CO2 очень чувствительны к питанию, если на первом прыгает контрастность, то на втором показания летают +-300ppm, секунд 10 вверх, потом столько же вниз (а от павербанка через USB стабильны)
Запитать от БП через разъем usb пробовали?
Конечно перепробовал все зарядки телефонные и есть блок питания с USB выходом и пробовал от ноута и павербанка - через USB работает норм
Точность, конечно, никакая, но может покажет, если явно что-то не так с напряжением:
Показало моментально! Через USB максимум 5.0V, через 5V максиум 5.6V, получается этот диод спасал от скачков и потому работало? И все мои 6 штук зарядок и 6 штук БП и павербанк гавно? Буду этим кодом смотреть почему после стабилизатора тоже глючило и даже после внутреннего AMS1117 зависало (когда работал от 9V БП)
Попробовал через БП на 9V со стабилизатором LM7805 (и конденсаторами по 100uf) - таже печаль, глюк вообще не зависит от вида питания или кабеля, при питании в USB все работает отлично, при питании в 5V постоянно перегружается или виснет, вот третью схему собрал с простым дисплеем
Код отображает секунды своей работы
#include <TM1637Display.h>
TM1637Display tm1637(4, 5);
void setup() {
tm1637.setBrightness(7);
tm1637.showNumberDec(0, false);
}
void loop() {
delay(1000);
tm1637.showNumberDec(millis() / 1000, false);
}
Записал видео (копия1, копия2), там первые 25 секунд нормальной работы через USB, затем 35 секунд глюков через 5V (между ними я просто рестартанул павербанк с другим кабелем), бывало 2 раза сразу при включении на дисплее крякозяблы появлялись (на видео не попали)
Это же ненормально? Три нанки так глюканули от какой-то зарядки? Или я их так паяльником?
Ну если я уже отрезал miniusb на проводе, то как его втыкнуть в нанку? Та и вроде все работает нормально через USB (в отличие от 5V). А может быть такое, что в процессе перебора разных зарядок от мобилок, одна с повышенным напряжением нашептала на все мои нанки? Я потом нашел одну, которая выдает +5.6V (при 5.5 максимальных)
Отключил датчик CO2, подключил пищалку - с ней тоже глючит, вообще какая-то хрень: подключил оба провода (USB и DC), на плате ничего не трогаю, в один и тот-же БП втыкаю USB кабель - работает норм, вместо него втыкаю DC - сразу глючит... Попробую отрезать miniUSB на кабеле и подключить в 5V минуя DC разъем (может экранировка какая-то в кабеле играет роль)
Upd: попробовал - кабель и разъем с проводами роли не играют, важно подключено в USB или 5V и какая параллельно нагрузка, причем при перегрузке напряжение остается прежним (или мультиметр не ловит скачок не знаю), перед перегрузкой иногда бывает зависание скетча, причем может довольно длительно подвиснуть, возможно зависает навсегда (без перегрузки) по этой же причине... Может какая-то помеха проходит по 5V, а по USB её убирает тот диод?
Сейчас вот опять воспроизвел на другом образце (от БП в 5V):
1. пару дней проверял без нагрузки и с другими датчками - не зависло, но с нагрузкой светодиод иногда тоже плясал
2. с утра припаял только питание датчика CO2 - светодиод начал иногда тоже плясать (но напряжение при этом не менялось), мог даже минуту светится или не светится, один раз почему-то светодиод RX пару минут горел потом потух, бывало пол часа все правильно моргает, до обеда не зависло
3. припаял RXTX в D2D3, все тоже самое, а через пару часов смотрю висит, при этом горят POW, L, RX и больше уже ничего не моргает, напряжение в таком состоянии 4.94v-4.96v, на пине D2 0.53v, на D3 3.15v (если это играет какую-то роль)
Рассмотрите вариант
Спасибо, привез стабилизаторов 3 шт (буду пробовать)
Провода на ардуинке припаяны или
Все паял сам (гребенки первый раз), может где-то и накосячил, но воспроизводится на всех трех нанках и перепаивал провода не один раз. Напряжение замерил:
- при работе от USB (павербанк или БП без разницы): при старте 4.34v, через секунд 5 (как начинает моргать датчик CO2) прыгает 4.34v-4.61v
- при работе от 5V (павербанк): при старте 4.95v, потом прыгает 4.95v-5.05v
- при работе от 5V (БП): при старте 4.95v, потом прыгает 4.95v-4.99v
Дальше не замерял, возможно перед зависанием есть какой-то скачок или помеха...
Скорее всего у Вас хаотично перезагружается микроконтроллер от того и пляски светодиода
Скетч штатный Blink, похоже на перегрузки, но от павербанка их кажется нет вообще, только мертвое зависание (которое больше всего и беспокоит), перегрузки думаю можно будет вылечить сменой БП или стабилизаторами или попробую отключить контроль питания.
Вот в этой связке павербанка + USB гарантированно работает (и возможно даже от блока питания), если переключаюсь на питание через DC разъем, то через какое-то время зависает и это точно виснет не LCD, т.к. ни светодиод не мигает, ни пищалка не пищит (проверял разные варианты), ни watchdog не перезапускает скетч, не виснет внутри I2C (т.к. пробовал вместо штатной Wire либу WSWire)
Схему я не рисовал, может по фото будет видно: здесь подключены по питанию 5V только нано, датчик CO2 (RX->D2, TX->D3) и дисплей (SDA->A4, SDL->A5)
Вот когда все подключено с другим БП, не понимаю, в каких точках нужно измерять сопротивление провода БП?
Перепроверю этот момент точнее и потом отпишу, при питании в USB с датчиком CO2 не зависает, я сделал ещё тестовый экземпляр и постепенно добавляю обвязку и оставляю работать на день: без нагрузки не зависло, сегодня с утра подключены два мощных датчика (MQ-4 и MQ-7) и ещё тоже не зависло, но если питать в USB (все равно чем), то светодиод моргает ровно (секунду горит, секунду не горит), если питать в 5V от павербанка моргает тоже ровно, если питать от блока питания в 5V без датчиков моргает опять ровно, если подключить нагрузку - светодиод пляшет как хочет: может 5 секунд гореть, может мерцать по 5 раз за секунду, это значит либо перегрузка какая-то, либо delay(1000) сбивается...
падения напряжения на диоде (0.3-0.4В) какраз достаточно чтобы уберечь м/к от повышенного напряжения питания.
Получается при снижении напряжения МК перегружается, а при повышении может зависать? Конденсаторы от повышенного не спасут или что ещё можно припаять? Я думал купить ещё блок питания Sunny попробовать, но не знаю как лучше питать: на 5в или 7.5в или 9в в VIN и есть сомнения, что он будет лучше, чем мои от всяких старых роутеров и т.д.
Никакие мысли не приходят? Как минимум некачественное питание(пульсации) с выхода павербанка. Ставьте конденсаторы электролит+керамика.
Я читал, что LCD с датчиком CO2 мерцает у всех, контрастность дисплея зависит от напряжения, а оно как раз падает из-за того диода на USB с 5 до 4.7 вольт (это происходит где-то 2 раза в секунду, во время включения лампы датчика CO2 и потребления ним ~100мА). От того же павербанка при питании в +5V не мерцает, аналогично и с разными блоками питания: через USB мерцает, через +5V нет (но виснет через 0-24 часа), из десятка зарядок и блоков питания нашел один, который выдает 5.5 вольт, вот с ним не мерцает. Пробовал блок питания 9 вольт подавать на VIN - тоже потом виснет. Конденсаторы ставил 0.1мкФ и 470мкФ, есть и другие, но не знаю какие лучше поставить.
Лечится сбросом мк и перепрошивкой загрузчика
Спасибо, с помощью уцелевшей нанки восстановил слетевший загрузчик у двух других, а с ними кажется получилось точнее локализовать проблему зависаний, но решить нет, итак:
1. Питание - Power Bank Cord A10 Li-ion 10000 мАч
2. Nano на чипе ATmega328PB с фьюзами Low:0xFF High:0xDA Ext:0xFD Lock:0xCF
3. Нагрузка - разные комбинации датчиков и дисплеев (MH-Z19C, MQ-4, MQ-7, HTU-21, LCD1602_I2C, TM1637, MH-FMD) с общим потреблением до 300мА
4. Скетч - штатный Blink
5. Обвязка - паял проводами для макетных плат или от витой пары (могу сфоткать)
Если питание подавать в miniUSB - все замечательно работает сутками с нагрузкой! (кроме мерцания дисплея 1602)
Если тоже самое питание подавать на 5V - через пару часов с нагрузкой виснет (светодиод не blink'ает), без нагрузки вроде не виснет
Есть какие-то догадки?
DCCduino Nano CH340 с новым загрузчиком, на чипе написано Atmel
да и без этого должно адекватно работать
От ноута или повербанка работает норм, а от сети нет, я заливал такой код для пищалки и долго слушал (чтобы на светодиод не смотреть): по идее должен быть один длинный писк при старте и один короткий раз в минуту, а на деле оказалось может час работать правильно, а может и пять раз перегружаться и даже трели выдавать короткими писками (значит и таймер сбивается) или просто перестает пикать (пока вручную блок питания из сети не передернешь)
#define BUZZER_IO_PIN 5
void setup() {
pinMode(BUZZER_IO_PIN, OUTPUT);
digitalWrite(BUZZER_IO_PIN, LOW);
delay(1000);
digitalWrite(BUZZER_IO_PIN, HIGH);
}
void loop() {
static unsigned long timer = 0;
if (millis() - timer >= 60000) {
digitalWrite(BUZZER_IO_PIN, LOW);
delay(100);
digitalWrite(BUZZER_IO_PIN, HIGH);
timer = millis();
}
}
Я нашел этот delay в штатных примерах и объяснение
delay(1); // delay in between reads for stability
Кажется нашел причину, если вставить delay(1) в loop - это сильно улучшает ситуацию и стабилизирует ардуинку, нда...
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
static unsigned long timer = 0;
if (millis() - timer >= 1000) {
static bool blink = true;
digitalWrite(LED_BUILTIN, blink? HIGH : LOW);
blink = !blink;
timer = millis();
}
delay(1);
}
Нужно перенести строку
// создание объектов
SoftwareSerial port1(2, 3);
Китайская nano от батареи работает отлично, а от сети не дольше 3-х часов: или перегружается или намертво зависает скетч (и ватчдог не помогает), причем две платы через короткое время вообще умерли с одинаковой ошибкой avrdude: verification error, first mismatch at byte 0x0000 0x62 != 0x0c.
Пробовал разные блоки питания: обычные USB зарядки для телефона, от роутера D-link 5v 2A подключал к пину 5v, подключал 9v 1A к пину VIN, паял два конденсатора на 470мкф и 0.1мкф - не помогает
Нужна стабильная работа датчика MH-Z19 с дисплеем 1602-i2c от сети: пробовать другие конденсаторы? искать другой блок питания? взять оригинальную nano? прикрутить аппаратный ватчдог? перейти на Raspberry Pi Pico с оригинальным блоком питиния? что посоветуете новичку?
Сторінки 1