Оглавление:

Мульти таймер с внешним управлением: 13 шагов
Мульти таймер с внешним управлением: 13 шагов

Видео: Мульти таймер с внешним управлением: 13 шагов

Видео: Мульти таймер с внешним управлением: 13 шагов
Видео: STM32 STM32VL Discovery STM32F100RBT6 (урок 8) The advanced-control timers(1), таймеры 2024, Ноябрь
Anonim
Мульти-таймер с внешним управлением
Мульти-таймер с внешним управлением

Этот проект Instructable представляет собой сборку многофункционального таймера

Этот таймер может работать как:

  1. Сигнал тревоги общего назначения с возможностью выбора времени от 1 секунды до +90 часов. Имеется обратный отсчет со звуковой сигнализацией и / или управление внешним устройством до завершения, а затем обратный отсчет времени с момента срабатывания сигнализации.
  2. Таймер сна с 7 выбираемыми временами, обратным отсчетом и будильником по окончании.
  3. Таймер медитации с 4 выбираемыми временами, с обратным отсчетом и коротким чириканьем по завершении, обратный отсчет с другим чириканьем через 5 минут после этого.

Этот проект может быть собран, как описано здесь, или изменен в соответствии с требованиями. Я ранее построил таймер с этой функцией и использовал его в своем первом руководстве для управления блоком УФ-экспозиции.

Я думал, что могу просто опубликовать оригинальную программу и дизайн платы. Однако по какой-то причине мне не удалось найти код. Я также хотел улучшить оборудование, чтобы сделать схемы управления более гибкими и уменьшить расход заряда батареи. В результате переработка основной печатной платы и переписывание кода дает возможность обсудить подход к программированию и проектированию оборудования.

Всякий раз, когда я создаю печатную плату, я часто обнаруживаю недостатки в конструкции или размещении компонентов. Платы, которые я создаю, также являются одним из двух недостатков. Кроме того, мне просто нравится участвовать во всех аспектах проекта от начала до конца. Это некоторые из причин, по которым я делаю свои собственные печатные платы, а не отправляю файлы Gerber за границу для производства. Может, я просто стар и застрял на своем пути. Этот проект отражает эту предвзятость. Поскольку я делаю свои собственные печатные платы, мои проекты и мои файлы Gerber не соответствуют производственным стандартам, я не включил эти файлы. Те, кто не хочет травить и отделывать доски, могут подготовить свой собственный дизайн и опубликовать файлы Gerber в разделе комментариев. Пожалуйста, изготовьте и протестируйте свои платы перед публикацией.

Шаг 1. Обзор аппаратных элементов

Устройство питается от 4 батареек AAA и управляется Arduino Pro Mini 5V.

Небольшой зуммер / динамик подает звуковой сигнал.

Миниатюрное реле на 5 В обеспечивает управляющее напряжение для внешних устройств. Источник этого выходного управляющего напряжения обеспечивает гибкость.

Поворотный энкодер с кнопкой обеспечивает выбор меню.

OLED-дисплей и мгновенный переключатель запуска / остановки дополняют пользовательский интерфейс.

Дополнительное электронное оборудование состоит из переключателя питания SPDT и миниатюрного телефонного разъема для подключения к внешним устройствам.

Кроме того, предоставляются файлы, которые помогут вам в этом проекте:

Файлы STL для кейса проекта, напечатанного на 3D-принтере.

Изображения маски из меди и припоя для травления и чистовой обработки печатной платы управления и поворотного энкодера.

Схемы и изображения платы в качестве справки для тех, кто хочет изменить мой дизайн.

Вы можете просмотреть мою Инструкцию по созданию двусторонних печатных плат в качестве примера практических рекомендаций по производству печатных плат.

Шаг 2: Обзор программного обеспечения

Наряду с исходными файлами Arduino, может быть полезна некоторая дополнительная информация.

Библиотеки аппаратного управления используются, когда они доступны (устранение дребезга кнопок, управление OLED, считывание поворотного энкодера).

Программа реализует простой конечный автомат (FSM) для управления выполнением кода как оператор switch в функции цикла.

Определен класс меню, позволяющий выбирать отображаемые параметры на OLED-экране и выбирать с помощью поворотного энкодера.

Ввод осуществляется путем прямого опроса (без прерывания), поскольку он не критичен по времени и делает код более понятным.

Операторы печати в Serial используются для помощи в отслеживании выполнения кода и отладке.

Различные типы элементов структуры программы, в том числе:

  • Несколько вкладок кода для изоляции некоторых функций и переменных аппаратного управления.
  • Операторы Switch для установки значения состояния (FSM) и управляющих переменных.
  • Определение структуры
  • Перечисления, позволяющие присваивать значения состояния в виде текста.
  • #define определения препроцессора для аппаратных выводов и стандартных значений.

Шаг 3: Список деталей

Создайте корпус
Создайте корпус

Я не был уверен, где разместить этот шаг, так как это можно сделать практически в любой момент. Я использовал корпусную коробку, напечатанную на 3D-принтере. У вас может не быть доступа к 3D-принтеру или вы предпочитаете другой тип корпуса, такой как алюминиевый ящик, пластик, вырезанный лазером, вырезанное вручную дерево или другой тип корпуса, который вы используете для своих электронных проектов. Я включил файлы STL для верхней, нижней, поворотной ручки энкодера и лицевой панели OLED. Используйте эти файлы и выбранный вами слайсер для создания файлов gcode для вашего принтера.

Я распечатываю все детали с помощью нити PLA, одного цвета для верхней и нижней части корпуса, другого контрастного цвета для ручки и лицевой панели (которая приклеена к верхней части). Я не собираюсь указывать все настройки слайсера, но использую Tri - Шестигранник заполнен не менее чем на 35%, чтобы можно было нарезать угловые винты и установить режим «без опоры» для считывания надрезанных букв. Я распечатал коробку, используя "нормальную" высоту слоя моего принтера.

