События‎ > ‎

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

Отправлено 17 мар. 2013 г., 10:23 пользователем Олег Евсегнеев
Полным ходом идет разработка базового курса робототехники для начинающих. Неделю назад мы подняли блог курса, на котором регулярно публикуем основные новости и размышления на эту тему. В связи с эти, все мои последние изыскания в области электроники связаны именно с этим проектом. 

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

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

Некоторые характеристики TMP35:
  • напряжение питания: 2.7 - 5.5В ();
  • измеряемая температура: от -40 до 125 градусов Цельсия;
  • потребляемый ток: - 50мкА.

Подключать датчик крайне просто, как какой-нибудь светодиод. Я выбрал вариант в трехногом корпусе TO-92, распиновка которого представлена ниже:
Выходы TMP35
Подключаем датчик по схеме:
Схема подключения TMP35 к Arduino Nano

А вот как это выглядит с высоты полета мухи:


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

Comments