Путь светодиодного самурая
Немного предыстории - около года назад я опубликовал обзорная статья , где была описана минимальная макетная плата для микроконтроллера серии STM32F405. Публикация тогда не вызвала большого интереса.
Но тщетно.
Согласен, слишком много подобных решений размножилось в интернете.
А полезные вещи, как известно, никогда не пропадают даром.
И этот случай тому подтверждение.
Недавно коллега открыл небольшую компанию, занимающуюся строительством жилых домов под ключ.
Одним из устройств, которое ему действительно было нужно, была система динамического управления освещением.
Паяльник, Гугл, отрицание, гнев, торг, депрессия, принятие – вот его путь в одном предложении.
Теперь обо всем по порядку.
Фон
В первой строке поиска, которую выдают поисковые системы, конечно же, будет система, построенная на arduino. Признаюсь, большого опыта работы с этой платформой у меня нет, но наш интерес лежит в области графического языка программирования Ladder, которым он (по крайней мере, пока) похвастаться не может. Помимо прочего, имелся 16-битный ШИМ и 21 выходной канал, плюс автоматическая регулировка яркости в зависимости от уровня освещенности.И вишенкой на торте является наличие онлайн-режима, то есть контроля работы алгоритма программы без изменения ее функционала.
Конечно, первая мысль была – вот оно, настоящее приложение! Добавьте в прошивку выходные каналы и реализуйте алгоритм на языке LAD, раскидав типовые задачи по подпрограммам.
Оживить шину I2C и подключить датчик освещенности.
И конечно же, все основано на операционной системе реального времени.
Отладка и программирование - через USB-порт с помощью бесплатной программы Autoshop. Это просто.
Реализация проекта - аппаратное обеспечение
В основе всех подобных проектов лежит низковольтная часть, рассчитанная на напряжение 12В.Я решил, что не стоит отклоняться от этого решения.
Выходные ключи типа NCV8402 рассчитаны на номинальный ток 2А, напряжение до 42В и имеют защиту от перенапряжения, короткого замыкания и перегрева.
Да, они конечно дороже обычных МОП-транзисторов с теми же параметрами, но меня подкупило наличие защит. Увы, контроллер ничего не узнает, если с выходным каналом что-то не так.
Но мы умеем умножать! Если взять 21 канал и умножить их на 2А, то получим 42А.
А это очень приличный ток, а клеммные соединения на плате рассчитаны всего на 10А.
Что значит «Акела промахнулсяЭ»? Ответ на этот вопрос есть, и он находится на обратной стороне печатной платы.
Фото вы можете увидеть под спойлером.
Фото печатной платы — вид снизу
Как видно на фото, здесь подготовлены широкие дорожки для наплавления припоем дополнительного слоя проводника.
А для увеличения нагрузочной способности прямо к этим дорожкам можно припаять силовые провода.
Продолжим нашу фотосессию.
Фото печатной платы — вид сверху
Собранная печатная плата
Немного коснусь визуализации.
Поскольку у меня нет своей дачи, на которой могла бы потребоваться такая система, я собрал имитацию, используя зеленую пластинку из детского набора пластилина и самую дешевую светодиодную ленту из ближайшего строительного магазина.
Вот как она выглядит — фото под спойлером.
Симулятор лестницы
В качестве датчика освещенности я использовал готовую плату с датчиком MAX44009. Это старый друг, имеет диапазон измерения от 0,045 до 188000 люкс.
Использование именованных физических единиц в таком проекте, безусловно, является плюсом.
Наличие интерфейса I2C меня вполне устраивает — просто и надежно.
Еще хотелось иметь аппаратные часы с календарем, благо для этого нужно просто установить батарейку.
Плюс мы получаем энергонезависимую память — что хоть и не очень важно для этого проекта, но является хорошим бонусом для других решений.
Да, никаких вкусностей вроде гальванической развязки я не использовал — применение далекое от промышленного, а сильно удешевлять устройство не хотелось.
Хочу отметить коллег-эстетов, что я знаю о протоколе DMX. ШИМ для управления светодиодами в наше время выглядит как динозавр в березовой роще.
Но цена обычной ленты сейчас на порядок меньше (судя по ценам в местных розничных магазинах), а для того, чтобы ходить босиком к холодильнику ночью, белой подсветки без радужных плафонов будет вполне достаточно.
Электрическая схема и файлы герберы доступны для скачивания по ссылке с сайта.
github .
Программная часть
Когда дело касается программирования, мне всегда нравится, когда программа понятна тому, кто ее не писал.Такого эффекта можно добиться, если в одном месте собрать части кода, выполняющие одну конкретную задачу — например, блок драйверов, управление выходными каналами, процедуру инициализации при включении питания и т. д. По ссылкам ниже вы можете скачать программу, написанную в среде программирования AutoShop v3.02. Ссылка к Авто магазин .
Все комментарии в программе на английском языке.
Я делаю это для того, чтобы было понятно всем, в том числе и моему заказчику, который из Сербии.
Как это работает
Поскольку аппаратное обеспечение устроено особым образом, пришлось использовать зарезервированные адреса в области памяти системных регистров.Например, D8030 – в этом регистре хранится значение освещенности в люксах.
Благодаря тому, что регистр 16-битный, он имеет максимальное значение 32677 люкс при возможных 188000. Далее система имеет 4 аналоговых входа (3,3В на входе равно 4095 в регистре АЦП), и значение этих входов соответственно передается в регистры D8031-D8034. В этой версии программы я не использую эти входы, но это очень хороший задел на будущее.
Немного опишу функционал - на плате имеется пять дискретных входов Х0-Х4. X0 и X1 используются для запуска алгоритма при движении вверх по лестнице, а X3 и X4 используются для запуска алгоритма при движении вниз.
Входы предназначены для ручного управления от выключателя и для управления от пироэлектрического датчика.
Фото платы с отключенным процессорным блоком под спойлером.
Внешний вид платы
При нажатии переключателя срабатывает защита от дребезга контактов на время 300 мс, а если таймер отработает отведенное время, запускается соответствующая программа.
Вход Х2 предназначен для выбора программы.
Сейчас реализованы две программы - плавное включение и выключение всех ступеней одновременно и плавное включение друг за другом и плавное выключение всех.
Операция программы 1 Операция программы 2 Имеется защитный таймер на 120 секунд – по истечении этого времени алгоритм автоматически отключает работающую программу.
Также можно настроить количество ступеней – от 2 до 21. Для этого нужно всего лишь изменить значение регистра D98 в подпрограмме инициализации SBR_init. Ниже приведены несколько типичных скриншотов программы.
Для отображения изображения в большом масштабе - ПКМ + Открыть изображение в новой вкладке.
Процедура инициализации
Реализация ШИМ-драйвера
Часть реализации программы 2
Процедура прерывания с периодом 5 мс
Редактор программ позволяет не только изменить программу, но и загрузить ее в устройство и проверить ее работу.
Проверка, как и программирование, происходит визуально.
При этом работа устройства не нарушается! Это кажется невероятным, но это правда.
Онлайн режим
Дополнительные материалы
Ниже ссылка на github, где в открытом доступе находятся схемы как модулей, так и прошивки, а также gerber-файл для изготовления печатной платы.
Проект на Github
связь
Дальнейшее развитие
Как ожидается, дальнейшее развитие предполагает решение технических проблем, присущих прототипу.К сожалению, с этим устройством тоже есть проблемы.
Например, при подаче питания выход PB4 автоматически активируется как вывод NJTRST интерфейса JTAG. И увы, это приводит к «миганию» выходного канала.
Если для серии F1 достаточно записать соответствующее значение в регистр AFIO_MAPR в битовое поле SWJ_CFG[2:0], то этого можно избежать.
Но для серии F4 ничего похожего мне не удалось найти.
Если у вас есть прямое решение, не требующее костылей, поделитесь.
Конечно, здесь просто требуется развязка, хотя бы с помощью оптопар, 485-й шины, еще гальванизации.
Я это тоже прекрасно понимаю, но пока тестирую на этом прототипе.
Точно такой же модуль я готов предоставить бесплатно каждому, кто предложит наиболее интересный вариант сотрудничества в плане дальнейшего развития данного решения.
Жду ваших комментариев и отзывов.
Теги: #Программирование микроконтроллеров #Производство и разработка электроники #stm32 #Умный дом #Промышленное программирование #ЛАД #Лестничный контроллер
-
Пример Преимуществ Эпоса
19 Oct, 24 -
Выпущен Debian Gnu/Linux 6.0.1
19 Oct, 24 -
Seo Комикс
19 Oct, 24 -
Таблица Дроидов. Выпуск 5
19 Oct, 24 -
Сша Начинают Борьбу С Киберзапугиванием
19 Oct, 24 -
О Структурировании И Автоматизации
19 Oct, 24