Taula de continguts:

Kit de llums per a motocicletes Givi V56 DIY amb senyals integrats: 4 passos (amb imatges)
Kit de llums per a motocicletes Givi V56 DIY amb senyals integrats: 4 passos (amb imatges)

Vídeo: Kit de llums per a motocicletes Givi V56 DIY amb senyals integrats: 4 passos (amb imatges)

Vídeo: Kit de llums per a motocicletes Givi V56 DIY amb senyals integrats: 4 passos (amb imatges)
Vídeo: AdMore LED light kit on a Givi V47 Top Case. 2024, Desembre
Anonim
Image
Image
Kit de llums per a motocicletes Givi V56 DIY amb senyals integrats
Kit de llums per a motocicletes Givi V56 DIY amb senyals integrats
Kit de llums per a motocicletes Givi V56 DIY amb senyals integrats
Kit de llums per a motocicletes Givi V56 DIY amb senyals integrats

Com a pilot de motocicletes, estic massa familiaritzat amb el fet que em tractin com si fos invisible a la carretera. Una cosa que sempre afegeixo a les meves bicicletes és una caixa superior que sol tenir llum integrada. Recentment he canviat a una bicicleta nova i he comprat la caixa Givi V56 Monokey ja que tenia molt d’espai per a articles. Aquesta caixa té un punt per a un kit de llum de fàbrica que consta de dues tires de LED per cada costat. El problema és que aquest kit costa uns 70 dòlars i només frena. Hi ha un kit de recanvi que probablement fa coses similars i pot ser que sigui una mica més fàcil d’instal·lar, però el vostre preu puja a 150 dòlars. Com que era una persona amb recursos i buscava una excusa per provar les tires LED adreçables, vaig decidir crear un sistema integrat que no només tingués llums de fre, sinó llums de funcionament (sempre que s’encenguessin), intermitents i llums de perill. Només pel diable, fins i tot he afegit una seqüència d'inici … perquè podia. Tingueu en compte que això va suposar molta feina, tot i que tenia moltes coses per esbrinar. Tot i la feina, estic bastant content de com va resultar això. Esperem que això acabi sent útil per a una altra persona.

El funcionament bàsic del funcionament d’aquest sistema és que la unitat Arduino busca senyals als passadors: llum de fre, llum de gir a l’esquerra i llum de gir a la dreta. Per llegir el senyal de 12 volts de la motocicleta, he utilitzat optoisoladors per convertir el senyal de 12 V en un senyal de 5 V que Arduino pugui llegir. Aleshores, el codi espera un d’aquests senyals i, a continuació, emet les ordres a la tira LED mitjançant la biblioteca FastLED. Aquest és el bàsic, ara per entrar en els detalls.

Subministraments

Aquestes són les coses que he utilitzat perquè en la seva majoria ja les tenia al voltant. Viouslybviament, es poden canviar si cal:

  1. Arduino: he utilitzat un nano per tenir en compte la mida, però podeu utilitzar el que us sembli sempre que tingueu cinc pins.
  2. Regulador de 5 V: he utilitzat un L7805CV que era capaç d'1,5 amperes. Aquest projecte utilitzarà 0,72 amperes per als LED més la potència del nano, de manera que 1,5 funciona molt bé per a aquest projecte.
  3. Condensadors: necessitareu un 0,33 uF i un 0,1 uF perquè el regulador de tensió funcioni correctament.
  4. Optoisoladors 3x: per fer la conversió del senyal de 12V a 5V. He utilitzat el tipus PC817X que només té quatre pins, que és tot el que necessitem.
  5. Resistors: necessitareu dos tipus, tres de cada tipus. El primer ha de ser suficient per reduir el corrent a través del LED IR optoisolador. Necessitareu almenys 600 ohms, però 700 seria una millor idea per manejar els voltatges canviants a la motocicleta. L’altre ha d’estar entre 10k i 20k per obtenir un senyal ràpid a l’altre costat de l’optoisolador.
  6. Tauler prototip: en tenia alguns que eren prou petits per cabre dins d’una petita caixa de projecte amb una lleugera quantitat de retallada.
  7. Caixa de projecte: prou gran per adaptar-se als components, però prou petita per ser fàcil d’ajustar.
  8. Cable: he utilitzat cable Ethernet Cat 6 perquè en tenia molt assegut. Té vuit cables de tots els codis de colors que ajudaven a totes les diferents connexions i era un indicador prou gran per manejar els dibuixos actuals.
  9. Endolls: a qualsevol lloc que vulgueu que el sistema es pugui extraure fàcilment. He utilitzat un endoll impermeable per eliminar la caixa superior i per controlar qualsevol pluja o aigua que hi pugui. També necessitava endolls més petits per a les tires LED, de manera que no vaig haver de foradar grans forats.
  10. Tirants amb cremallera i suports adhesius per a tiradors per mantenir-ho tot al seu lloc.
  11. Retràctil per endreçar les connexions.

Pas 1: Construir el circuit

Construint el circuit
Construint el circuit
Construint el circuit
Construint el circuit
Construint el circuit
Construint el circuit

Viouslybviament, si seguiu la meva versió, no haureu de passar per la quantitat de proves que he fet. El primer que vaig fer va ser assegurar-me que el meu codi funcionés i que pogués obtenir correctament un senyal dels optoisoladors, així com controlar adequadament les tires LED. Va trigar un moment a esbrinar la millor manera de fixar els pins de senyal als aïlladors, però mitjançant proves i errors vaig trobar l’orientació adequada. Acabo d’utilitzar un prototip de tauler estàndard, ja que només en construïa un i esbrinar un patró de traça hauria trigat més temps del que valia la pena. La part superior de la placa de circuit té un aspecte fantàstic, però la part inferior sembla una mica desordenada, però almenys és funcional.

El disseny bàsic comença per introduir l’alimentació de 12 V des d’una font commutada (un cable que només està encès quan la moto està encesa). Un diagrama de cablejat pot ajudar realment a trobar aquest cable. Això s’alimenta a un costat del regulador de tensió. Un condensador de 0,33 uF lliga aquesta entrada a terra del regulador de voltatge que després s’alimenta de nou a terra de la motocicleta. La sortida del regulador de tensió tindrà un condensador de 0,1 uF lligat a terra. Aquests condensadors ajuden a suavitzar la tensió del regulador. Si no els podeu trobar a la imatge de la placa de circuit, es troben a sota del regulador de voltatge. A partir d’aquí, la línia de 5V es dirigeix al Vin de l’Arduino, al pin d’alimentació que alimentarà les tires de LED, i dos al costat Font de l’optoisolador que s’introduirà als pins Arduino proporcionant el senyal de 5V necessari.

Pel que fa als optoisoladors, hi ha dues cares: una amb un LED d’IR i l’altra amb un transistor amb i un detector d’IR. Volem utilitzar el costat LED IR per mesurar el senyal de 12 V. Com que el LED té una tensió directa d’1,2 V, necessitem una resistència limitadora de corrent en sèrie. 12V - 1,2V = 10,8V i per fer funcionar el LED a 18 mA (sempre m’agrada funcionar menys de 20 mA per motius de vida), necessitareu una resistència de R = 10,8V / 0,018A = 600 ohm. Els voltatges dels vehicles també solen funcionar més, potencialment fins a 14 V, de manera que és millor planificar-ho, que és d’uns 710 ohm, tot i que 700 serien més que raonables. La sortida del costat LED es torna a alimentar a terra. Per al costat de sortida de l’optoisolador, l’entrada utilitzarà el senyal de 5V del regulador i la sortida es connectarà a una altra resistència abans d’anar a terra. Aquesta resistència només ha d’estar al voltant dels 10k - 20k ohm, almenys això és el que va mostrar el meu full de dades. Això permetrà mesurar ràpidament el senyal, ja que no estem davant d’un entorn sorollós. La sortida al pin Arduino es desprendrà entre la resistència i la sortida de l’optoisolador de manera que, quan el senyal estigui apagat, el pin sigui baix i quan el senyal estigui al pin serà alt.

Els llums de tires LED tenen tres cables associats: alimentació, terra i dades. La potència ha de ser de 5 V. Aquest projecte utilitza 12 LED en total (tot i que tinc més LED a les tires, però només estic fent servir cada tercer LED) i cadascun d’ells pren 60 mA quan s’utilitza llum blanca a la màxima brillantor. Això proporciona un total de 720 mA. Estem bé dins de la potència de sortida del regulador de tensió, així que estem bé. Només heu d’assegurar-me que el cable sigui un indicador prou gran per manejar la potència, he utilitzat cable Ethernet Cat 6 de calibre 24. El cable Ethernet era una cosa que tenia assegut i té 8 cables codificats per colors, de manera que va funcionar bé per a aquest projecte. Els únics cables que han d’anar a la mateixa caixa superior són l’alimentació i la terra (que es divideixen entre les tires) i dues línies de dades (una per cada tira).

La resta del cablejat es connecta als pins de l’arduino i l’alimenta. Els pins que es van utilitzar per a aquest projecte van ser els següents:

  1. Vin - connectat a 5V
  2. Gnd: connectat a terra
  3. Pin2: connectat a la línia de dades de la banda esquerra
  4. Pin3: connectat a la línia de dades de la banda dreta
  5. Pin4: connectat al senyal de fre de l’optoisolador
  6. Pin5: connectat al senyal de gir esquerre des de l’optoisolador
  7. Pin6: connectat al senyal de gir dret de l’optoisolador

Pas 2: cablejat i instal·lació

Cablatge i instal·lació
Cablatge i instal·lació
Cablatge i instal·lació
Cablatge i instal·lació
Cablatge i instal·lació
Cablatge i instal·lació

Un cop construït el circuit, arriba el moment de connectar-lo al seu lloc. Utilitzant el vostre esquema de cablejat per a la vostra bicicleta, haureu de localitzar el següent:

  • Alimentació commutada
  • Terra
  • Entrada de senyal de fre
  • Entrada del senyal de gir esquerre
  • Entrada del senyal de gir dret

Per a la meva, hi havia un únic endoll que tenia tot això, així que ho vaig fer servir. Amb prou temps, podria haver estat capaç de trobar el mateix estil d’endoll i simplement fer un mòdul d’endoll, però no ho vaig fer, de manera que només he eliminat l’aïllament per llocs i heu soldat el nou cable. Vaig utilitzar endolls en aquestes connexions empalmades per poder eliminar la resta si mai ho necessités en el futur. A partir d’aquí vaig col·locar l’Arduino, que ara es troba en una caixa de projecte segellada, sota el seient on l’he adjuntat. A continuació, el cable de sortida recorre el bastidor del bastidor fins a un endoll impermeable, després entra a la caixa i recorre la part posterior fins a la tapa on es divideix per cada costat. Els cables recorren l'interior de la tapa fins al punt on es troben les connexions dels LED. El cable s’ajuda al seu lloc mitjançant llaços amb cremallera adherits als suports de llaços amb cremallera de grau exterior amb suport adhesiu. Podeu trobar-los a la secció d’instal·lació de cables d’una botiga de millores per a la llar

Vaig utilitzar dos mini endolls JST a les tires de LED perquè necessitava un endoll prou petit per passar per un forat de diàmetre mínim i perquè volia assegurar-me que hi hagués prou cable per fer front als requisits actuals. Una vegada més, potser ha estat excessiu i no tenia a mà cap endoll petit amb tres cables. El forat de la caixa per passar els cables de la tira de llum es va tancar per mantenir l'aigua fora. Pel que fa al posicionament de les tires de LED, perquè hi ha un lleuger desajust en l’espaiat (hi havia una diferència d’entre 1 i 1,5 mm entre els forats del reflector i els LED), les vaig situar de manera que dividissin la diferència entre el LED i el forat tant com sigui possible. Després vaig utilitzar cola calenta per fixar-les al seu lloc i un segellador per segellar completament la zona. Les tires LED són impermeables, de manera que no hi ha cap problema si es mullen. Tot i que sembla que és molt d’instal·lar, això fa que el sistema sigui més fàcil d’eliminar en el futur o de substituir les peces perquè es pugui produir.

Pas 3: el codi

El meu codi font hauria d’estar al principi d’aquest instructiu. Sempre comento molt el meu codi perquè sigui més fàcil d’entendre més endavant. Exempció de responsabilitat: no sóc un escriptor de codis professional. El codi es va escriure amb un mètode més fàcil de començar i es van fer algunes millores, però sé que es podria millorar. També estic utilitzant una gran quantitat de la funció delay () per a la sincronització que no és tan ideal. Tanmateix, els senyals que rep la unitat no són senyals ràpids en comparació, de manera que encara em sentia justificat de deixar-los utilitzar alguna cosa com millis (). També sóc un pare i un marit molt ocupats, de manera que passar temps per millorar alguna cosa que, finalment, no canviarà la funció no està a la llista.

Per a aquest projecte, només cal una biblioteca que sigui la biblioteca FastLED. Té tot el codi per controlar les tires LED tipus WS2811 / WS2812B. A partir d’aquí, tractaré les funcions bàsiques que s’utilitzaran.

La primera que no sigui la definició estàndard és declarar les vostres dues tires. Utilitzarà el següent codi per a cada tira:

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

Aquesta línia de codi configura el pin 2 defineix aquesta tira com a tira 0 amb el nombre de LEDs definits per la constant NUM_LEDS, que en el meu cas es defineix a 16. Per definir la segona tira, la 2 passarà a ser 3 (per a pin3) i la tira serà etiquetada com a tira 1.

La següent línia que serà important és la definició del color.

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

Aquesta línia de codi s’utilitza en diferents aspectes (la majoria faig servir una constant). Bàsicament, aquest codi envia un valor a cadascun dels canals LED (vermell, verd, blau) que defineix cada brillantor. El valor de brillantor es pot definir amb un número 0 - 255. Si canvieu el nivell de brillantor de cada canal, podeu definir diferents colors. Per a aquest projecte, vull un color blanc per mantenir la llum el més brillant possible. Per tant, els únics canvis que faig és establir el mateix nivell de brillantor en els tres canals.

El següent conjunt de codi s’utilitza per il·luminar de manera individual cada llum. Tingueu en compte que per a cada tira, cada LED té una adreça que comença a 0 per a la més propera a la connexió de línia de dades fins al màxim nombre LED que teniu menys 1. Per exemple, es tracta de 16 tires de LED, per la qual cosa la més alta és 16 - 1 = 15. La raó d'això és perquè el primer LED té l'etiqueta 0.

for (int i = NUM_LEDS-1; i> -1; i = i - 3) {// Això canviarà la llum de cada tercer LED que va de l'últim al primer. leds [0] = Color_low; // Estableix el color LED de la tira 0 al color escollit. leds [1] = Color_low; // Estableix el color LED de la tira 1 al color escollit. FastLED.show (); // Mostra els colors establerts. leds [0] = CRGB:: Negre; // Desactiveu el color establert a la preparació per al següent color. leds [1] = CRGB:: Negre; retard (150); } FastLED.show (); // Mostra els colors establerts.

La manera com funciona aquest codi és que s'utilitza una variable (i) dins d'un bucle for com a adreça LED, que es fa referència al nombre complet de LED (NUM_LEDS). La raó d'això és que vull que els llums comencin al final de la tira en lloc del començament. El paràmetre s'emet a les dues tires (leds [0] i leds [1]) i després s'emet una ordre per mostrar el canvi. Després d'això, aquesta llum s'apaga (CRGB:: Negre) i s'encén la llum següent. La referència Negre és un color específic a la biblioteca FastLED, de manera que no haig d'emetre 0, 0, 0 per a cada canal, tot i que fessin el mateix. El bucle For avança 3 LEDs alhora (i = i-3), ja que només faig servir tots els altres LED. Al final d’aquest bucle, la seqüència de llum passarà d’un LED a l’altre amb només un encès per tira, una mena d’efecte Knight Rider. Si voleu que cada llum estigui encesa perquè es construeixi la barra, només heu de treure les línies que apaguen els LEDs que succeeixen al següent conjunt de codi del programa.

for (int i = 0; i <dim; i ++) {// Fade ràpidament els llums al nivell de llum corrent. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Això il·luminarà els tres darrers llums de la llum de posició. leds [0] = CRGB (rt, gt, bt); // Estableix el color LED de la tira 0 al color escollit. leds [1] = CRGB (rt, gt, bt); // Estableix el color LED de la tira 1 al color escollit. } FastLED.show (); retard (3); }

L'últim exemple de codi que faig servir per als LED és un bucle de fade. Aquí faig servir ranures temporals per a la brillantor de cada canal (rt, gt, bt) i les incremento en 1 amb un retard entre cada visualització per aconseguir l’aspecte que vull. Tingueu en compte també que aquest codi només canvia els tres últims LED, ja que s’esvaeixen a les llums de funcionament, de manera que començo per 9 en lloc de 0.

La resta del codi LED són iteracions d’aquests. Tota la resta es centra en cercar un senyal en els tres cables diferents. L'àrea Loop () del codi busca llums de fre, que parpellejaran una vegada abans de mantenir-se encès (això es pot ajustar si es desitja) o de buscar intermitents. Per a aquest codi, com que no podia suposar que els llums intermitents esquerra i dreta s’encenguessin exactament al mateix temps per als perills, primer he de cercar un dels dos i, després d’un petit retard, comprovo si tots dos estan activats indicant els llums de perill estan encesos. L’única part complicada que tenia eren els intermitents perquè la llum s’apagarà durant un període, així que, com puc diferenciar el senyal encara encès, però en el període d’aturada, i el senyal cancel·lat? El que se m’ha acudit és implementar un bucle de retard que està configurat per continuar més temps que el retard entre els flaixos de senyal. Si el senyal de gir continua encès, el bucle de senyal continuarà. Si el senyal no torna a activar-se quan s’acaba el retard, es torna a l’inici del bucle (). Per ajustar la durada del retard, canvieu el número de la llum constant Retardant per cada 1 de llum Retardeu els canvis de retard en 100 ms.

while (digitalRead (leftTurn) == LOW) {for (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); if (digitalRead (leftTurn) == HIGH) {leftTurnLight (); } retard (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Això canviarà la llum de cada tercer LED que va de l'últim al primer. leds [0] = CRGB (0, 0, 0); // Estableix el color LED de la tira 0 al color escollit. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Això configurarà els llums de funcionament que només fan servir els tres darrers. leds [0] = Color_low; // Estableix el color LED de la tira 0 al color escollit. } FastLED.show (); // Tornen els paràmetres de sortida; // Quan el senyal de gir ja no estigui encès, torneu al bucle. }

Esperem que la resta del codi s’expliqui per si mateix. És només un conjunt repetitiu de comprovació i actuació sobre els senyals.

Pas 4: Resultats

Resultats
Resultats

El més sorprenent va ser que aquest sistema va funcionar la primera vegada que el vaig connectar a la moto. Ara, per ser justos, el vaig provar a la banqueta abans d’això, però encara esperava tenir un problema o un ajust. Resulta que no necessitava fer cap ajust al codi ni a les connexions. Com podeu veure al vídeo, el sistema segueix la seqüència d’inici (que no cal que tingueu) i, a continuació, es converteixen en llums de funcionament. Després d'això, busca els frens, en aquest cas il·luminarà tots els LEDs a la màxima brillantor i els llamparà una vegada abans de romandre encesos fins que s'alliberin els frens. Quan s’utilitza un senyal de gir, he fet un efecte de desplaçament pel costat que indica el gir i l’altre costat tindrà llums de llum o llum de fre si està activat. Els llums de perill només parpellejaran a temps amb els altres llums.

Amb sort, amb aquestes llums addicionals, seré més visible per a altres persones. Com a mínim, és una bona addició que fa que la meva caixa destaqui una mica més que altres mentre proporciona utilitat. Espero que aquest projecte sigui útil per a algú altre, encara que no estigui treballant amb una il·luminació de motocicleta. Gràcies!

Recomanat: