Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Piirin rakentaminen
- Vaihe 2: Johdotus ja asennus
- Vaihe 3: Koodi
- Vaihe 4: Tulokset
Video: DIY Givi V56 -moottoripyörän ylälaatikon valosarja integroiduilla signaaleilla: 4 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Moottoripyöräilijänä olen hyvin perehtynyt siihen, että minua kohdellaan kuin olisin näkymätön tiellä. Yksi asia, jonka lisään aina pyöriini, on ylälaatikko, jossa on yleensä integroitu valo. Päivitin äskettäin uuteen pyörään ja ostin Givi V56 Monokey -laatikon, koska siinä oli paljon tilaa tavaroille. Tässä laatikossa on paikka tehdasvalosarjalle, joka koostuu kahdesta LED -nauhasta kummallakin puolella. Ongelmana on, että tämä sarja on noin 70 dollaria ja vain jarrut. On jälkimarkkinasarja, joka todennäköisesti tekee samanlaisia asioita ja saattaa olla hieman helpompi asentaa, mutta hinta nousee 150 dollariin. Koska olen kekseliäs henkilö ja etsin tekosyytä kokeilla osoitettavia LED -nauhoja, päätin tehdä integroidun järjestelmän, jossa ei ainoastaan olisi jarruvalot, vaan myös ajovalot (päällä aina, kun ne liikkuvat), suuntavalot ja hätävalot. Ihan helvetin takia lisäsin jopa käynnistysjärjestyksen…. koska voisin. Huomaa, että tämä kesti paljon työtä, vaikka minulla oli paljon selvitettävää. Työstä huolimatta olen melko tyytyväinen siihen, miten tämä meni. Toivottavasti tästä on hyötyä jollekin muulle.
Tämän järjestelmän toiminnan peruskäyttö on, että Arduino -yksikkö etsii signaaleja nastoista: jarruvalo, vasen ja oikea kääntövalo. Jotta voisin lukea moottoripyörän 12 voltin signaalin, käytin optoisolaattoreita muuntamaan 12 V: n signaalin 5 V: n signaaliksi, jonka Arduino voi lukea. Koodi odottaa sitten yhtä näistä signaaleista ja antaa sitten komennot LED -nauhalle FastLED -kirjaston avulla. Se on perusasiat, nyt mennä yksityiskohtiin.
Tarvikkeet
Näitä asioita käytin, koska enimmäkseen minulla oli niitä jo makaamassa. On selvää, että ne voidaan vaihtaa tarpeen mukaan:
- Arduino - Käytin kokoa varten nanoa, mutta voit käyttää mitä haluat, kunhan sinulla on viisi nastaa.
- 5 V: n säädin - Käytin L7805CV: tä, joka kykeni 1,5 ampeeriin. Tässä projektissa käytetään 0,72 ampeeria LEDeille ja nano -tehoa, joten 1,5 toimii hyvin tässä projektissa.
- Kondensaattorit - tarvitset yhden 0,33 uF: n ja yhden 0,1 uF: n, jotta jännitesäädin toimii oikein.
- 3x optoisolaattorit - signaalin muuntamiseen 12V: sta 5V: ksi. Käytin PC817X -tyyppiä, jossa on vain neljä nastaa, mikä on kaikki mitä tarvitsemme.
- Vastukset - tarvitset kahta tyyppiä, kolme kutakin tyyppiä. Ensimmäisen täytyy riittää vähentämään virtaa optoerottimen IR -LED -valon kautta. Tarvitset vähintään 600 ohmia, mutta 700 olisi parempi idea käsitellä moottoripyörän muuttuvia jännitteitä. Toisen on oltava jossain välillä 10k ja 20k nopeaa signaalia varten optoisolaattorin toisella puolella.
- Prototyyppikortti - Minulla oli sellaisia, jotka olivat tarpeeksi pieniä mahtuakseen pieneen projektilaatikkoon, jossa oli vähän leikkausta.
- Projektilaatikko - tarpeeksi suuri mahtuakseen osiin, mutta tarpeeksi pieni, jotta se olisi helppo asentaa.
- Johto - Käytin Cat 6 -ethernet -lankaa, koska minulla oli paljon sitä istumassa. Siinä on kahdeksan johtoa, kaikki värikoodatut, mikä auttoi kaikissa eri liitännöissä ja oli riittävän suuri mittari käsittelemään nykyisiä vetoja.
- Pistokkeet - minne tahansa haluat järjestelmän olevan helposti irrotettavissa. Käytin vedenpitävää tulppaa, jotta ylälaatikko voidaan irrottaa ja käsitellä kaikki sade tai vesi, joka pääsee siihen. Tarvitsin myös pienempiä pistokkeita LED -nauhoihin, joten minun ei tarvinnut porata suuria reikiä.
- Vetoketjut ja vetoketjuilla kiinnitettävät kiinnikkeet pitävät kaiken paikallaan.
- Kutista kääre järjestääksesi liitännät.
Vaihe 1: Piirin rakentaminen
On selvää, että jos seuraat rakennustani, sinun ei tarvitse käydä läpi tekemääni testausta. Ensimmäinen asia, jonka tein, oli varmistaa, että koodini toimi ja pystyin saamaan signaalin oikein optoisolaattoreista sekä ohjaamaan oikein LED -nauhoja. Kesti hetken selvittää, miten signaalitapit voidaan parhaiten kiinnittää eristimiin, mutta kokeilemalla löysin oikean suunnan. Käytin vain tavallista prototyyppikorttia, koska olin vain rakentamassa sitä ja jäljityskuvion selvittäminen olisi kestänyt enemmän aikaa kuin se oli sen arvoista. Piirilevyn yläosa näyttää hyvältä, mutta alaosa näyttää hieman sotkulta, mutta ainakin se on toimiva.
Perussuunnittelu alkaa syöttämällä 12 V: n virta kytketystä lähteestä (johto, joka on päällä vain moottoripyörän ollessa päällä). Kytkentäkaavio voi todella auttaa löytämään tämän johdon. Tämä syötetään jännitesäätimen toiselle puolelle. 0,33 uF: n kondensaattori yhdistää tämän tulon jännitteen säätimen maahan, joka sitten syöttää takaisin maahan moottoripyörällä. Jännitesäätimen lähdössä on 0,1 uF: n kondensaattori, joka on sidottu maahan. Nämä kondensaattorit auttavat tasoittamaan jännitteen säätimestä. Jos et löydä niitä piirilevyn kuvasta, ne ovat jännitesäätimen alla. Sieltä 5 V: n linja menee Arduinon Viniin, virtatappiin, joka syöttää LED -nauhat, ja kaksi optoeristimen lähdepuolta, joka syötetään Arduino -nastoihin, jotka tarjoavat tarvittavan 5 V: n signaalin.
Optoisolaattoreissa on kaksi puolta: toisessa IR -LED ja toisessa transistori ja IR -ilmaisin. Haluamme käyttää IR -LED -puolta 12V -signaalin mittaamiseen. Koska LEDin etujännite on 1,2 V, tarvitsemme sarjaan virranrajoitusvastuksen. 12V - 1,2V = 10,8V ja jotta LED -valo toimisi 18 mA: lla (pidän aina alle 20 mA: n käyttöiän syistä), tarvitset R = 10,8V/0,018A = 600 ohmin vastuksen. Ajoneuvojen jännitteet ovat myös yleensä korkeampia, mahdollisesti jopa 14 V, joten on parempi suunnitella se, mikä on noin 710 ohmia, vaikka 700 olisi enemmän kuin kohtuullinen. LED -puolen lähtö syötetään sitten takaisin maahan. Optoisolaattorin lähtöpuolella tulo käyttää säätimen 5 V: n signaalia, sitten lähtö kytkeytyy toiseen vastukseen ennen kuin se menee maahan. Tämän vastuksen on oltava vain noin 10 - 20 k ohmia, ainakin minun tietolomakkeeni osoitti. Tämä antaa nopean signaalin mittauksen, koska emme ole tekemisissä meluisan ympäristön kanssa. Arduino -nastan lähtö poistuu vastuksen ja optoeristimen lähdön välillä niin, että kun signaali on pois päältä, nasta on alhainen ja kun signaali on tapissa on korkea.
LED -nauhavaloissa on kolme johdinta: virta, maa ja data. Virran tulee olla 5V. Tämä projekti käyttää yhteensä 12 LEDiä (vaikka minulla on enemmän LED -valoja nauhoissa, mutta käytän vain joka kolmatta LEDiä), ja jokainen kestää 60 mA, kun valkoista valoa käytetään täydellä kirkkaudella. Tämä antaa yhteensä 720 mA. Olemme hyvin jännitesäätimen lähtötehon sisällä, joten olemme hyviä. Varmista vain, että lanka on riittävän suuri mittari käsittelemään virtaa, käytin 24 -mittaista Cat 6 -ethernet -lankaa. Ethernet -johto oli jotain, mitä istuin ympärillä, ja siinä on 8 värikoodattua johtoa, joten se toimi hyvin tähän projektiin. Ainoat johdot, jotka sitten täytyy mennä ylälaatikkoon, ovat virta ja maadoitus (jotka molemmat jakautuvat nauhojen väliin) ja kaksi datalinjaa (yksi kullekin nauhalle).
Loput johdot kytketään arduinon nastoihin ja syötetään sille virtaa. Tässä projektissa käytetyt nastat olivat seuraavat:
- Vin - kytketty 5V
- Gnd - kytketty maahan
- Pin2 - kytketty vasemmanpuoleiseen datalinjaan
- Pin3 - kytketty oikeanpuoleiseen datalinjaan
- Pin4 - kytketty optoerotinjarrun signaaliin
- Pin5 - kytketty optoerottimen vasempaan vilkkuun
- Pin6 - kytketty optoerottimen oikeanpuoleiseen suuntavaloon
Vaihe 2: Johdotus ja asennus
Kun piiri on rakennettu, on aika todella kytkeä tämä paikalleen. Käyttämällä pyöräsi kytkentäkaaviota sinun on löydettävä seuraavat asiat:
- Kytketty virtalähde
- Maa
- Jarrusignaali sisään
- Vasen kääntösignaali sisään
- Oikea kääntösignaali sisään
Minulla oli yksi pistoke, jossa oli kaikki nämä, joten käytin sitä vain. Riittävän ajan kanssa olisin ehkä voinut löytää saman pistoketyylin ja vain tehdä pistokemoduulin, mutta en tehnyt sitä, joten poistin vain eristyksen paikoista ja juotin uuden johdon siihen. Käytin pistokkeita näissä liitoksissa, jotta voisin poistaa loput, jos tarvitsen tulevaisuudessa. Sieltä asetin Arduinon, joka on nyt suljetussa projektilaatikossa, istuimen alle, johon kiinnitin sen. Lähtökaapeli kulkee sitten telineen runkoa pitkin vedenpitävään pistokkeeseen, menee sitten laatikkoon ja kulkee taaksepäin kanteen, jossa se jakautuu kummallekin puolelle. Johdot kulkevat kannen sisäpintaa pitkin siihen kohtaan, jossa LED -valojen liitännät ovat. Lanka on paikallaan käyttämällä vetoketjuja, jotka on kiinnitetty Outdoor -luokan vetoketjujen kiinnikkeisiin ja joissa on liima. Löydät ne kodinkonekaupan kaapeliasennusosasta
Käytin LED -nauhoissa kahta mini -JST -pistoketta, koska tarvitsin pistokkeen, joka oli riittävän pieni menemään halkaisijaltaan pienimmän reiän läpi ja koska halusin varmistaa, että johtoa riittää nykyisten vaatimusten käsittelyyn. Jälleen se on saattanut olla liikaa, eikä minulla ollut pieniä pistokkeita, joissa oli kolme johtoa. Laatikossa oleva reikä valonauhajohtojen läpivientiin suljettiin veden pitämiseksi pois. Mitä tulee LED -nauhojen sijoittamiseen, koska etäisyys on pieni (heijastimen reikien ja LED -valojen välinen ero oli noin 1-1,5 mm), sijoitin ne siten, että ne jakavat LED -valon ja reikään mahdollisimman paljon. Käytin sitten kuumaa liimaa kiinnittääkseni ne paikalleen ja tiivistämällä alueen täysin. LED -nauhat ovat itsestään vedenpitäviä, joten ei haittaa, jos ne kastuvat. Vaikka asennusta tuntuu paljon, tämä helpottaa järjestelmän poistamista tulevaisuudessa tai osien vaihtoa tarvitaan, koska se voi tapahtua.
Vaihe 3: Koodi
Lähdekoodini pitäisi olla tämän ohjeen alussa. Kommentoin aina koodiani voimakkaasti, jotta se on helpompi ymmärtää myöhemmin. Vastuuvapauslauseke: En ole ammattimainen koodin kirjoittaja. Koodi on kirjoitettu menetelmällä, joka oli helpompi aloittaa ensin, ja joitakin parannuksia tehtiin, mutta tiedän, että sitä voitaisiin parantaa. Käytän myös paljon viivettä () -toimintoa ajoitukseen, joka ei ole ihanteellinen. Yksikön vastaanottamat signaalit eivät kuitenkaan ole nopeita signaaleja verrattuna, joten tunsin silti perusteltua pitää ne yli käyttämällä jotain milliä (). Olen myös erittäin kiireinen isä ja aviomies, joten vietän aikaa parantaakseni jotain, joka ei lopulta muuta toimintoa, eivät ole listalla.
Tässä projektissa tarvitaan vain yksi kirjasto, joka on FastLED -kirjasto. Tässä on kaikki koodit WS2811/WS2812B -tyyppisten LED -nauhojen ohjaamiseen. Sieltä katson käytettävät perustoiminnot.
Ensimmäinen muu kuin vakiomääritelmät on ilmoittaa kaksi nauhaa. Käytät seuraavaa koodia jokaiselle nauhalle:
FastLED.addLeds (ledit [0], NUM_LEDS);
Tämä koodirivi, joka määrittää nastan 2, määrittelee tämän nauhan nauhaksi 0, jossa on LED -valojen määrä, jotka määrittelee vakio NUM_LEDS, joka minun tapauksessani on asetettu 16. Toisen nauhan määrittämiseksi 2: stä tulee 3 (nasta 3) ja nauha on merkitty nauhaksi 1.
Seuraava tärkeä rivi on värin määrittely.
ledit [0] [1] = Väri_korkea CRGB (r, g, b);
Tätä koodiriviä käytetään vaikka eri ulkonäössä (suurin osa käyttämistäni vakiona). Pohjimmiltaan tämä koodi lähettää arvon jokaiselle LED -kanavalle (punainen, vihreä, sininen), joka määrittää kunkin kirkkauden. Kirkkausarvo voidaan määrittää numerolla 0 - 255. Muuttamalla kunkin kanavan kirkkaustasoa voit määrittää eri värejä. Tässä projektissa haluan valkoisen värin, joka pitää valon mahdollisimman kirkkaana. Ainoat muutokset, jotka teen, on asettaa kirkkaustaso samaksi kaikilla kolmella kanavalla.
Seuraavaa koodisarjaa käytetään kunkin valon yksittäiseen sytyttämiseen. Huomaa, että kullakin nauhalla jokaisella LEDillä on osoite, joka alkaa nollasta lähimmällä datalinjayhteydellä aina korkeimpaan LED -numeroon, jonka sinulla on miinus 1. Esimerkki, nämä ovat 16 LED -nauhaa, joten suurin on 16 - 1 = 15. Syynä tähän on se, että ensimmäinen LED on merkitty 0.
for (int i = NUM_LEDS -1; i> -1; i = i -3) {// Tämä muuttaa jokaisen kolmannen LEDin valon edellisestä ensimmäiseksi. ledit [0] = Väri_väri; // Aseta nauhan 0 LED -väri valittuun väriin. ledit [1] = Väri_väri; // Aseta nauhan 1 LED -väri valittuun väriin. FastLED.show (); // Näytä asetetut värit. ledit [0] = CRGB:: musta; // Poista asetettu väri käytöstä seuraavan värin valmistelussa. ledit [1] = CRGB:: musta; viive (150); } FastLED.show (); // Näytä asetetut värit.
Tämä koodi toimii siten, että muuttujaa (i) käytetään for -silmukassa LED -osoitteena, johon viitataan sitten koko LED -valojen (NUM_LEDS) kanssa. Syy tähän on se, että haluan, että valot käynnistyvät nauhan lopussa eikä sen alussa. Asetus annetaan molemmille nauhoille (ledit [0] ja ledit [1]) ja sitten annetaan muutoksen näyttävä komento. Tämän jälkeen tämä valo sammuu (CRGB:: Black) ja seuraava valo syttyy. Musta viittaus on tietty väri FastLED -kirjastossa, joten minun ei tarvitse antaa 0, 0, 0 kullekin kanavalle, vaikka ne tekisivät saman. For-silmukka siirtää 3 LEDiä kerrallaan (i = i-3), koska käytän vain jokaista muuta LEDiä. Tämän silmukan loppuun mennessä valosekvenssi siirtyy yhdestä LED -valosta seuraavaan, kun vain yksi palaa nauhaa kohti, tavallaan Knight Rider -efekti. Jos haluat pitää jokaisen valon palana niin, että palkki muodostuu, poista vain rivit, jotka sammuttavat LEDit, mikä tapahtuu ohjelman seuraavassa koodisarjassa.
for (int i = 0; i <himmeä; i ++) {// Häivytä valot nopeasti juoksevalle tasolle. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Tämä sytyttää sijaintivalon kolme viimeistä valoa. ledit [0] = CRGB (rt, gt, bt); // Aseta nauhan 0 LED -väri valittuun väriin. ledit [1] = CRGB (rt, gt, bt); // Aseta nauhan 1 LED -väri valittuun väriin. } FastLED.show (); viive (3); }
Viimeinen esimerkki koodista, jota käytän LEDeissä, on häivytyssilmukka. Tässä käytän väliaikaisia aikavälejä kunkin kanavan kirkkaudelle (rt, gt, bt) ja kasvatan niitä yhdellä viiveellä jokaisen esityksen välillä haluamani ulkonäön saavuttamiseksi. Huomaa myös, että tämä koodi muuttaa vain kolme viimeistä LEDiä, koska se häipyy ajovaloissa, joten aloitan yhdeksästä eikä 0: sta.
Loput LED -koodista ovat näiden iteraatioita. Kaikki muu keskittyy signaalin etsimiseen kolmelta eri johtimelta. Koodin Loop () -alue etsii jarruvaloja, jotka vilkkuvat kerran ennen kuin pysyt päällä (tämä on säädettävissä haluttaessa) tai etsitään suuntavaloja. Tämän koodin osalta, koska en voinut olettaa, että vasen ja oikea kääntymisvalo syttyvät täsmälleen samaan aikaan vaarojen varalta, annan koodin etsiä ensin jompaakumpaa ja sitten pienen viiveen jälkeen tarkistaa, ovatko molemmat varoitusvalot palavat. Yksi hankala osa minulla oli suuntavilkut, koska valo sammuu jonkin aikaa, joten miten voin erottaa signaalin, joka on edelleen päällä mutta pois päältä, ja peruutetun signaalin välillä? Keksin, että toteutin viivesilmukan, joka on asetettu jatkumaan pidempään kuin signaalin välähdysten välinen viive. Jos suuntavilkku on edelleen päällä, signaalisilmukka jatkuu. Jos signaali ei pala uudelleen viiveen päättyessä, se palaa silmukan alkuun (). Säädä viiveen pituutta muuttamalla jatkuvan valon numeroa Viive muistaa jokaista 1 valoa varten Viive viive muuttuu 100 ms.
while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } viive (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Tämä muuttaa jokaisen kolmannen LEDin valon edellisestä ensimmäiseksi. ledit [0] = CRGB (0, 0, 0); // Aseta nauhan 0 LED -väri valittuun väriin. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Tämä asettaa ajovalot, jotka käyttävät vain kolmea viimeistä. ledit [0] = Väri_väri; // Aseta nauhan 0 LED -väri valittuun väriin. } FastLED.show (); // Lähtöasetukset palaavat; // Kun suuntavilkku ei ole enää päällä, palaa silmukkaan. }
Toivottavasti loppu koodi on itsestään selvä. Se on vain toistuva joukko signaalien tarkistamista ja niihin toimimista.
Vaihe 4: Tulokset
Hämmästyttävä osa oli, että tämä järjestelmä toimi ensimmäisen kerran, kun kytkin sen pyörään. Nyt, ollakseni oikeudenmukainen, testasin sitä voimakkaasti penkillä ennen tätä, mutta odotin silti, että minulla on ongelma tai säätö. Kävi ilmi, että minun ei tarvinnut tehdä muutoksia koodiin ja yhteyksiin. Kuten videosta näet, järjestelmä kulkee käynnistysjärjestyksen läpi (jota sinun ei tarvitse olla) ja sitten oletusarvoisesti ajovalot. Sen jälkeen se etsii jarruja, jolloin se sytyttää kaikki LEDit täyteen kirkkauteen ja vilkkuu ne kerran ennen kuin se palaa, kunnes jarrut vapautetaan. Kun käytetään suuntavilkkua, tein vieritystehosteen sille puolelle, jolle käännös on osoitettu, ja toinen puoli on joko ajovalot tai jarruvalot, jos ne ovat päällä. Varoitusvalot vilkkuvat vain ajoissa muiden valojen kanssa.
Toivottavasti näillä lisävaloilla olen paremmin näkyvissä muille ihmisille. Ainakin se on mukava lisä, jotta laatikoni erottuu hieman enemmän kuin muut samalla kun se tarjoaa apuohjelman. Toivon, että tämä projekti on hyödyllinen myös jollekin muulle, vaikka he eivät toimi moottoripyörän ylälaatikon valaistuksen kanssa. Kiitos!
Suositeltava:
DIY 37 Leds Arduino -rulettipeli: 3 vaihetta (kuvilla)
DIY 37 Leds Arduino Roulette Peli: Ruletti on kasinopeli, joka on nimetty ranskalaisen sanan mukaan, joka tarkoittaa pientä pyörää
Ammattimainen sääasema käyttäen ESP8266- ja ESP32 -DIY: 9 vaihetta (kuvilla)
Ammattimainen sääasema käyttämällä ESP8266- ja ESP32 -DIY: LineaMeteoStazione on täydellinen sääasema, joka voidaan liittää Sensirionin ammattitunnistimiin sekä joihinkin Davis -instrumenttikomponentteihin (sademittari, tuulimittari)
Diy -makrolinssi, jossa on automaattitarkennus (erilainen kuin kaikki muut DIY -makro -objektiivit): 4 vaihetta (kuvilla)
Diy-makrolinssi, jossa on automaattitarkennus (erilainen kuin kaikki muut DIY-makro-objektiivit): Olen nähnyt paljon ihmisiä tekemässä makro-objektiiveja tavallisella objektiivilla (yleensä 18-55 mm). Useimmat niistä ovat objektiivi, joka on vain kiinni kamerassa taaksepäin tai etuosa on poistettu. Molemmilla vaihtoehdoilla on huonot puolensa. Linssin asentamiseen
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
Ladattava polkupyörän valosarja pulloakulla: 13 vaihetta
Ladattava polkupyörän valosarja, jossa on pulloakku: Tämä on minun valojärjestelyni, jonka olen juuri valmistanut pitkiä skotlantilaisia talvia varten, ja siinä on suuritehoinen etuosa ja todelliset LED -valot sekä ladattava pulloakku. Olen saanut inspiraatiota parilta ihmiseltä, joille viitataan kiitoksella