Датчик температуры TMP35
Дата публикации: Mar 17, 2013 5:23:31 PM
Полным ходом идет разработка базового курса робототехники для начинающих. Неделю назад мы подняли блог курса, на котором регулярно публикуем основные новости и размышления на эту тему. В связи с эти, все мои последние изыскания в области электроники связаны именно с этим проектом.
Так, вчера я решил заменить в учебном наборе сложный датчик DS1621 на более простой аналоговый TMP35. Посчитал, что слишком рано пока пытаться объяснить ученикам, что такое шина вообще, и I2C в частности.
В действительности я купил для пробы два датчика: уже упомянутый TMP35 и более дешевый LM19. В отличие от более дорогого TMP35, второй датчик подразумевает дополнительную пост-обработку сигнала с помощью хитрой формулы, представленной в даташите. Попробую подключить этот датчик когда-нибудь потом.
Некоторые характеристики TMP35:
напряжение питания: 2.7 - 5.5В ();
измеряемая температура: от -40 до 125 градусов Цельсия;
потребляемый ток: - 50мкА.
Подключать датчик крайне просто, как какой-нибудь светодиод. Я выбрал вариант в трехногом корпусе TO-92, распиновка которого представлена ниже:
Подключаем датчик по схеме:
А вот как это выглядит с высоты полета мухи:
Вообще, стоит отдельно рассказать про эти новые картинки. Раньше я рисовал все схемы в TinyCad. Не очень удобная штука, но там можно легко добавлять новые компоненты.
Однако, я давно стал замечать, что в случае с Arduino, часто рисуют не схемы, а некое подобие фотографии макетной платы. Поскольку я готовлю курсы для школьников, то решил попробовать в методичках именно такой вариант. Чтобы на первых парах было наглядно и понятно какую перемычку куда втыкать.
Слегка погуглив, я нашел удивительный пакет Fritzing. В нем можно рисовать эти самые макеты. После того как составлен макет, на другой вкладке появляется соответствующая принципиальная схема, в которой нужно просто красиво проложить разводку. Есть и третья вкладка, на которой уже отображается шаблон PCB платы.
Что самое замечательное, вы можете сформировать на макете схему, затем подкорректировать получившуюся PCB, и заказать изготовление этой платы! Цены правда не очень дешевые, и придется ждать доставки из Англии. Но сама идея весьма и весьма интересна. На самом деле, я до того заинтригован, что готов заказать у них пробные платы (есть идеи шилдов для RaspberryPi).
Единственная проблема - добавление новых элементов. Нужно рисовать это все в отдельном редакторе :( Надо разбираться.
Итак, вернемся к датчику. Управляющая программа крайне проста (не в пример DS1621). Мы просто берем значение с аналогового входа, преобразуем его в значение температуры по древней формуле:
th = (th_raw / 1024) * 3.3 * 1000 / 10
где 1024 - макс значение 10-битного АЦП;
3.3 - опорное напряжение;
1000 - делитель для перевода вольт в милливольты;
10 - масштабный коэффициент из даташита (10мВ на градус Цельсия).
Соответствующий скетч для Arduini Nano:
Arduino + TMP35
int thermoPin = A7;
int ledPin = 2;
int th_raw, th;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
th_raw = analogRead(thermoPin);
th = (th_raw/1024.0)*3.3*1000.0/10.0;
Serial.println( th );
delay(500);
}
Заливаем на Arduino и вуаяля! Температура воздуха у меня дома составляет 19-20 градусов Цельсия. Спешу заметить, что DS1621 показывал 30 градусов. Остается выяснить кто из них врет. Но это уже в другой раз.