Мазмұны:

Кенепте талшықты-оптикалық шамдар: 5 қадам
Кенепте талшықты-оптикалық шамдар: 5 қадам

Бейне: Кенепте талшықты-оптикалық шамдар: 5 қадам

Бейне: Кенепте талшықты-оптикалық шамдар: 5 қадам
Бейне: Жабыркагандарга кенемте каражатты ким төлөйт? 2024, Шілде
Anonim
Image
Image
Кенепте басып шығарудағы талшықты-оптикалық шамдар
Кенепте басып шығарудағы талшықты-оптикалық шамдар

Бұл жоба кенептің стандартты басылымына бірегей айналдыруды қосады. Мен 4 түрлі жарықтандыру режимінде бағдарламаладым, бірақ сіз басқаларын оңай қосуға болады. Режим кадрдың зақымдалуын азайту үшін бөлек түйменің орнына оны өшіріп, қайта қосқан сайын өзгереді. Батареялар 50+ сағатқа созылуы керек - мен сенімді емеспін, бірақ мен досыма ұқсас жоба жасадым, ол 5 есе көп шамды қолданды және батареялардың бір жиынтығында 20+ сағатқа созылды.

Материалдар

  • Жұмыс кеңістігі бар кенепті басып шығару - мен https://www.easycanvasprints.com сайтынан тапсырыс бердім, себебі олардың бағасы жақсы және арқасы ашық. Қалыңдығы 1,5 дюймдік рамка мінсіз болды және маған талшықты -оптикалық жіптерді бүгу үшін көп орын берді. Сонымен қатар, сізге батарея жинағына, микроконтроллерге және жарық диодты жолақтарға 3 «8» көлемінде жұмыс істейтін кеңістік беретін сурет қажет.
  • Жарықдиодты жолақ шамдары - Мен адрестік WS2812 жарық диодты жолақтарды қолдандым. Қорқытпаңыз, оларды FastLED немесе Neopixel кітапханаларында қолдану өте оңай! Сіз сондай -ақ кез келген стандартты жарықдиодты жолақты қолдана аласыз, сіз көп жарықтандырусыз әрбір жарық бөлігін жеке басқара алмайсыз.
  • Микроконтроллер - Мен Arduino Uno қолдандым, бірақ сіз бұл жоба үшін кез келген нәрсені қолдана аласыз.
  • Аккумуляторлық пакет - мен оны eBay -ден (Қытайдан) тапсырыс бердім және ол «6 x 1.5V AA 2A CELL батарея батареяларының ұстаушысы» деп аталды.
  • Талшықты -оптикалық жіптер - тағы да eBay -де Қытайдан тапсырыспен - «PMMA пластикалық талшықты -оптикалық кабель жарық диодты жарықтандырады» немесе «жұлдызды төбеге арналған жарық жинағына арналған PMMA End Glow талшықты -оптикалық кабелі». Мен 1 мм және 1,5 мм өлшемдерін қолдандым, мен одан кішісін пайдалануды ұсынамын.
  • Қосу/өшіру қосқышы - «SPDT On/On 2 позициялы миниатюралық қосқыштар»
  • Сымды ұйымдастыруға арналған қысқыштар - бұл талшықты -оптикалық жіптерді жақсы және ұқыпты ұстауға көмектеседі.
  • Көбік тақтасы, қатты ядролы қосқыш сым, жылуды төмендететін құбыр

Құралдар

  • Dremel - қосу/өшіру қосқышын сурет жақтауына салу үшін қолданылады. Мұны жаттығумен және өте үлкен мөлшерде жасауға болады, бірақ мен бұны ұсынбаймын.
  • Пісіру үтігі - сымдарды жарық диодты жолаққа бекіту
  • Ыстық желім тапаншасы - бұл жобаның әр қадамы
  • Үлкен тігу инесі - кенеп пен шамдарға арналған көбік тақтасы арқылы тесіктерді тесуге арналған

1 -қадам: көбік тақтасы, батарея жиынтығы және қосу/өшіру қосқышы

Көбік тақтасы, аккумуляторлық пакет және қосу/өшіру қосқышы
Көбік тақтасы, аккумуляторлық пакет және қосу/өшіру қосқышы
Көбік тақтасы, аккумуляторлық пакет және қосу/өшіру қосқышы
Көбік тақтасы, аккумуляторлық пакет және қосу/өшіру қосқышы

Қалғаннан бұрын кенептің артқы жағына көбік тақтасын бекіту керек. Бұл бізге барлық нәрсені бекітуге арналған жақсы бетті береді және талшықты -оптикалық жіптерді орнында ұстауға көмектеседі. Көбік тақтасын қажетті мөлшерде кесу үшін оны дәл жерге пышақ немесе қорап кескішпен қолданыңыз және оны көптеген жерлерге ыстық желіммен жабыстырыңыз. Мен қара көбік тақтасын қолдануды ұсынамын, ол жарықтың көп өтуіне жол бермейді.

Мен кәдімгі бұрғылауға ұқсас, бірақ материалды кетіру үшін тамаша дремельді қолдандым. Бұл кез -келген дремельмен бірге келуі керек биттердің бірі. Дремельден кез келген үгінділерді алып тастау үшін сығылған ауа құтысын қолданыңыз.

Ыстық желім бәрін орнына қойыңыз. Батарея жинағының өте жақсы бекітілгеніне көз жеткізіңіз, себебі ол батареяны салу/шығару үшін жақсы күш қажет және сіз батарея ұстағышының ешқайда кетуін қаламайсыз.

2 -қадам: Микроконтроллер мен схема

Микроконтроллер және схема
Микроконтроллер және схема
Микроконтроллер және схема
Микроконтроллер және схема
Микроконтроллер және схема
Микроконтроллер және схема

Мен қуат қосқышын Arduino UNO -ның алдына қойдым, осылайша сіз қосқышты ауыстырған кезде батареядан ештеңе қуат алмайды. Бұл жоба қосылмаған кезде батареялардың мүмкіндігінше ұзақ қызмет етуіне көмектеседі. Arduino тақталары қуатты басқаруда өте нашар - олар белсенді түрде ештеңе жасамаса да қосылған болса, олар көп токты пайдаланады.

Аккумуляторлық пакеттің оң жағын кернеуді 5 В кернеуіне дейін төмендету үшін контроллердің орнатылған кернеу реттегішін қолданатындай етіп микроконтроллердің VIN (кернеу кірісі) ұясына қосыңыз. Егер біз шамдарды көбірек қуаттайтын болсақ, олар үшін өз кернеу реттегішін қолдану қажет болар еді, бірақ БҰҰ 5 жарықдиодты басқара алуы керек.

Мен сигналды тегістеу үшін деректер шығысы мен жарық диодты жолақ арасындағы резисторды қолдандым - резисторсыз пикселдердің кездейсоқ жыпылықтауы мүмкін. Резистордың өлшемі маңызды емес, 50Ω пен 400Ω арасындағы кез келген нәрсе жұмыс істеуі керек.

3-қадам: талшықты-оптикалық шамдар

Image
Image
Талшықты-оптикалық шамдар
Талшықты-оптикалық шамдар
Талшықты-оптикалық шамдар
Талшықты-оптикалық шамдар

Кейбір сынақтар мен қателіктерден кейін мен ақырында талшықты -оптикалық жіптерді кенептен алудың жақсы әдісін таптым.

  1. Кенеп пен көбік тақтасының алдыңғы жағын тесу үшін ең үлкен тігу инесін қолданыңыз. Мен сізге қажет барлық тесіктерді ең басында тесуге кеңес беремін, сонда сіз оны аударып, кабельдік ұйымға арналған клиптерді қайда қоюға болатынын көре аласыз.
  2. Ине тұмсықты қысқыш алыңыз және талшықты-оптикалық жіпті ұшынан сантиметрден аз ұстаңыз
  3. Талшықты -оптикалық жіпті инемен жасаған тесіктен өткізіңіз
  4. Жіпті әр түрлі пластикалық қысқыштар арқылы қажет жерден сәл ұзағырақ жерге бағыттаңыз - біз оны кейінірек кесеміз
  5. Ыстық желімді мылтықпен төмен температураны орнатыңыз (егер мұндай мүмкіндік болса), талшықты -оптикалық жіпке ыстық желім тамшысын салыңыз, ол көбік тақтасынан өтеді. Немесе сіз көк түсті жабысқақ заттарды қолдана аласыз. Ыстық желім жіпті сәл деформациялайды, бірақ ол оптикалық қасиеттерге қатты әсер етпейді
  6. Жіптерді кенептен сәл алшақ етіп кесіңіз.

Процесті жылдамдату үшін ыстық желімді қолданар алдында көптеген талшықтарды қатарынан өткізуге болады. Әдетте олар өз орнында қалуы керек.

Үстелдің үстіндегі талшықты -оптикалық жіптерді сындырмаңыз немесе қыспаңыз, абай болыңыз - олар үзіліп кетеді, егер ол жіпті тым қысқа етіп қойса, онда сіз қайғылы боласыз және оны қайта жасауға тура келеді. Батарея жинағын қарсы салмақ ретінде пайдаланыңыз, сонда сіз сурет жақтауы үстелдің жартысынан аз болуы мүмкін.

Мен қара түстің орнына ақ көбік тақтасын қолданғандықтан, жарық диодтары қосулы кезде жарық көп болатын. Түзету ретінде мен шамдар мен кенептің арасына алюминий фольга қойдым.

Талшықты -оптикалық жіптердің әрқайсысын бір жерде ұстау үшін жылуды қысатын түтікті қолданыңыз.

  1. Буманың жіптерін шамамен бірдей ұзындыққа кесіңіз
  2. Бөлімді жылу өткізбейтін түтікке салыңыз
  3. Оны қысқарту үшін жылу пистолетін немесе дәнекерлегішті қолданыңыз. Егер сіз дәнекерлеу үтікті қолдансаңыз, үтіктің бүйірі түтікке сәл тиіп тұрса, ол қысқарады. Ол құбырды ерітуге болмайды, себебі ол аздап ыстыққа арналған.

Ақырында мен пакеттің ұшын әр жарықдиодты шамға бекіту үшін ыстық желімді қолдандым. Мен талшықтар жарықтағы әр қызыл/жасыл/көк диодтан жарық алатындай етіп көптеген ыстық желімді қолдандым - егер талшықтар жарыққа шынымен жақын болса, «ақ» түс (ол шын мәнінде қызыл, жасыл және көк) онда кейбір талшықтар ақ болады, тек қызыл болады, ал кейбірі жасыл болады. Мұны тарату үшін қағазды немесе басқа нәрсені қолдану арқылы жақсартуға болады, бірақ ыстық желім мен үшін жақсы жұмыс жасады.

4 -қадам: Бағдарламалау

Бұл бағдарламалауда мен үш кітапхананы қолдандым

FastLED - WS2812 жарық диодты жолақтарды басқаруға арналған тамаша кітапхана (және басқа да көптеген адрестік жарықдиодты жолақтар) -

Arduino Low Power - бұл қанша қуат үнемдейтінін білмеймін, бірақ оны іске асыру өте оңай болды және ақ шамдар функциясының шамалы қуатын үнемдеуге көмектесуі керек, содан кейін мәңгілікке кешіктірілді.

EEPROM - жобаның ағымдағы режимін оқу/сақтау үшін қолданылады. Бұл жобаға түс режимін әр өшіргенде және қайта қосқанда арттыруға мүмкіндік береді, бұл режимді өзгерту үшін бөлек түйменің қажеттілігін жояды. EEPROM кітапханасы Arduino IDE орнатқан сайын орнатылады.

Мен басқа біреу орнатқан шамдарды жыпылықтау үшін эскизді де қолдандым. Ол кездейсоқ пиксельді негізгі түстен шыңға дейін жарықтандырады, содан кейін кері түседі. https://gist.github.com/kriegsman/88954aae22b03a66… (ол FastLED кітапханасын да қолданады)

Мен Visual Studio үшін vMicro плагинін де қолдандым - бұл Arduino IDE күшейтілген нұсқасы. Онда көптеген пайдалы автотолтыру функциялары бар және оны құрастырудың қажеті жоқ сіздің кодыңыздағы мәселелерді көрсетеді. Бұл 15 доллар тұрады, бірақ егер сіз бірнеше Arduino жобасын жасағыңыз келсе, бұл сізге өте қажет, және ол сізді өте қуатты бағдарлама Visual Studio туралы білуге мәжбүр етеді.

(Мен сонымен бірге.ino файлын тіркеймін, себебі Github Gist -тің нұсқаулық хостингі файлдағы көптеген бос орындарды жояды)

FastLED кітапханасының көмегімен кейбір WS2812B жарықдиодты жолақ шамдары үшін Arduino UNO -да 4 түсті режимде жұмыс істейтін Arduino коды

#қосу
#қосу
#қосу
// FastLED орнату
#анықтауNUM_LEDS4
#definePIN3 // Жарық диодты жолаққа арналған деректер түйреуі
CRGB светодиодтары [NUM_LEDS];
// Twinkle орнату
#deFineBASE_COLORCRGB (2, 2, 2) // Негізгі фон түсі
#definePEAK_COLORCRGB (255, 255, 255) // Ең жоғары түс:
// Жарық түскен сайын әр цикл бойынша түсті ұлғайтудың мөлшері:
#анықтауDELTA_COLOR_UPCRGB (4, 4, 4)
// Түсті әр цикл бойынша кішірейту кезінде оның түсі азаяды:
#анықтауDELTA_COLOR_DOWNCRGB (4, 4, 4)
// Әр пиксельдің жарқырай бастайтын мүмкіндігі.
// 1 немесе 2 = бірнеше ағартатын пиксельдер.
// 10 = бір уақытта көптеген пикселдер ағарады.
#анықтауШАНСЫНЫҢ_ТУҒАНЫ2
ендіру {SteadyDim, GettingBrighter, GettingDimmerAgain};
uint8_t PixelState [NUM_LEDS];
байт runMode;
байт globalBright = 150;
байт globalDelay = 20; // Жылтылдау үшін кідіріс жылдамдығы
байт адресі = 35; // Жұмыс режимін сақтауға арналған адрес
voidsetup ()
{
FastLED.addLeds (leds, NUM_LEDS);
FastLED.setCorrection (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);
globalDelay = 10;
TwinkleMapPixels ();
үзіліс;
// Тез жыпылықтаңыз
case3: FastLED.setBrightness (150);
globalDelay = 2;
TwinkleMapPixels ();
үзіліс;
// кемпірқосақ
4 -жағдай:
RunRainbow ();
үзіліс;
// Индекс ауқымнан тыс, оны 2 қалпына келтіріңіз, содан кейін 1 режимін іске қосыңыз.
// arduino қайта іске қосылғанда, ол 2 режимде жұмыс істейді, бірақ әзірге 1 режимде
әдепкі:
EEPROM.write (мекен -жай, 2);
runMode = 1;
үзіліс;
}
}
voidRunRainbow ()
{
байт *c;
uint16_t i, j;
ал (шын)
{
for (j = 0; j <256; j ++) {// дөңгелектегі барлық түстердің 1 циклы
үшін (i = 0; i <NUM_LEDS; i ++) {
c = Дөңгелек (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c + 1), *(c + 2));
}
FastLED.show ();
кешіктіру (globalDelay);
}
}
}
байт * Wheel (байт WheelPos) {
статикалық байт c [3];
егер (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - WheelPos * 3;
c [2] = 0;
}
elseif (WheelPos <170) {
WheelPos -= 85;
c [0] = 255 - WheelPos * 3;
c [1] = 0;
c [2] = WheelPos * 3;
}
басқа {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
қайтару c;
}
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;
}
}
басқа {// қайтадан күңгірттенеді
// бұл пиксельдер қазіргі уақытта: 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 (LED, 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 -ды GitHub ❤ арқылы орналастыруды қараңыз

5 -қадам: соңғы өнім

Соңғы өнім
Соңғы өнім
Соңғы өнім
Соңғы өнім
Соңғы өнім
Соңғы өнім

Та-да! Бұл нұсқаулық басқа біреуді өз жобасын жасауға шабыттандырады деп үміттенемін. Мұны істеу қиын емес еді, мен оны ешкім жасамағанына таң қалдым және бұл туралы әлі де нұсқаулық жаздым.

Ұсынылған: