Съдържание:

Най -добрият двоичен часовник: 12 стъпки (със снимки)
Най -добрият двоичен часовник: 12 стъпки (със снимки)

Видео: Най -добрият двоичен часовник: 12 стъпки (със снимки)

Видео: Най -добрият двоичен часовник: 12 стъпки (със снимки)
Видео: Аз където и да отида 2024, Юли
Anonim
Най -добрият двоичен часовник
Най -добрият двоичен часовник
Най -добрият двоичен часовник
Най -добрият двоичен часовник
Най -добрият двоичен часовник
Най -добрият двоичен часовник

Наскоро се запознах с концепцията за двоични часовници и започнах да правя някои изследвания, за да видя дали мога да си направя такъв за себе си. Не успях обаче да намеря съществуващ дизайн, който да бъде едновременно функционален и стилен. И така, реших да създам собствен дизайн изцяло от нулата!

Консумативи

Всички файлове за този проект:

Библиотеките за кода на Arduino могат да бъдат изтеглени от GitHub тук:

M41T62 RTC библиотека

Библиотека FastLED

Библиотека на LowPower

Стъпка 1: Идеята

Наскоро попаднах на следния видеоклип:

Направи си сам двоичен часовник за китка

Видеоклипът по -горе показва основен домашен двоичен часовник. Нямах представа, че такова нещо съществува, но след като направих допълнително проучване на темата за бинарните часовници, бързо разбрах, че има много различни дизайни! Исках да си направя такъв за себе си, но не успях да намеря дизайн, който да ми хареса. Бинарните часовници, които открих, нямаха много функции и не изглеждаха особено добре. И така, реших да проектирам своя собствена напълно от нулата!

Първата стъпка беше установяването на критериите за моя дизайн. Ето какво измислих:

  • Двоичен RGB интерфейс
  • Показване на времето (с много точно отчитане на времето)
  • Показване на дата
  • Хронометър функционалност
  • Функционалност на алармата
  • Живот на батерията най -малко 2 седмици
  • USB зареждане
  • Софтуерът лесно се персонализира от потребителя
  • Чист и прост дизайн

Тези критерии станаха основа за целия проект. Следващата стъпка беше да разбера как искам часовникът да функционира!

Стъпка 2: Някаква теория за двоичен часовник

Някаква теория за двоичен часовник
Някаква теория за двоичен часовник

Планът беше прост. Двоичният часовник ще работи точно като обикновен часовник, с изключение на това, че интерфейсът ще бъде двоичен, по -специално BCD (двоично кодиран десетичен). BCD е вид двоично кодиране, при което всяка десетична цифра е представена с фиксиран брой битове. Имам нужда от 4 бита, за да мога да представя цифра от 0-9. И за стандарт

hh: мм

формат на времето, имам нужда от 4 от тези цифри. Това означава, че се нуждая от общо 16 бита, които ще бъдат представени от 16 светодиода.

Четенето на времето в BCD е доста лесно, след като свикнете. Редът в долната част на часовника представлява най -малко значимия бит (1), а редът отгоре е най -значимият бит (8). Всяка колона представлява цифра в

hh: мм

времеви формат. Ако светодиодът е включен, отчитате тази стойност. Ако светодиодът е изключен, игнорирате го.

За да прочетете първата цифра, просто сумирайте всички активирани светодиоди съответните стойности в първата (най -лявата) колона. Направете същото за другите цифри отляво надясно. Сега прочетохте часа в BCD!

Този принцип ще бъде същият за останалите функции на часовника. Използването на RGB светодиоди ще помогне да се разграничат различните функции и режими, като се използват различни цветове. Цветовете се избират от потребителя и лесно могат да бъдат коригирани според цветовата палитра, която предпочита. Това позволява на потребителя лесно да се придвижва през функциите, без да се обърква.

Следващата стъпка беше създаването на блокова диаграма!

Стъпка 3: Пристъпване към работа

Пристъпване към работа
Пристъпване към работа

Както всеки типичен електронен проект, блоковата диаграма е съществена част в ранния етап на проектиране. Използвайки критериите, успях да съставя блоковата диаграма по -горе. Всеки блок в диаграмата представлява функция във веригата и стрелките показват връзката на функциите. Блоковата диаграма в своята цялост дава добър преглед на това как ще работи схемата.

Следващата стъпка беше да започнете да вземате решения за отделни компоненти за всеки блок в блоковата диаграма!

Стъпка 4: Избор на компоненти

Оказа се, че има доста компоненти в тази схема. По -долу съм избрал някои от най -важните, заедно с обяснение защо съм ги избрал.

Светодиодите

За бинарния интерфейс изборът беше сравнително прав. Знаех, че искам да използвам светодиоди за дисплея и разбрах, че се нуждая от 16 от тях (в 4 × 4 решетка), за да покажа възможно най -много информация. По време на изследванията ми за перфектния светодиод, APA102 продължаваше да се появява. Това е много малък (2 мм х 2 мм) адресируем светодиод с широка гама от цветове и е сравнително евтин. Въпреки че никога преди не съм работил с тях, те изглеждаха идеално подходящи за този проект, затова реших да ги използвам.

Микроконтролерът

Изборът на микроконтролер също беше доста прост. Имам много опит с използването на Atmega328P-AU в самостоятелни приложения и бях много запознат с неговите функции. Това е същият микроконтролер, който се използва в дъските на Arduino Nano. Знам, че вероятно има по -евтин микроконтролер, който бих могъл да използвам, но знанието, че Atmega328 ще има пълна поддръжка за всички библиотеки на Arduino, беше голям фактор при избора му за този проект.

RTC (часовник в реално време)

Основното изискване за RTC беше точността. Знаех, че часовникът няма да има никаква интернет връзка и по този начин няма да може да се калибрира отново чрез интернет връзка, потребителят ще трябва да го калибрира ръчно. Затова исках да направя отчитането на времето възможно най -точно. M41T62 RTC има една от най -високите точности, които мога да намеря (± 2ppm, което е еквивалентно на ± 5 секунди на месец). Комбинирането на висока точност със съвместимостта с I2C и ултра ниска консумация на ток направи този RTC добър избор за този проект.

DC-DC усилващ преобразувател

Изборът на DC-DC усилващ преобразувател IC беше направен просто като се разгледа веригата и се разбере какви напрежения и токове са необходими. Пускането на веригата на ниско напрежение би намалило консумацията на ток, но не успях да стигна под 4.5V (минималното напрежение на микроконтролера при тактова честота 16MHz) и не можех да надхвърля 4.5V (максималното напрежение на RTC). Това означаваше, че трябваше да пусна веригата точно на 4.5V, за да управлявам компонентите в рамките на препоръчаните от тях спецификации. Изчислих, че максималният ток на веригата няма да надвишава 250mA. И така, започнах да търся усилващ преобразувател, който да отговаря на изискванията, и бързо се натъкнах на TPS61220. TPS61220 изискваше минимални външни компоненти, беше сравнително евтин и успя да задоволи изискванията за ток и напрежение.

Батерията

Основното изискване за батерията беше размерът. Батерията трябваше да е достатъчно малка, за да може да се побере в корпуса на часовника, без да изглежда обемиста. Реших, че батерията не може да надвишава 20 мм × 35 мм × 10 мм. С тези ограничения на размера и текущото изискване от 250mA моят избор на батерии беше ограничен до LiPo батерии. Намерих батерия "Turnigy nano-tech 300mAh 1S" на Hobbyking, която реших да използвам.

IC за зареждане

Нямаше специално изискване към контролера за зареждане, освен че трябваше да е съвместим с 1S LiPo батерия. Открих MCP73831T, който е напълно интегриран контролер за зареждане, предназначен за приложения с едноклетъчно зареждане. Една от неговите характеристики е възможността за регулиране на тока на зареждане чрез външен резистор, който намерих за доста полезен в това приложение.

LiPo защита

Исках да включа мониторинг на напрежение и ток, за да предпазя батерията от всякакви опасни условия на презареждане и преразреждане. Имаше ограничено количество интегрални схеми, които предоставяха такива функции и една от по -евтините опции беше IC BQ29700. Изискваше минимално количество външни компоненти и включваше цялата необходима защита за едноклетъчна LiPo батерия.

Сега, когато компонентите бяха избрани, беше време да се създаде схемата!

Стъпка 5: Схемата

Схемата
Схемата

Използвайки Altium Designer, успях да събера горната схема, използвайки препоръки от всеки лист с данни на компонента. Схемата е разделена на различни блокове, за да стане по -четлива. Добавих и някои бележки с важна информация в случай, че някой друг би искал да пресъздаде този дизайн.

Следващата стъпка беше поставянето на схемата на печатна платка!

Стъпка 6: Разположение на печатни платки

Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки
Разположение на печатни платки

Оформлението на печатни платки се оказа най -предизвикателната част от този проект. Избрах да използвам двуслойна печатна платка, за да сведем производствените разходи за печатни платки до минимум. Избрах да използвам стандартен размер на часовника от 36 мм, тъй като изглеждаше, че доста добре пасва на светодиодите. Добавих някои отвори за винтове 1 мм, за да закрепя печатната платка в корпуса на часовника. Целта беше да се поддържа чист и добре изглеждащ дизайн, като се поставят всички компоненти (с изключение на светодиодите, разбира се) върху долния слой. Исках също да използвам абсолютния минимален брой виаси, за да избегна видими виаси върху горния слой. Това означаваше, че трябваше да насочвам всички следи към един слой, като същевременно се уверя, че „шумните“части на веригата са далеч от чувствителните следи от сигнали. Също така се уверих, че всички следи са възможно най -кратки, поставяйки байпасните кондензатори близо до товара, използвайки по -дебели следи за компоненти с висока мощност и по друг начин спазвайки всички общи добри практики при проектирането на печатни платки. Маршрутизацията отне доста време, но мисля, че се оказа много добре.

Следващата стъпка беше създаването на 3D модел за корпуса на часовника!

Стъпка 7: 3D дизайн

3D дизайн
3D дизайн
3D дизайн
3D дизайн
3D дизайн
3D дизайн

Корпусът на часовника е проектиран по много конвенционален, класически дизайн на часовника, използващ Fusion 360. Използвах стандартно разстояние 18 мм за каишката на часовника, за да направя часовника съвместим с голямо разнообразие от други каишки. Изрезът за печатната платка е проектиран с 0, 4 мм по-голям от самата печатна платка, за да се побере за всякакви производствени неточности. Включих няколко винтови стойки за монтиране на печатната платка и малък ръб, върху който може да се постави печатната платка. Погрижих се да вдлъбна печатната платка на милиметър от горната част, за да избегна острите ръбове на светодиодите да се забият по дрехите. Височината на корпуса се определя единствено от дебелината на батерията. Останалата част от корпуса е проектирана просто да изглежда добре със заоблени ръбове и полирани ъгли. Трябваше да поддържам дизайнерския 3D-печат приятелски настроен, за да мога да го отпечатвам 3D у дома без никакви помощни материали.

Сега, когато хардуерът приключи, беше време да започнем работа по софтуера!

Стъпка 8: Кодът

Кодът
Кодът

Започнах кода, като включих всички необходими библиотеки. Това включва библиотеката за комуникация с RTC и за управление на светодиодите. След това създадох отделни функции за всеки от режимите. Когато потребителят превключи режимите чрез натискане на бутон, програмата извиква функцията, съответстваща на този режим. Ако потребителят не натисне бутон в рамките на определен период от време, часовникът ще заспи.

Режимът на заспиване се обозначава с избледняване на всички светодиоди, докато не изгаснат напълно. Използването на режим на заспиване значително увеличава живота на батерията и поддържа светодиодите изключени, когато не се използват. Потребителят може да събуди часовника, като натисне горния бутон. Когато се събуди, часовникът ще провери нивото на батерията, за да се увери, че не изисква зареждане. Ако е необходимо зареждане, светодиодите ще мигат червено няколко пъти, преди да покажат часа. Ако батерията е под критично ниво, тя изобщо няма да се включи.

През останалото време програмирането отиваше да направи другите режими възможно най -интуитивни. Реших, че един и същ бутон, отговарящ за една и съща функционалност във всички режими, би бил най -интуитивният. След известно тестване, това е конфигурацията на бутоните, която измислих:

  • Натискане на горния бутон: Събуждане / Цикъл между режимите „Време на показване“, „Дата на показване“, „Хронометър“и „Аларма“.
  • Задържане на горния бутон: Въведете режим „Задаване на час“, „Задаване на дата“, „Стартиране на хронометър“или „Задаване на аларма“.
  • Натискане на долния бутон: Увеличете яркостта.
  • Задържане на долния бутон: Влезте в режим „Избор на цвят“.

Долният бутон винаги е отговорен за настройките на яркостта и цвета, независимо от режима, в който се намирате. Когато потребителят влезе в режим "Избор на цвят", светодиодите започват да преминават през всички възможни RGB цветове. Потребителят може да постави на пауза анимацията и да избере цвета, който предпочита за този конкретен режим (Време на показване в червено, Дата на показване в синьо и т.н.). Цветовете са предназначени за лесно персонализиране от потребителя, за да им помогне да разграничат различните режими.

Сега, когато кодът приключи, беше време да го качите в микроконтролера!

Стъпка 9: Програмиране

Програмиране
Програмиране

Беше почти време за запояване и сглобяване, но преди това трябваше да програмирам микроконтролера. Следвах този урок

Запишете буутлоудъра на ATmega328P-AU SMD

за това как да запишете зареждащо устройство и да програмирате микроконтролера, използвайки обикновен Arduino Uno като програмист.

Първата стъпка беше да превърнете Arduino Uno в ISP, като качите примерния код „ArduinoISP“. Използвах макет заедно с гнездо за програмиране и свързах схемата от урока. След това успях да запиша буутлоудъра към микроконтролера, като просто натисна "Burn Bootloader" в Arduino IDE.

След като микроконтролерът имаше буутлоудър, просто премахнах съществуващия микроконтролер от Arduino Uno и използвах платката Arduino Uno като USB към сериен адаптер, за да кача кода в микроконтролера в сокета за програмиране. След като качването приключи, можех да започна процеса на запояване.

Следващата стъпка беше събирането на всички компоненти и запояването им заедно!

Стъпка 10: Запояване

Запояване
Запояване
Запояване
Запояване
Запояване
Запояване
Запояване
Запояване

Процесът на запояване беше разделен на две части. Първо трябваше да се запои долният слой, а след това и горният слой.

Закрепих платката на часовника между няколко прототипни платки, използвайки лента. Това гарантира, че платката не се движи по време на запояване, което е много важно. След това поставих шаблона за запояване върху печатната платка и използвах обилно количество паста за запояване, за да покрия всички подложки за запояване. Продължих да използвам тънка пинсета, за да поставя всички компоненти на съответните им подложки. След това използвах топлинен пистолет, за да препая всички компоненти на място.

Когато долният слой беше запоен, му направих бърз визуален оглед, за да се уверя, че запояването е успешно. След това обърнах платката и повторих процеса на запояване от другата страна, този път с всички светодиоди. Беше много важно да не се прегрява дъската при запояване на горния слой, тъй като всички компоненти отдолу са изложени на риск от падане. За щастие, всички компоненти останаха на място и след запояване на бутоните на място с обикновен поялник, печатната платка беше завършена!

Време беше за окончателното сглобяване!

Стъпка 11: Монтаж

Монтаж
Монтаж

Сглобяването беше много просто. Свързах батерията към печатната платка и поставих батерията и печатната платка в кутията с 3D печат. Продължих да завинтвам четирите винта в монтажните отвори във всеки ъгъл на печатната платка. След това прикрепих каишките за часовници с помощта на 18 мм пружинни пръти и часовникът беше завършен!

Стъпка 12: Заключение и подобрения

Заключение и подобрения
Заключение и подобрения
Заключение и подобрения
Заключение и подобрения

Часовникът работи според очакванията и съм много доволен от това как се получи. Досега не съм имал проблеми с него и батерията остава почти напълно заредена след цяла седмица употреба.

Може да добавя други функции към часовника в бъдеще. Тъй като USB портът е свързан към микроконтролера, фърмуерът може да бъде актуализиран по всяко време с нови функции. Засега обаче ще продължа да използвам тази версия на часовника и ще видя как издържа след продължителна употреба.

Ако имате някакви мисли, коментари или въпроси относно този проект, моля, оставете ги по -долу. Можете също да ги изпратите на [email protected].

Конкурс за часовници
Конкурс за часовници
Конкурс за часовници
Конкурс за часовници

Първа награда в конкурса за часовници

Препоръчано: