Датчик температуры TMP35

Дата публикации: Mar 17, 2013 5:23:31 PM

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

Так, вчера я решил заменить в учебном наборе сложный датчик DS1621 на более простой аналоговый TMP35. Посчитал, что слишком рано пока пытаться объяснить ученикам, что такое шина вообще, и I2C в частности.

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

Некоторые характеристики TMP35:

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