-
Двухканальный таймер - часы - термометр на STM32F103
-
STM32F103
,
Nokia 5110
,
DS18B20
Cоздана: 2018-04-29
Правка: 2018-05-23
Этот таймер был собран для управления бытовыми приборами. Обычное применение - это включение ночью стиральной машинки или, скажем, йогуртницы. Если дома есть мелкая живность или растения, то всегда есть потребность включить по расписанию какую-нибудь лампу. Вобщем, этот таймер поможет во многих подобных ситуациях.
Возможности устройства:
- Часы (дата, время)
- Термометр. Измерение температуры двумя датчиками на разных шлейфах
- Два независимых канала таймера
- Режим однократного запуска канала и режим с повторением
- Четыре настраиваемых интервала времени для каждого канала
- Четыре выхода для каждого канала, полярность настраивается для каждого выхода индивидуально
Виртуально внутреннее устройство таймера можно изобразить следующим образом:
Собранный на макете таймер выглядит красиво и работает так-же:
В таймере использована купленная на Али пару лет назад плата с микроконтроллером STM32F103C8T6.
Сейчас точно такой платы с продаже нет, но подойдет практически любая аналогичная плата. Главное, чтоб на разъём были выведены ноги микроконтроллера, которые нужны для подключения кнопок, дисплея, датчиков температуры и выходы для подключения нагрузки.
Это следующие ноги:
- дисплей: PB11, PB12, PB13, PB14, PB15
- кнопки: PA0, PA2, PA3, PA4
- датчики температуры: PA9 и PB10
- управление нагрузкой: PB4, PB5, PA5, PA6
- вывод для подключения внешней резервной батарейки VBAT (VB)
Подобные платы обычно укладываются по стоимости от 100 до 300 рублей.
Это может быть плата, типа такой:
Или такой:
Эти две платы, равно как и поставщики, выбраны совершенно случайно поиском на Али, просто, как пример. Ищите в интеренете или соседнем магазине устраивающий вас вариант по цене, условиям поставки и т.д.
На плате кроме основного резонатора на 8 МГц должен быть установлен часовой кварц на 32768, либо предусмотрено место под его установку. Без часового кварца таймер работать не будет. Если место под кварц предусмотрено, но кварц не стоит, то могут быть не установлены так-же и два конденсатора от кварца на землю. Обычно это 7pF.
Вместо микроконтроллера с индексом c8t6 на плате может быть установлен микроконтроллер с индексом cbt6, разница только в объёме флеш-памяти ( в последнем её вдвое больше).
Вопросы заливки прошивки в микроконтроллер в этом посте подробно рассматривать не буду. В принципе, в интернете легко найти необходимую информацию. Скажу только, что я заливаю прошивки с помощью самодельного ST-Link/V2. Его можно сделать из точно такой же платы, как и сам таймер, добавив несколько резисторов. Вопрос первоначальной прошивки программатора остаётся, но он решается программированием через последовательный порт.
В таймере используется графический дисплей Nokia 5110 84x48 пикселей. Стоит недорого, приобрести тоже несложно. Мой дисплей с Али, качество средненькое, но, зато, цена низкая.
Потается дисплей напряжением 3.3 вольта, которое берется с платы контроллера. На плате установлен стабилизатор для питания микроконтроллера, и выход этого стабилизатора обычно выводится на один из выводов платы.
Датчики температуры - DS1820, DS18B20 или DA18S20. Конкретный тип датчика выбирается в настройках.
Принципиальная схема
Принципиальная схема в формате Splan7: (доступно зарегистрированным пользователям)
Чтобы включать и отключать таймером нагрузку надо к выходам подключить силовые модули. Это может быть модуль с реле, симистором или еще какой-то другой вариант, подходящий для конкретного применения.
Модуль на симисторе хорош отсутствием механических контактов, которые иногда могут подгорать. Недостатком модуля на симисторе является необходимость установки радиатора при серъёзнах нагрузках. Лампочку ватт на 100-200 можно включить и так, а вот киловатную нагрузку уже без радиатора не включишь.
Принципиальная схема силового модуля на симисторе в формате Splan7: (доступно зарегистрированным пользователям)
Модуль на реле прост. В зависимости от используемого реле, можно коммутировать мощную нагрузку, но, скорее всего понадобится реле на напряжение от 12V и, соответственно, отдельное питание для реле.
Ниже приведена схема модуля с реле. Она имеет опторазвязку выхода микроконтроллера и реле. Это - стандартная схема одного канала модулей управления, которые продаются для подключения ко всяким ардуинам. Там еще добавляют светодиод, чтоб светился при включенном реле.
Принципиальная схема силового модуля на реле в формате Splan7: (доступно зарегистрированным пользователям)
Можно еще использовать готовые твёрдотельные реле, типа SSR-25DA или SSR-40DA. По сути, это готовый аналог симисторного модуля.
Прошивка
Версия 1.0.136 (29.05.2018)
Версия 1.0.136 от 29.05.2018: (доступно зарегистрированным пользователям)
Ниже идут несколько несколько фотографий экрана таймера в разных режимах:
1. Главный экран. На нём вся основная информация.
В верхней строке выводится время следующего изменения уровня на выходе каналов 1 (слева) и 2 (справа). На чёрном фоне означает предстоящее отключение, на светлом - включение (для выходов, настроенных как "нормальные").
2-3. Подробная информация по режиму работы первого и второго канала таймеров.
Режим работы канала (верхняя строка)
Четыре интервала времени канала и их использование ( +/- это вкл/выкл )
4. Экран с температурой крупно.
5-6. С главного экрана (экран 1) можно перейти в установку даты и времени
С экранов с подробной информацией о каналах (экраны 2-3) можно перейти в их настройки:
7. Общая настройка режима работы канала и четырех выходов канала (на фото показан Канал 1)
При выборе режима "1 РАЗ" - канал отрабатывает все активные интервалы в течение суток с момента выхода из настройки. После этого канал переходит в состояние "Выкл".
Выходы могут быть настроены как "Нормальный", т.е. высокий уровень при включении и низки при выключении. "Инверсный" - наоборот. "Вкл" - потоянно высокий на выходе и "Выкл" - постоянно низкий соответственно.
8. Настройка интервалов времени канала (на фото Канал 1 Интервал 2)
9. С экрана температуры (экран 4) можно перейти в настройку датчиков температуры. Выбирается тип установленного датчика. Если датчик отключен, то показания на экран не выводятся. Если включен, но отсутствует или неистравен, то вместо температуры выводятся прочерки.
Пока всё, что я собирался написать об этом таймере. Если будут вопросы - задавайте в комментах по статьёй - постараюсь ответить.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
ОБСУЖДЕНИЯ
Использовал для знакомства с СТМ32. Спасибо!
можно ли получить код? заранее благодарен
скажите а нельзя ли сократить прошивку под контроллер - stm32f103c6t6a
Lis
Сомневаюсь, прошивка почти 60KB получилась. В 32KB ее едва-ли можно как-то упаковать без серьёзных усилий.
Leog - Linker.Ru ну если не влезает ну хотябы чтобы работали часы в наличии только stm32f103c6t6a
Lis
Для того, чтобы переделать прошивку и оставить только часы надо править программу. Сейчас, к сожалению, на это нет времени и такого индикатора для проверки тоже нет.
Знакомлюсь с STM32. Искренняя благодарность за Ваш труд!
Первый мой проет на ардуино вообще и на STM32 в частности.
Экранчик поморочил мне голову, подразогнул контакты и полоса посередине пустоты исчезла.Заработало сразу.Я подкинул купленный когда-то наружный датчик. Показания слегка прыгают, но то ли ветер, то ли наводки в длинном шнуре.Единственно, я запитал всё от 3,3в. Зачем питать Даллас отдельно от 5в? -ума не приложу.Его разброс по питанию:3-5,5в.
morder