Съдържание:
- Стъпка 1: Схемата
- Стъпка 2: Оформление
- Стъпка 3: „Логика“на „Wort-Uhr“
- Стъпка 4: Кодови фрагменти
- Стъпка 5: Жилището
Видео: Wort-Uhr: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:49
Здравейте заедно!
Това ще бъде първият ми инструктаж и ако имате идеи как да го подобрите или да направите по -лесно разбиране, моля не се колебайте да се свържете с мен!
Е, отначало този вид „часовник“не е моя идея! Виждал съм много в интернет и те могат да бъдат поръчани само за няколко долара в различни уеб магазини. Но аз не исках да си купувам такъв, исках да направя свой собствен, за да науча и да разбера как работи.
Една дума за "негермански" членове … Съжалявам за факта, че това е просто "Германски Wort Uhr". Може лесно да се преобразува в английски или друг език, но тъй като съм немски, го направих на моя език. Ако имате нужда от поддръжка за вашия език, свържете се с мен и аз ще се опитам да ви помогна.
Така че нека започнем…
Стъпка 1: Схемата
Схемата е права и ако картината е лоша за четене, има и PDF файл.
Нека започнем от долния ляв ъгъл. Има просто захранване, използващо LM7805 за генериране на стабилен 5V изход за PIC, регистрите за смяна (74HC164) и чипа в реално време DS3231. Всички светодиоди също се доставят от тази част. D22 в десния край е само за индикация на захранването и може лесно да бъде оставен отделен, ако не се иска.
Можете да използвате всяко DC захранване за часовника с по -малко от 40V, но след това трябва да изберете подходящата стойност за C7. Той трябва да има номинално напрежение поне двойно на входното напрежение и не забравяйте, че създавате топлина в LM7805, така че трябва да се опитате да поддържате входното напрежение възможно най -ниско, защото всичко останало е просто загуба на енергия. Най -подходящо е нещо между 9V и 12V DC.
Не се притеснявайте за полярността на вашето захранване … P-каналът MOSFET (Q1) действа като защита срещу фалшива полярност и часовникът просто няма да работи и няма да получи повреди. Можете да проверите това на "захранващия" светодиод D22, ако е монтиран.
От дясната страна на схемата са серийно регистрираните паралелни изходни регистри. Реших да ги използвам, защото не исках да използвам огромен PIC с много I/O-портове. Исках да използвам по -малък и все още имах 16F1829 у дома, така че изборът вече беше ясен. Данните (IN_1, IN_2 и IN_3) се предоставят от PIC (вижте кодовия раздел по -долу) и от REGISTER_CLK също. За простота в моя код и оформление на печатни платки използвах две от 74HC164 за часовете и последната за "логиката".
В горния ляв ъгъл е PIC и всички необходими части. Използвах вътрешния часовник, така че не е необходим осцилатор. Само три резистора за SCL, SDA и MCLR. За това, че използвах 32kHz като индикация за "точни секунди" няма нужда от доста стабилна и точна честота за PIC.
В средата има DS3231 с минимум външни части. Всъщност използвах само входовете SDA и SCL за комуникация през I²C и изхода 32kHZ като външна тактова референция за Timer1 на PIC16F1829. За този изход в листа с данни пише, че е необходим външен резистор за издърпване. Другите изходи, които не използвах в този проект и ги оставих без връзка.
Също така в средата, светодиодите … Както можете да прочетете в схемата, използвах сини светодиоди (тези с прозрачен корпус) и стойност на резистор 1k Ohms. Ако възнамерявате да направите този проект сами, трябва да изберете стойностите на тези резистори според цвета и вида на светодиодите, които сте избрали. Имайте предвид и къде искате да настроите часовника. Моят един стои в спалнята ми, затова не исках светодиодите да са твърде ярки и избрах по -голяма стойност за резисторите. Направете няколко опита на макет със светодиоди и стойности на резистора, преди да ги монтирате на печатната платка.
Стъпка 2: Оформление
След завършване на схемата е време да насочите печатната платка. За това използвах KiCAD (също и за схеми). Няма какво много да се каже, просто насочете линиите.
Тъй като сам отпечатах корпуса на часовника, беше много важно къде се намират светодиодите на горния слой. Сложих само светодиодите и резисторите на горния слой, защото поръчах моята печатна платка частично монтирана (всички SMD части) и тъй като избраната от мен фирма поставя само части от едната страна, а не двустранно.
Можете да видите поставянето в двете триизмерни снимки, които направих от KiCAD.
Ако се интересувате … Възможно е да експортирате KiCAD PCB в Eagle и тогава е доста лесно да конструирате корпуса, защото имате справка от печатната платка.
Стъпка 3: „Логика“на „Wort-Uhr“
Най -голямата част от този проект беше кодът за PIC …
Отначало намирането на „логиката“на говоримото време на немски език и превеждането му в код.
За съжаление не беше възможно да качите Excel файла директно, но се надявам PDF експортирането да бъде достатъчно четено за вас. Ако не, моля, свържете се с мен и ще ви изпратя оригиналния файл на Excel. В PDF можете да видите как съм настроил логиката на часовника си. Можете да видите как преминах през различните срокове и как е изписан. Изчислението вътре в кода (главно ако-else изрази) може да се извлече от информацията от дясната страна на таблицата. Една част е за минути, а друга за часове.
Както можете да видите, това не е магия и може лесно да се кодира в C. Най -сложната точка в логиката е как да се борави с часа, както можете да видите във файла, че само в началото на час се показва действителният час. В немския (може би това може да е само специфично за Бавария) „следващият час“се използва доста рано.
За кодиране използвах MPLABX като моя IDE по избор.
Стъпка 4: Кодови фрагменти
Няма да публикувам кода си тук, но ако възнамерявате да напишете свой собствен код, ще ви дам някои подсказки какво съм „препънал“по време на разработката …
Първо попълването на "регистър":
Ако прехвърляте нови данни в регистрите твърде често и в твърде кратки цикли, направих опит, че светодиодите започнаха да мигат. Така че направих някои "блокиращи флагове", че само на всяка минута се прави ново "изчисление" на разговореното време и се прави актуализация на регистъра.
Кодът за попълване на регистрите е на снимката по -горе. Както можете да видите, аз попълвам всичките 3 регистри паралелно, така че се нуждая от 3 пина на PIC за данни и 1 пин за CLK. 74HC164 поема нови данни за преход в CLK линия от 0 до 1.
Останалата част от кода е предимно зависима от PIC, логиката на "времето за разговор" и обработката на комуникацията и бутоните. Комуникацията се осигурява главно от Microchip MPLABX, защото използвах MSSP модула.
Добра идея е да прочетете листа с данни на DS3231, защото данните се съхраняват вътре като BCD, така че може да се наложи да "трансформирате" това във вашия код. Що се отнася до мен, аз съм човек, който се „учи чрез правене“и ЕСТЕСТВЕНО не прочетох листа с данни… Костваше ми много нерви и часове.
Както може би сте забелязали, има два начина за „следене на времето“с тази реализация.
- Можете да прочетете действителното време извън DS3231
- Можете да "броите секунди" в самия PIC и просто да синхронизирате времето с DS3231 от време на време
От вас зависи и двата начина са практични и директни. Използвах първата опция и само синхронизирано време при настройка на времето чрез бутоните (време за писане към DS3231) или на всеки 24 часа (време за четене от DS3231), защото исках сам да внедря повече логика. Също така си превключвам часовника през нощта (23:00 до 05:00), така че според мен беше малко по -лесно.
Стъпка 5: Жилището
Не на последно място е време да разгледаме накратко корпуса.
Както споменах по-горе, аз направих корпуса сам (използвайки Eagle) и ги отпечатах с моя 3D принтер, така че се наложи да следя позициите на различните светодиоди.
Прикачени можете да намерите STL файловете, ако искате да ги използвате.
Надявам се тази инструкция да ви помогне, когато изграждате свой собствен "Wort-Uhr". Ако все още има „отворени въпроси“, не се колебайте да се свържете с мен. Най -добрият начин да коментирате по -долу, защото може би не сте единственият, който има конкретен въпрос.
Препоръчано:
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: 7 стъпки
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: Понякога вибрациите са причина за сериозни проблеми в много приложения. От валове и лагери на машината до работа на твърдия диск, вибрациите причиняват повреда на машината, ранна подмяна, ниска производителност и нанасят сериозен удар върху точността. Мониторинг
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: 3 стъпки
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: КУПЕТЕ (щракнете върху теста, за да закупите/посетете уеб страницата) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH използва се за програмиране на STM микроконтролери
Как да направите 4G LTE двойна BiQuade антена Лесни стъпки: 3 стъпки
Как да направя 4G LTE двойна BiQuade антена лесни стъпки: През повечето време, с което се сблъсквах, нямам добра сила на сигнала за ежедневните ми работи. Така. Търся и опитвам различни видове антени, но не работи. След загубено време намерих антена, която се надявам да направя и изпробвам, защото тя не градивен принцип
Дизайн на играта с бързо движение в 5 стъпки: 5 стъпки
Дизайн на игра с Flick в 5 стъпки: Flick е наистина прост начин да направите игра, особено нещо като пъзел, визуален роман или приключенска игра
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки
Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати