Arduino - wat kun je er mee?
- BertjeConti
- E21 Mad
- Posts: 3012
- Joined: Mon Nov 04, 2013 9:49 pm
- My E21(s): E12 520-6
- Location: nederland , Weert
Re: Arduino - wat kun je er mee?
Speciaal voor Jan:
eerst bedien ik de reset knop, stopwatch begint opnieuw, daarna alleen draaien aan de knop, dan wordt de intensity van de displays bijgesteld
dan een tagret time naar 0:00 instellen.
eerst bedien ik de reset knop, stopwatch begint opnieuw, daarna alleen draaien aan de knop, dan wordt de intensity van de displays bijgesteld
dan een tagret time naar 0:00 instellen.
Megasquirted '77 E12 520-6
Aspen Silver '96 E39 523i
- BertjeConti
- E21 Mad
- Posts: 3012
- Joined: Mon Nov 04, 2013 9:49 pm
- My E21(s): E12 520-6
- Location: nederland , Weert
Re: Arduino - wat kun je er mee?
4 gauges project
Zoals jullie wellicht al in mijn "Pastellblauer avonturen" hebben kunnen vernemen heb ik plannen de "megasquirt display" weg te moffelen en daarvoor in de plaats een aantal analoge metertjes te plaatsen. Zodat het dashboard er qua apparatuur weer wat meer periode correct uit gaat zien.
Ja en dan zeggen jullie natuurlijk, en die tripmaster dan? helemaal terecht, maar in die tijd waren 7 segment led displays al heel gewoon, dus geen probleem daar.
Achter de schermen moeten de "analoge" metertjes natuurlijk wel digitaal aangestuurd kunnen worden om op die manier zo exact mogelijk bepaalde waarden uit de megasquirt te kunnen weergeven. Met dit project was ik in gedachte al een hele tijd bezig, en een aantal essentiele onderdeeltjes lagen dan ook al geruime tijd onder een stoflaagje op de plank te wachten.
Het bewegen van de wijzertjes wil ik gaan doen met heel kleine stappen motortjes, en laat er nu precies voor dit doel ooit door een switsers bedrijf stappenmotortjes ontworpen zijn, de zogenaamde "Switec X27.xxx" motortjes. ze zijn plat en ongeveer zo groot als een knaak. De uitvoering waarvan ik er een aantal gekocht heb kunnen 315° draaien en doen 1/3° per stap.
Je kunt zo'n motortje rechtstreeks vanuit een microcontroller aansturen, maar dat heeft wel wat nadelen:
1) je hebt per motor 4 uitgangen nodig
2) doordat de motor telkens 1 stap verzet wordt, en dat is dus 1/3°, krijg je best schokkende wijzer bewegingen. gaat het heel langzaam, bijvoorbeeld voor temperatuur, dan is dat prima. Maar ik wil er ook de AFR mee weergeven, en die schiet nogal eens van links naar rechts.
Er is slechts 1 site op het gehele www waar wat meer gedetailleerde informatie over het aansturen van deze stappenmotoren te vinden is, en daar heb ik dus een driver chip gevonden (de AX1201728SG) die speciaal voor deze stappenmotoren gemaakt wordt. maar die chip is heel moeilijk te vinden, net zoals de bijbehorende datasheet.
Na lang zoeken werd er plots een klein partijtje van die chips op ebay aangeboden, en dus was ik snel genoeg in het bezit van de juiste chip voor deze motortjes.
Het voordeel van deze chip is dat hij de motor in "microsteps" aan stuurt, dit betekend dat elke stap in 4 tussenstapjes verdeeld wordt, daarmee heb je dus 12 stappen per graad nodig, maar de beweging is wel veel vloeiender. Daarnaast bezit 1 chip 4 motordrivers.
Afgelopen winter heb ik het 4 gauges project maar eens opgestart, alle benodigde ingrediënten waren immers aanwezig.
Ik wilde de driver chip graag gaan aansturen met een ATTINY microcontroller, een ATINY is een vereenvoudigde variant van de microcontroller die op een arduino gebruikt wordt, de ATMEGA familie. zoals de naam al doet vermoeden is de ATTINY erg klein, en dat klopt, hij is vooral klein in het aantal aansluitingen en geheugen dat hij heeft, ze zijn er in 14 en 8 pootjes, hebben heel beperkt geheugen, maar wel een ingebouwde klok. dit betekend dus dat je geen enkel extern component nodig hebt om de ATTINY te laten runnen. Dit maakt een ontwerk wezenlijk eenvoudiger.
Een ATTINY heeft ook geen seriele poort waarmee hij met de arduino ontwikkel omgeving kan communiceren, programmeren van de chip lukt alleen met een programmer op de ISP aansluitingen. Arduino's programmeerde ik al met een programmer op hun ISP om zo het opstarten van de bootloader over te slaan, die ervaring was dus gelukkig al binnen.
Een prototype/ontwikkel omgeving was snel opgebouwd, maar het schrijven van de firmware voor de ATTINY, daar is menig avondje debuggen aan voorbij gegaan, dit was mijn ontwikkel omgeving:
Links boven zie je een Arduino nano, waarmee ik de ATTINY aanstuur middels een I2C bus (2 draads bus systeem), op deze manier ga ik de wijzers straks aansturen vanuit de "verstopte" display unit.
Links onder zit de ATTINY met ISP aansluiting, daarnaast de AX1201728SG quad motor driver chip, en dan zitten er rechts nog een 2 tal X27-168 motortjes op het breadboard.
Met deze opzet zijn alle 14 pootjes van de ATTINY in gebruik.
De software voor de ATTINY heb ik helemaal van de grond af moeten schrijven omdat er op het gehele www niks te vinden was wat in de buurt kwam bij wat ik nodig had.
Uiteindelijk bleek de grootste uitdaging erin te zitten de stappenmotor op een goede manier te laten versnellen naar de maximale snelheid (600° per seconde) maar ook weer te laten vertragen naar 0 naarmate eidpositie in zicht komt. Als je de motor elke keer naar een eindpositie laat bewegen en pas een nieuwe positie mag opgeven als hij stil staat, dan krijg je in de praktijk heel rare bewegingen.
Daarom moest er een algoritme geschreven worden waarmee ik elk gewenst moment een nieuwe positie naar de ATTINY kan sturen en dat de ATTINY direct daarop op de juiste manier de motor gaat bijsturen.
bijvoorbeeld:
motor staat op positie 1°, je stuurt een opdracht om hem naar 300° graden te sturen, en even later geef je een opdracht om naar 100° te gaan terwijl de motor op 200° is en op volle snelheid onderweg is naar die 300°, je kunt dan niet abrupt de andere kant op, daarvoor is de motor niet krachtig genoeg.
Je moet dan eerst direct gaan afremmen to 0 en dat de richting omdraaien en versnellen naar 100°.
Dit betekend dat ik bij elke volgende stap die gemaakt moet worden het volledige algoritme moet runnen, en dat voor 4 motoren tegelijk. Dit bleek maar heel net te passen binnen de capacteit van de ATTINY, daarvoor moest ik wel alle zo gemakkelijke arduino opdrachten laten varen en direct in machinetaal de poorten en registers aan gaan sturen.
Uiteindelijk loopt de aansturing in een timer lus van 48uS waarbinnen alle berekeningen en aansturingen voor alle 4 de motoren telkens opnieuw gedaan moeten worden.
Nadat ik er redelijk vertrouwen in had dat het met de firmware wel allemaal zou lukken heb ik een board ontworpen waar 4 motoren, met driver chip en ATTINY op zitten.
Dus dan gaan we weer lekker printen, etsen verven en solderen:
etsen bijna klaar:
ook nu weer een dubbelzijdige print:
alles erop:
frontplaatje gemaakt:
testprogramma runnen om te zien of de wijzertjes lekker bewegen, daar is nog wel wat debug werk aan te pas gekomen, en nog niet helemaal naar wens:
Wijzertjes zijn niet te vinden tegen een redelijke prijs, heel gek eigenlijk.
dus heb ik 4 complete voltmeters voor weinig gekocht en daar alleen de wijzers uit gesloopt en de rest weggeflikkerd:
Frontplaat ontwerpen in Visio, het enige goeie Microsoft programma dat er bestaat:
en dan staat het project nu "on hold" te wachten op de plank:
volgende stap is het bouwen van een geschikte behuizing voor bovenstaand.
wordt vervolgd......
Zoals jullie wellicht al in mijn "Pastellblauer avonturen" hebben kunnen vernemen heb ik plannen de "megasquirt display" weg te moffelen en daarvoor in de plaats een aantal analoge metertjes te plaatsen. Zodat het dashboard er qua apparatuur weer wat meer periode correct uit gaat zien.
Ja en dan zeggen jullie natuurlijk, en die tripmaster dan? helemaal terecht, maar in die tijd waren 7 segment led displays al heel gewoon, dus geen probleem daar.
Achter de schermen moeten de "analoge" metertjes natuurlijk wel digitaal aangestuurd kunnen worden om op die manier zo exact mogelijk bepaalde waarden uit de megasquirt te kunnen weergeven. Met dit project was ik in gedachte al een hele tijd bezig, en een aantal essentiele onderdeeltjes lagen dan ook al geruime tijd onder een stoflaagje op de plank te wachten.
Het bewegen van de wijzertjes wil ik gaan doen met heel kleine stappen motortjes, en laat er nu precies voor dit doel ooit door een switsers bedrijf stappenmotortjes ontworpen zijn, de zogenaamde "Switec X27.xxx" motortjes. ze zijn plat en ongeveer zo groot als een knaak. De uitvoering waarvan ik er een aantal gekocht heb kunnen 315° draaien en doen 1/3° per stap.
Je kunt zo'n motortje rechtstreeks vanuit een microcontroller aansturen, maar dat heeft wel wat nadelen:
1) je hebt per motor 4 uitgangen nodig
2) doordat de motor telkens 1 stap verzet wordt, en dat is dus 1/3°, krijg je best schokkende wijzer bewegingen. gaat het heel langzaam, bijvoorbeeld voor temperatuur, dan is dat prima. Maar ik wil er ook de AFR mee weergeven, en die schiet nogal eens van links naar rechts.
Er is slechts 1 site op het gehele www waar wat meer gedetailleerde informatie over het aansturen van deze stappenmotoren te vinden is, en daar heb ik dus een driver chip gevonden (de AX1201728SG) die speciaal voor deze stappenmotoren gemaakt wordt. maar die chip is heel moeilijk te vinden, net zoals de bijbehorende datasheet.
Na lang zoeken werd er plots een klein partijtje van die chips op ebay aangeboden, en dus was ik snel genoeg in het bezit van de juiste chip voor deze motortjes.
Het voordeel van deze chip is dat hij de motor in "microsteps" aan stuurt, dit betekend dat elke stap in 4 tussenstapjes verdeeld wordt, daarmee heb je dus 12 stappen per graad nodig, maar de beweging is wel veel vloeiender. Daarnaast bezit 1 chip 4 motordrivers.
Afgelopen winter heb ik het 4 gauges project maar eens opgestart, alle benodigde ingrediënten waren immers aanwezig.
Ik wilde de driver chip graag gaan aansturen met een ATTINY microcontroller, een ATINY is een vereenvoudigde variant van de microcontroller die op een arduino gebruikt wordt, de ATMEGA familie. zoals de naam al doet vermoeden is de ATTINY erg klein, en dat klopt, hij is vooral klein in het aantal aansluitingen en geheugen dat hij heeft, ze zijn er in 14 en 8 pootjes, hebben heel beperkt geheugen, maar wel een ingebouwde klok. dit betekend dus dat je geen enkel extern component nodig hebt om de ATTINY te laten runnen. Dit maakt een ontwerk wezenlijk eenvoudiger.
Een ATTINY heeft ook geen seriele poort waarmee hij met de arduino ontwikkel omgeving kan communiceren, programmeren van de chip lukt alleen met een programmer op de ISP aansluitingen. Arduino's programmeerde ik al met een programmer op hun ISP om zo het opstarten van de bootloader over te slaan, die ervaring was dus gelukkig al binnen.
Een prototype/ontwikkel omgeving was snel opgebouwd, maar het schrijven van de firmware voor de ATTINY, daar is menig avondje debuggen aan voorbij gegaan, dit was mijn ontwikkel omgeving:
Links boven zie je een Arduino nano, waarmee ik de ATTINY aanstuur middels een I2C bus (2 draads bus systeem), op deze manier ga ik de wijzers straks aansturen vanuit de "verstopte" display unit.
Links onder zit de ATTINY met ISP aansluiting, daarnaast de AX1201728SG quad motor driver chip, en dan zitten er rechts nog een 2 tal X27-168 motortjes op het breadboard.
Met deze opzet zijn alle 14 pootjes van de ATTINY in gebruik.
De software voor de ATTINY heb ik helemaal van de grond af moeten schrijven omdat er op het gehele www niks te vinden was wat in de buurt kwam bij wat ik nodig had.
Uiteindelijk bleek de grootste uitdaging erin te zitten de stappenmotor op een goede manier te laten versnellen naar de maximale snelheid (600° per seconde) maar ook weer te laten vertragen naar 0 naarmate eidpositie in zicht komt. Als je de motor elke keer naar een eindpositie laat bewegen en pas een nieuwe positie mag opgeven als hij stil staat, dan krijg je in de praktijk heel rare bewegingen.
Daarom moest er een algoritme geschreven worden waarmee ik elk gewenst moment een nieuwe positie naar de ATTINY kan sturen en dat de ATTINY direct daarop op de juiste manier de motor gaat bijsturen.
bijvoorbeeld:
motor staat op positie 1°, je stuurt een opdracht om hem naar 300° graden te sturen, en even later geef je een opdracht om naar 100° te gaan terwijl de motor op 200° is en op volle snelheid onderweg is naar die 300°, je kunt dan niet abrupt de andere kant op, daarvoor is de motor niet krachtig genoeg.
Je moet dan eerst direct gaan afremmen to 0 en dat de richting omdraaien en versnellen naar 100°.
Dit betekend dat ik bij elke volgende stap die gemaakt moet worden het volledige algoritme moet runnen, en dat voor 4 motoren tegelijk. Dit bleek maar heel net te passen binnen de capacteit van de ATTINY, daarvoor moest ik wel alle zo gemakkelijke arduino opdrachten laten varen en direct in machinetaal de poorten en registers aan gaan sturen.
Uiteindelijk loopt de aansturing in een timer lus van 48uS waarbinnen alle berekeningen en aansturingen voor alle 4 de motoren telkens opnieuw gedaan moeten worden.
Nadat ik er redelijk vertrouwen in had dat het met de firmware wel allemaal zou lukken heb ik een board ontworpen waar 4 motoren, met driver chip en ATTINY op zitten.
Dus dan gaan we weer lekker printen, etsen verven en solderen:
etsen bijna klaar:
ook nu weer een dubbelzijdige print:
alles erop:
frontplaatje gemaakt:
testprogramma runnen om te zien of de wijzertjes lekker bewegen, daar is nog wel wat debug werk aan te pas gekomen, en nog niet helemaal naar wens:
Wijzertjes zijn niet te vinden tegen een redelijke prijs, heel gek eigenlijk.
dus heb ik 4 complete voltmeters voor weinig gekocht en daar alleen de wijzers uit gesloopt en de rest weggeflikkerd:
Frontplaat ontwerpen in Visio, het enige goeie Microsoft programma dat er bestaat:
en dan staat het project nu "on hold" te wachten op de plank:
volgende stap is het bouwen van een geschikte behuizing voor bovenstaand.
wordt vervolgd......
Last edited by BertjeConti on Sun Nov 27, 2022 12:02 pm, edited 2 times in total.
Megasquirted '77 E12 520-6
Aspen Silver '96 E39 523i
-
- E21 Fanatic
- Posts: 301
- Joined: Wed Apr 20, 2011 10:02 am
- My E21(s): BMW 320 BAUR
BMW 320 BAUR
BMW 323i
Re: Arduino - wat kun je er mee?
Dat ziet er weer erg netjes en professioneel uit. Daar zitten weer heel wat late uurtjes in.
Elektronica en software en dat weer gecombineerd met mechanica is toch het mooiste wat er is.
Elektronica en software en dat weer gecombineerd met mechanica is toch het mooiste wat er is.
-
- E21 VIP
- Posts: 237
- Joined: Fri Sep 07, 2012 4:16 pm
- My E21(s): BMW 320/6 '81 zypressengrun
- Location: Ruinerwold Drenthe
Re: Arduino - wat kun je er mee?
Heel knap werk, gaat mij boven de pet!
Re: Arduino - wat kun je er mee?
Knap werk.
Ben benieuwd om dat erin te zien staan.
Ben benieuwd om dat erin te zien staan.