Posts tonen met het label klussen. Alle posts tonen
Posts tonen met het label klussen. Alle posts tonen

19 juni 2017

Nieuwe kogelgewrichten

Toen ik twee weken geleden mijn fietscomputer verving, moest het voorwiel eruit om de sensor te vervangen. Van een van de kogelgewichten kwam een stuk roest los zo groot als een vingernagel en zo dik als een munt. Mja...

Nu wist ik wel dat de kogelgewrichten er niet al te best bij hingen, maar nu werd het toch tijd om aan vervanging te denken, vooral omdat ik de indruk had dat er toch wel erg veel speling in de stuurbeweging begon te zitten. En bovendien wilde ik niet het risico lopen dat één van de gewrichten af zou breken op een moment dat dat helemaal niet goed uit zou komen, bijvoorbeeld in een bocht. Met hoge snelheid genomen, terwijl ik net in word gehaald door een vrachtwagen. Brrr, maar even niet aan denken.

Ik dus contact op genomen met de heren van Velomobiel. Helaas hebben ze niet alles op voorraad, kennelijk worden er bij de nieuwe Velomobielen tegenwoordig andere onderdelen gebruikt. Maar na een weekje wachten is dan toch het pakket binnen. Afgelopen weekend aan de slag dus...

Eerst de fiets maar op zijn kant en langs de bouwmarkt voor een flesje WD40. Dit laat ik even intrekken...


Nu dan de elf jaar oude roestlaag (mijn fiets stamt uit 2006) een beetje los is geweekt kan ik beginnen met het verwijderen van de splitpennen en de slotboutjes. De splitpennen gaan makkelijk los, want ik smeerde de gewrichten zo ongeveer eens per één à twee jaar. De boutjes komen gelukkig ook makkelijk los, en in de tijd van een poep en een scheet heb ik de hele boel weer in elkaar.



Nu het uitlijnen. Ik heb hiervoor nog een beugel in de garage liggen, die ik jaren geleden eens ergens op de kop heb weten te tikken. Alleen nog nooit gebruikt. Ik ga op internet op zoek naar een handleiding. De eerste 'hit' is er een van de Quest en bevat niet alle informatie die ik nodig heb. De tweede hit is de goede. Een handleiding die destijds door de heren van Alleweder is geschreven. De prijzen van de diverse onderdelen staan er ook nog bij vermeld, netjes in guldens. Een vreemd gezicht (Rubberring f 1.00, Uvex bivakmuts, f 25.50). Kennelijk ben ik de Euro na 16 jaar eindelijk ontgroeid.

De volgende dag was het tijd voor een proefrit. Rotterdam maar weer. Om half zeven in de ochtend schijnt de zon al volop.


 In Rotterdam, bij de Erasmus brug is het nog stil. Erg stil.


 De Erasmus brug met gebouw De Rotterdam (in het midden)


 De lange proefrit was geslaagd, 120 km schoon aan de haak. Tegelijkertijd nog diverse pelotonnetjes verschalkt, want dat moet ook natuurlijk ;-)


26 december 2016

Arduino project 17: Winterklaar !

Mijn Arduino project is voor 95% klaar. De lampen zitten op de fiets, en ze werken, maar ik ben nog niet helemaal tevreden met de 'looks' op mijn fiets. Maar omdat ik gedurende de donkere wintermaanden toch niet helemaal onverlicht tijdens mijn schaarse fietstochten door de polder wil rijden, moet het maar even zo.

Voor alle lampjes die mijn fiets sieren, heb ik zoals eerder geschreven eveneens mijn 3D printer ingezet. Rond m'n koplampen zit een ringled die als oranje knipperlicht functioneert, en verder heb ik nog ledstrips aan de zijkant (vier stuks) en drie ringleds aan de achterkant. Dit zijn twee knipperlichten en een gewoon rood achterlicht.

De grootste uitdaging bij deze verlichting was het waterdicht maken. Dit is voor de koplampen natuurlijk geen probleem, omdat die veilig achter glas zitten. Het achterlicht heb ik met siliconenkit ook redelijk dicht gekregen, tenminste, dat hoop ik. De knipperlichten aan de zijkant zitten achter een perspex glaasje, dat verder los in de 3D geprinte behuizing zit. Ik wilde hier niet aan de gang met siliconen, omdat de constructie dermate klein is, dat dit alleen maar uitmondt in geknoei met lijm.

Om de leds toch een beetje tegen de elementen te beschermen, heb ik ze ingesprayed met de PCB plastic spray. Daarna kan alles dan eindelijk op de fiets:


M'n retro-bruine schakelkastje zit veilig in het interieur. Rechtsboven de indicatoren voor de twee LiPo accu's waar ik mee rond pendel, met daartussen de pijl die aangeeft welke accu op dit moment in gebruik is. De drie iconen onderaan in het scherm geven de status aan van de koplampen, de zijlichten en de 'zuinige' verlichtings stand. Het woord zuinige staat hier tussen aanhalingstekens, omdat deze stand allesbehalve zuinig is. Elke led bestaat uit drie afzonderlijke leds die elk 20mA trekken. De twee ringleds rond de koplampen tellen 8 leds. Dan wordt 20x3x8x2 bijna 1A, en dat alleen maar voor de voorlichten. Hier zal ik in de praktijk dus weinig gebruik van maken.


 Hierboven het achterlicht met de twee richting aanwijzers. Hier niets over te klagen, maar aan het ontwerp wil ik in het komende jaar nog wel wat veranderen.


De richting aanwijzer. Hopelijk is deze waterdicht, de toekomst zal het leren. Ook hier wil ik het komend jaar nog wel wat aan wijzigen.


15 november 2015

Arduino project 12: 3D printen van het achterlicht (deel 1)

Bij het vervangen van de 'boordcomputer' heb ik ook tegelijk maar de andere elektrische onderdelen van mijn fiets aangepakt. Al sinds ik ermee rond rijd, prijkt op de achtersteven van mijn fiets een (eveneens) zelfgebouwd achterlicht. Destijds (alweer tien jaar geleden) deed ik dat met epoxy hars. Anno 2015 doen wij dat met de 3D printtechniek (gelieve voorgaande zin te lezen met de stem van Chriet Titulaer in het achterhoofd).

Mijn nieuwe achterlicht zal gaan bestaan uit drie lampen; twee voor de richting-aanwijzers en één voor het hoofdlicht. Op ebay heb ik al de diverse onderdelen bij elkaar gesprokkeld:
Een en ander kwam (uiteraard) uit China, dus het duurde even voordat alles binnen was. De grootste lens is van glas en heeft een doorsnede van 51mm. Dat wordt dan het hoofdlicht, van dat andere kappie ernaast heb ik een zakkie vol, ik kon ze kopen per tien, voor 2 euro of zo. De ringleds erboven zet ik hier dan achter en dat alles gaat in de te printen lichtkap. Met ouderwets potlood en papier (sorry Chriet) en een gewone analoge schuifmaat, maak ik een schets:


En daarna dan aan de gang met Sketchup. Dit is niet makkelijk. Althans voor mij dan, want ik ben een redelijke newbie op cad/cam gebied. Daar komt nog bij dat het ontwerp wel 'schoon' moet zijn, anders verslikt de 3D printer zich in de lamp, met onvoorspelbare resultaten tot gevolg. 

Maar na veel vallen en opstaan, en na heel veel uren klooien en opnieuw beginnen, heb ik iets ontworpen dat door de printer geslikt gaat worden. Ik check dat van tevoren met het programma Netfabb Basic, een gratis programma dat .stl bestanden kan scannen op fouten. Daarvoor moet ik eerst een module downloaden en installeren voor Sketchup, waarmee ik .stl bestanden kan converteren naar .stl. Ik heb dan nu dus een ontwerp, en daarna volgt het printen (om met Chriet te spreken: wocht vervolgt ;-)

21 september 2015

Arduino project 11: Griep !

In de 'planning'van mijn Arduino had ik het niet ingecalculeerd. Maar ik had kunnen weten dat het er aan zat te komen, want daar kan je bij mij de klok (redelijk) op gelijk zetten. Griep. Door snot, koorts en algemene hangerigheid van geest en lichaam is de voortgang in het Arduino project de laatste weken wat tot stilstand gekomen. Althans, de sneltreinvaart die er in het begin in zat, is nu tot het niveau 'oude paardenkar' gereduceerd. Is er dan helemaal niets geknutseld de laatste weken ? Jawel ! Ik steek van wal:

De 3D prints voor de behuizing van de elektronische schakeling zijn af, dus kan het Grote Inbouwen beginnen. Nu is een gemiddelde Velomobiel 'zomers vrij droog, maar dat kan in de rest van het jaar nog wel eens omslaan, zeker als het regent en de berijder al zwetend onder de schuimkap de elementen trotseert. Dan kan het klimaat in de fiets al snel oplopen tot niveau 'klamme sauna'. Om de electronica tegen deze zwetende elementen te beschermen, impregneer ik de compnenten eerst met een laag 'plastic - componenten - vitaal - spray'. Eerst natuurlijk alle contacten afplakken, anders werkt zometeen de hele zooi niet meer.



Buiten in de tuin worden alle componenten uitgestald en van een fijn laagje plastic voorzien. De Arduino hierboven ziet er drijfnat uit, maar het is allemaal plastic wat er glimt. Het bordje wordt hierdoor weliswaar niet water bestendig, maar in ieder geval wél condens bestendig.

Als na een paar minuten het spul is opgedroogd kan het grote monteren beginnen. Alle schakelaars, connectoren, voedingen, draaiknoppen en draadjes moeten samen met de Arduino en het scherm in een kastje van 18 x 13 x 6 cm gepropt worden.


Het display is ongeveer 10° gedraaid, waardoor het voor de bestuurder wat makkelijker afleesbaar is


Aan de onderkant twee USB connectoren, voor het opladen van smartphone en/of andere apparaten. Daarnaast de USB connector voor de Arduino, waarmee ik deze makkelijk kan herprogrammeren zonder dat de hele kast open moet. Daarboven de zwarte keuze-schakelaar voor de twee accu's


In de kast zit de Arduino, met alle verbindingen via stekkertjes. Alles trillingsvast, zodat de zooi na 100 kilometer rammelen niet uit elkaar dondert.


Hierboven een onderaanzicht van de kast. Ik heb de kabels nog niet netjes weg gewerkt of samen gebonden, want ik heb nog niet alle verbindingen doorgemeten.

Op mijn huidige schakeldoos zitten mooie connectoren van Binder. Daarvan heb ik er twee over, die ik gebruik voor de accu's. De rest gaat via ouderwetse RS232 connectoren. 


Zo'n stekker oogt minder fraai dan m'n huidige 19 pins Binder connector, maar ik kan deze niet overzetten van mijn huidige schakelkast, omdat ik dan de komende tijd zonder licht op de fiets zit. Dan maar even zo dus. Ik beschouw dit elektro-kastje vooralsnog als een tijdelijke testversie. Waarschijnlijk print ik volgend jaar een nieuw kastje, met wat mooier afgeronde hoeken. En dan is er ook weer plaats voor de mooiere connectoren.

De komende tijd moet er in ieder geval weer flink geprint worden, om alle lampen een mooie behuizing te geven. Wordt vervolgt dus.....

31 augustus 2015

Arduino project 9: Miniaturisering

Er wordt nog steeds volop gewerkt aan het Aruino project. Maar er wordt door mij zo af en toe, als het weer het toelaat, ook nog gefietst. Een rondje Rotterdam - Vianen, de geheel vernieuwde Biesbos, Zaltbommel. En verder natuurlijk werken aan de Quest besturing.

De WS2812 ledstrips zijn mooi, maar ze hebben een nadeel; ze zijn erg gevoelig voor het verkeerd aansluiten van de draadjes. Als je vergeet je de massa door te verbinden naar de Arduino, dan kan je al met een dooie ledstrip te maken hebben. Dat is met één strip niet zo erg; de strips zijn met een schaar gewoon in te korten. Je knipt gewoon de eerste led eraf en soldeert de draadjes weer vast op de 'nieuwe' led. Maar met een ledring lukt dat niet. En daarvan heb ik er al twee om zeep geholpen. Dus weer naar Ebay om nieuwe te bestellen, en weer wachten.



Dat ik die fouten maak ligt niet zozeer bij mij, maar bij de draden chaos die ik de afgelopen weken gecreëerd heb (oké, dat ligt dus ook aan mij). En door al die draden raak ik zo langzamerhand het overzicht kwijt, en dan is een fout snel gemaakt. Tijd voor een grote opruim actie dus. Eerder had ik al een bordje besteld dat ik bovenop de Arduino zou gaan plaatsen, en daar ga ik nu eens lekker gebruik van maken.



Eén voor één sluit ik de stekkers aan die ik de afgelopen weken (ook weer) besteld heb. Dat is een heel gepriegel, temeer omdat ik het werk doe met een nogal grove Gamma soldeerbout die voor dit werk eigenlijk helemaal niet geschikt is. Dus besteed ik de munten die ik voor mijn verjaardag heb gekregen aan een nieuwe soldeerbout, eentje waar ik wat beter mee uit de voeten kan, en ook meer voor de dag mee kan komen.




De printplaat is nu voor 90% af, ik heb er met een klein labelprintertje wat stickers op geplakt, zodat later tenminste weet waar ik al die stekkers op kwijt moet. Nu komt het andere priegelwerk: alles inbouwen in de nieuwe 'schakelkast' voor in de Quest (wordt vervolgt dus).

09 augustus 2015

Arduino project 8: nieuwe dimbare LED-koplampen

Al zes jaar rijd ik rond met twee B&M Cyo Sport koplampen. Deze voldoen eigenlijk nog prima, maar ik ben van plan om twee ringleds rondom mijn koplampen te monteren en deze als verlichting, c.q. knipperlicht te gebruiken. En daar zijn mijn Cyo's net te groot voor. Op Ebay vind ik flink wat fiets koplampen. Na wat zoekwerk vind ik twee geschikte kandidaten. Een lampje met een diameter van 42 mm waar de ringleds mooi omheen gaan. Ze krijgen een 5V voeding van een USB stekkertje, dat past dus mooi bij de rest van mijn 5V apparatuur (de ledstrips en de sensoren rond de Arduino). De lampen kosten $9,50 per stuk, dus daar kan ik mij geen buil aan vallen.



Na een aantal weken komen de lampjes aan. Ze zien er netjes uit, maar al gelijk dient zich een probleem aan: er zit een drukknopje aan de achterkant van de lampjes. 1x drukken is knipperen, 2x drukken is half licht, 3x drukken is vol licht. Dat is handig als zo'n lampje op het stuur van je fiets gemonteerd is, maar bij mij zitten ze voorin de neus van de Quest. Dan kan ik ze natuurlijk met m'n grote teen bedienen, maar dat is niet echt praktisch, zeker niet in de winter.

Ander 'nadeel' is dat de lampjes nogal fel branden, zeg maar gerust op de stand 'kleine supernova'. Dat is mooi op een onverlichte polderweg, maar niet in de bebouwde kom. De alom gebruikelijke smoes dat 'ik zo slecht zichtbaar ben' gaat dan natuurlijk niet meer op, maar om nou oogverblindend door de stad te gaan rijden is ook een beetje teveel van het goede. Ik moet die dingen dus zien te dimmen naar een sociaal meer aanvaardbaar niveau. De lampjes zijn elk voorzien van een CREE XM-L T6 led. Deze kunnen 700 tot 3000 mA verstouwen, als ik de lampjes doormeet, blijkt dat de mijne bij 700mA al net zoveel licht geven als een gemiddelde PC-Hoofdstraat trekker. Ik ga op Ebay op zoek naar geschikte voedingen, en vind na enig zoekwerk het volgende:




De voedingen zijn klein (26 bij 15 mm) en leveren 700mA, bij een ingangs-voeding van 2 tot 28V. Verder zijn ze nog voorzien van een PWM aansluiting, waardoor ik ze kan dimmen met de Arduino. Ze kosten maar $2,50 per stuk.

 


Wanneer de voedingen binnen zijn kan ik beginnen met slopen. Dat gaat gelukkig vrij makkelijk.


De led zit op een stevig metalen huis, samen met de schakeling die het lampje van de juiste voeding moet voorzien. Het metalen huis fungeert ook als koeling, want de led wordt behoorlijk warm als deze een tijd aan staat.



Hier het drukknopje waar ik in mijn geval dus geen moer aan heb. Eruit met dat ding.


De oude voeding gaat er tussenuit, en ik sluit de draadjes direct aan op de CREE led. De nieuwe voedingen plaats ik ergens boven het rechter wiel, vlak bij het nog te bouwen nieuwe bediening paneel.



Nu moeten de beide voedingen aangesloten worden op de nieuwe koplampjes. Ter beveiliging tegen stroompieken zet ik een condensator over de voeding, en gaat er een weerstand van 470ohm in het PWM signaal dat van de Arduino komt. Dit alles soldeer ik op een PCB bordje (ook weer van Ebay). Door middel van een schakelaartje dat straks op het 'dashboard' komt kan ik het PWM signaal onderbreken, zodat ik een soort van grootlicht / dimlicht schakelaar heb. Een en ander ziet er als volgt uit:


Nu is nog het wachten op de diverse voedingen voor de ledstrips. Als deze binnen zijn kan ik langzaamaan gaan beginnen met het in elkaar zetten van de hele zooi en het een en ander in mijn fiets gaan inbouwen.

18 juli 2015

Arduino project 6: Temperatuur en Amperes

Om wat meer inzicht te krijgen in de hoeveelheid stroom die ik verstook als ik alle toeters en bellen op de fiets aan heb staan, ga ik een stroommeter inbouwen. Hiervoor zijn voor de Arduino een aantal kleine modules te koop. Voor de Arduino kwam ik uit op de ACS712. Deze zijn te koop in verschillende smaken; van 5A, 20A en 30A. Ik ga er even vanuit dat 20A voor mij genoeg moet zijn. En op Ebay kost deze $1.82, dus daar ga ik mij geen buil aan vallen. Een ACS712 werkt volgens het principe dat er een millivolt signaal wordt uitgestuurd bij oplopende stroomsterkte. Op de datasheet van de chip lees ik dat bij het 20A exemplaar dat ik gekocht heb, 100mV per ampère wordt gegeven. Door die millivolts nu aan een analoge poort van de Arduino aan te sluiten kan ik eenvoudig berekenen hoeveel ampère ik verbruik.

De ampère module moet als volgt op de Arduino aangesloten worden:


De module heeft aan 5V genoeg. Aan de linkerkant komen de draadjes voor de ampère meting binnen (één in, één uit). De blauwe draad is het mV/data signaal. In de Arduino moet ik hiermee aan de gang, zodat ik de verbruikte ampères mooi op het LCD scherm kan laten zien. Na wat programmeer werk ziet dat er dan als volgt uit:


De spanning wordt berekend door de spanningsdeler die ik eerder gebouwd heb. Dit ziet er allemaal nog een beetje spartaans uit, maar het gaat mij nu even om het idee. Nu verder met het volgende hoofdstuk, de temperatuurmeter.


De temperatuurmeter die ik inbouw is van het type db18b20. Dit is eigenlijk geen 'klassieke' elektronische temperatuur meter maar een kleine IC. De IC communiceert met één pin met de Arduino. Ik had er nog een paar van overgehouden van mijn aquarium project. Er zitten drie pinnetjes aan: twee voor de 5 volt voeding, en een voor de data communicatie. Dit datapinnetje heeft een eigen uniek adres, waardoor het mogelijk is op (in principe) tientallen temperatuurmeters via een draadje met de Arduino te laten communiceren. Dit is natuurlijk leuk, maar in een velomobiel niet zo nuttig. Aan de buitentemperatuur heb ik genoeg. Ik zou natuurlijk twee van die dingen aan de trommelremmen kunnen hangen om te kijken hoe warm die dingen worden. Maar dat is alleen interessant als je in de bergen woont, lijkt mij. Dus houd ik het maar op een voelertje. Deze wordt als volgt aangesloten:


Verder moet ik achterhalen wat het 'adres' van de db18b20 is, anders kan ik niet met 'm babbelen. Hiervoor had ik op internet een programmatje opgeduikeld. Nu is het een kwestie van adres in m'n C++ code zetten, de temperatuur uitlezen en een fijn plekje op m'n display geven.

Het enige nadeel aan een db18b20 temperatuur voeler is de uitlees snelheid. Dit duurt ongeveer een halve seconde. Nu lijkt dit niets, maar het programma wordt er een stuk trager door. En daar komt ook nog bij dat de richting aanwijzers erg onregelmatig beginnen te knipperen. Daarom heb ik de zooi zó geprogrammeerd dat de temperatuur één keer in de tien seconden wordt uitgelezen, en verder wordt er niet uitgelezen als de richting aanwijzer aanstaat.


Hier nog even een plaatje. Inderdaad, het was warm die dag :-)

07 juli 2015

Arduino Project 4. De accumeter

Mijn fiets heb ik tien jaar geleden uitgerust met twee LiPo accu's, destijds gekocht bij Batteryspace in Amerika. Ze hebben een capaciteit van 5500 mAh en 6850mAh. Ze zijn alletwee standaard voorzien met elektronica om overbelading te voorkomen, en schakelen netjes uit wanneer de spanning onder een bepaalde waarde komt. Deze accu's voldoen na tien jaar eigenlijk uitstekend en ik heb dan ook geen reden om ze te vervangen. Dus het nog prima vonkende duo krijgt gewoon een plaatje in m'n nieuwe project.

Wanneer een LiPo accu vol geladen is, heeft deze een spanning van 12.5 V, de accu schakelt zichzelf uit bij 10.6 V. De bedoeling is dat ik de lading van de accu middels een status bar op het LCD scherm laat zien.

schema spanningsdeler
Een Arduino is standaard voorzien van een aantal analoge poorten, die ik kan gebruiken om de spanning op een accu te meten. Het maximale voltage dat een Arduino op zo'n poort kan hebben is echter 5 V,  dus zal ik iets moeten doen om de spanning op een accu om te zetten naar een waarde waar de Arduino wat aan heeft. Zoiets kan met een spanningsdeler. Zo'n spanningsdeler bestaat uit twee weerstanden die, wanneer juist gekozen, de spanning verlagen van zeg maar 12 V (V-in) naar pak 'em beet 5 V (V-out). De Arduino kan aan de hand van de waarde van de gebruikte weerstanden uitrekenen wat dan de werkelijke spanning op de accu's is. Dit gebeurt dan volgens onderstaande formule. Nu zijn er op internet een aantal sites die je eenvoudig de waarden van de beide weerstanden (R1 en R2) laat berekenen. Hier is de link waarmee ik het gedaan heb.



Aan de hand van bovenstaande formule kwam ik uit op een waarde voor R1 van 100 kΩ , en R2 wordt 47 kΩ. Het schema voor het aansluiten van de accu's op de Arduino ziet er nu als volgt uit.



Nu moet ik de Arduino zo programmeren dat met bovenstaande formule het juiste voltage berekend wordt. Daarna moet het beladings-percentage berekend worden, en moet er een grafiek van beide accu's op het LCD scherm komen. Na wat puzzelwerk met de library van de aansturing van het scherm (U8glib) kom ik tot iets dat wel presentabel is...


Het 128x64 scherm


De twee balken representeren de twee accu's, en de pijl daartussen geeft aan welke van de twee accu's in gebruik is. Dit kan ik door middel van een schakelaartje omzetten. Ik zit er stiekem nog aan te denken om de Arduino zelf te laten omschakelen naar een andere accu wanneer de spanning naar een te laag niveau daalt. Maar misschien komt dit later nog. Voorlopig doe ik het even zo. Eerst maar even door naar het volgende hoofdstuk van het project: de hall sensoren voor de snelheidsmeter en de cadansmeting.

Nog even wat toelichting op het scherm hierboven: rechtsboven dus de snelheid, daaronder de cadansmeting en de temperatuur (jawel, het was warm). Die lege vakjes daaronder worden straks gevuld door de icoontjes voor de richting aanwijzer, de zijlichten en de hoofdverlichting,

05 juli 2015

Arduino Project 3. De ledstrips op de Quest

De ledstrips waarmee ik de zijkant van mijn Velomobiel wil gaan versieren moeten van kleur kunnen wisselen. Deze zijn rood aan de achterkant en wit aan de voorkant. Verder moeten ze oranje kunnen knipperen als ik ze als richting aanwijzer gebruik. Na een niet zo lange zoektocht op internet bleek dat de leds die luisteren naar het typenummer WS2812B hiervoor het best geschikt zijn. Deze zijn van het laatste type, en ik ga van de redelijk simpele theorie uit dat nieuw beter is. Vandaar dus.

RGB ledstrips zijn te verkrijgen in drie verschillende uitvoeringen: 30, 60 of 144 leds per meter. Voor de veiligheid koop ik de uitvoering van 144 leds per meter, dan heb ik altijd voldoende licht. Op Ebay vind ik een aanbieder die strookjes van 5 cm levert. Dit is handig voor de eerste testopstelling, en ik koop er vier strookjes van.


Voor de besturing van de strips maak ik gebruik van de library van FastLed. Ik was eerst begonnen met de library van Adafruit, maar deze was nodeloos ingewikkeld en de documentatie was bij lange na niet zo uitgebreid als die van FastLed. De library van FastLed heeft een nadeel; niet alle poorten op een Arduino Mega zijn te gebruiken.

Voor het aansluiten van van een ledstrip zijn drie pinnetjes nodig, twee voor de 5V voeding en één voor de dataverbinding met de Arduino. Op internet lees ik tegenstrijdige berichten over het gebruik van weerstanden en condensatoren, maar al vrij snel merk ik dat deze nodig zijn, omdat ik de eerste chip op de ledstrip opblaas door deze componenten achterwege te laten. Dus, even voor de goede orde: de 1000µF condensator en de 470Ω weerstand is toch echt nodig. Deze moeten dan als volgt worden aangesloten, waarbij de condensator (hier niet bijgetekend) over de +5V en de gnd- polen geplaatst moet worden.


Ik word hierbij goed op weg geholpen door een mooie Netherlands-talige website, te vinden in bijgaande link. De zijlichten worden, rekening houdend met de voor de Mega beschikbare pinnetjes, in mijn project als volgt aangesloten:


Dit ziet er dan in de werkelijkheid als volgt uit:


En dan nu aangesloten op de Arduino, met de rotary encoder en de achterkant van het lcd scherm op de achtergrond.


Nu volgt nog het programmeerwerk voor de knipper- en zijlicht functie van de ledstroken, maar daar is het (eigenlijk) nog te warm voor.... ;-)

01 juli 2015

Arduino Project 2. De Rotary Encoder

Om zo meteen de snelheid te kunnen meten, moet de straal van het voorwiel bekend zijn. Nu kan ik dit  handmatig in de Arduino code invoeren wanneer ik van banden maat wissel, maar het is natuurlijk makkelijker om dit via het paneeltje te doen. En daarvoor heb ik een zogenaamde Rotary Encoder besteld.


Rotrary encoder - $ 1.29

Wanneer er aan een Rotary Encoder gedraaid wordt, worden er pulsjes afgegeven waarmee vervolgens weer 'iets' gedaan kan worden. Je voelt klikjes als je aan zo'n encoder draait. Verder kan bovenstaande encoder ook nog een signaal geven als er op gedrukt wordt. Ik heb mijn encoder als volgt aan de Arduino aangesloten:


De Rotary Encoder op de Arduino Mega

Normaal gesproken wordt een Arduino code stap voor stap uitgevoerd. Nu gaan die stappen vrij snel, maar als het programma een hoop te doen heeft, is dat toch merkbaar. Zo duurt het uitlezen van een DS18B20 temperatuur sensor al gauw een seconde. En als je toevallig dan net aan de draaiknop van de encoder zit te friemelen merkt de software daar niets van.

Nu is een Arduino standaard uitgerust met een paar speciale interrupt poorten. Wanneer deze poorten geactiveerd zijn worden deze gemonitored, en als er iets verandert aan de status van de poort, kan  het programma onderbroken worden om een bepaalde actie uit te voeren, en dat is in mijn geval het veranderen van de wiel straal.

Een Arduino Mega heeft 6 interrupts, genummerd van 0 tot 5. Ik sluit mijn encoder aan op interrupt 0 en 1 (respectievelijk pin 2 en 3). Poort 4 wordt gebruikt voor het indrukken van de encoder knop. 

Nu moet de hele zooi ook nog geprogrammeerd worden. In bijgaande link vond ik de juiste instructies, die ik na wat aanpassingen geschikt maakte voor mijn programma. Nu moet ik dit nog op een zinnige manier op het scherm tonen, maar dat komt later.

Een andere uitdaging die ik had was het opslaan van de wijzigingen. Als een Arduino wordt uit gezet, verliest deze al zijn variabelen. Nu is er gelukkig een kleine geheugen ruimte gereserveerd om wat variabelen op te kunnen opslaan. Via weer een andere link vond ik ook een instructie voor deze uitdaging. De data wordt opgeslagen in het EEPROM geheugen zodra er wat verandert wordt, en wordt weer uitgelezen als ik de Arduino opstart. Op deze manier kan ik de veranderde wielmaten  opslaan als ik die verandert heb.


29 juni 2015

Begin van Arduino project 1. het LCD scherm


Post !
De bestellingen die ik de afgelopen weken bij Ebay gedaan heb, beginnen nu langzaam binnen te komen, getuige de foto hier links.

Toegegeven, het ging toch niet zo snel als het plaatje doet lijken, maar toch met voldoende vaart om met het project te kunnen beginnen. De belangrijkste componenten waren er, dus ik kon aan de slag met het prototype. Om te voorkomen dat het een onoverzichtelijke dradenboel wordt gebruik ik een aantal breadbordjes voor de verschillende voltages en flans ik van triplex een frontje in elkaar waarop ik het LCD scherm kan schroeven. Ik boor de gaatjes voor de schakelaars die ik denk te gaan gebruiken (vooruit, ik boor er wat meer voor 'je ken niet weten'). De twee schakelaars voor het licht en de hoofdschakelaar zijn ook al binnen, dus die krijgen ook een mooi plekje. De Arduino komt tussen de breadbordjes, nu nog de voeding aansluiten en ik kan aan de gang.



Om het  LCD scherm te kunnen aansturen is een library nodig. Nu had ik al een aantal van die libraries 'in het vooruit' gedownload, maar geen van allen blijken ze te werken. Als ik op onderzoek uitga blijken deze libraries stuk voor stuk hopeloos verouderd. Ik breng een lange avond door met het zoeken en testen van de juiste software, en kom uiteindelijk op de library van U8glib uit.

Deze heeft alles wat ik wil hebben: goede documentatie, goede uitleg en hij ondersteunt de SPT interface van het LCD scherm zonder problemen.

Op een standaard 128 x 64 scherm zitten flink veel aansluitingen, die ook vrijwel allemaal gebruikt worden. Dit ziet er dan als volgt uit (schrik niet)

Dit vind ik onacceptabel, omdat ik dan zelfs op een Arduino Mega niet veel aansluitingen overhoud om lekker mee te rotzooien. Gelukkig kan dat anders. Ik heb een scherm gekocht met achterop een SPT module die maar drie draden nodig heeft om met de buitenwereld te babbelen.

Het aan de praat krijgen van het scherm geeft wel enige problemen, en dat komt voornamelijk omdat de documentatie geheel ontbreekt, en ik dus niet kan vinden waar ik die drie draadjes in moet douwen. Ook internet geeft mij niet veel soelaas, totdat ik ergens in een obscuur hoekje van de digitale wereld de juiste aansluitingen vind.



Ik sluit de boel volgens onderstaand schema aan, en waarachtig, het werkt.
1. 5V
2. GND
3. SCK - doe ik op pin 13 van de Arduino
4. CS - pin 15
5. SID - pin 14

Het schema ziet er ook een stuk eenvoudiger uit. De SPT module staat hier niet tussen, die moet je er maar even bij denken.



Achterop het scherm zitten een naast schakelaar voor de communicatie keuze, een schakelaar voor het licht en een potmetertje voor het contrast. De voeding voor het scherm moet persé van de Arduino komen, en niet van een externe 5V bron, omdat het contrast dan nooit lekker in te stellen is. Nu de eerste stap gezet is, kan ik verder met de volgende. De Rotary Encoder.