Wort-Uhr: 5 шагов
Wort-Uhr: 5 шагов

Видео: Wort-Uhr: 5 шагов

Видео: Wort-Uhr: 5 шагов
Видео: ЗАМОРОЗЬТЕ КОСТИ И ВАРИТЕ 6 ЧАСОВ! Рецепт который изменит вашу жизнь! 2025, Январь
Anonim
Wort-Uhr
Wort-Uhr

Привет вместе!

Это будет мое первое руководство, и если у вас есть идеи, как его улучшить или упростить понимание, пожалуйста, не стесняйтесь обращаться ко мне!

Ну поначалу такие «часы» - не моя идея! Я видел много таких в Интернете, и их можно заказать всего за пару долларов в разных интернет-магазинах. Но я не хотел покупать один, я хотел сделать свой собственный, чтобы изучить и понять, как он работает.

Одно слово "не немецким" участникам … Извините за то, что это всего лишь "German Wort Uhr". Его можно легко преобразовать на английский или любой другой язык, но, поскольку я немец, я сделал это на своем языке. Если вам нужна поддержка на вашем языке, свяжитесь со мной, и я постараюсь вам помочь.

Итак, начнем…

Шаг 1: Схема

Схема
Схема

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

Начнем с левого нижнего угла. Существует простой источник питания, использующий LM7805 для генерации стабильного выходного напряжения 5 В для PIC, регистров сдвига (74HC164) и микросхемы реального времени DS3231. Все светодиоды также питаются от этой части. D22 на правом конце предназначен только для индикации источника питания и может быть легко оставлен отдельно, если он не нужен.

Вы можете использовать любой источник питания постоянного тока для часов с напряжением менее 40 В, но затем вы должны выбрать соответствующее значение для C7. Он должен иметь номинальное напряжение, по крайней мере, вдвое превышающее входное напряжение, и помните, что вы выделяете тепло в LM7805, поэтому вы должны стараться поддерживать входное напряжение как можно более низким, потому что все остальное - просто пустая трата энергии. Лучше всего подходит что-то между 9 В и 12 В постоянного тока.

Не беспокойтесь о полярности вашего источника питания … P-канальный MOSFET (Q1) действует как защита от ложной полярности, и часы просто не будут работать и не получат никаких повреждений. Вы можете проверить это по светодиодному индикатору «питание» D22, если он установлен.

В правой части схемы расположены регистры сдвига с последовательным входом и параллельным выходом. Я решил использовать их, потому что не хотел использовать огромный PIC с большим количеством портов ввода-вывода. Я хотел использовать меньший по размеру, но у меня все еще было дома 16F1829, так что выбор был уже очевиден. Данные (IN_1, IN_2 и IN_3) предоставляются PIC (см. Раздел кода ниже), а также REGISTER_CLK. Для простоты кода и разводки печатной платы я использовал два из 74HC164 для часов и последний для «логики».

В верхнем левом углу находится ПОС и все необходимые детали. Я использовал внутренние часы, поэтому осциллятор не нужен. Всего три резистора для SCL, SDA и MCLR. Поскольку я использовал 32 кГц как указатель «точных секунд», нет необходимости в достаточно стабильной и точной частоте для PIC.

Посередине - DS3231 с минимумом внешних деталей. Фактически, я использовал только входы SDA и SCL для связи через I²C и выход 32 кГц в качестве внешнего опорного тактового сигнала для Timer1 PIC16F1829. Для этого выхода в таблице данных указано, что необходим внешний подтягивающий резистор. Остальные выходы я не использовал в этом проекте и оставил их неподключенными.

Также посередине светодиоды… Как вы можете видеть на схеме, я использовал синие светодиоды (с прозрачным корпусом) и сопротивление резистора 1 кОм. Если вы собираетесь сделать этот проект самостоятельно, вам следует выбрать номиналы этих резисторов в соответствии с цветом и типом выбранных вами светодиодов. Также помните, где вы хотите установить часы. Мой стоит в моей спальне, поэтому я не хотел, чтобы светодиоды были слишком яркими, и выбрал резисторы большего номинала. Сделайте несколько попыток на макетной плате со светодиодами и номиналами резисторов, прежде чем устанавливать их на печатную плату.

Шаг 2: макет

Макет
Макет
Макет
Макет
Макет
Макет

После завершения схемы пришло время развести печатную плату. Для этого я использовал KiCAD (также для схемы). Сказать особо нечего, просто проложите линии.

Для того, что я сам распечатал корпус часов, было довольно важно, где расположены светодиоды на верхнем слое. Я поместил светодиоды и резисторы только на верхний слой, потому что я заказал свою печатную плату частично смонтированной (все детали SMD) и потому, что компания, которую я выбрал для этого, размещает детали только с одной стороны, а не с двух сторон.

Вы можете увидеть размещение на двух трехмерных картинках, которые я сделал из KiCAD.

Если вам интересно … Можно экспортировать печатную плату KiCAD в Eagle, и тогда будет довольно легко построить корпус, потому что у вас есть ссылка с печатной платы.

Шаг 3: «Логика» «Wort-Uhr»

Самой большой частью этого проекта был код PIC…

Сначала найти «логику» разговорного времени на немецком языке и перевести ее в код.

К сожалению, загрузить файл Excel напрямую не удалось, но я надеюсь, что экспорт PDF будет для вас достаточно удобочитаемым. Если нет, свяжитесь со мной, и я пришлю вам исходный файл Excel. В PDF-файле вы можете увидеть, как я настраивал логику своих часов. Вы можете увидеть, как я прошел через разные временные шаги и как написано. Вычисления внутри кода (в основном операторы if-else) могут быть получены из информации в правой части таблицы. Одна часть предназначена для минут, а другая - для часов.

Как видите, это не волшебство, и его можно легко закодировать на C. "Самый сложный" момент внутри логики - это то, как обрабатывать час, как вы можете видеть в файле, что только в начале часа отображается фактический час.. В немецком языке (возможно, это может быть только баварская особенность) «следующий час» используется довольно рано.

Для кодирования я использовал MPLABX в качестве предпочтительной среды разработки.

Шаг 4. Фрагменты кода

Фрагменты кода
Фрагменты кода
Фрагменты кода
Фрагменты кода

Я не буду публиковать здесь свой код, но если вы собираетесь написать свой собственный код, я дам вам несколько подсказок, на что я «споткнулся» во время разработки …

Сначала «реестр» -заполнение:

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

Код для заполнения регистров изображен на картинке выше. Как видите, я заполняю все 3 регистра параллельно, поэтому мне нужно 3 контакта PIC для данных и 1 контакт для CLK. 74HC164 принимает новые данные при переходе на линии CLK с 0 на 1.

Остальной код в основном зависит от PIC, "разговорного времени" - логики и управления связью и кнопками. Связь в основном обеспечивается Microchip MPLABX, потому что я использовал модуль MSSP.

Хорошая идея - прочитать таблицу DS3231, потому что данные хранятся внутри как BCD, поэтому вам, возможно, придется «преобразовать» это в своем коде. Что ж, насколько я понимаю, я "учусь на собственном опыте" и, КОНЕЧНО, не читал таблицу… Это стоило мне много нервов и часов.

Как вы могли заметить, в этой реализации есть два способа «не отставать от графика».

  1. Вы можете прочитать фактическое время на DS3231
  2. Вы можете «считать секунды» в самой PIC и просто время от времени синхронизировать время с DS3231

Это зависит от вас, и оба пути практичны и прямолинейны. Я использовал первый вариант и только синхронизированное время при настройке времени с помощью кнопок (время записи в DS3231) или каждые 24 часа (время чтения из DS3231), потому что я хотел реализовать больше логики самостоятельно. Я также перевожу часы ночью (с 23:00 до 05:00), так что, на мой взгляд, это было немного проще.

Шаг 5: Жилье

И последнее, но не менее важное, пора коротко взглянуть на корпус.

Как я уже упоминал выше, я сделал корпус самостоятельно (с помощью Eagle) и распечатал его на своем 3D-принтере, поэтому мне пришлось постоянно следить за положением различных светодиодов.

В приложении вы можете найти файлы STL, если хотите их использовать.

Надеюсь, это руководство поможет вам при создании собственного «Wort-Uhr». Если остались «открытые вопросы», не стесняйтесь обращаться ко мне. Лучше всего прокомментировать ниже, потому что вы можете быть не единственным, у кого есть конкретный вопрос.