Saturday, March 02, 2013

Детский Arduino со льдом

По ссылке на mntc, опубликованной не так давно Колей Д. в google+, заказал и получил электронный конструктор. Игрушка включает макетную плату, электронные компоненты, среди них несколько сенсоров, и микро-компьютер Arduino Nano. Прелесть в том, что паять не надо. Вставляешь, соединяешь элементы и готово. Начинаешь программировать в доступной среде почти на Pythonе.
Поиграв с внуком Яшей светодиодиками, решили сделать цифровой термометр на базе термистора NTC 600 из комплекта конструктора. Соединяем два элемента: резистор 1ком и термистор. На резистор - питание, соединение их - на аналоговый вход arduino A0, конец термистора на землю.


Измеряем напряжение на термисторе в условных единицах на входе A0. На рисунке это соединение оранжевым проводом, напомню, без пайки. АЦП в arduino 10-ти разрядный, поэтому пересчитываем условные единицы в вольты, как 4.7/1024*значение_на_А0. 4.7 это примерное значение напряжения питания, подаваемое на плату с USB.
Теперь пересчитываем напряжение в сопротивление термистора, используя закон Ома. В записных книжках Чехова есть шутка: “Строг, несправедлив”. Немного алгебры и Яша выводит формулу для сопротивления термистора Rx при вычисленном напряжении Vx. Меняем 5 вольт на реальные 4.7 вольта, 1000 ом на реальные 980 ом (ну и точность!). Готово устройство для измерения сопротивления термистора, величина которого зависит от температуры. Как получить температуру?
Калибруем термистор. Без градусника у нас может быть только две точки 100С - температура кипения, и 0С - температура таяния льда. Двух точек мало, так как зависимость нелинейная. Иду в хозяйственный и покупаю градусник -20...+50. Про 100С кипения придется поверить на слово, с купленным градусником не проверить. Замеряем несколько значений сопротивления  при разной температуре, опуская термистор и градусник (его только до +50С) сначала в тающий лед, затем в воду, которую нагреваем на плите. В конце - только термистор в кипящую воду.


Получили 6 точек зависимости температуры от сопротивления. Дальше? Для описания такой зависимости обычно используют уравнение Стейнхарта-Харта. Думаю, это слишком для нас любителей, тем более, что наши экспериментальные измерения не очень точны. Полином второй степени должен нас удовлетворить, а его результаты даже вызвать восторг.
Берем octave (бесплатный матлаб) и вычисляем коэффициенты полинома для кривой, на которую должны лечь наши 6 точек. Более-менее приемлемо, если не ниже нуля (если не холодно). Можно получить еще точки на снегу.


Программируем термометр и проверяем, что он нам выводит на консоль.

На кухне +21С. Прикладываем лед к термистору (капли текут на плату) и видим “около нуля”. Детский восторг!

Пара замечаний.

  • “почти на питоне” добавлено из-за отсутствия преобразования float в строку. Наверняка, не единственное ограничение. Преобразовали через буфер символов.
  • Думаю, что лучше покупать конструктор не в mntc, а в “умных устройствах”.

1 comment:

  1. Asking questions are genuinely fastidious thing if you are not understanding anything fully, except this article provides fastidious understanding even.


    Look at my web site - waist to hip ratio

    ReplyDelete