Здравствуйте, уважаемые читатели! В одной из прошлых статей я рассказывал, как выводить показания датчика температуры DS18B20 на 4-х символьный светодиодный индикатор с помощью Arduino UNO.
Сегодня расскажу, как можно с помощью ATtiny13 выводить текущую температуру с датчика DS18B20, который у меня в герметичном металлическом корпусе.
Среди примеров для микроконтроллера ATtiny13 есть скетч Blink_using_timer0.
Его идея в том, что мы отслеживаем переполнении нашего единственного таймера T0. И когда у нас срабатывает прерывание, соответствующее этому событию, выполняется некоторый программный код. В данном случае, переключаем уровень сигнала на пине, обозначенном PB2, с высокого на низкий и наоборот. Тем самым включая и отключая светодиод.
В начале скетча дано обоснование, почему мы используем число 37. По идее, при частоте работы микроконтроллера в 9,6 МГц, это нам должно дать задержку примерно в 1 с. Но на самом деле, далее мы убедимся, что это не совсем так и подберем нужное нам значение эмпирическим путем.
При частоте работы микроконтроллера 1,2 МГц, у меня получилось, значение timeCount == 4. Тогда нужное нам действие будет происходить раз в секунду.
Ссылка на сам код скетча, размещена в конце статьи. Сразу скажу, что не стал приводить код к общему Си-образному виду. Так что мои вставки кода, со стандартными для Arduino IDE функциями будут видны, на фоне строгого кода функций библиотеки OneWire. Упрощенный код библиотеки OneWire для работы с ATtiny13, я взял на одном из форумов и немного его видоизменил (https://forum.sources.ru/index.php?showtopic=381077).
Схема подключения ATtiny13, DS18B20, сдвигового регистра и светодиодного индикатора
Перейдем к схеме подключения. Важным моментом схемы является то, что для управления секциями светодиодного индикатора используются те же пины, что работают со сдвиговым регистром. Ведь после того, как мы записали битовое представление цифры, до записи следующей цифры, эти пины освобождаются. Забота поддерживать высокий или низкий уровень сигнала, тем самым зажигая нужные нам сегменты светодиодного индикатора, ложится на плечи сдвигового регистра. Который и будет это делать, пока мы обеспечиваем его питанием. И именно этой паузой, до передачи следующего числа мы в данной схеме и пользуемся, чтобы управлять секциями (разрядами) светодиодного индикатора. Т.к. скорость записи данных в память сдвигового регистра намного быстрее, чем пауза между этими событиями, то и получается, что в основном пины задействованы для управления секциями светодиодного индикатора, а в промежутке, отправляются данные на сдвиговый регистр. И только второй пин (PB3) ATtiny13, управляющий третьей секцией светодиодного индикатора (если считать справа налево), не используется дважды и только управляет секцией светодиодного индикатора.
Еще одним отличием данной схемы от схем, которыми я делился в предыдущих статьях, является то, что 5 пин (PB0) мы используем для общения с датчиком температуры. Собственно он для общения с внешним миром и предназначен.
Следовательно, 11 пин сдвигового регистра я подключаю вместо 5 пина, к 3 пину ATtiny13.
Вот так схема выглядит собранная на макетной плате.
Загружаем скетч в ATtiny13. Вынимаем ATtiny из программатора и устанавливаем на макетную плату. Подаем питание. Светодиодный индикатор показывает сначала 0 градусов, а затем температуру в комнате. С точностью до десятых градуса.
Не буду опять экспериментировать со льдом, просто сделаю, по умолчанию, чтобы крайняя левая секция показывала минус, чтобы Вы убедились, что задействованы все 4 секции светодиодного индикатора.
Добавляю данную корректировку в скетч. Загружаю. Кстати, обратите внимание, скетч занял всего 758 КБ памяти. Т.е. у нас почти четверть памяти ATtiny13 осталась свободна.
Устанавливаю ATtiny13 на макетную плату. И снова видим значение текущей температуры, только с горящим для демонстрации минусом.
Таким образом, возможностей малыша ATtiny13 достаточно, не только чтобы работать с датчиком температуры DS18B20, но и выводить получаемое значение температуры на 4-х символьный светодиодный индикатор.
Код скетча - https://yadi.sk/d/lQfgrmFycXhp5Q
Видео по материалам статьи:
_________________________________________________________
Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!