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

Օպտիկամանրաթելային լույսերը կտավի մեջ `5 քայլ
Օպտիկամանրաթելային լույսերը կտավի մեջ `5 քայլ

Video: Օպտիկամանրաթելային լույսերը կտավի մեջ `5 քայլ

Video: Օպտիկամանրաթելային լույսերը կտավի մեջ `5 քայլ
Video: Տեսաբլոգ Չորեքշաբթի երեկոյան խոսում են տարբեր թեմաների շուրջ: Եկեք միասին աճենք YouTube 2 -ում 2024, Հուլիսի
Anonim
Image
Image
Օպտիկամանրաթելային լույսերը կտավի տպագրության մեջ
Օպտիկամանրաթելային լույսերը կտավի տպագրության մեջ

Այս նախագիծը յուրահատուկ պտույտ է ավելացնում ստանդարտ կտավի տպման վրա: Ես ծրագրել եմ 4 տարբեր լուսավորության ռեժիմներում, բայց դուք հեշտությամբ կարող եք ավելին ավելացնել: Ռեժիմը փոխվում է ամեն անգամ, երբ այն անջատում և նորից միացնում եք ՝ առանձին կոճակ ունենալու փոխարեն, որպեսզի նվազագույնի հասցվի շրջանակի վնասը: Մարտկոցները պետք է աշխատեն 50+ ժամվա ընթացքում: Ես իսկապես վստահ չեմ, բայց ես նման նախագիծ եմ պատրաստել ընկերոջս համար և այն օգտագործել է 5 անգամ ավելի շատ լույսեր և տևել է 20+ ժամ մեկ մարտկոցի վրա:

Նյութեր

  • Կտավ տպել աշխատունակ տարածքով. Ես իմը պատվիրեցի https://www.easycanvasprints.com կայքից, քանի որ դրանք ունեին լավ գներ և բաց մեջք: Հաստ 1,5 դյույմանոց շրջանակը կատարյալ էր և ինձ շատ տեղ տվեց ՝ օպտիկամանրաթելային թելերը թեքելու համար: Բացի այդ, ցանկանում եք նկար, որը ձեզ տալիս է 3 "8" աշխատունակ տարածք մարտկոցի և միկրոկոնտրերի և LED շերտերի համար:
  • LED շերտի լույսեր - ես օգտագործել եմ հասցեական WS2812 LED շերտեր: Մի վախեցեք, դրանք իսկապես հեշտ է օգտագործել FastLED կամ Neopixel գրադարաններով: Կարող եք նաև օգտագործել ցանկացած ստանդարտ LED ժապավեն, պարզապես չեք կարողանա վերահսկել յուրաքանչյուր լուսավոր հատված առանձին ՝ առանց շատ ավելի մեծ լարերի:
  • Միկրոկոնտրոլեր - Ես օգտագործել եմ Arduino Uno, բայց այս նախագծի համար կարող եք օգտագործել գրեթե ամեն ինչ:
  • Մարտկոցի տուփ - ես սա պատվիրեցի eBay- ից (Չինաստանից) և այն վերնագրված էր «6 x 1.5V AA 2A CELL մարտկոցի մարտկոցների կրիչ»
  • Օպտիկամանրաթելային թելեր - ևս մեկ անգամ, պատվիրված Չինաստանից eBay- ում ՝ «PMMA պլաստմասե օպտիկամանրաթելային մալուխի վերջը աճում է լուսավոր DIY դեկոր» կամ «PMMA End Glow օպտիկամանրաթելային մալուխը աստղի առաստաղի լուսավորության համար»: Ես օգտագործել եմ 1 մմ և 1.5 մմ չափսեր, իրականում խորհուրդ եմ տալիս օգտագործել դրանից փոքր:
  • Միացման/անջատման անջատիչ - "SPDT On/On 2 Position Miniature Toggle Switches"
  • Հաղորդալարերի կազմակերպման տեսահոլովակներ - Դրանք օգնում են օպտիկամանրաթելային թելերը պահել գեղեցիկ և կոկիկ:
  • Փրփուր տախտակ, պինդ միջուկի միակցիչ մետաղալար, ջերմության նվազման խողովակ

Գործիքներ

  • Dremel - օգտագործվում է նկարի շրջանակում միացնելու/անջատելու անջատիչը բույն դնելու համար: Գուցե դա կարող է իրականացվել փորվածքով և իսկապես մեծ չափաբաժնով, բայց ես դա խորհուրդ չեմ տալիս:
  • Oldոդման երկաթ - լարեր ամրացնելով LED շերտին
  • Տաք սոսինձ ատրճանակ - այս նախագծի բառացիորեն յուրաքանչյուր քայլ
  • Խոշոր կարի ասեղ - կտավների և փրփուրի տախտակի միջով լույսեր բացելու համար

Քայլ 1: Փրփուր տախտակ, մարտկոցի տուփ և միացում/անջատիչ

Փրփուր տախտակ, մարտկոցի փաթեթ և միացման/անջատիչ
Փրփուր տախտակ, մարտկոցի փաթեթ և միացման/անջատիչ
Փրփուր տախտակ, մարտկոցի փաթեթ և միացման/անջատիչ
Փրփուր տախտակ, մարտկոցի փաթեթ և միացման/անջատիչ

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

Ես օգտագործեցի dremel բիտը, որը կարծես սովորական փորվածք լինի, բայց իրականում հիանալի է նյութը հեռացնելու համար: Դա այն բիթերից է, որը պետք է գա ցանկացած դրեմելի հետ: Օգտագործեք սեղմված օդի տարա ՝ դերմելից ցանկացած թեփից ազատվելու համար:

Տաք սոսինձ ամեն ինչ տեղում: Համոզվեք, որ մարտկոցի տուփը շատ լավ ամրացված է, քանի որ մարտկոցը տեղադրելու/հանելու համար անհրաժեշտ է մի փոքր ուժ, և դուք չեք ցանկանում, որ մարտկոցի բռնիչը որևէ տեղ գնա:

Քայլ 2: Միկրոհսկիչ և միացում

Միկրոկոնտրոլեր և միացում
Միկրոկոնտրոլեր և միացում
Միկրոկոնտրոլեր և միացում
Միկրոկոնտրոլեր և միացում
Միկրոկոնտրոլեր և միացում
Միկրոկոնտրոլեր և միացում

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

Մարտկոցի տուփի դրական ծայրը միացրեք միկրոկառավարիչի VIN- ին (լարման մուտքագրում), որպեսզի այն օգտագործի վերահսկիչի ներկառուցված լարման կարգավորիչը `լարումը անհրաժեշտ 5V- ի հասցնելու համար: Եթե մենք ավելի շատ լույսեր էինք սնուցում, գուցե անհրաժեշտ լիներ դրանց համար օգտագործել մեր սեփական լարման կարգավորիչը, սակայն ՄԱԿ -ը պետք է կարողանա կարգավորել 5 լուսադիոդ:

Տվյալների ելքի և LED շերտի միջև դիմադրություն եմ օգտագործել `ազդանշանը հարթելու համար. Առանց դիմադրության հնարավոր է պատահաբար պիքսելների առկայծում ստանալ: Ռեզիստորի չափը իրականում նշանակություն չունի, 50Ω- ից 400Ω- ի միջև պետք է աշխատի:

Քայլ 3: Օպտիկամանրաթելային լույսեր

Image
Image
Օպտիկամանրաթելային լույսեր
Օպտիկամանրաթելային լույսեր
Օպտիկամանրաթելային լույսեր
Օպտիկամանրաթելային լույսեր

Որոշ փորձարկումներից և սխալներից հետո ես ի վերջո գտա մի լավ միջոց ՝ օպտիկամանրաթելային թելերը կտավի միջով անցնելու համար:

  1. Օգտագործեք կարի ամենամեծ ասեղը, որը դուք պետք է ծակեք կտավի և փրփուրի տախտակի առջևից: Ես խորհուրդ եմ տալիս սկզբում ծակել ձեր ուզած յուրաքանչյուր անցք, որպեսզի կարողանաք շրջել այն և տեսնել, թե որտեղ կարող եք/չեք կարող տեղադրել ձեր մալուխային կազմակերպության տեսահոլովակները
  2. Վերցրեք մի զույգ ասեղով քթի տափակաբերան աքցան և բռնեք օպտիկամանրաթելային թելը ծայրից մեկ սանտիմետրից պակաս հեռավորության վրա
  3. Օպտիկամանրաթելային թելն անցեք ասեղով կատարած անցքի միջով
  4. Ուղղորդեք շղթան տարբեր պլաստիկ ամրակներով այնտեղ, որտեղ այն անհրաժեշտից փոքր -ինչ երկար է. Մենք այն հետագայում կկտրենք
  5. Ձեր տաք սոսինձ ատրճանակով OWԱOWՐ ջերմաստիճանի պարամետրերի վրա (եթե այն ունի այդ տարբերակը) մի կաթիլ տաք սոսինձ դրեք օպտիկամանրաթելային թելի վրա, որտեղ այն անցնում է փրփուրի տախտակի միջով: Այլապես կարող եք օգտագործել այդ կապույտ կպչուն իրերը: Տաք սոսինձը մի փոքր դեֆորմացնում է թելը, բայց թվում է, որ այն շատ չի խառնվում օպտիկական որակների հետ
  6. Կտրեք շերտը կտավից մի փոքր հեռու ՝ օգտագործելով մետաղալարեր:

Գործընթացն արագացնելու համար կարող եք տաք սոսինձ անելուց առաջ անընդմեջ ծակել բազմաթիվ մանրաթելեր: Նրանք, ընդհանուր առմամբ, պետք է ինքնուրույն մնան տեղում:

Carefulգույշ եղեք, որպեսզի սեղանի վրա չկոտրեք կամ ճզմեք օպտիկամանրաթելային թելերը - դրանք կջարդվեն, և եթե այն չափազանց կարճ տա, ապա դուք տխուր կլինեք և ստիպված կլինեք այն նորից կատարել: Օգտագործեք մարտկոցի տուփը որպես հակակշիռ, որպեսզի գրասեղանի վրա ունենաք նկարի շրջանակը կեսից պակաս:

Քանի որ ես սևի փոխարեն օգտագործում էի սպիտակ փրփուրի տախտակ, LED- ների միացման ժամանակ շատ լույս էր փայլում: Որպես ամրացում, ես կպցրեցի որոշ ալյումինե փայլաթիթեղ ՝ լույսերի և կտավի միջև:

Օպտիկամանրաթելային թելերի յուրաքանչյուր փաթեթը միասին պահելու համար օգտագործեք ջերմային կծկման խողովակներ:

  1. Կտրեք տողերը փաթեթի համար մոտավորապես նույն երկարությամբ
  2. Տեղադրեք հատվածը ջերմության նվազեցման խողովակի միջով
  3. Օգտագործեք ջերմային ատրճանակ կամ եռակցման երկաթ `այն փոքրացնելու համար: Եթե դուք օգտագործում եք զոդման երկաթ, պարզապես թույլ տվեք, որ երկաթի կողքը թեթևակի դիպչի խողովակին, և այն կնվազի: Այն չպետք է հալեցնի խողովակը, քանի որ այն նախատեսված է մի փոքր ջերմության համար:

Ի վերջո, ես տաք սոսինձով կապեցի փաթեթի ծայրը յուրաքանչյուր LED լուսարձակին: Ես շատ տաք սոսինձ օգտագործեցի, որպեսզի մանրաթելերն իրականում լույս ստանային յուրաքանչյուր կարմիր/կանաչ/կապույտ դիոդից լույսի ներքո. Երբ մանրաթելերն իսկապես մոտ են լույսին «սպիտակ» գույնի (որն իրականում կարմիր և կանաչ և կապույտ է) ապա որոշ մանրաթելեր պարզապես կարմիր կլինեն, իսկ որոշները `կանաչ, այլ ոչ թե բոլորը սպիտակ: Դա կարող է բարելավվել ՝ թուղթ կամ այլ բան օգտագործելով այն ցրելու համար, բայց տաք սոսինձն ինձ համար բավական լավ աշխատեց:

Քայլ 4: Programրագրավորում

Սա ծրագրավորելիս ես օգտագործել եմ երեք գրադարաններ

FastLED - հիանալի գրադարան WS2812 LED շերտերի (և շատ այլ հասցեավորվող LED շերտերի) վերահսկման համար -

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

EEPROM - Օգտագործվում է նախագծի ընթացիկ ռեժիմը կարդալու/պահելու համար: Սա թույլ է տալիս նախագծին ավելացնել գույների ռեժիմը ամեն անգամ, երբ այն անջատում և նորից միացնում եք, ինչը բացառում է ռեժիմը փոխելու առանձին կոճակի կարիքը: EEPROM գրադարանը տեղադրվում է ամեն անգամ, երբ տեղադրում եք Arduino IDE- ն:

Ես նաև մի ուրվագիծ օգտագործեցի ուրիշների տեղադրած լույսերը թարթելու համար: Այն պատահականորեն լուսավորում է պիքսելը հիմնական գույնից մինչև գագաթնակետ, իսկ հետո հետ է ընկնում: https://gist.github.com/kriegsman/88954aae22b03a66… (այն օգտագործում է նաև FastLED գրադարանը)

Ես նաև օգտագործեցի vMicro հավելումը Visual Studio- ի համար. Սա Arduino IDE- ի ուժեղացված տարբերակն է: Այն ունի մի շարք օգտակար ինքնալրացման գործառույթներ և կարևորում է ձեր ծածկագրի խնդիրները ՝ առանց այն կազմելու: Այն արժե 15 դոլար, բայց արժե այն, եթե պատրաստվում եք կատարել մեկից ավելի Arduino նախագիծ, և դա ձեզ կստիպի սովորել Visual Studio- ի մասին, որը գերհզոր ծրագիր է:

(Ես նաև կցում եմ.ino ֆայլը, քանի որ Github Gist- ի Instructable հոստինգը ոչնչացնում է ֆայլի շատ դատարկ տարածքներ)

Arduino կոդը աշխատում է 4 գունային ռեժիմով Arduino UNO- ում WS2812B LED շերտի լույսերի համար ՝ օգտագործելով FastLED գրադարանը

#ներառում
#ներառում
#ներառում
// FastLED կարգավորում
#սահմանելNUM_LEDS4
#definePIN3 // Տվյալների փին LED շերտի համար
CRGB լուսարձակներ [NUM_LEDS];
// Twinkle կարգավորում
#defineBASE_COLORCRGB (2, 2, 2) // Հիմքի ֆոնի գույնը
#սահմանելPEAK_COLORCRGB (255, 255, 255) // Պիկ գույնը ՝ մինչև փայլելու համար
// Գումարը ՝ յուրաքանչյուր օղակով գույնն ավելացնելու համար, երբ այն ավելի պայծառ է դառնում.
#սահմանել DELTA_COLOR_UPCRGB (4, 4, 4)
// Գույնը նվազեցնելու համար յուրաքանչյուր հանգույցով, երբ այն ավելի մռայլ է դառնում.
#սահմանել DELTA_COLOR_DOWNCRGB (4, 4, 4)
// Յուրաքանչյուր պիքսելի հավանականությունը սկսում է պայծառանալ:
// 1 կամ 2 = միանգամից մի քանի լուսավոր պիքսել:
// 10 = մի շարք պայծառ պիքսելներ միաժամանակ:
#սահմանել CHANCE_OF_TWINKLE2
enum {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
բայթ runMode;
բայթ globalBright = 150;
բայթ globalDelay = 20; // Թարթման հետաձգման արագություն
բայթ հասցե = 35; // Հասցե ՝ գործարկման ռեժիմը պահելու համար
voidsetup ()
{
FastLED.addLeds (լուսարձակներ, NUM_LEDS);
FastLED.setCorrect (TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (globalBright);
// Ստացեք գործարկման ռեժիմը
runMode = EEPROM.read (հասցե);
// Բարձրացրեք ընթացքի ռեժիմը 1 -ով
EEPROM.write (հասցե, runMode + 1);
}
voidloop ()
{
անջատիչ (runMode)
{
// Պինդ սպիտակ
case1: fill_solid (leds, NUM_LEDS, CRGB:: White);
FastLED.show ();
DelayForever ();
ընդմիջում;
// Մի փոքր դանդաղ շողացեք
case2: FastLED.setBrightness (255);
գլոբալ ուշացում = 10;
TwinkleMapPixels ();
ընդմիջում;
// Շողացեք արագ
case3: FastLED.setBrightness (150);
գլոբալ հետաձգում = 2;
TwinkleMapPixels ();
ընդմիջում;
// Rիածան
գործ 4:
RunRainbow ();
ընդմիջում;
// Ինդեքսավորեք տիրույթից դուրս, վերակայեք այն 2 -ի և այնուհետ գործարկեք 1 ռեժիմը:
// Երբ arduino- ն կվերագործարկվի, այն կաշխատի 2 -րդ ռեժիմով, բայց առայժմ գործարկելու է 1 ռեժիմը
կանխադրված:
EEPROM.write (հասցե, 2);
runMode = 1;
ընդմիջում;
}
}
voidRunRainbow ()
{
բայթ *գ;
uint16_t i, j;
մինչդեռ (ճշմարիտ)
{
(j = 0; j <256; j ++) {// անիվի բոլոր գույների 1 ցիկլը
համար (i = 0; i <NUM_LEDS; i ++) {
c = Անիվ (((i * 256 / NUM_LEDS) + ժ) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
ուշացում (գլոբալ ուշացում);
}
}
}
բայթ * Անիվ (բայթ WheelPos) {
ստատիկ բայթ գ [3];
եթե (WheelPos <85) {
c [0] = WheelPos * 3;
գ [1] = 255 - անիվային տեղամաս * 3;
գ [2] = 0;
}
elseif (WheelPos <170) {
WheelPos -= 85;
գ [0] = 255 - անիվային տեղամաս * 3;
գ [1] = 0;
c [2] = WheelPos * 3;
}
ուրիշ {
WheelPos -= 170;
գ [0] = 0;
c [1] = WheelPos * 3;
գ [2] = 255 - անիվային տեղամաս * 3;
}
վերադարձ գ;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
մինչդեռ (ճշմարիտ)
{
համար (uint16_t i = 0; i <NUM_LEDS; i ++) {
եթե (PixelState == SteadyDim) {
// այս պիքսելներն այս պահին են ՝ SteadyDim
// այնպես որ, մենք պատահականորեն մտածում ենք, որ այն սկսի ավելի պայծառանալ
եթե (պատահական 8 () <CHANCE_OF_TWINKLE) {
PixelState = GettingBrighter;
}
}
elseif (PixelState == GettingBrighter) {
// այս պիքսելներն այս պահին են ՝ GettingBrighter
// այնպես որ, եթե այն գագաթնակետին է, միացրեք այն նորից մռայլվելու
եթե (leds > = PEAK_COLOR) {
PixelState = GettingDimmerAgain;
}
ուրիշ {
// հակառակ դեպքում, պարզապես շարունակիր լուսավորել այն.
leds += DELTA_COLOR_UP;
}
}
else {// կրկին մռայլվելը
// այս պիքսելներն այս պահին են ՝ GettingDimmerAgain
// այնպես որ, եթե այն վերադառնում է հիմնական գույնի, փոխեք այն կայուն մռայլ
եթե (leds <= BASE_COLOR) {
leds = BASE_COLOR; // վերականգնել ճշգրիտ բազային գույնը, եթե մենք գերազանցենք
PixelState = SteadyDim;
}
ուրիշ {
// հակառակ դեպքում, պարզապես շարունակեք այն նվազեցնել:
leds -= DELTA_COLOR_DOWN;
}
}
}
FastLED.show ();
FastLED.delay (globalDelay);
}
}
voidInitPixelStates ()
{
memset (PixelState, sizeof (PixelState), SteadyDim); // սկզբնականացնել բոլոր պիքսելները SteadyDim- ին:
fill_solid (leds, NUM_LEDS, BASE_COLOR);
}
voidDelayForever ()
{
մինչդեռ (ճշմարիտ)
{
ուշացում (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip () {
FastLED.show ();
}
voidsetPixel (int Pixel, բայտ կարմիր, բայտ կանաչ, բայթ կապույտ) {
// FastLED
leds [Pixel].r = կարմիր;
leds [Pixel].g = կանաչ;
leds [Pixel].b = կապույտ;
}

դիտել rawFiberOptic_ClemsonPic.ino- ն, որը տեղակայված է it -ի կողմից GitHub- ի կողմից

Քայլ 5: Վերջնական արտադրանք

Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք
Վերջնական արտադրանք

Տա-դա! Հուսով եմ, որ այս Instructable- ը ոգեշնչում է մեկ ուրիշին `պատրաստելու իրենց նմանատիպ նախագիծը: Դա իրոք դժվար չէր անել, և ես զարմացա, որ ոչ ոք դա չի արել և դեռևս դրա մասին մանրակրկիտ հրահանգ չի գրել:

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