Мазмуну:

Minidot 2 - Holoclock: 6 кадам
Minidot 2 - Holoclock: 6 кадам

Video: Minidot 2 - Holoclock: 6 кадам

Video: Minidot 2 - Holoclock: 6 кадам
Video: Unboxing And Testing - NEW DIRT BIKE !! #kidsbike#pocketbike 2024, Июль
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Балким, holoclock бир аз туура эмес… /EEGLXQCSKIEP2876EE/жана бул жерде жайгашкан менин Microdotтон көптөгөн коддорду жана схемаларды кайра колдонуу: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD файлдары жана Sourceboost коду ZIP файлдарына тиркелет. Эмне үчүн? Мурунку Minidot өтө татаал болчу, Microdotтон мен 32.768 кристаллын колдонуп PICте RTC жасоону үйрөндүм жана атайын RTC чипин колдонуунун кажети жок болчу. Ошондой эле мурунку Minidotтун дисплей чиптеринен арылгым келди. Ошентип, азыр бир гана кубатты жөнгө салуучу чип жана PIC16F88 бар … жөн эле эки чип. Жаңыртуунун башка себептери, менин Minidotум өзүнчө коммутатор тактасынан улам бир аз ишеничсиз болуп калды жана мен чекиттердин ортосунда жумшак өчүүнү кааладым. ошондой эле түнкүсүн дисплейди өчүрүү үчүн кандайдыр бир чөйрө жарык сенсору. Экинчи Minidot жарыктыгын аныктап, түнкүсүн бир бөлмөнү жарыктандырды. Түзмөк EagleCad программалык пакети жана Sourceboost компиляторунун жардамы менен курулган. Бул долбоорду баштоо үчүн электроника жана программалоо PIC контроллери менен бир аз тажрыйбага ээ болушуңуз керек. Бул электроника же PIC программалоо боюнча көрсөтмө эмес экенин эске алыңыз, андыктан Miniclock дизайнына тиешелүү суроолорду бериңиз. EagleCad же PICти программалоо боюнча кеңеш алуу үчүн жогорудагы көрсөтмөлөрдү же ушул сайттагы башка көптөгөн көрсөтмөлөрдү караңыз. Ошентип, бул жерде ….. Minidot 2, Holoclock …… же Minidot Кийинки Муун ………….

1 -кадам: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Бул схема Microdotко абдан окшош. Шарлиеплекстин массиви дээрлик окшош экенин эске алыңыз … бир нече казык жылдырылды.

PICтин ылдамдыгын тактоо үчүн Microdot схемасына 20 МГц кристалл кошулду, бул массивди тезирээк сканерлөөгө жана күңүрттөө алгоритмин ишке ашырууга мүмкүнчүлүк берет. Караңгылатуу алгоритми кайчылаш үлгү өчүп, айланадагы жарык функциясын иштетүү үчүн абдан маанилүү болгон. Микродотто бул мүмкүн эмес болмок, анткени сааттын ылдамдыгы жайыраак болгондуктан, кээ бир сканерлөө циклдери күңүрттөөгө жумшалышы керек болчу. Караңгылатуу функциясын сүрөттөө үчүн кийинки бөлүмдү караңыз. Белгилей кетүүчү башка нерселер - бул менин сүйүктүү чипим 5V менен камсыз кылуу үчүн MCP1252 заряд насосунун жөндөгүчүн колдонуу. Эгерде сиз схеманы өзгөртсөңүз, анда эски 7805ти колдонсоңуз болот ……. Менде жөн эле чиптердин бир тобу илинип турат. Мен азыр өчүргүчтөрдү алдыга жылдырдым, убакытты калыбына келтирүү үчүн электр жарыгы өчкөндөн кийин сааттын арткы бөлүгүндө үнөмдөйм, эми баары бир гана ПХБда … кабелдик көйгөйлөр жок. Белгилей кетүүчү нерсе, LDRдин кошулушу. Бул PICтин A/D пини аркылуу сезилүүчү чыңалуу бөлүштүргүчүндө колдонулат. PIC айланадагы жарыктын деңгээли төмөн экенин сезгенде (б.а. түнкүсүн) караңгылатуу алгоритми чарлиплекстин массивин жарыктын деңгээли жогору болгонго караганда көбүрөөк циклде караңгы бойдон сактайт. Мен Eaglecad китепканасынан LDR символун таба алган жокмун, ошондуктан мен жөн гана LED символун колдондум …… бул LDR деп алданбаңыз. Төмөндө ПХБнын чыныгы сүрөтүн караңыз. Charliplex массивинде көп түстүү LEDди колдонууда бир нерсени белгилей кетүү керек. Сиз LEDдин алдыга чыңалуусунун аздыр -көптүр бирдей экенине ынанууңуз керек. Болбосо, анда адашкан учурдагы жолдор пайда болушу мүмкүн жана бир нече LEDлар күйөт. Ошентип, бул конфигурация үчүн 5 мм же андан жогору кубаттуулуктагы LED диоддору иштебейт, анткени адатта жашыл/көк LED менен кызыл/сары LEDдын ортосунда бир топ айырма бар. Бул учурда мен 1206 SMD леддерди жана өзгөчө жогорку эффективдүү жашыл/көк LEDдерди колдондум. Бул жерде алдыга чыңалуу көйгөй болгон жок. Эгерде сиз charlieplex массивинде жашыл/көк жана кызыл/сары түстөгү жогорку диоддордун аралашмасын колдонууну кааласаңыз, анда ар кандай түстөрдү эки charliplex массивине бөлүп карооңуз керек. Шарлеплекстин көптөгөн түшүндүрмөлөрү бар, аларды гуглдаштырууга болот ……. Мен бул жерде майда -чүйдөсүнө чейин айтпайм. Изилдөө жүргүзүүнү сизге тапшырам. (Чоңураак версияны көрүү үчүн төмөндөгү сүрөттүн бурчундагы кичинекей 'i' сүрөтчөсүн басыңыз)

2 -кадам: Караңгылатуу алгоритми - Charliplexed Pulse Width Modulation

Караңгылатуу алгоритми - Charliplexed Pulse Width Modulation
Караңгылатуу алгоритми - Charliplexed Pulse Width Modulation

Жогоруда айтылгандай, мен ар кандай чекит үлгүлөрүнүн бир калыптан экинчисине эмес, бир калыпта өчүшүн кааладым. Демонстрация үчүн видеону караңыз. Ортодо жаңы Minidot сааты, оң жагында эски Minidot. Жаңысы канчалык кооз экенине көңүл буруңуз. (Фондогу башка дисплейлер - бул менин Minicray суперкомпьютер статусунун дисплейи жана менин кармалган Небулон бөлүкчөсү, ал антиматердик магниттик камоо талаасында Minicrayди иштетет. Бул жерди караңыз: https://www.youtube.com/watch? V = bRupDulR4MEкөрсөтүү үчүн Эгерде сиз кодду карасаңыз, display.c файлын ачыңыз. Белгилей кетүүчү нерсе, кандайдыр бир массивди жарыктандыруу үчүн трис/порт баалуулуктарын картага түшүрүү үчүн төрт массив жана LEDs.egтин кайсы болбосун үлгүсү үчүн кайсы светодиоддор жарыктандырылышы керек экенин аныктоо үчүн эки массив (Microdot кодунан бирөө) бар.

// LED1 LED2 LED3… белгиси жок char LEDS_PORTA [31] = {0x10, 0x00, 0x00,… unsigned char LEDS_TRISA [31] = {0xef, 0xff, 0xff,… unsigned char LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Unsigned char LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… unsigned char nLedsA [30]; unsigned char nLedsB [30];Мисалы, LED1ди күйгүзүү үчүн TRISA регистрлерин орнотуу керек: B = 0xef: 0xfd жана PORT регистрлери PORTA: B = 0x10: 0x00 ж.б. Эгерде сиз tris маанилерин бинардык түрдө жазсаңыз, анда каалаган убакта эки гана чыгаруу иштетилгенин байкайсыз. Калгандары баары Tri-state (демек TRIS реестри) үчүн коюлган. Бул charlieplexing үчүн маанилүү болуп саналат. Сиз ошондой эле бир чыгым дайыма логикалык '1', экинчиси ар дайым логикалык '0' экенин белгилей кетесиз … анын багыты бул эки чыгуу линиясынын ортосунда кайсы LED болсо күйгүзүлөт. Массивдер - бул эч кандай LEDды күйгүзүү үчүн нөлдүк мааниси. Microdotто update_display функциясы башка LED (nLeds ) аркылуу үзгүлтүксүз айланып, ошол LEDдын жарык болоорун билиш үчүн. Эгер ошондой болсо, анда тиешелүү трис/порт баалуулуктары коюлуп, LED бир мезгилге жарыктандырылган. Болбосо нөлдүк мааниси PICs TRIS/PORT регистрлерине жөнөтүлгөн жана LED эч качан жарык болгон эмес. Качан жетишерлик тез жасалып, бул үлгү берди. Программанын калган бөлүгү мезгил -мезгили менен RTC маанилерин окуп, ошол массивде жакшы кокустук үлгүсүн түзмөк… эмес), эгер дисплей күңүрттөнө турган болсо, анда нөлдүк маанилерди жөнөтүүгө кошумча мезгилдер сарпталмак ….. толук жарыктык үчүн, анда эч кандай кошумча мезгил өткөрүлбөйт. Жарык диоддордун бош убактысы көп болсо, кайталанганда, дисплей күңүрт болмок. Иш жүзүндө бул мультиплекстелген импульстун туурасы модуляциясы ….. же жабдыктар charlieplex түзүлүшүндө конфигурациялангандыктан, импульстун туурасынын модуляциясы. Мен муну сканерлөө алкагы деп атайм. Диаграмманын канчалык күңүрт болорун кадрлардын алгачкы 30 мезгили светодиоддор аркылуу өтүү үчүн колдонулат ….. жана кошумча мезгилдердин өзгөрмөлүү саны. Бул цикл кайталанат. Жараксыз мезгилдердин көбүрөөк болушу, LEDдин бир кадрга кошулуусуна аз убакытты билдирет (анткени мезгилдердин саны көбөйгөн). Көңүл буруңуз, тик огу чыңалуу деңгээлин билдирбейт. Светодиоддорго баруучу казыктардын чыныгы абалы charlieplex массивиндеги абалына жараша өзгөрүп турат… диаграммада бул жөн эле күйгүзүү же өчүрүү дегенди билдирет. чен. Светодиоддор күңүрт болуп калганда, алар башкача айтканда жылтылдап башташат. Ошентип, бул ыкма кандайдыр бир деңгээлде гана пайдалуу. Саат үчүн бул OK болчу. Функция PICдеги A/D конвертерин окуйт жана бул жарыктыктын деңгээлин белгилейт. Эгерде сиз кодду окусаңыз, анда LDRге жакын жайгашкан LEDдин күйгүзүлгөндүгүн текшерет жана эгер андай болсо, эч кандай деңгээлди орнотпойт, бул үлгү өзгөргөндө дисплей күтүлбөгөн жерден жарыктандырууну токтотот.

3 -кадам: Диминг алгоритми - Cross Fade Effect жана Double Buffering

Караңгылатуу алгоритми - Cross Fade Effect жана Double Buffering
Караңгылатуу алгоритми - Cross Fade Effect жана Double Buffering

Бир үлгү менен экинчисине өтүү мурда дароо эле болгон. Бул саат үчүн мен жарыктыгы акырындык менен азайып бараткан бир үлгүнү көрсөтүүнү кааладым.

Мен кайчылаш өчүрүү үчүн өзүнчө жарыктык деңгээлде көзөмөлдөө үчүн жеке LED -дердин болушунун кажети жок болчу. Биринчи үлгү бир жарыктыкта, экинчиси төмөн жарыктыкта керек болчу. Андан кийин кыска убакыттын ичинде мен биринчисинин жарыктыгын бир аз төмөндөтүп, экинчисин көбөйтөм ….. бул экинчи үлгүгө чейин толук бойдон уланат. Андан кийин саат кийинки үлгү көрсөтүлө электе күтөт жана дагы бир өтүү болот. Ошентип, эки моделди сактоо керек болчу. Учурда көрсөтүлүп жаткан жана экинчиси көрсөтүлө турган үлгү. Бул nLedsA жана nLedsB массивдеринде. (бул учурда портторго эч кандай тиешеси жоктугун белгилеңиз). Бул кош буфер. Update_display () функциясы сегиз алкакты айланып өтүү үчүн өзгөртүлдү жана бир массивден бир катар кадрларды көрсөтөт, андан кийин экинчиси. Сегиз цикл бою ар бир буферге бөлүнгөн кадрлардын санын өзгөртүү, ар бир үлгү канчалык жаркын болорун аныктады. Буферлердин ортосунда велосипед тээп бүткөндөн кийин, биз "дисплей" жана "кийинки дисплей" буферлерин айландырдык, андыктан үлгү жаратуучу функция "кийинки дисплей" буферине гана жазылат. Төмөндөгү диаграмма муну үмүт менен көрсөтөт. Сиз өтүү 64 сканерлөө алкагын талап кыларын көрө алышыңыз керек. Сүрөттө кичинекей кошумча мурунку беттин сканерлөө фрейминин диаграммасын чеберчилик менен кичирейтип көрсөтөт. Кайра кайра курсу жөнүндө сөз. Мунун баарын абдан тез жасоо керек. Азыр бизде кошумча эсептөөнүн эки деңгээли бар: экинчисинин дисплейинин күңүрттүгү үчүн, экинчисинин ортосунда эки өткөөлдү өткөрүүгө кеткен сегиз кадрдык цикл үчүн. Ошентип, бул код монтажда жазылышы керек болчу, бирок "С" де жетиштүү.

4 -кадам: Курулуш - ПХБ

Курулуш - ПХБ
Курулуш - ПХБ
Курулуш - ПХБ
Курулуш - ПХБ

Бул абдан жөнөкөй. Жөн гана үстү жагында SMD компоненттери бар эки тараптуу ПХБ. Кечиресиз, эгер сиз тешикчелүү адам болсоңуз, бирок SMD долбоорлорун жасоо бир топ жеңилирээк… Ишти жеңилдетүү үчүн туруктуу колуңуз, температураны көзөмөлдөөчү ширетүүчү станция жана жарык менен чоңойтуу керек.

ПХБнын курулушунда көңүл бура турган жалгыз нерсе - бул ПИКти программалоо үчүн туташтыргычтын кошулушу. Бул PICтин ICSP казыктарына туташат жана сизге ICSP программисти керек болот. Дагы мен junkbox туташтыргычы үчүн ыңгайлуу колдондум. Кааласаңыз, муну таштап койсоңуз болот жана зымдарды прокладкага эле эрите аласыз. Же болбосо, эгерде сизде гана розеткасы бар программист болсо, анда сиз розеткаңызга туташтырылган башты түзүп, андан кийин ICSP төшөмөлөрүнө кошо аласыз. Эгер сиз муну кыла турган болсоңуз, анда Rxти ажыратыңыз жана нөлдүк ом шилтемелери болгон Ry -ге туташыңыз (мен жөн гана ширетүүчү блокту колдоном). Бул схеманын калган бөлүгүн PICтен ажыратат, андыктан ал программалоого тоскоол болбойт. Розеткадагы программист ICSP пинлерин ICSP программисти сыяктуу эле колдонот, чынында эч кандай сыйкырчылык жок. Эгер сиз RTC ишке кире электе кодду кечиктирүүнү унутуп калсаңыз, муну жасашыңыз керек. 16F88 үчүн ICSP программалоо төөнөгүчтөрү RTC үчүн колдонулган 32.768 кГц кристаллына керектүү төөнөгүчтөр менен бирдей …… эгерде T1 тышкы осциллятору (б.а. RTC) ICSP ишин баштоодон мурун иштеп жатса, анда программалоо ишке ашпай калат. Адатта, эгерде MCLR пинге баштапкы абалга келтирүү жана кечигүү болсо, анда ICSP маалыматын бул казыктарга жөнөтсө болот жана программалоо туура башталат. Бирок PICтин кубатын бөлүү менен ICSP программисти (же башы бар розеткалуу программист) түзмөктүн кубатын көзөмөлдөп, программаны мажбурлай алат. Белгилей кетүүчү башка нерселер, ПХБдагы кристаллдык блокноттор алгач SMD кристаллдары үчүн иштелип чыккан. Мен кээ бирлердин жеткирилишин күтө алган жокмун, ошондуктан 32.768 кГц саат кристалы көрсөтүлгөндөй чокуга чейин ширетилген, ал эми 20 МГц кристаллы кристаллдын түбүнө кирип, астына тешип, үстүнө ширетүү менен бекитилген. үстү. Сиз PIC16F88дин оң жагындагы казыктарды көрө аласыз.

5 -кадам: Голографиялык фильм жана турак жай

Голографиялык фильм жана турак жай
Голографиялык фильм жана турак жай
Голографиялык фильм жана турак жай
Голографиялык фильм жана турак жай
Голографиялык фильм жана турак жай
Голографиялык фильм жана турак жай

Акыркы курулуш - бул ПХБны корпуска салуу жана программалоодон кийин аны ысык желим менен жабуу. Үч тешик микроскопторго алдыңкы жактан кирүүгө мүмкүнчүлүк берет.

Бул сааттардын көрүнүктүү бөлүгү - голографиялык диффузордук пленканы колдонуу. Бул менин тегерегимде жаткан атайын фильм, ал түзмөккө жакшы тереңдик берет. Сиз жөнөкөй калька кагазын колдоно аласыз (анда мен ПХБны алдыга жакыныраак жылдырмакмын) же флуоресценттүү жарыктандыргычтарда колдонулган башка диффузор. Тажрыйба боюнча, бир гана нерсе керек - бул жарыктандырылган диоддордун санын айырмалоого мүмкүндүк берүү, же болбосо чекиттерди эсептөө кыйын болот. Мен физикалык оптика корпорациясынын (www.poc.com) голографиялык дисперсиялык материалын 30 градустук тегерек дисперсия менен колдондум, инструкциянын башка жеринде көрсөтүлгөн суперкомпьютердин статусу дисплейде 15x60 градустагы эллиптикалык дисперстүү фильм колдонулат. Сиз сырдуу көрүнүшкө ээ болуу үчүн күндүз жалтырак ички капкактарды жашыруу үчүн кандайдыр бир өчүрүү тасмасын колдонсоңуз болот. Сиз атүгүл дисплейди ачык калтырып, адамдарга мен сыяктуу ички органдарды көрүүгө уруксат берсеңиз болот. Стенд эки алюминий 'L' тилкеси болуп, ийилүү үчүн түбү бир аз кесилген. Эскертүү, бул сүрөттөргө кошумча жарык кошулган, андыктан дисплейдин капкагын көрө аласыз ж.

6 -кадам: Программалык камсыздоо жана колдонуучу интерфейси

Түзмөктүн иштеши өтө жөнөкөй, эч кандай өзгөчө үлгү режимдери же жаркыраган нерселер жок. Болгону убакытты көрсөтүү.

Убакытты орнотуу үчүн биринчи SW1 басыңыз. Түзмөк бардык LED диоддорун бир нече жолу жаркырат, андан кийин SW3 диоддорунун 10 -сааттар тобу тандалган SW2 тобун кийинки LED диоддоруна жылдырат, ар бир жолу группанын бардык светодиоддору кыска убакытта жарк этет. Код Sourceboost 'C' компиляторунун 6.70 версиясы үчүн жазылган. RTC коду t1rtc.c/h файлдарында жана PICтин T1 таймеринде үзгүлтүккө учуроо функциясы бар. T1 таймери 1 секунд сайын үзгүлтүккө учурайт. Ар бир секундда, убакыттын өзгөрмөсү көбөйтүлөт. Ошондой эле кене таймери убакыттын өтүшү менен ар бир секундда кайра эсептелет. Бул дисплейди качан которууну аныктоо үчүн колдонулат. Үзгүлтүк функциясы ошондой эле дисплейди жаңыртуу үчүн T0 таймеринин үзүлүшүн колдонот, дисплейдеги функцияны чакырат. Display.h/display.c файлдары дисплейди жаңыртуу жана убакытты көрсөтүү функцияларын камтыйт. убакытты коюу жана өчүргүчтөрдү окуу функциялары holoclock.c/h файлдары негизги циклдар жана инициализация.

Сунушталууда: