Obsah:

DIY Givi V56 Sada světel pro topbox motocyklu s integrovanými signály: 4 kroky (s obrázky)
DIY Givi V56 Sada světel pro topbox motocyklu s integrovanými signály: 4 kroky (s obrázky)

Video: DIY Givi V56 Sada světel pro topbox motocyklu s integrovanými signály: 4 kroky (s obrázky)

Video: DIY Givi V56 Sada světel pro topbox motocyklu s integrovanými signály: 4 kroky (s obrázky)
Video: Givi v56 maxia4 led часть2 модернизация кофра гиви быстрый оазъем 2024, Listopad
Anonim
Image
Image
Světelná sada pro topbox motocyklu Givi V56 s integrovanými signály
Světelná sada pro topbox motocyklu Givi V56 s integrovanými signály
Světelná sada pro topbox motocyklu Givi V56 s integrovanými signály
Světelná sada pro topbox motocyklu Givi V56 s integrovanými signály

Jako motocyklový jezdec jsem příliš obeznámen s tím, jak se ke mně chovají, jako bych byl na silnici neviditelný. Jedna věc, kterou ke svým kolům vždy přidávám, je top box, který má obvykle integrované světlo. Nedávno jsem upgradoval na nové kolo a koupil si box Givi V56 Monokey, protože měl spoustu místa na věci. Tento box má místo pro tovární světelnou sadu, která se skládá ze dvou pásů LED pro každou stranu. Problém je v tom, že tato sada stojí asi 70 $ a pouze brzdí. Existuje sada náhradních dílů, která pravděpodobně dělá podobné věci a její instalace může být o něco snazší, ale vaše cena stoupá až na 150 $. Protože jsem vynalézavý člověk a hledám záminku k vyzkoušení adresovatelných LED pásků, rozhodl jsem se vytvořit integrovaný systém, který bude mít nejen brzdová světla, ale také svítící světla (rozsvítí se při každém pohybu), směrová světla a výstražná světla. Jen pro sakra, dokonce jsem přidal spouštěcí sekvenci …. protože jsem mohl. Všimněte si toho, že to dalo hodně práce, i když jsem měl spoustu věcí na to přijít. I přes práci jsem docela spokojený s tím, jak to dopadlo. Naštěstí to nakonec bude užitečné pro někoho jiného.

Základní funkcí tohoto systému je, že jednotka Arduino hledá signály na pinech: brzdové světlo, levé směrové světlo a pravé směrové světlo. Abych mohl přečíst 12voltový signál z motocyklu, použil jsem optoizolátory k převodu signálu 12V na signál 5V, který dokáže přečíst Arduino. Kód poté čeká na jeden z těchto signálů a poté odešle příkazy na pás LED pomocí knihovny FastLED. To je základ, teď se dostanu do podrobností.

Zásoby

To jsou věci, které jsem použil, protože už jsem je povětšinou měl povalované. Je zřejmé, že je lze podle potřeby vyměnit:

  1. Arduino - Použil jsem nano pro úvahy o velikosti, ale můžete použít cokoli, na co máte chuť, pokud máte k dispozici pět pinů.
  2. 5V regulátor - použil jsem L7805CV, který byl schopen 1,5 ampéru. Tento projekt bude používat 0,72 ampéru pro LED plus energii pro nano, takže 1,5 pro tento projekt funguje skvěle.
  3. Kondenzátory - pro správnou funkci regulátoru napětí budete potřebovat jeden 0,33 uF a jeden 0,1 uF.
  4. 3x optoizolátory - k převodu signálu z 12V na 5V. Použil jsem typ PC817X, který má pouze čtyři piny, což je vše, co potřebujeme.
  5. Rezistory - budete potřebovat dva typy, tři od každého typu. První musí stačit ke snížení proudu pomocí IR LED optoizolátoru. Budete potřebovat alespoň 600 ohmů, ale 700 by bylo lepší nápad zvládnout měnící se napětí na motocyklu. Ten druhý musí být někde mezi 10k a 20k pro rychlý signál na druhé straně optoizolátoru.
  6. Prototypová deska - měl jsem nějaké, které byly dostatečně malé na to, aby se vešly do malé projektové krabice s malým množstvím ořezávání.
  7. Krabice na projekt - dostatečně velká na to, aby se do ní vešly součástky, ale dostatečně malá na to, aby se snadno montovala.
  8. Wire - Použil jsem ethernetový kabel Cat 6, protože jsem toho hodně seděl. To má osm barevně odlišených vodičů, které pomohly se všemi různými připojeními, a bylo to dostatečně velké měřidlo, které zvládne aktuální tahy.
  9. Zásuvky - kdekoli chcete, aby byl systém snadno vyjímatelný. Použil jsem vodotěsnou zátku, aby bylo možné odstranit horní box a zvládnout jakýkoli déšť nebo vodu, která se na něj dostane. Také jsem potřeboval menší zátky pro LED pásky, abych nemusel vrtat velké otvory.
  10. Lepicí úchyty na zipy a zipy, které drží vše na svém místě.
  11. Smršťovací zábal, abyste uklidili spojení.

Krok 1: Budování obvodu

Budování okruhu
Budování okruhu
Budování okruhu
Budování okruhu
Budování okruhu
Budování okruhu

Je zřejmé, že pokud sledujete moji verzi, nebudete muset projít množstvím testů, které jsem provedl. První věc, kterou jsem udělal, bylo zajistit, aby můj kód fungoval a mohl jsem správně získat signál z optoizolátorů a také správně ovládat LED pásky. Chvíli trvalo, než jsem zjistil, jak nejlépe připojit signální kolíky k izolátorům, ale metodou pokusu a omylu jsem našel správnou orientaci. Právě jsem použil standardní prototypovou desku, protože jsem stavěl pouze jednu a zjistit stopový vzor by zabralo více času, než by stálo za to. Horní část desky plošných spojů vypadá skvěle, ale spodní část vypadá trochu jako nepořádek, ale alespoň je funkční.

Základní konstrukce začíná vstupem napájení 12 V ze spínaného zdroje (vodič, který je zapnutý pouze při zapnutém motocyklu). Schéma zapojení může opravdu pomoci najít tento vodič. Toto je přiváděno na jednu stranu regulátoru napětí. Kondenzátor 0,33 uF spojuje tento vstup se zemí na regulátoru napětí, který se poté napájí zpět na zem na motocyklu. Výstup regulátoru napětí bude mít k zemi kondenzátor 0,1uF. Tyto kondenzátory pomáhají vyhladit napětí z regulátoru. Pokud je na obrázku desky s obvody nenajdete, nacházejí se pod regulátorem napětí. Odtud jde 5V linka na Vin na Arduinu, na napájecí kolík, který bude napájet LED pásky, a dvě zdrojovou stranu optoizolátoru, která bude napájena na piny Arduino poskytující potřebný 5V signál.

Pokud jde o optoizolátory, existují dvě strany: jedna s IR LED a druhá s tranzistorem s infračerveným detektorem. Chceme použít stranu IR LED k měření signálu 12V. Protože LED má dopředné napětí 1,2 V, potřebujeme v sérii odpor omezující proud. 12V - 1,2 V = 10,8 V a pro provoz LED na 18 mA (vždy rád z důvodu životnosti provozuji méně než 20 mA) budete potřebovat odpor R = 10,8 V/0,018 A = 600 ohmů. Napětí na vozidlech také obvykle běží vyšší, potenciálně až 14 V, takže je lepší to naplánovat, což je asi 710 ohmů, ačkoli 700 by bylo více než rozumné. Výstup pro stranu LED se pak vrací zpět na zem. Na výstupní straně optoizolátoru bude vstup používat signál 5 V z regulátoru, poté se výstup připojí k jinému rezistoru, než přejde na zem. Tento odpor musí být kolem 10k - 20k ohmů, alespoň to ukázal můj datový list. To poskytne rychlé měření signálu, protože se nezabýváme hlučným prostředím. Výstup na kolík Arduino se vypne mezi odporem a výstupem optoizolátoru, takže když je signál vypnutý, kolík je nízký a když je signál na pinu, je vysoký.

LED pásková světla mají k sobě přidružené tři vodiče: napájení, uzemnění a data. Napájení musí být 5V. Tento projekt používá celkem 12 LED diod (i když mám na páskách více LED diod, ale používám pouze každou třetí LED) a každá používá 60 mA, když je bílé světlo použito při plném jasu. To dává celkem 720 mA. Jsme na úrovni výstupního výkonu pro regulátor napětí, takže jsme dobří. Jen se ujistěte, že vodič je dostatečně velký na to, aby zvládl energii, použil jsem ethernetový drát Cat 6 o rozměru 24. Seděl jsem kolem ethernetového drátu a má 8 barevně kódovaných vodičů, takže pro tento projekt to fungovalo dobře. Jediné vodiče, které pak musí jít do samotného topboxu, jsou napájení a zem (oba se rozdělí mezi pásy) a dvě datové linky (pro každý pás jeden).

Zbytek kabeláže se připojuje k pinům na arduinu a napájí jej energií. Kolíky, které byly použity pro tento projekt, byly následující:

  1. Vin - připojeno na 5V
  2. GND - připojeno k zemi
  3. Pin2 - připojen k datovému řádku levého pásu
  4. Pin3 - připojen k datové lince Right Strip
  5. Pin4 - připojen k signálu brzdy z optoizolátoru
  6. Pin5 - připojen k levému směrovému světlu z optoizolátoru
  7. Pin6 - připojen k pravému směrovému signálu z optoizolátoru

Krok 2: Zapojení a instalace

Zapojení a instalace
Zapojení a instalace
Zapojení a instalace
Zapojení a instalace
Zapojení a instalace
Zapojení a instalace

Jakmile je obvod vybudován, nadešel čas jej skutečně zapojit na místo. Pomocí schématu zapojení vašeho kola budete muset vyhledat následující:

  • Spínané napájení
  • Přízemní
  • Vstupní signál brzdy
  • Vstupní signál vlevo
  • Vpravo zapněte signál

Pro ten můj tam byla jediná zástrčka, která měla všechny tyto věci, takže jsem to použil. S dostatkem času jsem možná dokázal najít stejný styl zástrčky a jen vyrobit zásuvný modul, ale neudělal jsem to, takže jsem jen odstranil izolaci na místech a připájel k ní nový vodič. Použil jsem zástrčky na těchto spojovacích spojích, abych mohl odstranit zbytek, kdybych někdy v budoucnu potřeboval. Odtamtud jsem umístil Arduino, které je nyní v uzavřené projektové krabici, pod sedadlo, kam jsem jej připevnil. Výstupní kabel pak vede podél rámu stojanu k vodotěsné zástrčce, poté vstupuje do krabice a vede podél zad k víku, kde se rozděluje pro každou stranu. Vodiče vedou podél vnitřku víka k místu, kde jsou přípojky pro LED diody. Drát pomáhá na místě pomocí stahovacích pásků připevněných k držákům zipových pásek Outdoor grade s lepivou podložkou. Najdete je v sekci instalace kabelů v obchodě s domácími potřebami

Použil jsem dvě mini zástrčky JST na LED pásech, protože jsem potřeboval zástrčku dostatečně malou na to, abych prošel otvorem o minimálním průměru, a protože jsem se chtěl ujistit, že je k dispozici dostatek drátu na zvládnutí aktuálních požadavků. Opět to mohlo být přehnané a neměl jsem po ruce žádné malé zástrčky se třemi vodiči. Otvor v krabici, přes který procházely dráty světelných pásů, byl utěsněn, aby se do něj nedostala voda. Pokud jde o umístění LED pásků, protože tam je mírný nesoulad v rozestupu (mezi otvory v reflektoru a LED diodách byl rozdíl asi 1 - 1,5 mm), umístil jsem je tak, aby rozdělily rozdíl mezi LED a díru co nejvíce. Poté jsem je pomocí horkého lepidla nalepil na místo a tmelem zcela utěsnil oblast. Samotné LED pásky jsou vodotěsné, takže není problém, pokud zvlhnou. Ačkoli se zdá, že instalace je hodně, usnadňuje to v budoucnu odebrání systému nebo výměnu součástí, protože k tomu může dojít.

Krok 3: Kód

Můj zdrojový kód by měl být na začátku tohoto Instructable. Svůj kód vždy silně komentuji, takže je později snáze pochopitelný. Disclaimer: Nejsem profesionální spisovatel kódu. Kód byl napsán metodou, která byla snazší začít první a byla provedena některá vylepšení, ale vím, že by to mohlo být více upřesněno. Také používám velké množství funkce delay () pro načasování, které není tak ideální. Signály, které jednotka přijímá, však nejsou ve srovnání s rychlými signály, takže jsem se stále cítil oprávněný je udržovat pomocí něčeho jako millis (). Jsem také velmi zaneprázdněný otec a manžel, takže trávit čas vylepšováním něčeho, co v konečném důsledku funkci nezmění, není na seznamu.

Pro tento projekt je vyžadována pouze jedna knihovna, kterou je knihovna FastLED. To má veškerý kód pro ovládání LED pásků typu WS2811/WS2812B. Odtud pokryju základní funkce, které budou použity.

První než standardní definice je deklarace vašich dvou proužků. Pro každý proužek použijete následující kód:

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

Tento řádek kódu nastavuje Pin 2 tento pás jako pás 0 s počtem LED diod definovaných konstantou NUM_LEDS, která je v mém případě nastavena na 16. Pro definování druhého pásu se z 2 stane 3 (pro pin3) a proužek bude označen proužkem 1.

Další řádek, který bude důležitý, je definice barev.

leds [0] [1] = Color_high CRGB (r, g, b);

Tento řádek kódu se používá v jiném vzhledu (většina z nich používá konstantu). Tento kód v zásadě odesílá hodnotu každému z kanálů LED (červená, zelená, modrá), která definuje každý jas. Hodnotu jasu lze definovat číslem 0 - 255. Změnou úrovně jasu pro každý kanál můžete definovat různé barvy. U tohoto projektu chci bílou barvu, aby bylo světlo co nejjasnější. Jediné změny, které dělám, je tedy nastavení stejné úrovně jasu pro všechny tři kanály.

Další sada kódů slouží k individuálnímu osvětlení každého světla. Všimněte si toho, že pro každý pás má každá LED adresu, která začíná na 0 pro tu, která je nejblíže k připojení datové linky, až po nejvyšší počet LED, které máte minus 1. Příklad, jedná se o 16 LED pásků, takže nejvyšší je 16 - 1 = 15. Důvodem je to, že první LED dioda je označena 0.

for (int i = NUM_LEDS -1; i> -1; i = i -3) {// Tím se změní světlo pro každou třetí LED procházející od poslední k první. leds [0] = Color_low; // Nastaví pruh 0 barvy LED na zvolenou barvu. leds [1] = Color_low; // Nastavte pruh 1 barvy LED na zvolenou barvu. FastLED.show (); // Zobrazit nastavené barvy. leds [0] = CRGB:: Black; // Vypněte nastavenou barvu v přípravě na další barvu. leds [1] = CRGB:: Black; zpoždění (150); } FastLED.show (); // Zobrazit nastavené barvy.

Tento kód funguje tak, že proměnná (i) je použita ve smyčce for jako adresa LED, která je pak odkazována na plný počet LED diod (NUM_LEDS). Důvodem je to, že chci, aby světla začínala na konci pásu, nikoli na začátku. Nastavení je vyvedeno na oba proužky (LED [0] a LED [1]), poté je vydán příkaz pro zobrazení změny. Poté toto světlo zhasne (CRGB:: Black) a rozsvítí se další světlo. Odkaz Black je specifická barva v knihovně FastLED, takže nemusím vydávat 0, 0, 0 pro každý kanál, ačkoli by dělali totéž. Smyčka For posune 3 LED najednou (i = i-3), protože používám pouze každou druhou LED. Na konci této smyčky bude světelná sekvence přecházet z jedné LED na druhou pouze s jednou rozsvícenou na pás, což je druh efektu Knight Rider. Pokud chcete, aby každé světlo svítilo tak, aby se lišta stavěla, jednoduše byste odstranili řádky, které vypnou LED diody, což se stane v další sadě kódu v programu.

for (int i = 0; i <dim; i ++) {// Rychlé vyblednutí světel na úroveň běžícího světla. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Tím se rozsvítí poslední tři světla pro poziční světlo. LED [0] = CRGB (rt, gt, bt); // Nastavte pruh 0 barvy LED na zvolenou barvu. LED [1] = CRGB (rt, gt, bt); // Nastavte pruh 1 barvy LED na zvolenou barvu. } FastLED.show (); zpoždění (3); }

Posledním příkladem kódu, který pro LED diody používám, je fade loop. Zde používám dočasné sloty pro jas pro každý kanál (rt, gt, bt) a zvyšuji je o 1 se zpožděním mezi každým zobrazením, abych dosáhl požadovaného vzhledu. Všimněte si také, že tento kód mění pouze poslední tři LED diody, protože v běžících světlech bledne, takže i začíná na 9 místo 0.

Zbytek kódu LED je jejich iterací. Všechno ostatní je zaměřeno na hledání signálu na třech různých vodičích. Oblast smyčky () kódu hledá brzdová světla, která jednou zablikají, než zůstanou rozsvícená (to lze v případě potřeby nastavit) nebo hledají směrová světla. Pro tento kód, protože jsem nemohl předpokládat, že se levé a pravé směrové světlo rozsvítí přesně ve stejnou dobu, mám kód nejprve vyhledat buď jeden, a poté po malém zpoždění zkontroluji, zda oba svítí svítí výstražná světla. Jedna ošemetná část, kterou jsem měl, byla směrová světla, protože světlo na nějakou dobu zhasne. Jak tedy poznám rozdíl mezi signálem stále zapnutým, ale v době vypnutí a zrušeným signálem? Přišel jsem na implementaci zpožďovací smyčky, která je nastavena tak, aby pokračovala déle než zpoždění mezi signálními záblesky. Pokud je směrový signál stále zapnutý, bude signální smyčka pokračovat. Pokud se signál po skončení zpoždění znovu nezapne, vrátí se zpět na začátek smyčky (). Chcete -li upravit délku zpoždění, změňte číslo pro konstantní světlo Zapamatování zpoždění pro každý 1 ve světle Zpoždění se změní o 100 ms.

while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } zpoždění (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Tím se změní světlo pro každou třetí LED procházející od poslední k první. LED [0] = CRGB (0, 0, 0); // Nastaví pruh 0 barvy LED na zvolenou barvu. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Tím se nastaví kontrolky, které používají pouze poslední tři. leds [0] = Color_low; // Nastaví pruh 0 barvy LED na zvolenou barvu. } FastLED.show (); // Nastavení výstupu se vrátí; // Jakmile ukazatel směru již není zapnutý, vraťte se zpět do smyčky. }

Naštěstí je zbytek kódu samozřejmý. Je to jen opakující se sada kontrol a působení na signály.

Krok 4: Výsledky

Výsledek
Výsledek

Úžasné na tom bylo, že tento systém fungoval poprvé, když jsem ho připojil k motocyklu. Abych byl spravedlivý, před tím jsem to hodně testoval na lavičce, ale stále jsem očekával problém nebo úpravu. Ukázalo se, že jsem nepotřeboval provádět žádné úpravy kódu ani připojení. Jak vidíte na videu, systém projde spouštěcí sekvencí (kterou nemusíte mít), poté se automaticky přepne na běžící světla. Poté vyhledá brzdy, v takovém případě rozsvítí všechny LED diody na plný jas a jednou bliká, než zůstane rozsvícený, dokud brzdy neuvolníte. Když je použit ukazatel směru, provedl jsem efekt posouvání pro stranu, na které je odbočení indikováno, a na druhé straně budou buď rozsvícená světla, nebo brzdová světla, pokud jsou zapnutá. Výstražná světla budou časem blikat s ostatními světly.

Naštěstí s těmito přídavnými světly budu více viditelný pro ostatní lidi. Přinejmenším je to pěkný doplněk, díky kterému moje krabice při poskytování nástrojů vynikne o něco více než ostatní. Doufám, že tento projekt bude užitečný i pro někoho jiného, i když nepracuje s osvětlením top boxu motocyklu. Dík!

Doporučuje: