فهرست مطالب:

Minidot 2 - Holoclock: 6 مرحله
Minidot 2 - Holoclock: 6 مرحله

تصویری: Minidot 2 - Holoclock: 6 مرحله

تصویری: Minidot 2 - Holoclock: 6 مرحله
تصویری: Professional Sound Mixer Circuit - Homemade 2024, جولای
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

خوب شاید holoclock کمی نادرست باشد.. از فیلم پراکندگی هولوگرافیک در جلو برای کمی عمق استفاده می کند. اساساً این دستورالعمل به روز رسانی Minidot قبلی من است که در اینجا واقع شده است: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/و استفاده مجدد از تعداد زیادی کد و مدار از Microdot من که در اینجا واقع شده است: Minidot قبلی بسیار پیچیده بود ، از Microdot آموختم که چگونه RTC را در PIC تنها با کریستال 32.768 انجام دهم و نیازی به استفاده از تراشه RTC ویژه ندارم. همچنین می خواستم از تراشه های صفحه نمایش Minidot قبلی خلاص شوم. بنابراین در حال حاضر فقط یک تراشه تنظیم کننده قدرت و یک PIC16F88 … وجود دارد. فقط دو تراشه. دلایل دیگر به روز رسانی این بود که Minidot به دلیل جدا کردن سوئیچ جداگانه غیرقابل اعتماد بود و من می خواستم یک رنگ نرم بین الگوهای نقطه محو شود. و همچنین نوعی حسگر نور محیط برای کم نور کردن صفحه نمایش در شب. Minidot دیگر روشنایی ثابت داشت و اتاق را در شب روشن می کرد. این دستگاه با کمک بسته نرم افزاری EagleCad و کامپایلر Sourceboost ساخته شد. برای شروع این پروژه باید تجربه ای در زمینه الکترونیک و برنامه نویسی کنترل کننده های PIC داشته باشید. لطفاً توجه داشته باشید که این مورد نه در برنامه نویسی الکترونیکی و نه در PIC قابل آموزش نیست ، بنابراین لطفاً س questionsالات مربوط به طراحی Miniclock را نگه دارید. برای راهنمایی در مورد استفاده از EagleCad یا برنامه نویسی PIC ها به دستورالعمل های بالا یا بسیاری از دستورالعمل های دیگر در این سایت مراجعه کنید. بنابراین اینجا….. Minidot 2 ، The Holoclock …… یا Minidot The Next Generation ………… است.

مرحله 1: مدار

مدار
مدار
مدار
مدار
مدار
مدار

این مدار شباهت زیادی به Microdot دارد. توجه داشته باشید که آرایه charlieplex تقریباً یکسان است … فقط چند پین منتقل شده است.

یک کریستال 20 مگاهرتز به مدار Microdot اضافه شده است تا PIC را بسیار سریعتر تنظیم کند ، این اجازه می دهد تا آرایه سریعتر اسکن شود و اجرای الگوریتم کم نور را امکان پذیر می کند. الگوریتم کم نور برای محو شدن الگوی متقاطع و عملکرد نور محیط بسیار مهم بود. این امر در Microdot غیرممکن است ، زیرا سرعت ساعت کمتر است زیرا برخی از چرخه های اسکن باید برای کم نور شدن صرف شود. برای توضیح عملکرد Dimming به بخش بعدی مراجعه کنید. موارد دیگری که باید به آنها توجه کنید استفاده از تنظیم کننده پمپ شارژ MCP1252 برای تامین 5 ولت ، تراشه مورد علاقه من در حال حاضر است. اگر مدار را تغییر دهید می توانید از یک 7805 ساده قدیمی استفاده کنید …… من فقط تعدادی از این تراشه های دستی را در اطراف دارم. در حال حاضر سوئیچ ها را به جلو منتقل کرده ام ، پس از قطع برق ، ساعت را در پشت ساعت ذخیره می کنم تا زمان تنظیم مجدد شود و در حال حاضر همه چیز فقط یک PCB است … هیچ مشکل کابل کشی وجود ندارد. همچنین نکته قابل توجه شامل LDR است. این در تقسیم کننده ولتاژ استفاده می شود که توسط PIN A/D در PIC حس می شود. وقتی PIC احساس می کند که سطح نور محیط کم است (یعنی زمان شب) ، الگوریتم کم نور ، آرایه شارلی پلکس را برای دوره های بیشتری نسبت به زمانی که سطح نور زیاد است ، تاریک نگه می دارد. من نماد LDR را در کتابخانه Eaglecad پیدا نکردم ، بنابراین فقط از نماد LED استفاده کردم …..فریب نخورید این یک LDR است. تصویر واقعی PCB را در زیر مشاهده کنید. هنگام استفاده از LED های چند رنگ در یک آرایه شارلیپلکس باید به یک نکته توجه کنید. شما باید مطمئن شوید که ولتاژ جلو LED ها کم و بیش یکسان است. در غیر این صورت ، ممکن است مسیرهای سرگردان بی راه رخ دهند و چندین LED روشن شود. بنابراین استفاده از LED های 5 میلی متری یا بالاتر برای این پیکربندی کار نخواهد کرد زیرا معمولاً تفاوت زیادی بین LED های سبز/آبی و LED های قرمز/زرد وجود دارد. در این مورد من از 1206 LED SMD و LED های سبز/آبی با کارایی بالا استفاده کردم. هرچند ولتاژهای پیش رو در اینجا مسئله ای نبود. اگر می خواهید از ترکیبی از LED های سبز/آبی و قرمز/زرد با قدرت بالاتر در یک آرایه شارلی پلکس استفاده کنید ، باید رنگ های مختلف را در دو آرایه شارلیپلکس جدا کنید. توضیحات متعددی در مورد شارلی پلکس وجود دارد که می توان آن را در گوگل جستجو کرد …… من در اینجا به جزئیات نمی پردازم. تحقیق را به شما واگذار می کنم. (برای مشاهده نسخه بزرگتر ، نماد کوچک "i" را در گوشه عکس زیر فشار دهید)

مرحله 2: الگوریتم کاهش نور - مدولاسیون عرض پالس Charliplexed

الگوریتم کاهش نور - مدولاسیون عرض پالس شارلیپلکس
الگوریتم کاهش نور - مدولاسیون عرض پالس شارلیپلکس

همانطور که قبلاً ذکر شد ، من می خواستم الگوهای نقطه مختلف در آن زمان به آرامی محو شوند و نه از یک الگو به الگوی دیگر. برای مشاهده یک ویدیو را ببینید. در وسط ساعت جدید Minidot ، در سمت راست Minidot قدیمی تر قرار دارد. توجه کنید که جدید چقدر زیبا تر است. (FYI سایر نمایشگرها در پس زمینه نمایشگر ابر رایانه Minicray و ذره نبولون گرفته شده من است که Minicray را در یک میدان محصور مغناطیسی ضد ماده قدرت می دهد. اینجا را ببینید: https://www.youtube.com/watch؟ v = bRupDulR4M برای یک نمایش از محفظه محفظه نبولون) اگر به کد نگاه می کنید ، فایل display.c را باز کنید. توجه داشته باشید که چهار آرایه برای نگاشت مقادیر tris/port برای روشن شدن هر آرایه خاص و دو آرایه (یکی بیشتر از کد Microdot) برای تعیین اینکه کدام ال ای دی ها باید برای الگوی خاصی از LED ها روشن شوند وجود دارد: مثلاً:

// LED1 LED2 LED3… char charged LEDS_PORTA [31] = {0x10، 0x00، 0x00،… char chargedS LEDS_TRISA [31] = {0xef، 0xff، 0xff،… char charged LEDS_PORTB [31] = {0x00، 0x02، 0x04، … char بدون امضا LEDS_TRISB [31] = {0xfd ، 0xf9 ، 0xf9 ،… char بدون امضا nLedsA [30] ؛ char بدون امضا nLedsB [30] ؛برای روشن شدن LED1 به عنوان مثال ، شما باید TRIS ثبات TRISA: B = 0xef: 0xfd و PORT ثبات PORTA: B = 0x10: 0x00 و غیره را تنظیم کنید. اگر مقادیر tris را به صورت باینری بنویسید ، توجه خواهید کرد که در هر زمان ، فقط دو خروجی فعال است. بقیه همه روی سه حالت (از این رو TRIS register) تنظیم شده اند. این امر در بیماری شارلیپلکس نقش اساسی دارد. شما همچنین توجه داشته باشید که یک خروجی همیشه یک "1" منطقی و دیگری همیشه "0" منطقی است … که جهت آن هر LED را بین این دو خط خروجی روشن می کند. آخرین مقدار در پورت/tris آرایه ها یک مقدار خالی برای روشن نشدن هیچ LED است. در Microdot ، تابع update_display به طور مداوم از طریق آرایه دیگری (nLeds ) می چرخد تا ببیند آیا آن LED خاص باید روشن شود یا خیر. اگر چنین بود ، مقادیر tris/port مربوطه تنظیم شده و LED برای مدتی روشن می شود. در غیر این صورت مقدار تهی به ثبت PICs TRIS/PORT ارسال می شود و هیچ LED برای مدتی روشن نمی شود. هنگامی که به اندازه کافی سریع انجام شود ، این الگو می دهد. بقیه برنامه به صورت دوره ای مقادیر RTC را می خواند و یک الگوی تصادفی خوب در آن آرایه ایجاد می کرد …. و بنابراین صفحه نمایش تغییر کرد. برای ایجاد عملکرد کم نور ، این کمی افزایش یافته است به طوری که پس از روشن شدن 30 LED (یا اگر) صفحه نمایش کم نور شود ، دوره های اضافی صرف ارسال مقادیر null می شود … برای روشنایی کامل ، هیچ دوره اضافی صرف نمی شود. در صورت تکرار زیاد دوره های خالی LED های روشن ، صفحه نمایش کم نور می شود. در واقع این تعدیل پهنای پالس چند منظوره است … یا به دلیل اینکه سخت افزار در یک آرایش شارلیپلکس پیکربندی شده است ، سپس مدولاسیون عرض پالس شارلیپلکس شده است. نمودار دوم زیر تنظیمات اولیه این کار را نشان می دهد. من به این می گویم قاب اسکن. 30 دوره اولیه برای قاب برای عبور از LED ها استفاده می شود … و تعداد متغیر دوره های اضافی میزان تاری صفحه نمایش را مشخص می کند. این چرخه تکرار می شود. دوره های خالی بیشتر به معنای زمان کمتری برای روشن شدن LED در هر فریم است (زیرا تعداد دوره ها افزایش یافته است). توجه داشته باشید که محور عمودی به معنی سطح ولتاژ نیست. وضعیت واقعی پین هایی که به LED ها می روند بسته به موقعیت آن در آرایه charlieplex متفاوت است….. در نمودار فقط روشن یا خاموش است. این همچنین به این معنی است که طول کل قاب در زمان نیز افزایش یافته است ، در نتیجه کاهش تازه سازی نرخ. با کم نورتر شدن LED ها ، به عبارت دیگر شروع به سوسو زدن می کنند. بنابراین این روش فقط تا حدی مفید است. برای ساعت ، خوب بود. یک تابع متناوب نامیده می شود که مبدل A/D را در PIC خوانده و این سطح روشنایی را تنظیم می کند. اگر کد را بخوانید ، بررسی می کند که آیا LED نزدیک به LDR روشن است یا خیر ، و در این صورت هیچ تنظیم سطحی انجام نمی دهد ، این باعث می شود وقتی الگو تغییر می کند ، صفحه نمایش به طور غیر منتظره روشن شود.

مرحله 3: الگوریتم کاهش نور - اثر متقاطع محو و دو بافر

الگوریتم کاهش نور - اثر متقاطع محو و بافر دوگانه
الگوریتم کاهش نور - اثر متقاطع محو و بافر دوگانه

انتقال بین یک الگو به الگوی قبلی قبلاً فوری بود. برای این ساعت می خواستم یک الگو را نشان دهم که کم کم روشنایی آن کاهش می یابد و الگوی بعدی به تدریج افزایش می یابد … یعنی محو شدن متقاطع.

من نیازی به داشتن LED های جداگانه برای کنترل در سطوح روشنایی جداگانه برای محو شدن متقاطع ندارم. فقط به الگوی اول در یک روشنایی و دومی در روشنایی پایین نیاز داشت. سپس در مدت کوتاهی روشنایی اولی را کمی کاهش می دهم و دومی را افزایش می دهم … این حالت تا الگوی دوم به طور کامل ادامه می یابد. سپس ساعت منتظر می ماند تا الگوی بعدی نشان داده شود و انتقال دیگری رخ دهد. بنابراین من نیاز به ذخیره دو الگو داشتم. الگوی فعلی در حال نمایش و الگوی دوم که در شرف نمایش بود. اینها در آرایه های nLedsA و nLedsB هستند. (در این مورد هیچ ارتباطی با پورت ها نداشته باشید). این بافر دوگانه است. تابع () update_display تغییر کرد و در هشت فریم چرخید و تعدادی فریم را ابتدا از یک آرایه ، سپس از دیگری نشان می دهد. تغییر تعداد فریم های اختصاص داده شده به هر بافر در طول هشت چرخه ، میزان روشنایی هر الگو را مشخص می کند. وقتی دوچرخه سواری بین بافرها را به پایان رساندیم ، بافرهای "display" و "next display" را تغییر دادیم ، بنابراین عملکرد تولید الگو فقط در بافر "نمایش بعدی" می نویسد. نمودار زیر این امر را امیدوارانه نشان می دهد. شما باید بتوانید ببینید که انتقال 64 فریم اسکن را انجام می دهد. در تصویر ، قسمت کوچکی نمودار چارچوب اسکن صفحه قبل را نشان می دهد که به طرز ماهرانه ای کوچک شده است. یک کلمه در مورد نرخ تازه. همه اینها باید خیلی سریع انجام شود. ما در حال حاضر دو سطح محاسبه اضافی داریم ، یکی برای کم نور بودن محیط و دیگری برای هشت چرخه فریم که برای انتقال بین دو بافر صرف شده است. بنابراین این کد باید در اسمبلی نوشته شود ، اما در 'C' به اندازه کافی خوب است.

مرحله 4: ساخت - PCB

ساخت و ساز - PCB
ساخت و ساز - PCB
ساخت و ساز - PCB
ساخت و ساز - PCB

این خیلی سرراست است. فقط یک PCB دو طرفه با برخی از اجزای SMD در بالای آن. متأسفیم اگر فردی حفره دار هستید ، اما ایجاد پروژه های SMD بسیار آسان تر است … سوراخ هایی برای حفاری وجود ندارد. شما باید دستی ثابت ، ایستگاه لحیم کاری کنترل دما و نور و بزرگنمایی زیاد داشته باشید تا کارها آسان تر شود.

تنها چیزی که در ساخت PCB قابل توجه است ، وجود یک اتصال دهنده برای برنامه نویسی PIC است. این به پین های ICSP در PIC متصل می شود و شما به یک برنامه نویس ICSP نیاز دارید. دوباره از کانکتور junkbox خود استفاده کردم. می توانید این مورد را حذف کرده و در صورت تمایل سیم ها را به پدها بچسبانید. متناوباً اگر فقط یک برنامه نویس سوکت دارید ، می توانید یک هدر بسازید که به سوکت شما متصل شده و سپس آن را به پدهای ICSP لحیم کنید. اگر این کار را می کنید ، Rx را جدا کرده و Ry را که فقط لینک های صفر اهم هستند وصل کنید (من فقط از یک لحیم لحیم استفاده می کنم). با این کار بقیه برق مدار از PIC قطع می شود تا در برنامه نویسی تداخل ایجاد نکند. یک برنامه نویس سوکت فقط از پین های ICSP مانند برنامه نویس ICSP استفاده می کند ، هیچ جادویی در کار نیست. همچنین اگر به اشتباه فراموش کرده اید که کد را قبل از راه اندازی RTC به تأخیر بیاندازید ، این کار را انجام دهید. برای 16F88 پین های برنامه نویسی ICSP همان پین های مورد نیاز برای کریستال 32.768 کیلوهرتز مورد استفاده برای RTC هستند … اگر نوسان ساز خارجی T1 (یعنی RTC) قبل از شروع کار ICSP کار کند ، برنامه نویسی شکست می خورد. به به طور معمول در صورت بازنشانی روی پین MCLR و تأخیر وجود دارد ، می توان داده های ICSP را به این پین ها ارسال کرد و برنامه نویسی به درستی شروع شد. با این حال ، با جدا کردن قدرت PIC ، برنامه نویس ICSP (یا برنامه نویس با سربرگ) می تواند قدرت دستگاه را کنترل کرده و برنامه را مجبور کند. موارد دیگری که باید به آنها توجه شود این است که پدهای کریستالی روی PCB در اصل برای کریستال های SMD طراحی شده اند. من نمی توانستم منتظر بمانم تا برخی از آنها تحویل داده شوند ، بنابراین کریستال ساعت 32.768 کیلوهرتز همانطور که در بالا نشان داده شد لحیم شد و کریستال 20 مگاهرتز با حفر چند سوراخ در لنت ها ، کریستال را از پایین فرو کرده و روی آن لحیم شد. بالا. شما می توانید پین ها را درست در سمت راست PIC16F88 ببینید.

مرحله 5: فیلم هولوگرافی و مسکن

فیلم هولوگرافی و مسکن
فیلم هولوگرافی و مسکن
فیلم هولوگرافی و مسکن
فیلم هولوگرافی و مسکن
فیلم هولوگرافی و مسکن
فیلم هولوگرافی و مسکن

ساخت نهایی به سادگی قرار دادن PCB در کیس و بعد از برنامه نویسی چسباندن آن به یک چسب داغ است. سه سوراخ اجازه دسترسی به میکروسوئیچ ها را از جلو می دهد.

بخش قابل توجه این ساعت استفاده از یک فیلم پخش کننده هولوگرافیک است. این فیلم ویژه ای است که من در اطراف آن قرار داشتم و عمق خوبی را برای دستگاه فراهم می کند. می توانید از کاغذ ردیابی ساده (که در آن PCB را به جلو نزدیک می کنم) یا هر دیفیوزر دیگر مانند موارد استفاده شده در وسایل چراغ فلورسنت استفاده کنید. تجربه در مورد ، تنها کاری که باید انجام دهد این است که به شما اجازه دهد بین تعداد LED های روشن تفاوت قائل شوید ، در غیر این صورت شمارش نقاط برای تعیین زمان دشوار خواهد بود. من از مواد پراکندگی هولوگرافیکی از Physical Optics Coorporation (www.poc.com) با پراکندگی دایره ای 30 درجه استفاده کردم ، نمایشگر ابر رایانه ای که در جاهای دیگر در دستورالعمل نشان داده شده بود ، از یک فیلم با پراکندگی بیضوی 15x60 درجه استفاده می کرد. می توانید از نوار خاموشی برای پنهان کردن قسمت های داخلی براق در طول روز استفاده کنید تا ظاهری مرموزتر داشته باشید. حتی می توانید صفحه نمایش را واضح بگذارید و بگذارید مردم مانند من درون را ببینند. پایه دو بیت از آلومینیوم 'L' بود که کمی در قسمت پایین آن خم شده بود تا خم شود. توجه داشته باشید که در این تصاویر نور اضافی اضافه شده است تا بتوانید جلد صفحه نمایش و غیره را مشاهده کنید. در روشنایی معمولی اتاق نشیمن ، LED ها حتی در نور روز برجسته تر هستند.

مرحله 6: نرم افزار و رابط کاربری

عملکرد دستگاه بسیار ساده است ، هیچ حالت الگوی خاصی یا موارد پر زرق و برق ندارد. تنها کاری که انجام می دهد نمایش زمان است.

برای تنظیم زمان ابتدا SW1 را فشار دهید. دستگاه همه LED ها را چند بار چشمک می زند و سپس گروه 10 ساعته LED های SW3 گروه انتخابی SW2 را افزایش می دهد و به گروه بعدی LED ها منتقل می شود و هر بار همه LED های گروه را به طور مختصر چشمک می زند. کد برای کامپایلر Sourceboost 'C' نسخه 6.70 نوشته شده است. کد RTC در پرونده های t1rtc.c/h است و دارای عملکرد وقفه در تایمر T1 PIC است. تایمر T1 تنظیم شده است که هر 1 ثانیه وقفه ایجاد کند. در هر ثانیه ، متغیر زمان افزایش می یابد. همچنین زمان سنج زمان سنج شمارش معکوس می شود. این مورد برای تعیین زمان انتقال صفحه نمایش استفاده می شود. تابع وقفه همچنین از وقفه تایمر T0 برای بازسازی صفحه استفاده می کند و یک تابع را در display فرا می خواند. توابع تنظیم زمان و خواندن سوئیچ ها فایل های holoclock.c/h حلقه های اصلی و راه اندازی اولیه هستند.

توصیه شده: