Mundarija:

Minidot 2 - Holoclock: 6 qadam
Minidot 2 - Holoclock: 6 qadam

Video: Minidot 2 - Holoclock: 6 qadam

Video: Minidot 2 - Holoclock: 6 qadam
Video: Unboxing And Testing - NEW DIRT BIKE !! #kidsbike#pocketbike 2024, Noyabr
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Balki, holoclock biroz noaniq ….biroz chuqurlik berish uchun old tomondan golografik dispersiyali plyonkadan foydalaniladi. Asosan, bu ko'rsatma mening oldingi Minidot -ning yangilanishidir: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/va bu erda joylashgan mening Microdot-dan ko'p kod va sxemalarni qayta ishlatish: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD fayllari va Sourceboost kodi biriktirilgan zip-fayllarga kiritilgan. Oldingi Minidot juda murakkab edi, Microdot -dan men RIC -ni PIC -da faqat 32.768 kristall yordamida bajarishni o'rgandim va maxsus RTC chipini ishlatishning hojati yo'q edi. Bundan tashqari, oldingi Minidot displey chiplaridan qutulmoqchi edim. Shunday qilib, hozirda faqat quvvat regulyatori chipi va PIC16F88 bor … faqat ikkita chip. Yangilanishning boshqa sabablari shundaki, mening Minidot alohida kommutator paneli tufayli biroz ishonchsiz bo'lib qoldi va men nuqta naqshlari orasidagi yumshoq o'chishni xohladim. shuningdek, tunda displeyni xira qilish uchun qandaydir yorug'lik sensori. Boshqa Minidot yorqinligi doimiy bo'lib, xonani tunda yoritib turardi, qurilma EagleCad dasturiy to'plami va Sourceboost kompilyatori yordamida qurilgan. Loyihani boshlash uchun siz elektronika va PIC tekshirgichlarini dasturlash bo'yicha tajribaga ega bo'lishingiz kerak. E'tibor bering, bu elektronika yoki PIC dasturlash bo'yicha ko'rsatma emas, shuning uchun Miniclock dizayniga tegishli savollarni saqlang. EagleCad yoki PIC -ni dasturlash bo'yicha maslahat olish uchun yuqoridagi ko'rsatmalarni yoki ushbu saytdagi boshqa ko'rsatmalarni ko'ring. Mana, bu ….. Minidot 2, Holoclock …… yoki Minidot Keyingi avlod ……………

1 -qadam: O'chirish davri

O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri

Bu sxema Microdotga juda o'xshash. E'tibor bering, charlieplex qatori deyarli bir xil … faqat bir nechta pinlar ko'chirildi.

PICni tezroq ko'rish uchun Microdot sxemasiga 20 MGtsli kristall qo'shilgan, bu massivni tezroq skanerlashga va karartma algoritmini amalga oshirishga imkon beradi. Karartma algoritmi o'zaro faoliyat naqshning pasayishi va atrofdagi yorug'lik funktsiyasining ishlashi uchun juda muhim edi. Microdot bilan bu imkonsiz bo'lar edi, chunki soat tezligi pastroq bo'lgani uchun, ba'zi ko'rish davrlarini xiralashtirishga sarflash kerak edi. O'chirish funktsiyasining tavsifi uchun keyingi bo'limga qarang. Shuni ta'kidlash kerakki, MCP1252 zaryad nasos regulyatoridan 5V, hozirda eng sevimli chipim. Agar siz kontaktlarning zanglashiga olib kirgan bo'lsangiz, siz eski 7805 dan foydalanishingiz mumkin edi. Menda bir nechta qulay chiplar bor. Men hozir kalitlarni old tomonga o'tkazdim, vaqtni tiklash uchun elektr quvvati uzilganidan keyin soatning orqa tomonida vaqtni saqlayman, endi hamma narsa faqat bitta PCBda … kabellar bilan bog'liq muammolar yo'q. Shuni ham ta'kidlash kerakki, LDRni kiritish. Bu PIC -dagi A/D pin orqali seziladigan kuchlanish bo'linmasida ishlatiladi. PIC atrofdagi yorug'lik darajasi pastligini sezganda (ya'ni tunda), xiralashtirish algoritmi charlieplex massivini yorug'lik darajasi yuqori bo'lganidan ko'ra ko'proq tsikllarda qorong'i tutadi. Men Eaglecad kutubxonasida LDR belgisini topa olmadim, shuning uchun men faqat LED belgisini ishlatdim ….. bu LDR deb aldanmang. Quyidagi tenglikni haqiqiy rasmini ko'ring. Charliplex qatorida ko'p rangli LEDlardan foydalanishda e'tiborga olish kerak bo'lgan narsa. LEDlarning to'g'ridan -to'g'ri kuchlanishining bir xil bo'lishiga ishonch hosil qilishingiz kerak. Agar shunday bo'lmasa, unda adashgan oqim yo'llari paydo bo'lishi mumkin va bir nechta LED yonadi. Shunday qilib, bu konfiguratsiya uchun 5 mm va undan yuqori quvvatli LEDlardan foydalanish ishlamaydi, chunki odatda yashil/ko'k va qizil/sariq LEDlar o'rtasida katta farq bor. Bu holda men 1206 SMD LED va yuqori samarali yashil/ko'k LEDlardan foydalanardim. Oldinga kuchlanish bu erda muammo emas edi. Agar siz charlieplex massivida yashil/ko'k va qizil/sariq rangli yuqori quvvatli LEDlarning kombinatsiyasidan foydalanmoqchi bo'lsangiz, har xil ranglarni ikkita charliplex qatoriga ajratishingiz kerak bo'ladi. Charlieplexingning ko'p tushuntirishlari bor, ularni googl qilish mumkin …… Men bu erda batafsil ma'lumot bermayman. Men sizga tadqiqot o'tkazishni topshiraman. (Kattaroq versiyani ko'rish uchun rasmning pastki qismidagi "i" belgisini bosing)

2 -qadam: Karartma algoritmi - Charliplexed puls kengligi modulyatsiyasi

Karartma algoritmi - Charliplexed puls kengligi modulyatsiyasi
Karartma algoritmi - Charliplexed puls kengligi modulyatsiyasi

Yuqorida aytib o'tilganidek, men bir nuqtadan ikkinchisiga siljishdan ko'ra, vaqt o'tishi bilan turli nuqta naqshlarining silliq o'tishini xohlardim. Namoyish uchun videoni ko'ring. O'rtada yangi Minidot soati, o'ngda eski Minidot. E'tibor bering, yangisi qanchalik chiroyli. (Ma'lumotlar fonidagi boshqa displeylar - bu mening Minicray superkompyuter holatim displeyi va men ushlab turgan Nebulon zarrachasi, antimaddiy magnitli qamoq maydonida Minicray -ni quvvatlaydi. Bu erga qarang: https://www.youtube.com/watch? V = bRupDulR4ME namoyish uchun. Agar siz kodni ko'rsangiz, display.c faylini oching. E'tibor bering, har qanday ma'lum bir qatorni yoritish uchun tris/port qiymatlarini xaritalash uchun to'rtta massiv va LEDs.egning har qanday o'ziga xos namunasi uchun qaysi LEDlar yoritilishi kerakligini aniqlash uchun ikkita qator (Microdot kodidan ko'p) mavjud.

// LED1 LED2 LED3… belgisiz belgi LEDS_PORTA [31] = {0x10, 0x00, 0x00,… belgisiz belgi LEDS_TRISA [31] = {0xef, 0xff, 0xff,… belgisiz belgi LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Imzosiz char LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… imzosiz char nLedsA [30]; imzosiz char nLedsB [30];Masalan, LED1 ni yoqish uchun TRISA: B = 0xef: 0xfd va PORT registrlarini PORTA: B = 0x10: 0x00 va boshqalarni o'rnatish kerak. Agar siz tris qiymatlarini ikkilik shaklda yozsangiz, shuni ta'kidlaysizki, istalgan vaqtda faqat ikkita chiqish yoqilgan. Qolganlarning hammasi uch davlatga o'rnatiladi (shuning uchun TRIS reestri). Bu charlieplexing uchun muhim ahamiyatga ega. Shuni ham ta'kidlash joizki, bitta chiqish har doim mantiqiy '1', ikkinchisi esa har doim mantiqiy '0'….yo'nalish qaysi LED bu ikkita chiqish liniyasi o'rtasida bo'lsa, yonadi. Port/trisdagi oxirgi qiymat massivlar - bu LEDni yoqish uchun nol qiymat. Mikrodotda, yangilash_display funktsiyasi doimiy ravishda boshqa qator (nLeds ) orqali aylanib o'tib, o'sha LEDning yoritilishini tekshirish kerak. Agar shunday bo'lsa, mos keladigan tris/port qiymatlari o'rnatildi va LED ma'lum vaqt davomida yondi. Aks holda, nol qiymat TRIS/PORT PICs registrlariga yuboriladi va ma'lum vaqt davomida hech qanday LED yonmaydi. Bu etarlicha tez bajarilganda, bu naqsh berdi. Dasturning qolgan qismi vaqti -vaqti bilan RTC qiymatlarini o'qiydi va shu qatorda yaxshi tasodifiy naqshni yaratadi … va shuning uchun displey o'zgaradi, karartma funktsiyasini bajarish uchun, bu vaqt o'tgach, 30 ta LED yoritilganidan keyin (yoki agar emas), agar displey xiralashgan bo'lsa, null qiymatlarni yuborish uchun qo'shimcha vaqt sarflanadi … to'liq yorqinligi uchun qo'shimcha vaqt sarflanmaydi. Agar yoritilgan LEDlarning bo'sh vaqtlari ko'p bo'lsa, displey xira bo'ladi. Darhaqiqat, bu impuls kengligi modulyatsiyasining ko'pligi …. yoki apparat charlieplex tartibida konfiguratsiya qilinganligi uchun, keyin charlieplexed puls kengligi modulyatsiyasi. Quyidagi ikkinchi diagrammada buning asosiy sozlamalari ko'rsatilgan. Men buni skanerlash ramkasi deb atayman. Ramkaning dastlabki 30 davri svetodiodlar orqali o'tish uchun ishlatiladi … va o'zgaruvchan sonli displey displeyning xira bo'lishini belgilaydi. Bu tsikl takrorlanadi. Ko'proq bo'sh vaqtlar - bu LEDning har bir kvadratga yonib turishi uchun kamroq vaqt deganidir (chunki davrlar soni ko'paygan). E'tibor bering, vertikal o'q kuchlanish darajasini bildirmaydi. LEDlarga o'tadigan pinlarning haqiqiy holati charlieplex qatoridagi joylashuviga qarab o'zgaradi ….. diagrammada bu faqat yoqilgan yoki o'chirilgan degan ma'noni anglatadi. Bu shuningdek ramkaning umumiy uzunligini o'z vaqtida oshirib, yangilanishni kamaytirdi. baho. LEDlar xira bo'lganda, ular boshqacha aytganda miltillay boshlaydilar. Shunday qilib, bu usul faqat ma'lum darajada foydalidir. Soat uchun bu OK edi, vaqti -vaqti bilan PIC -dagi A/D konvertorini o'qiydigan va bu yorqinlik darajasini belgilaydigan funksiya chaqirildi. Agar siz kodni o'qigan bo'lsangiz, u LDR -ga eng yaqin LED yonib -o'chmaganligini tekshiradi va agar shunday bo'lsa, hech qanday darajani sozlamaydi, bu naqsh o'zgarganda ekranning kutilmaganda yorqinligini to'xtatadi.

3 -qadam: Karartma algoritmi - o'zaro ta'sirning pasayishi va ikki marta buferlanishi

Karartma algoritmi - o'zaro ta'sirning yo'qolishi va er -xotin buferlash
Karartma algoritmi - o'zaro ta'sirning yo'qolishi va er -xotin buferlash

Bir naqsh va ikkinchisining o'tishi oldin darhol edi. Bu soat uchun men yorqinlikni asta -sekin kamayib borayotgan bir naqshni ko'rsatmoqchiman, keyingi naqsh esa asta -sekin o'sib bormoqda, ya'ni.

Menga chirog'ni o'chirish uchun alohida yorqinlik darajasida alohida LEDlar kerak emas edi. Birinchi nashrga bitta nashrida, ikkinchisiga past nashrida kerak edi. Keyin men qisqa vaqt ichida birinchisining yorqinligini biroz pasaytirib, ikkinchisini ko'paytirardim … bu ikkinchi naqshgacha to'liq davom etadi. Keyin soat keyingi naqsh ko'rsatilguncha kutadi va boshqa o'tish bo'ladi. Shunday qilib, men ikkita naqshni saqlashim kerak edi. Hozir ko'rsatilayotgan va ko'rsatiladigan ikkinchi naqsh. Bular nLedsA va nLedsB massivlarida. (bu holda portlar bilan hech qanday aloqasi yo'qligiga e'tibor bering). Bu er -xotin bufer. Update_display () funktsiyasi sakkizta kadrni aylanib o'tish uchun o'zgartirildi va bir qatordan, so'ngra boshqasidan bir qancha kadrlarni ko'rsatdi. Sakkiz tsikl davomida har bir buferga ajratilgan ramkalar sonini o'zgartirish har bir naqsh qanchalik yorqin bo'lishini aniqladi. Tamponlar orasidagi velosipedni tugatgandan so'ng, biz "displey" va "keyingi displey" buferlarini almashtirdik, shuning uchun naqsh yaratish funktsiyasi faqat "keyingi displey" buferiga yoziladi. Quyidagi diagramma buni umid bilan ko'rsatadi. Siz ko'rishingiz kerakki, o'tish 64 skanerlash ramkasini oladi. Rasmda kichkina qo'shimchada oldingi sahifaning skanerlash sxemasi aniq ko'rsatilgan. Qayta baho haqida bir necha so'z. Bularning barchasini juda tez bajarish kerak. Hozirda bizda ikkita qo'shimcha hisob -kitoblar mavjud: biri atrof -muhit displeyining xiralashishi uchun, ikkinchisi esa buferlar o'rtasida o'tish uchun sarflangan sakkiz kadrli tsikl uchun. Shunday qilib, bu kod yig'ilishda yozilishi kerak edi, lekin "C" da etarlicha yaxshi.

4 -qadam: Qurilish - tenglikni

Qurilish - tenglikni
Qurilish - tenglikni
Qurilish - tenglikni
Qurilish - tenglikni

Bu juda oddiy. Yuqorida ba'zi SMD komponentlari bo'lgan faqat ikki tomonlama PCB. Kechirasiz, agar siz tuynukli odam bo'lsangiz, lekin SMD loyihalarini yaratish juda oson … Ishni osonlashtirish uchun sizda barqaror qo'l, harorat nazorat qilinadigan lehim stantsiyasi va ko'p yorug'lik va kattalashtirish bo'lishi kerak.

PCB qurilishida e'tiborga olinadigan yagona narsa - bu PICni dasturlash uchun ulagichni kiritish. Bu PIC -dagi ICSP pinlariga ulanadi va sizga ICSP dasturchisi kerak bo'ladi. Yana men junkbox ulagichimdan foydalandim. Agar xohlasangiz, buni o'tkazib yubormang va simlarni prokladkalarga lehimlang. Shu bilan bir qatorda, agar sizda faqat rozetkali dasturchi bo'lsa, siz rozetkaga ulanadigan sarlavhani yasashingiz va keyin uni ICSP prokladkalariga lehimlashingiz mumkin. Agar shunday qilsangiz, Rx -ni uzing va Ry -ni nol ohmli havolalarga ulang (men faqat lehim blobidan foydalanaman). Bu qolgan elektron quvvatini PICdan uzib qo'yadi, shuning uchun u dasturlashga xalaqit bermaydi. Tarmoqli dasturchi ICSP pinlarini ICSP dasturchisi kabi ishlatadi, hech qanday sehr yo'q. Agar siz xato qilib RTC ishga tushishidan oldin kodni kechiktirishni unutgan bo'lsangiz, buni ham qilishingiz kerak. 16F88 uchun ICSP dasturlash pinlari RTC uchun ishlatiladigan 32.768 kGts kristalli uchun zarur bo'lgan pinlar bilan bir xil bo'ladi, agar TSP tashqi osilatori (ya'ni RTC) ICSP o'z ishini boshlashidan oldin ishlayotgan bo'lsa, dasturlash muvaffaqiyatsiz bo'ladi.. Odatda, agar MCLR pinini qayta o'rnatish va kechikish bo'lsa, ICSP ma'lumotlarini bu pinlarga yuborish mumkin va dasturlash to'g'ri boshlanishi mumkin. Biroq, PIC quvvatini ajratib, ICSP dasturchisi (yoki sarlavhali rozetkali dasturchi) qurilmaning quvvatini boshqarishi va dasturni majburlashi mumkin. Ta'kidlash joizki, PCB kristalli prokladkalari dastlab SMD kristallari uchun mo'ljallangan. Ba'zilar etkazib berilishini kuta olmadim, shuning uchun 32.768 kHz chastotali soat kristallini tepaga lehimlangan va 20 MGtsli kristal yostiqchada bir nechta teshik ochib, kristalni pastdan teshib, lehim bilan biriktirilgan. tepa Siz pinlarni PIC16F88 o'ng tomonida ko'rishingiz mumkin.

5 -qadam: Golografik film va uy -joy

Golografik film va uy -joy
Golografik film va uy -joy
Golografik film va uy -joy
Golografik film va uy -joy
Golografik film va uy -joy
Golografik film va uy -joy

Yakuniy qurilish - bu tenglikni korpusga qo'yish va dasturdan so'ng uni issiq elim bilan yopishtirish. Uch teshik old tomondan mikro kalitlarga kirishga imkon beradi.

Bu soatning diqqatga sazovor qismi - golografik diffuzorli plyonkadan foydalanish. Bu men yotadigan maxsus film bo'lib, u qurilmaga yaxshi chuqurlik beradi. Siz oddiy kuzatuv qog'ozini ishlatishingiz mumkin (bunda men tenglikni old tomonga yaqinlashtirardim) yoki floresan lampalarda ishlatiladigan boshqa diffuzer. Tajriba qilish kerak bo'lgan yagona narsa - bu yoritilgan LEDlar sonini farqlashga imkon berish, aks holda vaqtni aniqlash qiyin bo'ladi. Men 30 graduslik dumaloq dispersiyaga ega bo'lgan Fizik Optika Korporatsiyasining (www.poc.com) golografik dispersiyali materialidan foydalandim, ko'rsatmaning boshqa joyida ko'rsatiladigan superkompyuter holati 15x60 darajali elliptik dispersiyaga ega bo'lgan filmda ishlatilgan. Siz sirli ko'rinishga ega bo'lish uchun kunduzi porloq qorin bo'shlig'ini yashirish uchun qora tasma ishlatishingiz mumkin. Siz hatto displeyni ochiq qoldirishingiz va odamlarga ichki qismlarni men kabi ko'rishga ruxsat berishingiz mumkin. Stend ikki qismli alyuminiydan yasalgan "L" novda bo'lib, egilishga ruxsat berish uchun pastki qismida biroz kesilgan. E'tibor bering, bu rasmlarga qo'shimcha yoritish qo'shilgan, shuning uchun siz displey qopqog'ini va boshqalarni ko'rishingiz mumkin. Oddiy yashash xonasining yoritilishida, hatto kunduzi ham, LEDlar ko'proq ajralib turadi.

6 -qadam: dasturiy ta'minot va foydalanuvchi interfeysi

Qurilmaning ishlashi juda oddiy, maxsus naqshli rejimlar yoki yorqin narsalar yo'q. U qiladigan yagona narsa - bu vaqtni ko'rsatish.

Vaqtni sozlash uchun avval SW1 tugmasini bosing. Qurilma barcha LED -larni bir necha marta yonib o'chadi, so'ngra SW3 LED -larining 10 soatlik guruhi tanlangan SW2 guruhining LED -larining keyingi guruhiga o'tadi va har safar guruhdagi barcha LEDlarni qisqa vaqt yonib -o'chib turadi. Kod Sourceboost 'C' kompilyatorining 6.70 versiyasi uchun yozilgan. RTC kodi t1rtc.c/h fayllarida va PIC T1 taymerida uzilish funktsiyasiga ega. T1 taymeri har 1 soniyada uzilib turishi uchun o'rnatiladi. Har soniyada vaqt o'zgaruvchisi ortadi. Shomil taymeri har soniyada vaqt bilan birga sanaladi. Bu displeyni qachon o'zgartirish kerakligini aniqlash uchun ishlatiladi. To'xtatish funktsiyasi, shuningdek, displeyni yangilash uchun T0 taymerining uzilishidan foydalanadi, displeyda funktsiyani chaqiradi. C. Display.h/display.c fayllari displeyni yangilash va vaqtni ko'rsatish uchun funktsiyalarni o'z ichiga oladi. Control.c/h fayllari o'z ichiga oladi. Vaqtni belgilash va kalitlarni o'qish funktsiyalari holoclock.c/h fayllari - asosiy ko'chadan va ishga tushirish.

Tavsiya: