Բովանդակություն:

RGB LED մատրիցա ՝ 5 քայլ
RGB LED մատրիցա ՝ 5 քայլ

Video: RGB LED մատրիցա ՝ 5 քայլ

Video: RGB LED մատրիցա ՝ 5 քայլ
Video: ESP32 Tutorial 6 - Using RGB LED Project 2.3 -SunFounder's ESP32 IoT Learnig kit 2024, Հուլիսի
Anonim
Image
Image
Սարքավորման դիզայն
Սարքավորման դիզայն

Search Instructable, և դուք կարող եք գտնել բազմաթիվ LED մատրիցային նախագծեր: Նրանցից ոչ մեկն այն չէր, ինչ ուզում էի, այն էր `ուսումնասիրել ապարատային և ծրագրային ապահովման դիզայնի փոխազդեցությունը` ինչ-որ բան արտադրելու համար, և վերջնական արտադրանքը արտադրել կոկիկ PCB- ով `վարորդով, որը թույլ կտա բարձր մակարդակի միջոցով նկարել դեպի« LED էկրան »: կոնստրուկցիաներ (օրինակ ՝ գծեր գծելը ՝ ի տարբերություն կոնկրետ պիքսելների սահմանման): Այս հատվածն ինձ համար կարևոր էր, քանի որ LED մատրիցի վարորդներից շատերը մերկ ոսկորներ են և շատ բան չեն տալիս ծրագրավորմամբ պատկեր կամ անիմացիա ստեղծելու ճանապարհին: Սա չի նշանակում, որ դուք չեք կարող պատկերներ և անիմացիաներ ստեղծել այլ վարորդների հետ, պարզապես դուք պետք է ավելի կրկնվող աշխատանք կատարեք նախագծից նախագիծ:

Այսպիսով, ես սկսեցի իրականացնել իմ տեսլականը: Առաջին քայլը սարքավորումների նախագծումն էր: Սա, հավանաբար, ամենաբարդն էր ինձ համար, քանի որ իմ նախապատմությունը ավելի շատ ծրագրային ապահովում է: Կրկին, շատ նախապես թխած նմուշներ կային, և ես դրանք, անշուշտ, օգտագործում էի ոգեշնչման համար, բայց ես ուզում էի սովորել դրանով, ուստի նախատիպավորեցի 4x4 մատրիցը տախտակի վրա: Ես շատ բան սովորեցի այդ գործընթացի միջոցով, քանի որ իմ առաջին մի քանի կրկնությունները չաշխատեցին: Բայց ես սարքավորումների դիզայն եմ աշխատել, որն իր հերթին թույլ է տվել ինձ սկսել վարորդի մշակում:

Ես ընտրեցի Arduino- ն որպես իմ վարորդական հարթակ, քանի որ այն լայնորեն հասանելի է և բազմաթիվ հղումներ ունի առցանց: Թեև կարիերայի փորձը թույլ տվեց ինձ հասնել վարորդի աշխատանքային տարբերակին ավելի սահուն, քան իմ ապարատային ջանքերը, դեռ շատ կրկնություններ կային, մինչդեռ ես ATMega միկրոհսկիչի համար օպտիմալացնում էի վարորդի աշխատանքը և մշակում ծրագրավորման API- ն, որն ինձ դուր էր գալիս:

Այս Instructuctable- ը փաստաթղթավորում է դիզայնը և իմ նախագծի որոշ հիմնական սովորումները: Այս նախագծի մասին լրացուցիչ տեղեկություններ կարելի է գտնել այստեղ իմ կայքում, ներառյալ ամբողջական հավաքածուները, որոնք կարող եք ձեռք բերել ձեր սեփական RGB LED մատրիցան կառուցելու համար:

Քայլ 1: Սարքավորման ձևավորում

Իմ ապարատային դիզայնի առաջնային նպատակն էր ստեղծել մի շարք RGB LED- ներ, որոնք կարող էի ծրագրավորել, բայց ես նույնպես չէի ուզում մեծ գումարներ ծախսել: Մոտեցումը, որի վրա ես հաստատվեցի, այն էր, որ օգտագործեմ 74HC595 հերթափոխի գրանցամատյանները `LED- ները վերահսկելու համար: Պահանջվող հերթափոխի գրանցամատյանների քանակը նվազագույնի հասցնելու համար ես RGB LED- ները դասավորեցի մատրիցային դասավորության մեջ, որտեղ ընդհանուր անոդները շարքերով իրար հետ կապված էին, իսկ կարմիր, կանաչ և կապույտ կաթոդները ՝ սյուներում: 4x4 մատրիցի համար միացման սխեման նման էր կցված սխեմայի:

Մի բան, որը դուք անմիջապես կնկատեք, այն է, որ մատրիցային սխեմայի առկայության դեպքում կան լուսադիոդային լուսավորության մի քանի կոնֆիգուրացիաներ, որոնք հնարավոր չէ անել միաժամանակ միացված բոլոր ցանկալի LED- ների հետ: Օրինակ, մատրիցան չի կարող միաժամանակ լուսավորել միմյանցից շեղվող երկու LED, քանի որ և՛ տողերի, և՛ սյուների սնուցումը կհանգեցնի նրան, որ երկու հակառակ LED- ները կվառվեն ցանկալի LED- ների ուղղահայաց անկյունագծի վրա: Սրա շուրջը աշխատելու համար մենք կօգտագործենք մուլտիպլեքսավորումը `յուրաքանչյուր տողում սկանավորելու համար: Համացանցում կան բազմաթիվ ռեսուրսներ, որոնք ընդգրկում են բազմապատկման տեխնիկան, ես չեմ փորձի դրանք այստեղ կրկնել:

Քանի որ ես օգտագործում եմ սովորական անոդի LED- ները, դա նշանակում է, որ շարքերը տալիս են դրական ուժ, իսկ սյուները սուզվում են գետնին: Լավ նորությունն այն է, որ 74HC595 հերթափոխի գրանցամատյանները կարող են և՛ աղբյուր լինել, և՛ խորտակել էներգիան, բայց վատ նորությունն այն է, որ նրանք սահմանափակում ունեն, թե որքան էներգիա կարող են ապահովել կամ խորտակել: 74HC595- ի առանձին քորոցների առավելագույն հոսանքը 70 մԱ է, բայց ավելի լավ է պահել 20 մԱ -ից պակաս: Մեր RGB LED- ների առանձին գույներն ունեն յուրաքանչյուրը մոտ 20 մԱ ոչ ոքի: Սա նշանակում է, որ 74HC595- ը չի կարող ուղղակիորեն միացնել LED- ների մի ամբողջ շարք, եթե ես ցանկանամ դրանք բոլորը միացնել:

Այսպիսով, տողն ուղղակիորեն սնուցելու փոխարեն, 74HC595- ը փոխարենը տրանզիստոր կշարժի յուրաքանչյուր տողի համար, և տրանզիստորը միացնելու կամ անջատելու է տողի հոսանքի ընթացքը: Քանի որ դիզայնը օգտագործում է ընդհանուր անոդի LED- ները, անջատիչ տրանզիստորը կլինի PNP: Եթե մենք օգտագործեինք ընդհանուր կաթոդային LED, միացման տրանզիստորը կլիներ NPN: Նկատի ունեցեք, որ անընդմեջ քշելու համար PNP տրանզիստոր օգտագործելով, հերթափոխի գրանցամատյանի կարգավորումն այն այժմ դառնում է ցածր, քանի որ PNP տրանզիստորին պետք է բացասական լարում թողարկողի և բազայի միջև միացնելու համար, ինչը թույլ կտա դրական հոսանք հոսել դեպի շարան.

Մեկ այլ բան, որը պետք է հաշվի առնել, հերթափոխային մատյանների ցանկալի բիտ դասավորությունն է: Այսինքն, հերթափոխի գրանցամատյանների միջև, որոնք բիթերն են վերահսկում մատրիցի տողերը կամ սյուները: Դիզայնը, որով ես ուղարկել եմ, այնտեղ է, որտեղ առաջին բիտը կամ «ամենանշանակալից բիթը», որն ուղարկվել է մարգարիտ շղթայված հերթափոխի գրանցամատյաններին, վերահսկում է LED- ների կարմիր տարրի սյունակը, երկրորդ բիթը վերահսկում էր առաջին սյունակի կանաչ տարրը, երրորդ բիթը ՝ առաջին սյունակին: կապույտ տարր, չորրորդ բիթը վերահսկում է երկրորդ սյունակի կարմիր տարրը,… այս օրինակը կրկնվում է ձախից աջ սյուների վրա: Այնուհետև ուղարկված հաջորդ բիթը վերահսկում է վերջին, կամ ներքևի տողը, հաջորդը ՝ երկրորդից մինչև վերջին տողը,… սա կրկնվում է մինչև վերջին ուղարկված բիթի կամ «նվազագույն նշանակալից բիթի» վերահսկումը մատրիցի առաջին կամ վերին տողը:.

Ի վերջո, ես պետք է որոշեի, թե ինչ դիմադրիչներ եմ օգտագործելու RGB LED- ի յուրաքանչյուր LED- ի համար: Մինչ դուք կարող եք օգտագործել ստանդարտ բանաձևը, որը միավորում է առաջի լարումը և ցանկալի հոսանքը `պահանջվող դիմադրությունը հաշվարկելու համար, ես գտա, որ յուրաքանչյուր LED- ի հոսանքի 20 միլիամպ սահմանելը հանգեցրեց սպիտակ գույնի, երբ բոլոր կարմիր, կանաչ և կապույտ LED- ները միացված էին:. Այսպիսով, ես սկսեցի աչքով անել այն: Սպիտակի մեջ շատ կարմիր նշանակում էր բարձրացնել կարմիր LED- ի ռեզիստորային օմերը `հոսանքը նվազեցնելու համար: Ես կրկնում էի տարբեր օհմների ռեզիստորների փոխանակումը, մինչև չգտա մի համադրություն, որն առաջացնում էր սպիտակ գույն, իմ կարծիքով ճիշտ էր: Կարմիր LED- ի համար վերջնական համադրությունը 180 Ω էր, կանաչ LED- ի համար `220 Ω, իսկ կապույտ LED- ի համար` 100 Ω:

Քայլ 2. Սարքաշարի կառուցում

Սարքավորումների կառուցում - Գրատախտակ
Սարքավորումների կառուցում - Գրատախտակ
Սարքավորումների կառուցում - Գրատախտակ
Սարքավորումների կառուցում - Գրատախտակ

Ապարատային կոնստրուկտորի առաջին փուլը հացի նստեցումն էր: Այստեղ ես պատրաստել եմ 4x4 մատրիցա RGB LED- ով: Այս մատրիցը վերահսկելու համար կպահանջվի 16 բիթ, 12 -ը ՝ RGB սյուների համար և 4 -ը ՝ յուրաքանչյուր տողի համար: Երկու 74HC595 հերթափոխի գրանցամատյանները կարող են կարգավորել այդ ամենը: Ես նախ հետազոտեցի և նախագծեցի մի շրջան, որը կարծում էի, որ կաշխատի, այնուհետև այն կառուցեցի հացահատիկի վրա:

Հացաթխման կառուցման թերևս ամենամեծ մարտահրավերը բոլոր լարերը կառավարելն էր: Ես վերցրեցի հացաթղթերի համար պատրաստված մետաղալարերի հավաքածու, բայց այն ժամանակ դա մի փոքր ծանրաբեռնված էր: Մի հնարք, որը ես գտա, որ օգտակար էր, ստեղծեց «նավահանգիստ» `Arduino- ի տախտակին միանալու համար: Այսինքն, ոչ թե Arduino- ի կապումներն ուղղակիորեն միացնեք տախտակի տարբեր IC կապերին, մի քանի տող նվիրեք տախտակի վրա Arduino- ի միացման կետը լինելու համար, այնուհետև համապատասխան տողերը կապեք այդ տողերին: Այս նախագծի համար ձեզ անհրաժեշտ է ընդամենը հինգ միացում Arduino- ին ՝ +5V, հող, տվյալներ, ժամացույց և սողնակ:

Երբ տախտակի կառուցումն ավարտվեց, ես պետք է փորձեի այն: Այնուամենայնիվ, առանց վարորդի ՝ հերթափոխի գրանցամատյաններին ճիշտ ազդանշաններ ուղարկելու, ես չկարողացա ստուգել ՝ արդյոք ապարատային դասավորությունը աշխատում է:

Քայլ 3: Վարորդի ծրագրակազմի ձևավորում

Image
Image

Հաշվի առնելով ծրագրային ապահովման մշակման իմ սեփական կարիերայի փորձը, սա նախագծի այն մասն էր, որը ես, հավանաբար, ամենահստակն էի ՝ անցնելու ճանապարհի վերաբերյալ: Ես հետազոտեցի Arduino- ի վրա հիմնված LED մատրիցի այլ վարորդներից շատերը: Թեև, իհարկե, կան լավ վարորդներ, բայց ոչ մեկն այն դիզայնը չուներ, որն ուզում էի: Վարորդի իմ նախագծային նպատակներն էին.

  • Տրամադրեք բարձր մակարդակի API, որպեսզի կարողանաք ծրագրված կերպով ստեղծել պատկերներ և անիմացիաներ: Իմ տեսած վարորդների մեծ մասն ավելի կենտրոնացած էր կոշտ կոդավորված պատկերների վրա: Բացի այդ, քանի որ ես C ++ ծրագրավորող եմ առևտրով, ես ուզում էի օգտագործել լավ օբյեկտային կողմնորոշված դիզայն ՝ LED մատրիցային գծագրման աշխատանքներն իրականացնելու և կառավարելու համար:
  • Էկրանի պատկերը կառավարելու համար օգտագործեք կրկնակի բուֆերային մոտեցում: Մեկ բուֆերն այն է, ինչը ծրագրորեն ներգրավվում է, իսկ մյուսը ներկայացնում է մատրիցային պիքսելների վիճակը ցանկացած պահի: Այս մոտեցման առավելությունն այն է, որ ձեզանից չի պահանջվում ամբողջությամբ կատարել էկրանի հաջորդ շրջանակի թարմացումը `բազմապատկման թարմացման ցիկլերի միջև:
  • Օգտագործեք PWM- ը `թույլատրելու ավելի քան յոթ պարզունակ գույներ, որոնք RGB- ն կարող է տալ կարմիր, կանաչ և կապույտ տարրերի պարզ համադրությունների միջոցով:
  • Գրեք վարորդին այնպես, որ այն «պարզապես աշխատի» տարբեր չափի RGB LED մատրիցներով, որոնք հետևում էին իմ ընդհանուր մատրիցային նախագծման մոտեցմանը: Նկատի ունեցեք, որ մինչ իմ ապարատային դիզայնը օգտագործում է 74HC595 հերթափոխի գրանցամատյաններ, ես ակնկալում եմ, որ իմ վարորդը կաշխատի ցանկացած հերթափոխի գրանցման ոճի միացման/անջատման մեխանիզմով, որը դրված է նմանատիպ բիտ դասավորության միջոցով, ինչպես իմ ապարատային դիզայնը: Օրինակ, ես ակնկալում էի, որ իմ վարորդը կաշխատի ապարատային դիզայնով, որն օգտագործում էր DM13A չիպսեր `սյուները վերահսկելու համար և 74HC595 չիպ` տողերը վերահսկելու համար:

Եթե ցանկանում եք անմիջապես անցնել վարորդի ծածկագրին, ապա այն կարող եք գտնել այստեղ GitHub- ում:

Իմ վարորդի առաջին կրկնությունը մի փոքր ուսանելի կոր էր Arduino հարթակի հնարավորությունների վերաբերյալ: Առավել ակնհայտ սահմանափակումը RAM- ն է, որը 2K բայթ է Arduino Uno- ի և Nano- ի համար: Նման սցենարում C ++ օբյեկտների օգտագործումը հաճախ խորհուրդ չի տրվում `օբյեկտների հիշողության պատճառով: Այնուամենայնիվ, ես զգացի, որ ճիշտ կատարելու դեպքում C ++ - ում օբյեկտների օգուտը գերազանցեց դրանց արժեքը (RAM- ում):

Երկրորդ խոշոր մարտահրավերն այն էր, թե ինչպես կարելի է իրականացնել զարկերակի լայնության մոդուլյացիան հերթափոխային գրանցամատյանների միջոցով, որպեսզի կարողանամ RGB LED- ի յոթ պարզունակ գույներից ավելի շատ առաջացնել: Երկար տարիներ ծրագրավորելով Linux հարթակներում, ես սովոր էի օգտագործել կոնստրուկցիաներ, ինչպիսիք են թելերը `գործընթացները կառավարելու համար, որոնք պահանջում են հետևողական ժամանակ: Հերթափոխի ռեգիստրի թարմացման գործողության ժամկետը բավականին կարևոր է դառնում, երբ մուլտիպլեքսավորում օգտագործող LED մատրիցի համար վարորդ սարքելը: Պատճառն այն է, որ չնայած մուլտիպլեքսավորումը տեղի է ունենում այնքան արագ, որ ձեր աչքերը չեն տեսնում առանձին LED- ները, որոնք թարթում և անջատում են, ձեր այաները կարող են նկատել տարբեր LED- ների միացված ընդհանուր ժամանակի տարբերությունները: Եթե LED- ների մեկ տող մշտապես միացված է ավելի երկար ժամանակ, քան մյուսները, ապա այն ավելի պայծառ տեսք կունենա մուլտիպլեքսավորման ժամանակ: Սա կարող է հանգեցնել մատրիցի անհավասար պայծառության կամ ընդհանուր առմամբ մատրիցի պարբերական հարվածի (դա տեղի է ունենում, երբ թարմացման մեկ ցիկլը տևում է ավելի երկար, քան մյուսները):

Քանի որ ինձ անհրաժեշտ էր ժամանակի հետևողական մեխանիզմ, որպեսզի հերթափոխի գրանցամատյանում թարմացումները լինեն համաձայն, բայց Arduino- ն պաշտոնապես չի աջակցում շարանը, ես ստիպված էի ստեղծել իմ թելերի նման մեխանիզմը: Դրա առաջին կրկնությունը պարզապես օղակի ժամանակաչափի ստեղծումն էր, որը կախված էր Arduino- ի օղակի () գործառույթից և կարող էր գործողություն կատարել, երբ որոշակի ժամանակ է անցել վերջին գործողության արձակման պահից: Սա «համագործակցային բազմակողմանի աշխատանքի» ձև է: Հնչում է լավ, բայց գործնականում դա անհամապատասխան էր, երբ կրակոցի արագությունը չափվում էր միկրովայրկյաններով: Դրա պատճառն այն է, որ եթե ես ունենայի այս օղակի ժամաչափերից երկուսը, նրանց գործողություններից մեկը հաճախ բավական երկար էր տևում, որպեսզի երկրորդ գործողությունը ցանկալիից ուշ գործարկվեր:

Ես գտա, որ այս խնդրի լուծումը Arduino- ի հարազատ ժամացույցի ընդհատման մեխանիզմն օգտագործելն է: Այս մեխանիզմը թույլ է տալիս մի փոքր կոդ գործարկել շատ հետևողական ընդմիջումներով: Այսպիսով, ես նախագծեցի վարորդի կոդը դիզայնի տարրի շուրջ `օգտագործելով ժամացույցի ընդմիջում` մատրիցայի հերթափոխի գրանցամատյանների ուղարկման ծածկագիրը մուլտիպլեքս ցիկլում հաջորդ թարմացումը ուղարկելու համար: Որպեսզի դա անեմ և թույլ տամ, որ էկրանի պատկերի թարմացումները տեղի ունենան, որպեսզի չխոչընդոտեն հերթափոխի գրանցամատյանների ակտիվ թափոնին (մի բան, որը մենք կանվանեինք «մրցավազքի պայման»), ես օգտագործեցի մի մոտեցում ՝ երկակի բուֆեր ունենալու հերթափոխի գրանցամատյանների բիտերի համար, մեկը ՝ գրելու և մեկը կարդալու համար: Երբ օգտվողը թարմացնում է մատրիցային պատկերը, այդ գործողությունները տեղի են ունենում գրելու բուֆերի մոտ: Երբ այդ գործողություններն ավարտվեն, ընդհատումները ժամանակավորապես կասեցվում են (սա նշանակում է, որ ժամացույցի ընդհատումը չի կարող կրակել), և գրելու բուֆերը փոխարինվում է նախորդ ընթերցման բուֆերով, և դա ընթերցման նոր բուֆերը չէ, ապա թարգմանությունները նորից միացված են: Այնուհետև, երբ ժամացույցը ընդհատում է կրակը ՝ նշելով, որ ժամանակն է հաջորդ բիթ կոնֆիգուրացիան փոխանցել հերթափոխի գրանցամատյաններին, այդ տեղեկատվությունը կարդացվում է ընթացիկ ընթերցման բուֆերից: Այս կերպ, որևէ գրություն երբևէ չի պատահում բուֆերի վրա, որը կարող է ընթերցվել ժամացույցի ընդհատման ժամանակ, ինչը կարող է փչացնել հերթափոխի մատյաններին ուղարկվող տեղեկատվությունը:

Մնացած վարորդի նախագծումը օբյեկտիվորեն կողմնորոշված դիզայնի համեմատաբար պարզ դեպք էր: Օրինակ, ես ստեղծեցի օբյեկտ, որը կառավարելու է հերթափոխի գրանցիչի բիտ պատկերը էկրանի ցանկացած վիճակի համար: Փոքր պատկերի կառավարմանն առնչվող ծածկագիրը ներառելով ՝ վերոնշյալ երկվորյակ բուֆերային մոտեցման ստեղծումը ինքնին ուղղակի վարժություն էր: Բայց ես չեմ գրել այս Instructable- ը ՝ օբյեկտ կողմնորոշված դիզայնի առաքինությունները գովերգելու համար: Դիզայնի այլ տարրերը ներառում են Glyph և RGB Image հասկացությունները: Գլիֆը պատկերի հիմնական կառուցվածքն է, որը չունի բնածին գունային տեղեկատվություն: Կարող եք այն պատկերացնել որպես սև ու սպիտակ պատկեր: Երբ Glyph- ը քաշվում է LED էկրանին, տրվում է գունային տեղեկատվություն `նշելու, թե ինչպես պետք է գունավորվեն« սպիտակ »պիքսելները: RGB պատկերն այն պատկերն է, որտեղ յուրաքանչյուր պիքսել ունի իր գունային տեղեկատվությունը:

Ես խրախուսում եմ ձեզ վերանայել Arduino- ի էսքիզների օրինակները և վերանայել վարորդի վերնագրի փաստաթղթերը `ծանոթանալու համար, թե ինչպես օգտագործել վարորդը RGB LED մատրիցով պատկերներ և անիմացիաներ ստեղծելու համար:

Քայլ 4: LED ուրվական

LED ուրվական
LED ուրվական
LED ուրվական
LED ուրվական

LED մատրիցում «ուրվական» -ը լուսադիոդի երևույթն է, որը փայլում է այն ժամանակ, երբ դա ցանկալի չէ, սովորաբար շատ նվազեցված մակարդակ: Իմ սկզբնական ապարատային դիզայնը ենթակա էր ուրվականացման, հատկապես վերջին շարքում: Դրա պատճառը երկու բան է. Տրանզիստորներն անմիջապես չեն անջատվում և RGB LED- ների պարազիտային հզորությունը:

Երբ մենք տանում ենք տողերի միջով, քանի որ տրանզիստորներն անմիջապես չեն անջատվում, սկանավորման ցիկլի նախորդ շարքը դեռ մասամբ սնվում է, երբ հաջորդ տողը միանում է: Եթե տրված սյունակը, որն անջատված էր նախորդ շարքում, նոր է միանում, երբ նոր շարանը սնվում է, ապա նախորդ շարքում այդ սյունակի լուսադիոդը կարճ ժամանակ կպայծառանա, մինչդեռ այդ նախորդ տողի անջատիչ տրանզիստորը դեռ պտտման փուլում է: անջատված Այն, ինչը ստիպում է տրանզիստորին զգալի ժամանակ պահանջել անջատելու համար, տրանզիստորի հիմքի հագեցվածությունն է: Սա հանգեցնում է այն բանին, որ տրանզիստոր կոլեկցիոներ-արտանետիչ ուղին շարունակում է անցկացնել, երբ հոսանքը հեռացվում է հիմքից, առնվազն մինչև հագեցվածության ցրումը: Հաշվի առնելով, որ մեր մուլտիպլեքսավորման թարմացման ցիկլը պատճառ է դառնում, որ տողերը միտումնավոր միկրովայրկյաններով չափված ժամանակաշրջանի համար լինեն, այն տևողությունը, որը նախորդ շարքի հագեցած տրանզիստորը մնում է հաղորդիչ, կարող է դրա զգալի մասը լինել: Արդյունքում, ձեր աչքը կարող է ընկալել այն շատ փոքր ժամանակը, երբ միացված է նախորդ շարքի LED- ը:

Տրանզիստորի հագեցվածության խնդիրը շտկելու համար հիմքի և կոլեկտորի միջև ընկած տրանզիստորին կարող է ավելացվել Schottky դիոդ, որը տրանզիստորի միացման ժամանակ մի փոքր հետադարձ հոսանք է առաջացնում հիմքի վրա ՝ կանխելով տրանզիստորի հագեցումը: Սա իր հերթին կհանգեցնի տրանզիստորի ավելի արագ անջատմանը, երբ հոսանքը հեռացվի բազայից: Այս ազդեցության խորը բացատրության համար տե՛ս այս հոդվածը: Ինչպես տեսնում եք այս բաժնի նկարից, առանց դիոդի ուրվականությունը բավականին նկատելի է, բայց յուրաքանչյուր շարքի համար դիոդի միացումն էականորեն հեռացնում է ուրվականությունը:

RGB LED- ները ենթակա են մեկ այլ երևույթի, որը կոչվում է մակաբուծական հզորություն: Դրա հիմնական պատճառն այն է, որ RGB LED միավորի երեք գունավոր LED- ներից յուրաքանչյուրն ունի տարբեր առաջային լարումներ: Առջևի լարման այս տարբերությունը կարող է առաջացնել էլեկտրական հզորության ազդեցություն յուրաքանչյուր LED գույնի միջև: Քանի որ էլեկտրական լիցքը կուտակվում է LED սարքում, երբ սնուցվում է, երբ էներգիան անջատվում է, մակաբուծական հզորությունը պետք է լիցքաթափվի: Եթե այդ LED սյունակն այլ կերպ միացված է մեկ այլ տողի միացման համար, ապա մակաբույծի լիցքը կթափվի այդ սյունակների LED- ի միջով և կհանգեցնի դրա կարճ փայլմանը: Այս ազդեցությունը լավ բացատրվում է այս հոդվածում: Լուծումը կայանում է նրանում, որ այս մակաբուծական լիցքի համար արտանետման ուղի ավելացվի, այլ ոչ թե հենց LED- ի միջոցով, այնուհետև LED- ին ժամանակ տրամադրվի լիցքաթափման համար, մինչև սյունը նորից սնուցվի: Իմ ապարատային նախագծման մեջ դա կատարվում է `յուրաքանչյուր շարքի էլեկտրահաղորդման գծին դիմադրություն ավելացնելով, որը ուժը միացնում է գետնին: Դա կհանգեցնի հոսանքի ավելի մեծ հոսանքի գծի, երբ շարանը սնվում է, բայց ապահովում է մակաբույծ հզորության արտանետման ուղի, երբ շարանը չի սնվում:

Այնուամենայնիվ, հարկ է նշել, որ գործնականում ես գտնում եմ, որ մակաբույծների հզորության ազդեցությունը հազիվ նկատելի է (եթե փնտրեք, կարող եք գտնել այն), և, հետևաբար, ես համարում եմ, որ այս լրացուցիչ դիմադրության ավելացումն ընտրովի չէ: Հագեցած տրանզիստորների դանդաղեցման ժամանակի ազդեցությունը շատ ավելի ուժեղ և նկատելի է: Այնուամենայնիվ, եթե ստուգեք այս բաժնում ներկայացված երեք լուսանկարները, կարող եք տեսնել, որ ռեզիստորներն ամբողջությամբ հեռացնում են ցանկացած ուրվական, որը դեռևս տեղի է ունենում դանդաղ տրանզիստորի անջատման ժամանակներից այն կողմ:

Քայլ 5. Վերջնական արտադրություն և հաջորդ քայլեր

Image
Image

Այս նախագծի վերջին փուլն ինձ համար տպագիր տպատախտակի (PCB) ստեղծումն էր: Ես օգտագործել եմ բաց կոդով Fritzing ծրագիրը ՝ իմ PCB- ն նախագծելու համար: Մինչ 10x10 տախտակի վրա 100 լուսադիոդներ տեղադրելու համար շատ կրկնվող առաջադրանքներ պետք է կատարվեին, ես իրականում տարօրինակ կերպով գոհացուցիչ գտա նախագծի այս փուլը: Պարզել, թե ինչպես կդասավորվի յուրաքանչյուր էլեկտրական ուղի, նման էր հանելուկի, և այդ հանելուկը լուծելը ստեղծեց կատարման զգացում: Քանի որ ես ստեղծված չեմ տպատախտակները արտադրելու համար, ես օգտագործեցի բազմաթիվ առցանց ռեսուրսներից մեկը, որը կատարում է անհատական PCB- ի փոքր աշխատանքներ: Մասերը միասին միացնելը բավականին ուղիղ էր, քանի որ իմ ձևավորման մեջ օգտագործվել էին անցքերի բոլոր մասերը:

Այս Instructable- ը գրելու պահին ես ունեմ հետևյալ ծրագրերը իմ RGB LED Matrix նախագծերի համար.

  1. Շարունակեք բարելավել API շերտի վարորդը `ծրագրավորողին ավելի բարձր մակարդակի գործառույթներ թույլ տալու համար, հատկապես տեքստի ոլորումը:
  2. Ստեղծեք ավելի մեծ մատրիցային ձևավորում, օրինակ ՝ 16x16 կամ նույնիսկ 16x32:
  3. Ուսումնասիրեք MOSFET- երը BJT- ների փոխարեն ՝ տողերի հոսանքի անջատման համար
  4. Սյունակների փոխարկման համար ուսումնասիրեք DM13A- ի հաստատուն ընթացիկ վարորդների փոխարեն, այլ ոչ թե 74HC595- ի
  5. Ստեղծեք վարորդներ միկրո կառավարման այլ հարթակների համար, ինչպիսիք են Teensy, ODROID C2 կամ Raspberry Pi:

Նկատի ունեցեք, որ և՛ ապարատային դիզայնը, և՛ վարորդը թողարկվել են GPL v3 բաց կոդով լիցենզիայի ներքո ՝ այս GitHub շտեմարանում: Ավելին, քանի որ չնայած PCB- ի արտադրողները կատարում են իմ PCB- ի դիզայնի «փոքր աշխատանքներ», ես դեռ շատ ավելին եմ ստանում, քան անձամբ ինձ պետք է: Այսպիսով, ես վաճառում եմ ամբողջական հավաքածուներ իմ տարբեր RGB LED մատրիցների նախագծերի համար (PCB և ներառված բոլոր մասերը) իմ կայքից այստեղ:

Խորհուրդ ենք տալիս: