DIY Givi V56 Motor Topbox Light Light Kit me Sinjale të Integruara: 4 Hapa (me Fotografi)
DIY Givi V56 Motor Topbox Light Light Kit me Sinjale të Integruara: 4 Hapa (me Fotografi)
Anonim
Image
Image
DIY Givi V56 Motor Topbox Light Light Me Sinjale të Integruara
DIY Givi V56 Motor Topbox Light Light Me Sinjale të Integruara
DIY Givi V56 Motor Topbox Light Light Me Sinjale të Integruara
DIY Givi V56 Motor Topbox Light Light Me Sinjale të Integruara

Si një kalorës motoçikletash, jam shumë i njohur me trajtimin si të padukshëm në rrugë. Një gjë që shtoj gjithmonë tek biçikletat e mia është një top box i cili zakonisht ka një dritë të integruar. Kohët e fundit u përmirësova në një biçikletë të re dhe bleva kutinë Givi V56 Monokey pasi kishte shumë hapësirë për artikuj. Kjo kuti ka një vend për një çantë fabrike të dritës e cila përbëhet nga dy shirita LED për secilën anë. Problemi është se ky komplet kushton 70 dollarë dhe funksionon vetëm me frena. Ekziston një çantë pas tregut që ndoshta bën gjëra të ngjashme dhe mund të jetë pak më e lehtë për t'u instaluar, por çmimi juaj shkon deri në 150 dollarë. Duke qenë një person i shkathët dhe duke kërkuar një justifikim për të provuar shiritat LED të adresueshëm, vendosa të krijoj një sistem të integruar që jo vetëm që do të kishte dritat e frenave, por edhe dritat e funksionimit (të ndezura kur lëvizni), sinjalet e kthesës dhe dritat e rrezikut. Vetëm për dreq, shtova edhe një sekuencë fillimi…. sepse munda. Vini re se kjo mori shumë punë për të bërë edhe pse kisha shumë gjëra për të kuptuar. Pavarësisht punës, jam mjaft i kënaqur me atë se si doli kjo. Shpresojmë që kjo të përfundojë si e dobishme për dikë tjetër.

Funksionimi themelor i mënyrës se si funksionon ky sistem është njësia Arduino që kërkon sinjale në kunjat: drita e frenave, drita e kthesës majtas dhe drita e djathtë. Për të lexuar sinjalin 12 volt nga motoçikleta, kam përdorur optoizolatorë për të kthyer sinjalin 12V në një sinjal 5V që Arduino mund të lexojë. Kodi pastaj pret një nga këto sinjale, pastaj nxjerr komandat në shiritin LED duke përdorur bibliotekën FastLED. Kjo është baza, tani për të hyrë në detaje.

Furnizimet

Këto janë gjërat që kam përdorur sepse në pjesën më të madhe tashmë i kisha të shtrirë. Natyrisht, ato mund të shkëmbehen sipas nevojës:

  1. Arduino - Kam përdorur një nano për konsideratat e madhësisë, por ju mund të përdorni çfarëdo që të ndjeni për sa kohë që keni pesë kunja për të përdorur.
  2. Rregullatori 5V - Kam përdorur një L7805CV që ishte i aftë për 1.5 amper. Ky projekt do të përdorë 0.72 amper për LED plus fuqinë për nano, kështu që 1.5 funksionon shkëlqyeshëm për këtë projekt.
  3. Kondensatorë - do t'ju duhet një 0.33 uF dhe një 0.1 uF që rregullatori i tensionit të funksionojë siç duhet.
  4. 3x optoizolatorë - për të bërë konvertimin e sinjalit nga 12V në 5V. Kam përdorur llojin PC817X i cili ka vetëm katër kunja që është gjithçka që na nevojitet.
  5. Rezistentët - do t'ju duhen dy lloje, tre nga secili lloj. E para duhet të jetë e mjaftueshme për të zvogëluar rrymën përmes optoizolatorit IR LED. Ju do të keni nevojë për të paktën 600 ohm, por 700 do të ishte një ide më e mirë për të trajtuar ndryshimin e tensioneve në motor. Tjetri duhet të jetë diku midis 10k dhe 20k për një sinjal të shpejtë në anën tjetër të optoizolatorit.
  6. Prototip bordi - Unë kisha disa që ishin aq të vegjël sa të futeshin brenda një kutie të vogël projekti me një sasi të vogël zbukurimi.
  7. Kutia e projektit - mjaft e madhe për të përshtatur përbërësit, por mjaft e vogël për tu përshtatur lehtë.
  8. Wire - Kam përdorur tela ethernet Cat 6 sepse e kisha shumë të ulur përreth. Kjo ka tetë tela të gjitha të koduara me ngjyra të cilat ndihmuan me të gjitha lidhjet e ndryshme dhe ishte një matës mjaft i madh për të trajtuar tërheqjet aktuale.
  9. Priza - kudo që dëshironi që sistemi të jetë lehtësisht i lëvizshëm. Kam përdorur një prizë të papërshkueshme nga uji për të lejuar heqjen e kutisë së sipërme dhe për të trajtuar çdo shi ose ujë që bie mbi të. Gjithashtu kisha nevojë për priza më të vogla për shiritat LED kështu që nuk më duhej të bëja vrima të mëdha.
  10. Lidhëset e zinxhirit dhe montuesit ngjitës me zinxhirë për të mbajtur gjithçka në vend.
  11. Tkurrni mbështjellësin për të rregulluar lidhjet.

Hapi 1: Ndërtimi i qarkut

Ndërtimi i qarkut
Ndërtimi i qarkut
Ndërtimi i qarkut
Ndërtimi i qarkut
Ndërtimi i qarkut
Ndërtimi i qarkut

Natyrisht, nëse po ndiqni ndërtimin tim, nuk do të keni nevojë të kaloni sasinë e testimit që kam bërë. Gjëja e parë që bëra ishte të sigurohesha që kodi im funksiononte dhe se mund të merrja një sinjal siç duhet nga optoizolatorët, si dhe të kontrolloja siç duhet shiritat LED. U desh një moment për të kuptuar se si të bashkëngjitni më mirë kunjat e sinjalit në izolatorë, por përmes provës dhe gabimit gjeta orientimin e duhur. Unë sapo kam përdorur një bord prototip standard pasi po ndërtoja vetëm një dhe zbulimi i një modeli gjurmë do të kishte marrë më shumë kohë sesa ia vlente. Pjesa e sipërme e bordit të qarkut duket e mrekullueshme, por pjesa e poshtme duket si një rrëmujë, por të paktën është funksionale.

Dizajni bazë fillon me futjen e fuqisë 12V nga një burim i ndërprerë (një tel që ndizet vetëm kur motori është i ndezur). Një diagram i instalimeve elektrike mund të ndihmojë vërtet për të gjetur këtë tel. Kjo futet në njërën anë të rregullatorit të tensionit. Një kondensator 0.33 uF e lidh këtë hyrje me tokën në rregullatorin e tensionit i cili pastaj ushqehet përsëri në tokë në motor. Prodhimi i rregullatorit të tensionit do të ketë një kondensator 0.1uF të lidhur në të në tokë. Këta kondensatorë ndihmojnë në zbutjen e tensionit nga rregullatori. Nëse nuk mund t'i gjeni në foton e tabelës, ato janë nën rregullatorin e tensionit. Nga atje, linja 5V shkon në Vin në Arduino, në kunjin e energjisë që do të ushqejë shiritat LED, dhe dy në anën Burimi të optoizolatorit që do të ushqehet në kunjat Arduino duke siguruar sinjalin e nevojshëm 5V.

Sa i përket optoizolatorëve, ka dy anë: njëra me një LED IR dhe tjetra me një tranzistor me dhe detektor IR. Ne duam të përdorim anën IR LED për të matur sinjalin 12V. Meqenëse LED ka një tension përpara 1.2V, ne kemi nevojë për një rezistencë kufizuese aktuale në seri. 12V - 1.2V = 10.8V dhe për të drejtuar LED në 18 mA (më pëlqen gjithmonë të punoj më pak se 20 mA për arsye të jetës), do t'ju duhet një rezistencë R = 10.8V/0.018A = 600 ohm. Tensionet në automjete gjithashtu priren të rriten, potencialisht deri në 14V, kështu që është më mirë të planifikoni për këtë, që është rreth 710 Ohm, megjithëse 700 do të ishin më se të arsyeshme. Dalja për anën LED pastaj ushqehet përsëri në tokë. Për anën e daljes së optoizolatorit, hyrja do të përdorë sinjalin 5V nga rregullatori, dhe dalja do të lidhet me një rezistencë tjetër para se të shkojë në tokë. Ky rezistencë thjesht duhet të jetë rreth 10k - 20k Ohm, të paktën kështu tregoi fleta ime e të dhënave. Kjo do të japë një matje të shpejtë të sinjalit pasi nuk kemi të bëjmë me një mjedis të zhurmshëm. Dalja në pinin Arduino do të dalë midis rezistencës dhe daljes së optoizolatorit në mënyrë që kur sinjali është i fikur kunja të jetë e ulët dhe kur sinjali është në kunj është i lartë.

Dritat e shiritit LED kanë tre tela që lidhen me to: Fuqia, toka dhe të dhënat. Fuqia duhet të jetë 5V. Ky projekt përdor gjithsej 12 LED (megjithëse kam më shumë LED në shirita, por unë jam duke përdorur vetëm çdo LED të tretë) dhe secila merr 60mA kur drita e bardhë përdoret me shkëlqim të plotë. Kjo jep një total prej 720 mA. Ne jemi mirë brenda fuqisë dalëse për rregullatorin e tensionit, kështu që jemi mirë. Vetëm sigurohuni që tela është një matës mjaft i madh për të trajtuar fuqinë, unë kam përdorur tela ethernet 24 matës Cat 6. Teli Ethernet ishte diçka që kisha ulur përreth dhe ka 8 tela të koduar me ngjyra kështu që funksionoi mirë për këtë projekt. Telat e vetëm që pastaj duhet të shkojnë në topbox janë fuqia dhe toka (të cilat ndahen të dyja midis shiritave) dhe dy linja të dhënash (një për secilën shirit).

Pjesa tjetër e telave lidhet me kunjat në arduino dhe e ushqen atë me energji. Kunjat që u përdorën për këtë projekt ishin këto:

  1. Vin - i lidhur me 5V
  2. Gnd - i lidhur me tokën
  3. Pin2 - i lidhur me linjën e të dhënave të brezit të majtë
  4. Pin3 - i lidhur me linjën e të dhënave të brezit të djathtë
  5. Pin4 - i lidhur me sinjalin e frenave nga optoizolatori
  6. Pin5 - i lidhur me sinjalin e kthesës së majtë nga optoizolatori
  7. Pin6 - i lidhur me sinjalin e kthesës në të djathtë nga optoizolatori

Hapi 2: Instalimi dhe instalimi

Instalimet dhe instalimet elektrike
Instalimet dhe instalimet elektrike
Instalimet dhe instalimet elektrike
Instalimet dhe instalimet elektrike
Instalimet dhe instalimet elektrike
Instalimet dhe instalimet elektrike

Pasi të jetë ndërtuar qarku, vjen koha për ta lidhur atë në vend. Duke përdorur skemën tuaj të instalimeve elektrike për biçikletën tuaj, do t'ju duhet të gjeni sa vijon:

  • Furnizimi me energji i ndërruar
  • Toke
  • Sinjali i frenave i futur
  • Hyni sinjalin e kthesës majtas
  • Sinjali i kthesës në të djathtë

Për timen, kishte një prizë të vetme që i kishte të gjitha këto në të, kështu që unë thjesht e përdor atë. Me kohë të mjaftueshme, mund të kem qenë në gjendje të gjej të njëjtin stil prizë dhe thjesht të bëj një modul plug, por nuk e bëra, kështu që thjesht hoqa izolimin në vende dhe i ngjita tela të re. Kam përdorur priza në këto lidhje të lidhura në mënyrë që të mund të heq pjesën tjetër nëse më duhet në të ardhmen. Nga atje vendosa Arduino -n, i cili tani është në një kuti projekti të mbyllur, nën sediljen ku e bashkova. Kablloja e daljes pastaj kalon përgjatë kornizës së raftit në një prizë të papërshkueshme nga uji, pastaj hyn në kuti dhe kalon përgjatë pjesës së pasme në kapakun ku ndahet për secilën anë. Telat kalojnë përgjatë pjesës së brendshme të kapakut deri në pikën ku janë lidhjet për LED -të. Teli është i ndihmuar në vend duke përdorur lidhëse zip të lidhura me montues zinxhiri të klasës së jashtme me një mbështetës ngjitës. Ju mund t'i gjeni këto në seksionin e instalimit të kabllove në një dyqan të përmirësimit të shtëpisë

Kam përdorur dy priza mini JST në shiritat LED sepse kisha nevojë për një prizë mjaft të vogël për të kaluar nëpër një vrimë me diametër minimal dhe sepse doja të sigurohesha se kishte mjaft tela për të trajtuar kërkesat aktuale. Përsëri, mund të ketë qenë e tepërt dhe nuk kisha ndonjë prizë të vogël me tre tela të përdorshëm. Vrima në kuti për kalimin e telave të shiritit të dritës u mbyllën për të mbajtur ujin jashtë. Sa i përket pozicionimit të shiritave LED, sepse ka një mospërputhje të vogël në distancë (kishte rreth 1 - 1.5 mm diferencë në hapësirën midis vrimave në reflektor dhe LED) i vendosa ato në mënyrë që ata të ndanin ndryshimin midis LED dhe vrima sa më shumë që të jetë e mundur. Pastaj përdor zam të nxehtë për t'i ngjitur në vend dhe ngjitës për të vulosur plotësisht zonën. Vetë shiritat LED janë të papërshkueshëm nga uji, kështu që nuk ka problem nëse lagen. Edhe pse duket shumë për t'u instaluar, kjo e bën sistemin më të lehtë për t'u hequr në të ardhmen ose për të zëvendësuar pjesët janë të nevojshme sepse mund të ndodhë.

Hapi 3: Kodi

Kodi im burimor duhet të jetë në fillim të këtij Udhëzuesi. Unë gjithmonë komentoj kodin tim shumë, kështu që është më e lehtë të kuptohet më vonë. Disclaimer: Unë nuk jam një shkrimtar profesionist i kodeve. Kodi u shkrua në një metodë që ishte më e lehtë për të filluar së pari dhe u bënë disa përmirësime, por unë e di se mund të jetë më i rafinuar. Unë jam gjithashtu duke përdorur një sasi të madhe të funksionit të vonesës () për kohën e cila nuk është aq ideale. Sidoqoftë, sinjalet që njësia po merr nuk janë sinjale të shpejta në krahasim, kështu që unë ende u ndjeva e justifikuar t'i mbaja ato duke përdorur diçka si millis (). Unë jam gjithashtu një baba dhe burrë shumë i zënë, kështu që shpenzimi i kohës për të përmirësuar diçka që përfundimisht nuk do të ndryshojë funksionin nuk është i lartë në listë.

Për këtë projekt, kërkohet vetëm një bibliotekë e cila është biblioteka FastLED. Ky ka të gjithë kodin për kontrollin e shiritave LED të tipit WS2811/WS2812B. Nga atje, unë do të mbuloj funksionet themelore që do të përdoren.

E para përveç përcaktimeve standarde është të deklaroni dy shiritat tuaj. Për secilën shirit do të përdorni kodin e mëposhtëm:

FastLED.addLeds (leds [0], NUM_LEDS);

Kjo linjë kodi vendos Pin 2 e përcakton këtë shirit si shirit 0 me numrin e LED -ve të përcaktuar me konstantën NUM_LEDS, e cila në rastin tim është vendosur në 16. Për të përcaktuar shiritin e dytë, 2 do të bëhet 3 (për pin3) dhe shiriti do të etiketohet shirit 1.

Linja tjetër që do të jetë e rëndësishme është përcaktimi i ngjyrës.

leds [0] [1] = Ngjyra_ e lartë CRGB (r, g, b);

Kjo linjë e kodit përdoret megjithëse në pamje të ndryshme (shumica e përdor një konstante). Në thelb, ky kod dërgon një vlerë për secilin nga kanalet LED (të kuqe, jeshile, blu) që përcakton çdo shkëlqim. Vlera e shkëlqimit mund të përcaktohet me një numër 0 - 255. Duke ndryshuar nivelin e shkëlqimit për secilin kanal, mund të përcaktoni ngjyra të ndryshme. Për këtë projekt, dua një ngjyrë të bardhë për ta mbajtur dritën sa më të ndritshme. Pra, ndryshimet e vetme që bëj është të vendos nivelin e shkëlqimit të njëjtë në të tre kanalet.

Grupi tjetër i kodit përdoret për ndriçimin individual të secilës dritë. Vini re se për secilën shirit, çdo LED ka një adresë që fillon në 0 për atë më të afërt me lidhjen e linjës së të dhënave deri në numrin më të lartë LED që keni minus 1. Shembull, këto janë 16 shirita LED, kështu që më e larta është 16 - 1 = 15. Arsyeja për këtë është sepse LED i parë është etiketuar 0.

për (int i = NUM_LEDS -1; i> -1; i = i -3) {// Kjo do të ndryshojë dritën për çdo LED të tretë duke shkuar nga e fundit në të parë. leds [0] = Ngjyra e ulët; // Vendosni shiritin 0 Ngjyra LED në ngjyrën e zgjedhur. leds [1] = Ngjyra e ulët; // Vendosni shiritin 1 ngjyrë LED në ngjyrën e zgjedhur. FastLED.shfaq (); // Trego ngjyrat e vendosura. leds [0] = CRGB:: E zezë; // Çaktivizo ngjyrën e vendosur në përgatitje për ngjyrën tjetër. leds [1] = CRGB:: E zezë; vonesa (150); } FastLED.shfaq (); // Trego ngjyrat e vendosura.

Mënyra se si funksionon ky kod është se një ndryshore (i) përdoret brenda një laku for si adresa LED e cila më pas i referohet numrit të plotë të LED -ve (NUM_LEDS). Arsyeja për këtë është se unë dua që dritat të fillojnë në fund të shiritit dhe jo në fillim. Vendosja del në të dy shiritat (leds [0] dhe leds [1]) pastaj lëshohet një komandë për të treguar ndryshimin. Pas kësaj kjo dritë fiket (CRGB:: E zezë) dhe drita tjetër ndizet. Referenca e Zezë është një ngjyrë specifike në bibliotekën FastLED, kështu që nuk kam pse të nxjerr 0, 0, 0 për secilin kanal, megjithëse ata do të bënin të njëjtën gjë. Cikli For përparon 3 LED në të njëjtën kohë (i = i-3) pasi unë jam duke përdorur vetëm çdo LED tjetër. Deri në fund të këtij lak, sekuenca e dritës do të shkojë nga një LED në tjetrën me vetëm një ndezje për shirit, një lloj efekti Knight Rider. Nëse dëshironi të mbani çdo dritë të ndezur në mënyrë që shiriti të ndërtohet, ju thjesht do të hiqni linjat që fikin LED -të që ndodhin në grupin tjetër të kodit në program.

për (int i = 0; i <dim; i ++) {// Zbeh shpejt dritat në nivelin e dritës së funksionimit. rt = rt + 1; gt = gt + 1; bt = bt + 1; për (int i = 9; i <NUM_LEDS; i = i +3) {// Kjo do të ndriçojë tre dritat e fundit për dritën e pozicionit. leds [0] = CRGB (rt, gt, bt); // Vendosni shiritin 0 Ngjyra LED në ngjyrën e zgjedhur. leds [1] = CRGB (rt, gt, bt); // Vendosni shiritin 1 ngjyrë LED në ngjyrën e zgjedhur. } FastLED.shfaq (); vonesa (3); }

Shembulli i fundit i kodit që përdor për LED -të është një lak i zbehur. Këtu, unë përdor lojëra elektronike të përkohshme për shkëlqimin për secilin kanal (rt, gt, bt) dhe i shtoj ato me 1 me një vonesë midis secilës shfaqje për të arritur pamjen që dua. Gjithashtu vini re se ky kod po ndryshon vetëm tre LED -et e fundit pasi kjo po venitet në dritat e funksionimit kështu që unë filloj në 9 në vend të 0.

Pjesa tjetër e kodit LED është përsëritje e këtyre. Çdo gjë tjetër është e përqendruar në kërkim të një sinjali në tre tela të ndryshëm. Zona Loop () e kodit kërkon dritat e frenave, të cilat do të ndizen një herë para se të qëndroni ndezur (kjo është e rregullueshme nëse dëshironi) ose kur kërkoni sinjale kthesash. Për këtë kod, për shkak se nuk mund të supozoja se dritat e kthesës majtas dhe djathtas do të ndizeshin saktësisht në të njëjtën kohë për rreziqet, unë kam kodin të kërkoj për njërën së pari, pastaj pas një vonese të vogël kontrolloj për të parë nëse të dy janë duke treguar dritat e rrezikut janë ndezur. E vetmja pjesë e ndërlikuar që kisha ishin sinjalet e kthesës sepse drita do të fiket për një periudhë të caktuar, kështu si mund ta dalloj sinjalin midis sinjalit ende të ndezur, por në periudhën e fikjes dhe një sinjali të anuluar? Ajo që arrita ishte zbatimi i një lak vonese që është vendosur të vazhdojë më gjatë se vonesa midis ndezjeve të sinjalit. Nëse sinjali i kthesës është ende i ndezur, atëherë laku i sinjalit do të vazhdojë. Nëse sinjali nuk ndizet kur vonesa përfundon, atëherë kthehet në fillim të lakut (). Për të rregulluar gjatësinë e vonesës, ndryshoni numrin për dritën konstante Vonesa duke kujtuar për çdo 1 në dritëVonesa ndryshon me 100ms.

ndërsa (digitalRead (leftTurn) == LOW) {për (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } vonesë (100); } për (int i = 0; i <NUM_LEDS; i = i +3) {// Kjo do të ndryshojë dritën për çdo LED të tretë duke shkuar nga e fundit në të parë. leds [0] = CRGB (0, 0, 0); // Vendosni shiritin 0 Ngjyra LED në ngjyrën e zgjedhur. } për (int i = 9; i <NUM_LEDS; i = i +3) {// Kjo do të vendosë dritat e funksionimit të cilat përdorin vetëm tre të fundit. leds [0] = Ngjyra e ulët; // Vendosni shiritin 0 Ngjyra LED në ngjyrën e zgjedhur. } FastLED.shfaq (); // Cilësimet e daljes kthehen; // Pasi sinjali i kthesës të mos jetë më i ndezur, kthehuni përsëri në lak. }

Shpresojmë që pjesa tjetër e kodit të jetë vetë -shpjeguese. Justshtë vetëm një grup i përsëritur i kontrollimit dhe veprimit sipas sinjaleve.

Hapi 4: Rezultatet

Rezultatet
Rezultatet

Pjesa mahnitëse ishte se ky sistem funksionoi herën e parë që e lidhja me biçikletë. Tani, për të qenë i drejtë, e testova shumë në stol para kësaj, por prapë prisja të kisha një problem ose një rregullim. Rezulton se nuk kisha nevojë të bëja ndonjë rregullim në kod, si dhe lidhjet. Siç mund ta shihni në video, sistemi kalon përmes sekuencës së fillimit (të cilën nuk keni pse ta keni), pastaj vendoset si parazgjedhje në dritat e funksionimit. Pas kësaj ai kërkon frenat, në të cilin rast do të ndezë të gjitha LED -të në shkëlqim të plotë dhe do t'i ndezë ato një herë para se të qëndrojnë ndezur derisa të lëshohen frenat. Kur përdoret një sinjal kthese, unë bëra një efekt rrotullimi për anën që tregohet kthesa dhe ana tjetër do të jetë ose drita drejtimi ose drita e frenave nëse është e ndezur. Dritat e rrezikut thjesht do të vezullojnë në kohë me dritat e tjera.

Shpresoj se me këto drita shtesë, do të jem më i dukshëm për njerëzit e tjerë. Së paku, është një shtesë e këndshme për ta bërë kutinë time të dallohet pak më shumë se të tjerat duke ofruar shërbime. Shpresoj që ky projekt të jetë i dobishëm edhe për dikë tjetër edhe nëse ata nuk punojnë me ndriçimin e kutisë së motorëve. Faleminderit!