Arduino gebruiken op de motor

Gixxer-harry

MF veteraan
4 jun 2006
3.244
1
Gasselte
Ik ben op het net de Arduino tegen gekomen en ik heb er eentje besteld want er zijn vast heel veel leuke dingen mee te maken voor op de brommert
Kennen jullie dit en doen jullie er ook leuke dingen voor de motor mee?
 
Oke, duidelijk :). Zelf heb ik nog niet eerder met dit soort sensoren gespeeld, maar mij lijkt dat de sensor op de Y-as een versnelling registreert zodra de motor zijdelings beweegt. Hierdoor gaat de berekening tijdens de beweging compleet fout, je kunt alleen bij een stabiele hoek de hoek berekenen.
 
De sensor registreert versnellingen, geen bewegingen. Dus bv ook in stilstand wordt 1G zwaartekracht geregistreerd (in je iphone om beelden te draaien als je het scherm draait). Hierboven heb ik de versnellingsvectoren getekend, maar ik had ook een volledig krachten-plaatje kunnen maken aangezien Fg = m * G en centrifugaalkracht: Fc = m * v^2 / r met v de snelheid en r de radius van de bocht. In elke situatie moeten de krachten op de motor in evenwicht zijn, dus wrijvingskrachten en normaal-krachten op het band-asfalt contact in evenwicht met de versnellingskrachten op de motor (zwaartekracht en centrifugaal). Je kunt de massa elimineren want die komt in elke kracht lineair voor en dan krijg je weer het bovenstaande plaatje. Dus het gaat niet "compleet fout", tenzij dit krachten-evenwicht niet meer klopt.... dat is als je met je motor van de baan vliegt....

Het is niet zo dat als je een bocht instuurt, dat dan dit evenwicht niet meer aanwezig is. Het is een constante balans: bij het insturen verander je de radius van de bocht waardoor centrifugaal krachten onstaan die je in balans brengt door een bijpassende hellingshoek aan te nemen.

Probeer het gewoon uit, zo moeilijk is het niet en erg leuk om eens te zien hoe groot de versnellingen zijn. Ik zou eerst gewoon de raw-data loggen van de sensoren en dan in Excel of Matlab eens kijken of er zinvolle info uit te halen is. Als je een test-bocht neemt en weet welke radius die heeft en snelheid je gereden hebt, dan kun je de theoretische hoek berekenen en vergelijken met de meetdata.

Koop bv. een Multiwii board waar al verschillende lineaire en hoek-versnellingssensoren opzitten. Dan kun je voor weinig zowel de lineaire als hoek-versnellingen loggen.
 
Ik ga het proberen met een proximity sensor. Zou van de week binnen moeten komen. In een bocht meet ik dan de afstand tot de grond, op een X afstand van het midden van de as, of het midden van de band eigenlijk. Deze afstand veranderd als de motor schuin hangt. Misschien dat ik de stelling van pietje nodig ga hebben om dit te berekenen, maar ik hoop eigenlijk dat ik met wat handig resistorwerk gewoon een analoge output kan krijgen.

Sensor komt waarschijnlijk bij de achteras. Niet voor, omdat je voorwiel altijd onder een aparte hoek staat en ik weet zo niet in hoeverre dat metingen zou beinvloeden. Eigenlijk wilde ik hem aan de achterkuip vastmaken of aan de passagiersteps, dan heb ik een zo groot mogelijke afstand tussen het middenpunt en het meetpunt wat het meten makkelijker maakt. Alleen dan zit je met vering in de bochten die metingen weer gaat beinvloeden. Het gaat dus waarschijnlijk op de achterbrug worden, net boven de as aan de buitenkant van de brug. En dan is het nog even kijken of de beweging van de brug als er geveerd wordt ook nog invloed heeft.

Al bij al lijkt me dit de makkelijkste oplossing, al is het maar omdat je zo met een beetje geluk gewoon een analoge uitvoer krijgt. Maakt het wel makkelijker als je te maken hebt met de beperkte kracht van een Arduino.
 
De sensor moet je inderdaad aan de onderpoot of brug monteren want de invering heeft erg veel invloed.

Wat voor sensor is het eigenlijk? Infrarood of acoustisch? Het wegdek staat wel onder een hoek, dus met optische sensoren verwacht ik een probleem dat de reflecterende straal niet op de sensor komt.

Heb je ervaring met microcontroller programmeren? De truc is namelijk of slim met de sensor data om te gaan zodat de controller vaak niet of nauwelijks hoeft te rekenen. Een paar voorbeelden:
1. Hoe presenteer je de data? Het kan zijn dat omrekenen naar graden helemaal niet nodig is als je bv. een grafische aanduiding gebruikt. Graden wil je dan niet hebben als output, gewoon weer een 8-bit waarde.
2. Rekenen kun je beperken door 1) een zo lineair mogelijke sensor output te genereren. In jouw geval zou dit misschien kunnen door de sensor schuin naar buiten te richten. 2) Slechts de eerste paar termen van een Taylor-reeks te nemen. In jouw geval die van de arc-tangens. Verder alle constante waardes al van te voren berekenen.
3. Gebruik look-up tables! Ik verwacht dat de nauwkeurigheid van de sensor niet zo groot zal zijn en ook ben je waarschijnlijk niet geinteresseerd in een weergave op de 1 graad nauwkeurig. Stel dat je een bereik van 60 graden met 5 graden stappen wilt weergeven, dan heb je slechts een look-up table van 12 waardes nodig (bij symmetrie). Kost dus nauwelijks geheugen en is rete snel.
4. Kwa tijd hoeft het rekenwerk helemaal niet snel te zijn toch? In de bocht let je (hopelijk) niet op het display maar op andere zaken... Pas na de bocht wil je de max hoek weten, toch? Dus je hoeft alleen maar de max hoek te onthouden en daarvan een weergave te doen waarvoor de controller zeker een paar seconden tijd krijgt.
5. De overige data zou je kunnen loggen in het geheugen om later op de PC te bekijken. Die data wil je zo compact mogelijk opslaan, dus raw-data, 8bits. Met de eerder genoemde resolutie zou het zelfs met 4-bits kunnen, dus 2x zo veel plaats voor data. Pas bij het uitlezen op de PC kun je dan snel alles omrekenen in graden.

Sorry hoor, maar als er weer over "beperkte rekenkracht" wordt gesproken of gezegd wordt dat je beter 32-bit processoren kunt nemen etc. dan vat ik dat op als gebrek aan kennis om slim met de architektuur van processoren in het algemeen om te gaan.
 
De sensor moet je inderdaad aan de onderpoot of brug monteren want de invering heeft erg veel invloed.

Wat voor sensor is het eigenlijk? Infrarood of acoustisch? Het wegdek staat wel onder een hoek, dus met optische sensoren verwacht ik een probleem dat de reflecterende straal niet op de sensor komt.

Heb je ervaring met microcontroller programmeren? De truc is namelijk of slim met de sensor data om te gaan zodat de controller vaak niet of nauwelijks hoeft te rekenen. Een paar voorbeelden:
1. Hoe presenteer je de data? Het kan zijn dat omrekenen naar graden helemaal niet nodig is als je bv. een grafische aanduiding gebruikt. Graden wil je dan niet hebben als output, gewoon weer een 8-bit waarde.
2. Rekenen kun je beperken door 1) een zo lineair mogelijke sensor output te genereren. In jouw geval zou dit misschien kunnen door de sensor schuin naar buiten te richten. 2) Slechts de eerste paar termen van een Taylor-reeks te nemen. In jouw geval die van de arc-tangens. Verder alle constante waardes al van te voren berekenen.
3. Gebruik look-up tables! Ik verwacht dat de nauwkeurigheid van de sensor niet zo groot zal zijn en ook ben je waarschijnlijk niet geinteresseerd in een weergave op de 1 graad nauwkeurig. Stel dat je een bereik van 60 graden met 5 graden stappen wilt weergeven, dan heb je slechts een look-up table van 12 waardes nodig (bij symmetrie). Kost dus nauwelijks geheugen en is rete snel.
4. Kwa tijd hoeft het rekenwerk helemaal niet snel te zijn toch? In de bocht let je (hopelijk) niet op het display maar op andere zaken... Pas na de bocht wil je de max hoek weten, toch? Dus je hoeft alleen maar de max hoek te onthouden en daarvan een weergave te doen waarvoor de controller zeker een paar seconden tijd krijgt.
5. De overige data zou je kunnen loggen in het geheugen om later op de PC te bekijken. Die data wil je zo compact mogelijk opslaan, dus raw-data, 8bits. Met de eerder genoemde resolutie zou het zelfs met 4-bits kunnen, dus 2x zo veel plaats voor data. Pas bij het uitlezen op de PC kun je dan snel alles omrekenen in graden.

Sorry hoor, maar als er weer over "beperkte rekenkracht" wordt gesproken of gezegd wordt dat je beter 32-bit processoren kunt nemen etc. dan vat ik dat op als gebrek aan kennis om slim met de architektuur van processoren in het algemeen om te gaan.

Niet noemenswaardig. Ik kan microcontrollers programmeren, maar ik kan er absoluut niet het volledige potentieël uit persen. Echter als dat een beperking zou moeten zijn kunnen we het beter maar opgeven. Liefst wil ik eigenlijk gewoon een analoge waarde hebben. Puur en alleen om het feit dat ik weet hoe ik die makkelijk kan opslaan ;) Directe digitale output is wellicht handiger voor ervaren programmeurs, maar voor mij is analoog handiger. Analoge output omrekenen naar graden doe ik later wel, kan ook op een platform waar ik wél ervaring mee heb. Ik wil het rekenwerk op de microcontroller zoveel mogelijk beperken, omdat ik niet inzie waarom ik het mezelf moeilijk zou moeten maken.

Infrarode sensor trouwens. Je zou het niet zeggen, maar die kunnen, zo lang het te scannen oppervlak diffuus is althans, beter omgaan met hoeken dan akoustische sensoren. Geluid kan namelijk net zo goed een andere richting kiezen.
 
Hallo,

Leuk topic dit.
Ik ben nu bezig met een project op school waarin we een accelerometer gebruiken.
Dit wordt een virtuele game, die ook in een echte 3d constructie te zien is.

De code heb ik vorige week geschreven, waarmee je decimaal de x, y, z waarde kan lezen.
Evt ook met een vertraging van 10 seconden waarmee de actuele waarde dus 10 seconden later gebruikt kunnen worden.

Mocht je interesse in dit programma hebben roept u maar.

Cheers!
 
Leuk dat dit topic weer boven komt drijven :Y

Ik heb destijds mijn plannen voor een Arduino op de fiets in de ijskast gezet. Inmiddels weer mee bezig, maar dan op een Raspberry Pi :) Daarop een Node.js server, dus nu lekker in Python en JS, dat gaat me een heel stuk beter af dan C. Er hangt nog wel een Arduino aan, maar die doet niks meer dan input/output pins beschikbaar stellen voor de Pi. Ik doe op dat ding zelf niks. Er kan een hoop op, dat weet ik, maar in Python ben ik oneindig veel beter en ik zie niet in waarom ik het mezelf moeilijk zou maken.

Tevens, en da's wel een leuke extra mogelijkheid, heb ik nu zo'n mobiele accu, waarmee je bijvoorbeeld nog je telefoon op kunt laden. Die hangt tussen het lichtcircuit van de motor (dus opladen tijdens rijden), en aan de andere kant in de Pi. Dus de Pi kan ook ongestoord lopen als de motor uitstaat, zonder dat ik bang hoef te zijn voor een gare accu of iets anders. Voordeel, de motor kan als ie hier op de stoep staat op mijn WiFi inloggen en de verzamelde data en filmpjes overpompen naar mijn server, terwijl ik al op de bank bier lig te drinken *D
 
Laatst bewerkt:
Ben op het moment bezig met een MPU9150, da's een gyro en acceleratiesensor in 1 (+ nog wat meuk die ik niet gebruik). Door die data te combineren is het mogelijk om de hoek tenopzichte van horizontaal te meten.

Volgende stap is een camera met een stappenmotor de andere kant op te sturen :). Work in progress.


Zou ook wel eens met een Raspberry willen spelen. Heb mooie plannen in mn hoofd om daar een uitgebreide datalogger mee te maken..... Maar helaas chronisch tekort aan tijd ;).
 
Ben op het moment bezig met een MPU9150, da's een gyro en acceleratiesensor in 1 (+ nog wat meuk die ik niet gebruik). Door die data te combineren is het mogelijk om de hoek tenopzichte van horizontaal te meten.

Volgende stap is een camera met een stappenmotor de andere kant op te sturen :). Work in progress.


Zou ook wel eens met een Raspberry willen spelen. Heb mooie plannen in mn hoofd om daar een uitgebreide datalogger mee te maken..... Maar helaas chronisch tekort aan tijd ;).

Lean angle ben ik ook mee bezig maar is godverdomd moeilijk op de manier die ik gebruik. Afstand tot de grond aan linker en rechter kant van het frame vergelijken. Werkt enigszins maar zeer gammel.

Maar een camera meebewegen, realtime op die data, dat is wel echt gru-we-lijk 8-) Laat ff weten als je er verder mee komt!

Edit: kun je daarvoor niet beter een servo vatten?
 
Laatst bewerkt:
OT:
(model)helicoptergyro + servo = klaar? Driftcompensatie is misschien lastig.
Wat ze ook wel doen is een wide angle lens gebruiken en de horizon in post processing recht zetten. Diverse video bewerkings- pakketten kunnen dat.
 
Welke connectors gebruiken jullie eigenlijk om het hele circus aan te sluiten? Ik heb door de hele motor kabelwerk lopen en ik wil het wel graag gedeeltelijk los kunnen halen voor als er iets aan gedaan moet worden. De hele boel vastsolderen is dus niet echt een oplossing.

Aan de andere kant zit alles op mijn testbordje vast in screw terminals. Dat werkt wel, en is leuk om te testen, maar het zijn natuurlijk gewoon verdelde kroonsteentjes en dat gaan we natuurlijk niet op de motor toepassen..
 
Ik gebruik vaak van die mini-molex connectoren. 1 kant is eigelijk een thru-hole pcb connector, die ik aan de kabel soldeer. Zou een keer naar een kabel-versie moeten zoeken. Andere kant is kwestie van aanknijpen.

Andere goede optie zijn AMP Superseal connectoren. Zijn waterbestendig en van goede kwaliteit.
http://nl.farnell.com/te-connectivity-amp/282080-1/socket-housing-circular-2-way/dp/150400


Lean angle ben ik ook mee bezig maar is godverdomd moeilijk op de manier die ik gebruik. Afstand tot de grond aan linker en rechter kant van het frame vergelijken. Werkt enigszins maar zeer gammel.

Maar een camera meebewegen, realtime op die data, dat is wel echt gru-we-lijk 8-) Laat ff weten als je er verder mee komt!

Edit: kun je daarvoor niet beter een servo vatten?

Servo kan inderdaad. Echter is de resolutie van de hoek lang niet zo nauwkeurig. Om je een idee te geven, met de stappenmotordriver die ik nu gebruik kan ik 1 rotatie verdelen in 3200 stappen. 0.1125 graden per stap. Het aantal stappen wat je zet bepaal je zelf en is dus altijd exact.

Servo daarentegen bestuur je dmv een pwm-signaal. Dit moet met een bepaalde frequentie zijn, de resolutie van het pwm-signaal is afhankelijk van de gebruikte timer. Aangezien een servo een periodetijd van 15 - 25ms verwacht en 0.5 - 2.5ms als regelbereik heeft, kun je een nauwkeurig regelbereik compleet vergeten.
servo_pulse_width.png

Daar komt ook nog eens bij dat je niet weer wat de exacte hoek en hoekverandering is bij een bepaalde verandering in het pwm-signaal en servo's zijn echt gruwelijk traag.
 
Laatst bewerkt:
Ik gebruik vaak van die mini-molex connectoren. 1 kant is eigelijk een thru-hole pcb connector, die ik aan de kabel soldeer. Zou een keer naar een kabel-versie moeten zoeken. Andere kant is kwestie van aanknijpen.

Andere goede optie zijn AMP Superseal connectoren. Zijn waterbestendig en van goede kwaliteit.
http://nl.farnell.com/te-connectivity-amp/282080-1/socket-housing-circular-2-way/dp/150400Servo kan inderdaad. Echter is de resolutie van de hoek lang niet zo nauwkeurig. Om je een idee te geven, met de stappenmotordriver die ik nu gebruik kan ik 1 rotatie verdelen in 3200 stappen. 0.1125 graden per stap. Het aantal stappen wat je zet bepaal je zelf en is dus altijd exact.

Servo daarentegen bestuur je dmv een pwm-signaal. Dit moet met een bepaalde frequentie zijn, de resolutie van het pwm-signaal is afhankelijk van de gebruikte timer. Aangezien een servo een periodetijd van 15 - 25ms verwacht en 0.5 - 2.5ms als regelbereik heeft, kun je een nauwkeurig regelbereik compleet vergeten.
[afbeelding]
Daar komt ook nog eens bij dat je niet weer wat de exacte hoek en hoekverandering is bij een bepaalde verandering in het pwm-signaal en servo's zijn echt gruwelijk traag.

OT:
(model)helicoptergyro + servo = klaar? Driftcompensatie is misschien lastig.
Wat ze ook wel doen is een wide angle lens gebruiken en de horizon in post processing recht zetten. Diverse video bewerkings- pakketten kunnen dat.


Driften gebeurd omdat het alleen een gyro is. Ik gebruik zowel de gyro als acceleratiemeter.


Momenteel loop ik nog tegen het probleem aan dat ik de data uit de acceleratie-data te hard filter, met een te trage output als gevolg (die wel echt exact is). Of te weinig filter met een juiste hoek als gevolg, maar veel ruis bij trillingen. Het juist filteren van de acceleratie-data moet voorkomen dat je ruis door trillingen in de berekening terug ziet. Moet alleen nog even bekijken hoe ik een FIR/IIR filter goed bereken, dan komt het goed :).
 
Lean angle ben ik ook mee bezig maar is godverdomd moeilijk op de manier die ik gebruik. Afstand tot de grond aan linker en rechter kant van het frame vergelijken. Werkt enigszins maar zeer gammel.

Maar een camera meebewegen, realtime op die data, dat is wel echt gru-we-lijk 8-) Laat ff weten als je er verder mee komt!

Edit: kun je daarvoor niet beter een servo vatten?


=======================

Begrijp ik dat je via een accelerometer een servo wil aansturen.
Die afhankelijk van de hoek zijn camerastand op een horizontale positie corrigeert?

Ik heb voor het uitlezen van de accelerometer nog wel een stukje software dat werkt.
De waardes van de xyz waarde zijn in 0 positie gewoon 0 dus ook min de gravitatiekracht.
Het enige is dan voor een bepaalde hoek de waardes in een array stoppen gemiddelde berekenen en hierbij je servo aansturen via library of zelf schrijven.

Gr, Pieter

Ben zelf een alarm aan het maken met arduino vandaar de accelerometer ;)
Als de motor omvalt moeten natuurlijk alle toeters en bellen afgaan:>! *O*
 
Laatst bewerkt:
Arduino (4)

Ik realiseerde mij ineens dat ik de laatste stand van zaken rond de flow-meter nog niet op het forum had geplaatst. Zie FredVN in "Vietnam" en de volgende dagen.

Welnu, de resultaten zijn deels positief en deels negatief.

Negatief
De meter blijkt niet gevoelig genoeg om de flow in de inlaat van de carburateur te meten. Dat is eigenlijk een tegenvaller. Ik had gehoopt dit ook te kunnen gebruiken voor het balanceren van mijn carburateurs. OK, de U-slang is er ook nog.

Positief
Een snelle test met een oud luchtfilterhuis van mijn motor gaf goede resultaten. Als je de probe iets verplaatste gaf dat duidelijk een verschil in meting.

Ik ben daarna nog wat aan het fine-tunen geweest: de metingen wat langzamer presenteren en de behuizing, waar het barometermodule in zit, zo luchtdicht mogelijk gemaakt. Ook zijn de Arduino met het display in een kastje gebouwd.

Ik heb dus nu zonodig twee opties tegelijk om te meten: de oude vloeistof-manometer en de nieuwe Arduino flow meter.
 
Terug
Bovenaan Onderaan