Шаг 9: Дизайн и написание кода

Этот шаг не является обязательным, но рекомендуется для лучшего понимания.

Основная часть трудозатрат - это написание кода. Вы можете пропустить этот шаг, если используете прилагаемую программу как -is. Однако рекомендуется потратить время на просмотр кода для лучшего понимания или модификации в соответствии с вашими потребностями.

Следующие комментарии могут быть полезны для понимания этого процесса.

  • Комментарии - подробно комментируйте по ходу работы - я часто пишу комментарии, прежде чем писать код.
  • Разделяй и властвуй - используйте функции, классы и модули (вкладки). Используйте частые компиляции (Проверка) для проверки синтаксиса. Отладка - используйте операторы печати для проверки потоковых и тестовых значений и аппаратных интерфейсов. Не бойтесь решать проблемы на ходу, никто не пишет код без ошибок!
  • Константы - #define инструкции предварительного компилятора присваивают имена номерам контактов. Определения постоянных переменных с комментариями уменьшают или устраняют "волшебные" числа. Использование констант, расположенных в начале программы или функции, позволяет изменять параметры без перезаписи кода.
  • Предопределенные библиотеки - использование предопределенных библиотек снижает нагрузку на программирование и время отладки.
  • Блоки дизайна - создаются с использованием функций, изолируют код на отдельных вкладках (связанные программы и.h-файлы), перечисления, классы и структуры. Сосредоточьте внимание на каждом из них, чтобы понять, как они работают по отношению к остальной части кода.
  • Конечный автомат (ы) - это шаблон программирования, который отлично работает с Arduinos или любыми программами, которые используются для управления выходами или реагирования на входы. Существует несколько разновидностей конечных автоматов. В этом коде используется конечный автомат на основе оператора switch в функции цикла. Эта форма проста для понимания и отладки.
  • Дисплей и меню - вывод OLED краток, но обеспечивает достаточную обратную связь для случайных пользователей и поддерживает выбор опций. Он хорошо интегрируется с конечным автоматом (почти все состояния имеют связанный OLED-экран). Класс Menu был полезен для выделения кода для отображения и выбора параметров меню.

Пожалуйста, прочтите программу несколько раз. Это помогает использовать одну функцию или раздел за раз. Я часто не понимаю написанного мной кода, если не прочитал его хотя бы дважды!

Шаг 10: Установите программу

Скопируйте прикрепленный файл на свой компьютер, затем распакуйте его в папку Sketches.

Подключите Arduino к компьютеру и загрузите программный код обычным способом. Откройте серийный монитор Arduino IDE, чтобы убедиться, что программа запущена, и помочь в отладке.

Шаг 11: соберите таймер

Соберите таймер
Соберите таймер
Соберите таймер
Соберите таймер
Соберите таймер
Соберите таймер
Соберите таймер
Соберите таймер

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

  1. OLED и кабель
  2. Переключатель пуска / останова и проводка
  3. Поворотный энкодер и кабель
  4. Динамик / зуммер и проводка
  5. Разъем для внешнего управления и проводка
  6. Ползунковый переключатель включения / выключения и проводка (дважды проверьте ориентацию, чтобы включить в нужном направлении

Если вы припаиваете кабели непосредственно к печатной плате, сделайте это после того, как все детали будут прикреплены к корпусу, чтобы уменьшить обрыв провода. Вам нужно подождать, пока кабели будут подключены к основной плате, прежде чем прикручивать эту плату к задней части.

Если вы используете контактные разъемы и разъемы Dupont, сначала прикрепите основную плату к задней части с помощью винтов, затем вставьте компоненты. Будьте осторожны при подключении аккумулятора к основной плате и соблюдайте правильную полярность. Вы также должны установить перемычки управления реле или проводку в это время.

Нижняя часть корпуса соединяется с верхом с помощью 4-40 крепежных винтов с полукруглой головкой, по одному в каждом углу. Четыре отверстия в верхней части должны быть нарезаны метчиком 4/40, либо, если вы используете вставки с резьбой 4-40, вам нужно будет просверлить отверстия, чтобы они поместились. Также необходимо просверлить 4 отверстия для крепления основной платы внизу. Прикрепите эту плату к защелкивающемуся держателю батареи и отметьте расположение отверстий. Просверлите отверстия в соответствии с вашими крепежными винтами.

Шаг 12: Интеграционное тестирование

Интеграционное тестирование
Интеграционное тестирование
Интеграционное тестирование
Интеграционное тестирование
Интеграционное тестирование
Интеграционное тестирование

Окончательное (интеграционное) тестирование выполняется путем проверки всех параметров меню и проверки их работы с оборудованием, как задумано. Для предоставленного мной кода этого должно быть достаточно. Если вы написали свой собственный код или модифицировали мой, ваше тестирование должно быть более обширным. Я не верю, что нужно использовать все варианты выбора времени, но вам нужно попробовать все стандартные параметры будильника и убедиться, что будильники Nap и Meditation работают должным образом.

Шаг 13: Заключительные мысли

Поздравляю с успешным, надеюсь, проектом. Я уверен, что на пути вы столкнулись с проблемами, которые вам нужно было решить. Я также уверен, что некоторые из моих инструкций могли быть более полными или ясными. Пожалуйста, дайте мне знать через раздел комментариев, каковы были ваши результаты, и предложите, как эти инструкции могут быть улучшены.

Спасибо за то, что уделили время просмотру и / или созданию этого проекта.

Рекомендуемые: