Двоичен часовник. Часовник на AVR микроконтролер с DS1307

Този цифров ръчен часовник показва времето в двоична система, защото изисква по-малко светодиодиза показване на времето в сравнение с конвенционалните часовници с цифров индикатор, а оригиналността ще бъде на същото ниво. Обикновеният кристал 32C417 при 32,786 kHz беше използван за работа на PIC16F527 в режим на ниска мощност и за подобряване на точността на синхронизирането. За носене на китката е използван подходящ колан от плат.

Тук е използван микроконтролерът PIC16F527, защото има най-малкия наличен пакет. Часовникът се захранва от батерии CR2032 в специален държач. Тази батерия има приличен капацитет, въпреки че е само с размер на монета. За да се намали площта на печатната платка и проектните разходи, беше избран един охлаждащ резистор за целия SMD LED блок.

Можете да увеличите изображението, като го запазите на вашия компютър. Дизайнът на схемата тук е базиран на стандартна двуслойна печатна платка.

И стандартна 20 mm каишка пасва точно вътре в изрезите.

Алгоритъм на работа на часовника

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

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

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

Ето например един от най-лесните за разбиране и в същото време изключително стилни бинарни часовници.

Черен камък

Къде да купя: inter-time.ru
Цена: 1850 рубли

На пръв поглед циферблатът им предизвиква асоциации с филма "Матрицата",това обаче е само първо впечатление. Показани са четири вертикални колони с числа от 0 до 9: левите две са часове, а дясната двойка са минути. Така времето се чете отдясно наляво. На снимката, както е лесно да се определи, часовникът показва 5:27. Допълнителните икони в горната част отразяват цялата друга информация: слънцето съответства на деня и датата, а доларът означава, че дисплеят показва годината. Чашата служи като индикатор за настъпването на втората половина на деня. За да видите часа, просто натиснете бутон. Това пести енергия на батерията.

Но в тези двоични часовници няма числа - трябва сами да преброите светещите точки в колоните.

Модна звезда

Къде да купя: inter-time.ru
Цена: 1600 рубли

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

Може да няма много светещи точки. Например, ако всеки от тях отговаря за собствената си група числа.

Футурама

Къде да купя: inter-time.ru
Цена: 1700 рубли

Индикаторите могат да се поставят навсякъде по циферблата. Например - дъги. Ефективно и удобно.

Flash Metal

Къде да купя: inter-time.ru
Цена: 1600 рубли

Въображението на дизайнерите на бинарни часовници не познава граници – този часовник се отличава със силуета на най-популярния герой на Disney.

Стил Мики

Къде да купя: inter-time.ru
Цена: 1200 рубли

Но ето някои от най-забележителните и функционални двоични файлове LED часовникна пазара днес. Оригиналното и в същото време ясно показване на информация ги прави много удобни за ежедневна употреба.

Делта V2

Къде да купя: leddirect.ru
Цена: 1700 рубли

Между другото, в този магазин има много много интересни двоични часовници, които ще се харесат на най-претенциозните ценители на двоичното време.

Е, тези, които са постигнали истинско майсторство в определянето на времето с помощта на двоични часовници, ще бъдат особено заинтересовани от часовника

Къде да купя: inter-time.ru
Цена: 1550 рубли

За „непосветените“ ще бъде много трудно да разберат колко часа показва такъв часовник. За това има отличен и ясен препис.

Определянето на времето от тях, знаейки този прост принцип, не е никак трудно.

А часовниците изглеждат особено ефектно огледална повърхностдисплей, под който има решетка с 27 диода.

Къде да купя: inter-time.ru
Цена: 1400 рубли

Часовете се броят по вертикални линии, минутите по хоризонтални линии.

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

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

BCD режим

Декодиране

Като начало разгледайте внимателно двоичен часовник. Дисплеят на часовника има три колони, всяка от които има два реда светлини.

Първата колона показва часовете, втората съответно минутите, а третата ще ви каже колко секунди са изминали. Всички колони имат еднаква структура.

Първият ред светлини в колоната, отразяваща часовете, показва първата цифра, десетките, и втората, втората цифра, единиците. Всеки ред съдържа от две до четири светлини, всяка от които предполага сила на две. Така че най-ниската светлина представлява 2 на степен „0“. Тази стойност се приема като единица.

Втората светлина представлява 2 на степен 1, което се приема за две.

Третата светлина символизира 2 на степен "2", т.е. означава четири. Е, четвъртата светлина показва 2 на трета степен, което означава осем (вижте изображението).

Сега, когато имате представа как работи двоичният часовник, опитайте се да определите колко часа показва двоичният часовник в изображение. Виждате, че в първия ред на колоната, отразяваща часовете, свети една лампичка. Спомняме си, че първата светлина показва 2 на степен „0“ и се чете като единица. По-нататък във втората колона не свети нито една лампичка, така че се чете като нула. Въз основа на получените данни можем да заключим, че часовникът на изображението показва десет часа. Само не забравяйте, че часовникът показва часа в дневен режим, така че ако не ви е удобно, извадете дванадесет, когато часовникът показва тринадесет часа или повече. Например, ако часовникът показва петнадесет, тогава можете спокойно да приемете, че е три часа.

По същия начин се опитайте да определите колко минути показва двоичният часовник на представеното изображение. Така че в първия ред на колоната, отразяваща минутите, виждате, че две светлини светят. Спомняйки си правилата за определяне на времето с помощта на двоични часовници, можем да заключим, че първата колона показва тройка. Във втория ред на тази колона можете да видите, че три светлини светят. Спомняйки си правомощията на две, събираме всички показатели и получаваме числото седем (вижте изображението). Сравнявайки първата и втората цифра, можем да заключим, че колоната с минути показва стойността 37. Нека си спомним индикатора на часовника и получаваме, че часовникът показва времето 10:37.

Декодирането на индикаторите за секунди понякога изглежда доста трудно, тъй като секундите постоянно променят стойностите си. Ще се научите да определяте стойността на колоната със секунди, когато определянето на индикаторите на двоичния часовник достигне автоматичност. И така, в представеното изображение виждате, че в първия ред на колоната, отразяваща вторите стойности, свети горната трета светлина. Спомняйки си степените на две, можем да заключим, че тази светлина показва числото 4. Във втория ред на същата колона светят четвъртата светлина и първата, т.е. най-ниската. Следвайки правилата за определяне на времето с помощта на двоични часовници, можем да заключим, че горната светлина означава числото 8, а долната, съответно, едно. Събираме двете числа и получаваме девет.

Резултат

Сега сравняваме стойността на първия и втория ред на колоната и получаваме стойността 49. Така часовникът на изображението показва времето 10:37:49.

Истински двоичен (двоичен) режим.

Индикатори за декодиране

Методът за дешифриране на двоични часовници, които имат само два реда, е абсолютно същият като в двоичен десетичен режим. Има обаче едно предупреждение: сега има само един ред във всеки ред. Светлините в горната колона съответстват на принципа на степените на две: 1, 2, 4, 8. Но в долната колона можете да забележите не четири светлини, а шест. Не се тревожете, защото принципът е спазен във втората колона, добавени са само няколко стойности: 1, 2, 4, 8, 16, 32. Не е необходимо да добавяте повече от шест светлини, т.к. следващата стойност ще бъде 59, която може да бъде написана така, че да свети първа, втора, четвърта, пета и шеста светлина.

Определете часове

Сега опитайте да определите колко часа показва часовникът на изображението. Виждате, че първата и втората лампи светят. Знаейки степените на две в двоичните часовници, можем да определим, че първата светлина означава числото едно, а втората съответно две. Нека съберем двата индикатора и да получим числото „3“.

На показаното изображение часовникът има два реда светлини, но трябва да запомните, че може да има и часовници с колони. Принципът на определяне на времето с помощта на такъв часовник ще бъде същият като в този случай. Основното нещо, което трябва да запомните, е двоичната бройна система, която включва само две цифри за криптиране, „0“ и „1“. Така че индикаторите, които току-що дефинирахте, ще изглеждат като 0011 в двоична система, което също ще бъде равно на стойността „3“.

Определете минути

Използвайки описаната техника, можете да видите от часовника на изображението, че първата, четвъртата и петата светлина горят. В двоичната система ще изглежда като 011001. Спомняйки си правомощията на две, можем да заключим, че първата светлина показва „1“, четвъртата „8“, а петата съответно „16“. Нека съберем всички показатели и да получим стойността „25“.

Определете секунди

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

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

След като исках да сглобя бинарен часовник, така и не намерих приемлив готов дизайн в Интернет. Повечето часовници имаха сериозен недостатък - когато захранването беше изключено, настройките за време се губеха. За късмет, малко преди това, започнах да овладявам езика C и микроконтролерите AVR. Така че беше решено да се подсилят придобитите знания с практически опит и в същото време да се преоткрие колелото. Също така много обичам зелените мигащи светодиоди.



Схема



RTC

Проблемът със запазването на текущите настройки е идеално решен от часовника за реално време (RTC). Изборът ми падна върху чипа DS1307.

Според производителя, ако захранването е изключено, може да запази часа и датата за 10 години, като консумира енергията само на литиева батерия CR2032. Тоест, часовникът продължава да тиктака, поддържайки приемлива точност. Времето не се заблуждава, като отново включим часовника, получаваме реално времена циферблата, а не часа в момента на изключване. Микросхемата комуникира с микроконтролера чрез "квадратната шина" I 2 C, отчитайки точното време и приемайки новите му стойности.

Сърцето на устройството

Изборът на микроконтролера Mega32a е продиктуван от следните фактори:
Има достатъчно портове, за да се избегне използването на динамичен дисплей, което не ми харесва, главно защото дразни очите (мига с висока честотавъв всеки случай неестествено). Запознах се с него, докато си играех с PIC микроконтролери на езика Proton PICBasic и ако е възможно да не използвам динамичен дисплей, бих предпочел да го направя.
Сравнително ниска цена от 130 рубли (Mega16a, например, струва същото), а с отстъпка обикновено е 104 рубли.
Прозрачен пакет QPF-44, с удобен щифт


Порт „A“ показва секунди, порт „B“ показва минути, а порт „C“ показва часове. Много е удобно, че можете да зададете времеви стойности, взети от DS1307, към портовете без никакви промени. Бутоните са свързани към порт „D“ (щифтове 3 – 7), щифтове 0 и 1 работят съответно като линия за часовник (SCL) и линия за серийни данни (SDA). RTC чипът е конфигуриран така, че да произвежда импулси с честота 1 херц на седмия си крак. Този крак е свързан към 3-тия щифт на порт „D“. Самият този порт е конфигуриран като вход, като за всеки случай са включени вътрешни издърпвания към захранващия плюс, дублирани с SMD резистори отвън. Такива действия напълно предпазват от всякакви изненади.

светодиоди


Избрах светодиоди в матов корпус с ниска светимост. Първо бяха тествани ярки диоди в прозрачен корпус, но дори при ток от 3 mA те светеха твърде ярко и неравномерно, което отново предизвика дискомфорт. При спад на напрежението на диода от 2 волта, захранващо напрежение от 5 волта и резистор от 1 kOhm, стойността на тока, протичащ през диода, ще бъде равна на (5 – 2)/1000 = 3 mA. Тази стойност е избрана емпирично и яркостта на сиянието е идеална за тъмна стая. Ако планирате да настроите часовника директно слънчева светлина, тогава стойността на резистора трябва да се намали до 200 ома, за по-ярка светлина (благодарение на капачката).

Бутони

На отделна дъска с бутони има „предпазител“ (ще ни предпази от случаен изстрел в главата), под формата на друг бутон Bt6. Часът може да се редактира, като първо го задържите.

Софтуер

Кодът е написан в среда CodeVisionAvr.
Програмата започва с настройването на периферните устройства на микроконтролера.
Конфигурирайте портовете (A,B,C – изход, D – вход)
За всеки случай е предвидена пауза от 300 ms, така че DS1307 да има време да „дойде на себе си“
Инициализиране на „квадратната шина“
Ние конфигурираме RTC чипа така, че да произвежда правоъгълни импулси всяка секунда на щифта SQW/OUT
Проверяваме дали бутонът CLR е натиснат. Ако да, тогава нулирайте всички стойности на 0
Разрешете глобалните прекъсвания
Да, няколко думи за тях. Използваме външни прекъсвания INT0 на PD2 при падащ фронт, т.е. всяка секунда програмата ще отиде до манипулатора на прекъсвания, в който четем стойностите на времето от DS1307 и ги показваме на светодиодните индикатори.
Влизаме в безкраен цикъл, където избираме бутоните
Ако бутонът е натиснат, добавете (извадете) час (минута) и изпратете новата стойност чрез I2C
В същото време проверяваме дали новите стойности на времето се вписват в диапазоните от 24 часа и 60 минути.

Печатна електронна платка

Дъската е изработена по технологията Great Cosmic Laser-Ironing върху едностранен текстолит. При направата на горната дъска е използвана обикновена хартия (неуспешен експеримент).


Има много разновидности на тази технология. Според мен този е най-добрият:
1. Изрежете парче PCB с необходимия размер.
2. Шлифоваме краищата, като се отървем от вредните грапавини.
3. Намажете бъдещата дъска с почистващ прах или паста за зъби и я изтъркайте с твърдата страна на гъбата до блясък.
4. Потопете нашето парче за няколко десетки секунди в слаб разтвор на топъл железен хлорид, докато се появи равномерна, матова, бордо-кафява повърхност. Когато се извади от разтвора, течността трябва напълно да намокри повърхността.
5. Измийте изпражненията и ги подсушете внимателно, без да докосвате повърхността с пръсти или нещо друго мазно. Незабавно го поставете върху чиста хартия с медната страна надолу, за да избегнете прах или косми.
6. Отпечатайте огледалната рисунка на тънка(!) гланцирана хартия, може да я изрежете от списание например. Не докосваме рисунката с ръце. Внимателно изрежете и поставете шаблона надолу.
7. Нанесете го върху подготвеното парче печатна платка, изгладете го през 1-2 слоя чиста хартия, като настроите ютията на максимална температура. 10 секунди трябва да са достатъчни, защото ако прекалите, пистите ще се сплескат и ще потекат една върху друга. Тонерът трябва напълно да прилепне към медта.
8. Накиснете под течаща вода топла вода, може да се остави във вода за 10 минути. Внимателно откъснете и изстържете хартията. За това ми помага стара четка за зъби. Отстранете останалите парчета хартия с игла. Тонерът остава върху печатната платка.
9. Загрейте силен разтвор на железен хлорид във водна баня, хвърлете нашата дъска в нея и пръскайте наоколо за няколко минути (според правилото на Ван Хоф, с повишаване на температурата с 10 градуса, скоростта на реакцията се увеличава 2 пъти. Медта изчезва точно пред очите ни. Можете да не се нагрявате, но ще трябва да изчакате по-дълго.
10. Веднага след като цялата ненужна мед изчезне, изключете газа, издърпайте (например с пинсети) дъската, опитайте се да измиете плочата и пръстите си от железен хлорид. Измиваме го от дъската с течаща вода.
11. Вземете ацетон (лакочистител) и избършете тонера. Можете да опитате да го изстържете с шкурка или гъба.
12. Пробийте дупки.
13. Да изневеряваме. Използвам LTI като поток и ви съветвам обаче, след калайдисване и запояване, този поток трябва да се измие (със същия ацетон и по-добре със смесалкохол-бензин 1:1), т.к LTIshka има някаква проводимост.
Всички работи трябва да се извършват в проветриво помещение, по време на
отделят се много вредни изпарения.


Платките са свързани една с друга с помощта на PBS и PLD конектори. Първите са свързани към горната платка с помощта на тънък монтажен проводник, който може да бъде изваден, например, от стар LPT кабел или адаптер.


Вторите са запоени за долната платка, а щифтовете, водещи към клавиатурата, са огънати (виж снимката).

Включени са печатни платки във формат SprintLayout5.0. Има няколко грешки в снимките, но вече са коригирани в прикачените файлове.

Фърмуер на микроконтролера

За целта е сглобен USBasp програматор, който се вижда на снимката по-горе. Това е доста хубаво нещо, лесно за използване и можете да го носите със себе си в джоба си през цялата година (надявам се, че никой няма да го направи). За да флашнете фърмуера на mega32, ще трябва да инсталирате джъмпера „Slow SCK“.
Предпазители:
Нисък предпазител = 0xC4
Висок предпазител = 0xD9
Нашият микроконтролер се тактува от вътрешен RC осцилатор с честота 8 MHz. Трябваше да деактивирам JTAG интерфейса на PortC, в противен случай някои светодиоди нямаше да светят.
Платката има ISP10 конектор за бързо флашване/дебъгване.

Преден панел

Изработен от алуминиева плоча с ширина 40 мм и дебелина 1,5 мм. Разполага с 18 пробити отвора с диаметър 5 мм и 4 отвора с диаметър 3 мм за закрепване на стелажи.


Първо, шаблонът беше отпечатан и залепен върху плочата. След това бяха пробити пилотни отвори с бормашина 1,5 mm, след което свредлата необходимите диаметриОсновните дупки бяха пробити.


Накрая плочата беше огъната, шлайфана с фина шкурка и полирана с GOI паста.
Шаблонът е включен с прикачените файлове като файл layout5.0

Червен светодиод в горния ляв ъгъл

Повтаря импулсите, генерирани от DS1307 на 7 крак, т.е. мига всяка секунда. Малък p-канален MOSFET транзистор работи в режим на превключване, като се отваря и затваря във времето с импулси. Първоначално исках да направя подсветка (като Ambilight), за която изградих CMOS инвертор на допълнителна двойка транзистори (за по-сигурно). Но не ми хареса. За един светодиод е достатъчен един транзистор, можете дори да използвате pnp тип bc857. Използвах irlml6402 или irlml6302 open-frame MOSFET.

файлове

Източници, шестнадесетичен файл, печатни платки, вериги, верига в proteus и предпазител са включени в тази снимка под формата на архив. Не се доверявам на съхранението на файлове, все още нямам собствен сървър, така че според моето аматьорско мнение най-надеждното място за съхранение ще бъде Habr. Потребителите на Windows имат достъп до файлове, като отворят запазено изображение с помощта на WinRar.
Да, това е снимката.

Видео

Заключение

Можете да използвате всеки източник на захранване, способен да достави 5 волта при ток от 70 mA. USB портът е доста подходящ за това. Основното е, че мощността е „чиста“ и не надвишава 5 волта. Захранвайки часовника от DC-DC преобразувател от чипа mc34063 с ниво на шум от ~ 50 mV, забелязах проблеми при настройването на времето. Сега устройството се захранва от превключвател, висящ наблизо. Извежда строго 5 волта. От добра страна, трябва да направите и безупречна защита под формата на диод и някакъв линеен стабилизатор за 3,3 - 5 волта.
Липсата на будилник и функции за показване на дата в часовника е напълно оправдана: и двете присъстват в телефона, което означава, че с голяма степен на вероятност никой няма да ги използва в двоичен часовник (благодарение на чичо Окам за това заключение) .

След като исках да сглобя бинарен часовник, така и не намерих приемлив готов дизайн в Интернет. Повечето часовници имаха сериозен недостатък - когато захранването беше изключено, настройките за време се губеха. За късмет, малко преди това, започнах да овладявам езика C и микроконтролерите AVR. Така че беше решено да се подсилят придобитите знания с практически опит и в същото време да се преоткрие колелото. Също така много обичам зелените мигащи светодиоди.



Схема



RTC

Проблемът със запазването на текущите настройки е идеално решен от часовника за реално време (RTC). Изборът ми падна върху чипа DS1307.

Според производителя, ако захранването е изключено, може да запази часа и датата за 10 години, като консумира енергията само на литиева батерия CR2032. Тоест, часовникът продължава да тиктака, поддържайки приемлива точност. Времето не се губи, когато отново включим часовника, получаваме реалното време на циферблата, а не времето в момента на изключването му. Микросхемата комуникира с микроконтролера чрез "квадратната шина" I 2 C, отчитайки точното време и приемайки новите му стойности.

Сърцето на устройството

Изборът на микроконтролера Mega32a е продиктуван от следните фактори:
Има достатъчно портове, за да избягвам използването на динамичен дисплей, което не ми харесва, главно защото дразни очите (мигането с висока честота е неестествено така или иначе). Запознах се с него, докато си играех с PIC микроконтролери на езика Proton PICBasic и ако е възможно да не използвам динамичен дисплей, бих предпочел да го направя.
Сравнително ниска цена от 130 рубли (Mega16a, например, струва същото), а с отстъпка обикновено е 104 рубли.
Прозрачен пакет QPF-44, с удобен щифт


Порт „A“ показва секунди, порт „B“ показва минути, а порт „C“ показва часове. Много е удобно, че можете да зададете времеви стойности, взети от DS1307, към портовете без никакви промени. Бутоните са свързани към порт „D“ (щифтове 3 – 7), щифтове 0 и 1 работят съответно като линия за часовник (SCL) и линия за серийни данни (SDA). RTC чипът е конфигуриран така, че да произвежда импулси с честота 1 херц на седмия си крак. Този крак е свързан към 3-тия щифт на порт „D“. Самият този порт е конфигуриран като вход, като за всеки случай са включени вътрешни издърпвания към захранващия плюс, дублирани с SMD резистори отвън. Такива действия напълно предпазват от всякакви изненади.

светодиоди


Избрах светодиоди в матов корпус с ниска светимост. Първо бяха тествани ярки диоди в прозрачен корпус, но дори при ток от 3 mA те светеха твърде ярко и неравномерно, което отново предизвика дискомфорт. При спад на напрежението на диода от 2 волта, захранващо напрежение от 5 волта и резистор от 1 kOhm, стойността на тока, протичащ през диода, ще бъде равна на (5 – 2)/1000 = 3 mA. Тази стойност е избрана емпирично и яркостта на сиянието е идеална за тъмна стая. Ако планирате да инсталирате часовника на пряка слънчева светлина, тогава стойността на резисторите трябва да бъде намалена до 200 ома, за по-ярка светлина (благодарение на Cap).

Бутони

На отделна дъска с бутони има „предпазител“ (ще ни предпази от случаен изстрел в главата), под формата на друг бутон Bt6. Часът може да се редактира, като първо го задържите.

Софтуер

Кодът е написан в среда CodeVisionAvr.
Програмата започва с настройването на периферните устройства на микроконтролера.
Конфигурирайте портовете (A,B,C – изход, D – вход)
За всеки случай е предвидена пауза от 300 ms, така че DS1307 да има време да „дойде на себе си“
Инициализиране на „квадратната шина“
Ние конфигурираме RTC чипа така, че да произвежда правоъгълни импулси всяка секунда на щифта SQW/OUT
Проверяваме дали бутонът CLR е натиснат. Ако да, тогава нулирайте всички стойности на 0
Разрешете глобалните прекъсвания
Да, няколко думи за тях. Използваме външни прекъсвания INT0 на PD2 при падащ фронт, т.е. всяка секунда програмата ще отиде до манипулатора на прекъсвания, в който четем стойностите на времето от DS1307 и ги показваме на светодиодните индикатори.
Влизаме в безкраен цикъл, където избираме бутоните
Ако бутонът е натиснат, добавете (извадете) час (минута) и изпратете новата стойност чрез I2C
В същото време проверяваме дали новите стойности на времето се вписват в диапазоните от 24 часа и 60 минути.

Печатна електронна платка

Дъската е изработена по технологията Great Cosmic Laser-Ironing върху едностранен текстолит. При направата на горната дъска е използвана обикновена хартия (неуспешен експеримент).


Има много разновидности на тази технология. Според мен този е най-добрият:
1. Изрежете парче PCB с необходимия размер.
2. Шлифоваме краищата, като се отървем от вредните грапавини.
3. Намажете бъдещата дъска с почистващ прах или паста за зъби и я изтъркайте с твърдата страна на гъбата до блясък.
4. Потопете нашето парче за няколко десетки секунди в слаб разтвор на топъл железен хлорид, докато се появи равномерна, матова, бордо-кафява повърхност. Когато се извади от разтвора, течността трябва напълно да намокри повърхността.
5. Измийте изпражненията и ги подсушете внимателно, без да докосвате повърхността с пръсти или нещо друго мазно. Незабавно го поставете върху чиста хартия с медната страна надолу, за да избегнете прах или косми.
6. Отпечатайте огледалната рисунка на тънка(!) гланцирана хартия, може да я изрежете от списание например. Не докосваме рисунката с ръце. Внимателно изрежете и поставете шаблона надолу.
7. Нанесете го върху подготвеното парче печатна платка, изгладете го през 1-2 слоя чиста хартия, като настроите ютията на максимална температура. 10 секунди трябва да са достатъчни, защото ако прекалите, пистите ще се сплескат и ще потекат една върху друга. Тонерът трябва напълно да прилепне към медта.
8. Накиснете под течаща топла вода, можете да го оставите във водата за 10 минути. Внимателно откъснете и изстържете хартията. За това ми помага стара четка за зъби. Отстранете останалите парчета хартия с игла. Тонерът остава върху печатната платка.
9. Загрейте силен разтвор на железен хлорид във водна баня, хвърлете нашата дъска в нея и пръскайте наоколо за няколко минути (според правилото на Ван Хоф, с повишаване на температурата с 10 градуса, скоростта на реакцията се увеличава 2 пъти. Медта изчезва точно пред очите ни. Можете да не се нагрявате, но ще трябва да изчакате по-дълго.
10. Веднага след като цялата ненужна мед изчезне, изключете газа, издърпайте (например с пинсети) дъската, опитайте се да измиете плочата и пръстите си от железен хлорид. Измиваме го от дъската с течаща вода.
11. Вземете ацетон (лакочистител) и избършете тонера. Можете да опитате да го изстържете с шкурка или гъба.
12. Пробийте дупки.
13. Да изневеряваме. Използвам LTI като флюс и ви съветвам обаче след калайдисване и запояване този флюс трябва да се измие (със същия ацетон или по-добре със смес от алкохол и бензин 1:1), т.к. LTIshka има някаква проводимост.
Всички работи трябва да се извършват в проветриво помещение, по време на
отделят се много вредни изпарения.


Платките са свързани една с друга с помощта на PBS и PLD конектори. Първите са свързани към горната платка с помощта на тънък монтажен проводник, който може да бъде изваден, например, от стар LPT кабел или адаптер.


Вторите са запоени за долната платка, а щифтовете, водещи към клавиатурата, са огънати (виж снимката).

Включени са печатни платки във формат SprintLayout5.0. Има няколко грешки в снимките, но вече са коригирани в прикачените файлове.

Фърмуер на микроконтролера

За целта е сглобен USBasp програматор, който се вижда на снимката по-горе. Това е доста хубаво нещо, лесно за използване и можете да го носите със себе си в джоба си през цялата година (надявам се, че никой няма да го направи). За да флашнете фърмуера на mega32, ще трябва да инсталирате джъмпера „Slow SCK“.
Предпазители:
Нисък предпазител = 0xC4
Висок предпазител = 0xD9
Нашият микроконтролер се тактува от вътрешен RC осцилатор с честота 8 MHz. Трябваше да деактивирам JTAG интерфейса на PortC, в противен случай някои светодиоди нямаше да светят.
Платката има ISP10 конектор за бързо флашване/дебъгване.

Преден панел

Изработен от алуминиева плоча с ширина 40 мм и дебелина 1,5 мм. Разполага с 18 пробити отвора с диаметър 5 мм и 4 отвора с диаметър 3 мм за закрепване на стелажи.


Първо, шаблонът беше отпечатан и залепен върху плочата. След това бяха пробити пилотни отвори със свредло 1,5 mm, след което основните отвори бяха пробити със свредла с необходимите диаметри.


Накрая плочата беше огъната, шлайфана с фина шкурка и полирана с GOI паста.
Шаблонът е включен с прикачените файлове като файл layout5.0

Червен светодиод в горния ляв ъгъл

Повтаря импулсите, генерирани от DS1307 на 7 крак, т.е. мига всяка секунда. Малък p-канален MOSFET транзистор работи в режим на превключване, като се отваря и затваря във времето с импулси. Първоначално исках да направя подсветка (като Ambilight), за която изградих CMOS инвертор на допълнителна двойка транзистори (за по-сигурно). Но не ми хареса. За един светодиод е достатъчен един транзистор, можете дори да използвате pnp тип bc857. Използвах irlml6402 или irlml6302 open-frame MOSFET.

файлове

Източниците, шестнадесетичният файл, печатните платки, схемите, веригата в proteus и предпазителите са включени в тази снимка под формата на архив. Не се доверявам на съхранението на файлове, все още нямам собствен сървър, така че според моето аматьорско мнение най-надеждното място за съхранение ще бъде Habr. Потребителите на Windows имат достъп до файлове, като отворят запазено изображение с помощта на WinRar.
Да, това е снимката.

Видео

Заключение

Можете да използвате всеки източник на захранване, способен да достави 5 волта при ток от 70 mA. USB портът е доста подходящ за това. Основното е, че мощността е „чиста“ и не надвишава 5 волта. Захранвайки часовника от DC-DC преобразувател от чипа mc34063 с ниво на шум от ~ 50 mV, забелязах проблеми при настройването на времето. Сега устройството се захранва от превключвател, висящ наблизо. Извежда строго 5 волта. От добра страна, трябва да направите и безупречна защита под формата на диод и някакъв линеен стабилизатор за 3,3 - 5 волта.
Липсата на будилник и функции за показване на дата в часовника е напълно оправдана: и двете присъстват в телефона, което означава, че с голяма степен на вероятност никой няма да ги използва в двоичен часовник (благодарение на чичо Окам за това заключение) .