Дигиспарк и АЦП

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Собираю термостат на дигиспарке и двух терморезисторах. Столкнулся с проблемой - не работает АЦП, всегда выдает максимальное значение (или около него). Терморезистор (пока один) подключил по следующей схеме

Мультиметр показывает на этом пине напряжение 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. Но может быть я чего-то другого не учитываю? Может кто в курсе?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Моя биб-ка ддля TM1637 компилируетя для Tiny85, я ее какрас для отладки там использую. Возьми на github-е, очень помогает, выведешь сразу в числах то, то он с АЦП читает.  И, памойму, у Тинек опорное какрас 2.56В

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

DetSimen пишет:

И, памойму, у Тинек опорное какрас 2.56В

Гм, тогда при охлаждении датчика (мороженным яблоком )) таки должно наблюдаться уменьшение числа миганий. Сейчас замерил - на входе напряжение упало до 1В, но как мигало одиннадцать раз, так и мигает ((

За идею с отладкой спасибо ))

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

 Прикрути, для начала, переменное сопротивление вместо термистора. Чтоб напряжение от 0 до Vcc менять можно было.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Прикрутил. Получается странная картина. Напряжение 1.1В - мигает пять раз. Начинаю крутить потенциометр - никакой реакции, хоть до нуля напряжение опускаю - те же пять раз. Выключаю, выставляю другое положение на потенциометре, включаю - мигает два раза и опять не реагирует на крутилку. Такое впечатление, что АЦП срабатывает только один раз и потом раз за разом выдает это значение вне зависимости от напряжения на входе. Что за на?... ))

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Твою ж дивизию - заработало. Ну чудеса, блин )))

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Кстати, опорное напряжение по умолчанию таки VCC

uint8_t analog_reference = DEFAULT;
// X 0 0 VCC used as Voltage Reference, disconnected from PB0 (AREF).
#define DEFAULT (0)

 

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Все сделал и настроил. Проблема была, как водится, в собственной косорукости. Основной скетч не работал по причине, которую я постыжусь озвучивать, а тестовый, который я здесь привел, по причине периодического коротыша между пинами - пока не отмыл спиртом канифоль, не обнаружил.

Правда, оказалось, что на разных аналоговых входах при равных условиях АЦП выдает разные данные, но эту проблему решил с помощью термопары и тупого подбора с последующими перепрошивками.

Но выявилась другая проблема - термостат предназначается для работы внутри типа ЛБП, собранного из китайских модулей, и внутри которого, как оказалось, довольно шумно. Один из входов даже отказался работать, когда я датчик с него помещал на радиатор модуля. Этот же вход используется для USB, и при включении дигиспарк ждет по этому входу общения с компом. А получает, видимо, букет непонятных импульсов, в результате чего чумеет и зависает. Датчик с другого входа такой проблемы не делает, но сдается мне, что импульсные помехи по нему все равно имеют место быть. Осцилографа же у меня нету.

Собственно, термостат я стал делать после того, как у меня вылетел покупной китайский термостат - при включении прошило МК, и, кажется, теперь я понимаю почему. Отсюда вопрос - как можно защититься от этих помех? Не хотелось бы опять возиться заменой.