Дигиспарк и АЦП
- Войдите на сайт для отправки комментариев
Собираю термостат на дигиспарке и двух терморезисторах. Столкнулся с проблемой - не работает АЦП, всегда выдает максимальное значение (или около него). Терморезистор (пока один) подключил по следующей схеме
Мультиметр показывает на этом пине напряжение 2,6В, при нагреве датчика напряжение растет. Но реле не включается, хоть грей датчик паяльником.
Т.к. с отладкой на дигиспарке бяда, соорудил пробный скетч
#define LED_PIN 1 // пин сигнального светодиода на плате дигиспарка void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, LOW); byte x = analogRead(1) / 100; for (byte i = 0; i <= x; i++) { digitalWrite(LED_PIN, HIGH); delay(100); digitalWrite(LED_PIN, LOW); delay(250); } delay(1000); }
Суть в том, что светодиод будет мигать определенное количество раз в зависимости от считываемых данных. Т.е. считалось 0 - мигнул один раз, считалось 560 - мигнул шесть раз и т.д. Так вот он всегда мигает по одиннадцать раз, т.е. АЦП всегда выдает больше тысячи, максимальное значение или близко к нему.
О том, что номера аналоговых входов отличаются от номеров пинов, я знаю, пин Р2 - это аналоговый вход 1. Но может быть я чего-то другого не учитываю? Может кто в курсе?
Моя биб-ка ддля TM1637 компилируетя для Tiny85, я ее какрас для отладки там использую. Возьми на github-е, очень помогает, выведешь сразу в числах то, то он с АЦП читает. И, памойму, у Тинек опорное какрас 2.56В
И, памойму, у Тинек опорное какрас 2.56В
Гм, тогда при охлаждении датчика (мороженным яблоком )) таки должно наблюдаться уменьшение числа миганий. Сейчас замерил - на входе напряжение упало до 1В, но как мигало одиннадцать раз, так и мигает ((
За идею с отладкой спасибо ))
Прикрути, для начала, переменное сопротивление вместо термистора. Чтоб напряжение от 0 до Vcc менять можно было.
Прикрутил. Получается странная картина. Напряжение 1.1В - мигает пять раз. Начинаю крутить потенциометр - никакой реакции, хоть до нуля напряжение опускаю - те же пять раз. Выключаю, выставляю другое положение на потенциометре, включаю - мигает два раза и опять не реагирует на крутилку. Такое впечатление, что АЦП срабатывает только один раз и потом раз за разом выдает это значение вне зависимости от напряжения на входе. Что за на?... ))
Твою ж дивизию - заработало. Ну чудеса, блин )))
Кстати, опорное напряжение по умолчанию таки VCC
Все сделал и настроил. Проблема была, как водится, в собственной косорукости. Основной скетч не работал по причине, которую я постыжусь озвучивать, а тестовый, который я здесь привел, по причине периодического коротыша между пинами - пока не отмыл спиртом канифоль, не обнаружил.
Правда, оказалось, что на разных аналоговых входах при равных условиях АЦП выдает разные данные, но эту проблему решил с помощью термопары и тупого подбора с последующими перепрошивками.
Но выявилась другая проблема - термостат предназначается для работы внутри типа ЛБП, собранного из китайских модулей, и внутри которого, как оказалось, довольно шумно. Один из входов даже отказался работать, когда я датчик с него помещал на радиатор модуля. Этот же вход используется для USB, и при включении дигиспарк ждет по этому входу общения с компом. А получает, видимо, букет непонятных импульсов, в результате чего чумеет и зависает. Датчик с другого входа такой проблемы не делает, но сдается мне, что импульсные помехи по нему все равно имеют место быть. Осцилографа же у меня нету.
Собственно, термостат я стал делать после того, как у меня вылетел покупной китайский термостат - при включении прошило МК, и, кажется, теперь я понимаю почему. Отсюда вопрос - как можно защититься от этих помех? Не хотелось бы опять возиться заменой.