Inhoudsopgave:

Fietsachterlicht met een twist - Ajarnpa
Fietsachterlicht met een twist - Ajarnpa

Video: Fietsachterlicht met een twist - Ajarnpa

Video: Fietsachterlicht met een twist - Ajarnpa
Video: Giant twist power display: Snelheid wisselt, OL error melding, knipperende LEDs. Volledige reparatie 2024, Juli-
Anonim
Fiets achterlicht met een twist
Fiets achterlicht met een twist
Fietsachterlicht met een twist
Fietsachterlicht met een twist
Fiets achterlicht met een twist
Fiets achterlicht met een twist

Laten we eerlijk zijn. Achterlichten zijn saai.

In het beste geval gaan ze knipperen met de ogen - kijk naar mij! Ik knipper de hele tijd - woohoo'. En ze zijn altijd rood. Erg creatief. We kunnen beter dan dat, misschien niet veel, maar nog altijd beter dan alleen 'knipperen met knipperen'. Ik fietste tijdens nieuwjaarsvieringen en mensen vonden het leuk, en ze waren niet allemaal dronken;-) De rest is vrij eenvoudig: 2x AA-cellen, boost-converter voor 5V, enkele RGB-LED's, de verplichte microcontroller, aangepaste printplaten van BatchPCB, perfboard en de gebruikelijke soldeerapparatuur.

Stap 1: Hoofdschema

Hoofdschema
Hoofdschema
Hoofdschema
Hoofdschema
Hoofdschema
Hoofdschema
Hoofdschema
Hoofdschema

Echt niets bijzonders. Als je weet hoe je een AVR-chip op een breadboard of een Arduino op een breadboard moet aansluiten, als je dat beter vindt, heb je hier geen problemen mee. Ik heb KICAD gebruikt voor het ontwerpen van het schema en de printplaten. KICAD is open source en in tegenstelling tot eagle, die ook een gratis (zoals gratis) versie heeft, zijn er absoluut geen beperkingen in de grootte van de boards die je kunt maken. Ook jij krijgt gerber-bestanden die werken met elk fantastisch huis dat je wilt. bijv. BatchPCB had er geen problemen mee.

In het schema vind je alleen de cpu, de LED's, een paar weerstanden en condensatoren. Dat is alles. Er zijn ook een paar koppen. De boards hebben een ICSP-header voor het flashen van een bootloader en een 6pin-header voor gemakkelijke seriële upload. De laatste 2 headers zijn gespiegeld en bevatten power, I2C en nog twee GPIO/ADC-pinnen. 3 GPIO-pinnen met 3 stroombeperkende weerstanden worden gebruikt om stroom te leveren aan alle 8 anodes van een enkele kleur. Individuele LED's worden in- of uitgeschakeld met behulp van 8 GPIO-pinnen om de kathoden aan te drijven. Afhankelijk van het type operatie zijn de LED's ofwel gemultiplext (PWM voor meer kleuren) of volledig aan (hogere helderheid). Wat informatie over de pakketten die ik voor dit bord heb gebruikt: - ATmega168-20AU: TQFP32 SMD - LED: PLCC6 5050 SMD - Weerstanden: 0805 SMD - Condensatoren: 0805 SMD, 1206 SMD

Stap 2: Omgaan met de LED's

Omgaan met de LED's
Omgaan met de LED's

Ik zal hier niet in detail treden, omdat dit elders al vele malen is behandeld. Je moet er alleen voor zorgen dat je de maximale uitgangsstroom van de microcontroller per pin (ongeveer 35mA of zo voor AVR's) niet overschrijdt. Hetzelfde geldt voor de stroom van de LED's. Zoals je op de afbeelding kunt raden, heb ik een van de SMD-LED's gebruikt om de weerstandsverhouding te bepalen om een goed uitgebalanceerd wit licht te krijgen. Er zijn drie 2k iets potentiometers aan de andere kant. Dat is alles. In dit geval eindigde ik met weerstanden variërend van 90 tot 110Ω, maar dat hangt af van het soort LED dat je krijgt. Gebruik gewoon een standaard multimeter om de voorwaartse spanningen van de LED's V_led te bepalen en u kunt aan de slag.

Met behulp van de wet van Ohm kunt u de waarden voor stroombeperkende weerstanden voor kleine LED's als volgt berekenen: R = (V_bat - V_led) / I_led I_led mag de stroomlimiet van de onderdelen die u gebruikt niet overschrijden. Deze benadering is ook alleen goed voor laagstroomtoepassingen (misschien tot 100mA) en mag niet worden gebruikt voor Luxeon of CREE LED's! De stroom door LED's is temperatuurafhankelijk en er moet een constante stroom driver worden gebruikt. Als u meer informatie over dat onderwerp nodig heeft, heeft wikipedia wat informatie. Zoeken naar elektrische geleidbaarheid van halfgeleiders (lage/hoge doping enz.) of negatieve temperatuurcoëfficiënt kan nuttig zijn. Ik heb 6-pins SMD RGB-LED's gebruikt zonder iets gemeenschappelijks. Als je erop googlet, krijg je veel resultaten. De magische woorden zijn "SMD, RGB, LED, PLCC6 5050". 5050 zijn metrische afmetingen voor x en y in eenheden van 0,1 mm. Op ebay vind je ze ook voor slechts 50 per stuk voor bestellingen met een hoog volume. Pakketten van 10 verkopen momenteel voor ongeveer 10 dollar. Ik zou er minstens 50 krijgen;-)

Stap 3: Backplane en stroombron

Backplane en stroombron
Backplane en stroombron

De backplane levert stroom en een gemeenschappelijke I2C-bus aan beide kaarten. Elk bord heeft 8 RGB-LED's en een ATmega168 mcu die draait met zijn interne oscillator op 8MHz. Dit laatste vereist synchronisatie tussen de borden en/of herkalibratie van de oscillatoren. Dit probleem zal opnieuw in de codesectie verschijnen.

Het schema voor de 5V boost-converter is zonder enige wijziging overgenomen uit de datasheet van de Maxim MAX756. U kunt elke andere chip gebruiken die u geschikt vindt en die ongeveer 200mA kan leveren bij 5V. Zorg ervoor dat het aantal externe onderdelen laag is. Meestal heb je minimaal 2 elektrolytische condensatoren, een Schottky-diode en een spoel nodig. Het referentieontwerp in de datasheet heeft alle nummers. Voor deze klus heb ik FR4 (glasvezel) platen van hoge kwaliteit gebruikt. De goedkopere boards op harsbasis kunnen ook werken, maar ze breken te gemakkelijk. Ik wil niet dat de planken uit elkaar vallen tijdens een hobbelige rit. Als je al een 'MintyBoost' hebt, kun je die ook gebruiken als je hem op je fiets kunt laten passen.

Stap 4: Je moet wat code hebben

Je moet een code hebben!
Je moet een code hebben!
Je moet een code hebben!
Je moet een code hebben!

In hoge helderheidsmodus ondersteunt het bord 6 verschillende kleuren + wit. De kleur wordt gekozen door 3 GPIO-pinnen op hoog of laag te zetten. Zo kunnen alle acht leds volledig branden, maar alleen dezelfde kleur tonen.

In PWM-modus wordt de kleur ingesteld door een pulsbreedte-gemoduleerd signaal toe te passen op de 3 GPIO-pinnen en de 8 LED's te multiplexen. Dit vermindert de algehele helderheid, maar nu is individuele kleurregeling mogelijk. Dit gebeurt op de achtergrond door een interruptroutine. Er zijn basisfuncties beschikbaar om de LED's een bepaalde kleurwaarde in te stellen, met een RGB-triplet of een HUE-waarde. Het apparaat is voor het gemak geprogrammeerd in C met behulp van de Arduino IDE. Ik heb de huidige code die ik gebruik bijgevoegd. Up-to-date versies zijn beschikbaar op mijn blog. U kunt door de GIT-repository bladeren met behulp van de gitweb-interface. Er zullen veel domme programmeerfouten opduiken, daar ben ik zeker van;-) De tweede figuur illustreert de PWM-generatie. Een hardware-teller telt van BODEM tot BOVEN. Zodra de teller groter is dan een bepaald getal dat een gewenste kleur vertegenwoordigt, wordt de uitvoer omgeschakeld. Zodra de teller zijn TOP-waarde heeft bereikt, wordt alles gereset. De waargenomen helderheid van de LED is enigszins evenredig met de aan-tijd van het signaal. Strikt genomen is dat een leugen, maar gemakkelijker te begrijpen.

Stap 5: Zie het in actie

Zie het in actie
Zie het in actie

Gewoon wat voorlopige testen. Ja, het kan ook volledige RGB-kleuren doen;-)

Testen in de echte wereld. Ja, we hadden wat sneeuw, maar dat was voor Kerstmis. Nu hebben we weer wat sneeuw. Maar, zoals gewoonlijk, tijdens de kerstvakantie en nieuwjaarsvieringen hadden we alleen maar regen. Negeer me alsjeblieft terwijl ik halverwege de video kreun, ik word oud, dus kraken wordt een beetje moeilijk. Eindelijk een paar licht verbeterde effecten. Missie volbracht. Geeky achterlichten, en illegaal waar ik woon ook;-) Ik ben er vrij zeker van dat ik niet meer zal worden genegeerd door slaperige of onwetende automobilisten. Door de timings een beetje af te stemmen, kun je behoorlijk vervelende effecten creëren die goede blikvangers zijn. Vooral 's nachts. Aangezien er 4 GPIO/ADC-pinnen op de borden zitten (2 kunnen worden gebruikt voor het bouwen van een klein I2C-netwerk), moet het gemakkelijk zijn om een drukknop aan te sluiten om allerlei effecten te activeren. Het aansluiten van een CdSe-fotoweerstand zou ook werken. De totale materiaalkosten bedragen ongeveer $ 50. Het grootste deel ging naar de printplaten. Bestellingsboete voor laag volume zoals gewoonlijk. In analogie met een ooit wijdverbreide tv-commercial voor een gsm-bedrijf in de VS, wil ik je dit vragen: "Kun je me nu ZIEN? - Goed."

Stap 6: Bijgewerkt ontwerp

Bijgewerkt ontwerp
Bijgewerkt ontwerp
Bijgewerkt ontwerp
Bijgewerkt ontwerp
Bijgewerkt ontwerp
Bijgewerkt ontwerp
Bijgewerkt ontwerp
Bijgewerkt ontwerp

Ik heb hier en daar wat dingen veranderd.

Het meest opvallend is de toevoeging van een spanningsregelaar met een laag verval. Nu kan het bord werken met alles van 4 tot 14V DC. Ik heb ook de kleur van de print veranderd in geel en jumpers toegevoegd om automatische reset uit te schakelen en om de spanningsregelaar te omzeilen als het niet nodig is. Democode voor het grijpen en montage-instructies. Je vindt er ook KiCAD-bestanden en een schema. Als je er een wilt, kun je meer informatie vinden op mijn blog.

Stap 7: Supersized

Volgende op de lijst: Tic Tac Toe

Stap 8: Meer lichte hack

Door 3 draden en nog 3 weerstanden toe te voegen kan de helderheid verdubbeld worden. Nu worden er twee GPIO-pinnen per kleur gebruikt voor het sourcen van stroom.

Stap 9: Meer updates

Meer updates
Meer updates

Dus ik ben eindelijk overgestapt van 'domme' interrupt-gedreven PWM naar BCM (Binary Code Modulation). Dit vermindert drastisch de cpu-tijd die wordt besteed aan het draaien van de LED-pinnen en verhoogt de helderheid behoorlijk. De geheel verbeterde code is te vinden op github. De eerste paar seconden van de video laten de verbetering in het linkerbord zien. Tot de volgende hardware-revisie van dit bord uit is (in afwachting van de komst van de borden), zal dit de behoefte aan 'meer licht' een beetje voeden. Kijken naar de nieuwe boards die op volle kracht draaien, zal pijnlijk zijn.

Aanbevolen: