Arduino - wat kun je er mee?

Voor alle vragen, reparatieverslagen en upgrades
Wilmo
E21 Mad
Posts: 1917
Joined: Thu Jun 30, 2011 8:35 pm

Arduino - wat kun je er mee?

Post by Wilmo »

Lang geleden heb ik ook de vierversnellingsbak met mechanische telleraandrijving ingeruild voor een vijfbak zonder mechanische aandrijving. Op vele manieren is het op te lossen. Eerst heb ik geprobeerd om met een Hallsensor een signaal op te pikken vanaf de kardanas en die te vermenigvuldigen met 9 zodat ik het signaal van de E30 kreeg om dat signaal vervolgens te gebruiken in een E30-teller. Dat kreeg ik niet voor elkaar vanwege verschillende omrekenfactoren.

Daarna begon ik aan verschillende IC'tjes te denken maar uiteindelijk ben ik gevallen voor de Arduino. Een Arduino is een goedkope programmeerbare printplaat met 14 digitale in-/uitgangen en 6 analoge ingangen. Met de Arduino kun je erg eenvoudig een blokgolf, pulse width modulation (PWM) maken, en een mosfet aansturen met de blokgolf. Op die manier is de snelheid van een gelijkstroommotor te regelen.
Door korte pulsjes te geven wordt de effectieve spanning lager en door langere pulsen te geven de effectieve spanning hoger. De mos schakelt de hele tijd met de volledige spanning van de externe bron waardoor lagere toerentallen ook mogelijk zijn.

Image

Maar ook het signaal van de ontsteking oppikken, daar een omrekenfactor bijnemen en daar de toerenteller mee aan sturen is makkelijk.
Als laatste waar ik aan zat te denken is bijvoorbeeld een lambda-sonde en een beeldschermpje in de auto.

Wat wil ik nu doen? Ik wil een gelijkstroommotor gebruiken om de mechanische kabel aan te drijven. Een hallsensor pikt vanaf de kardanas het toerental op, dat toerental wordt omgerekend naar pulslengte. Via een mos wordt de motor aangestuurd. Ik wil er (nog) geen PID-regeling in bouwen omdat ik het toch onder last kalibreer. Met een PID-regeling zou het mogelijk zijn het toerental van het motortje weer op te pikken en dan te compenseren voor de belasting.

Zo ziet de motorsturing er ongeveer uit:

Image

Op de testtafel is het een ongelofelijke bende nu, maar er is een boormachine om het initiele toerental te geven. Een motor reageert daarop. Als ik stop met de boormachine stopt de motor ook. Als ik heel snel met de boormachine ga, gaat het motortje ook snel.

Voorlopig ziet de code er zo uit:

Code: Select all

// this constant won't change:
int  sensorPin = 0;     // the pin that the sensor is connected to
int motorPin = 5;             // motorpin
int factorRPM = 8;            // The factor for RPM to KMH calculation
int factorKMH = 10  ;         // The factor for KMH to PWM calculation
int looptime = 2000;          // Looptime in ms
int lowerControl = 3 ;         // Lower control value for shutoff

// Variables will change:
int RPM = 0;                  // counter for the number of lows on sensor
int sensorState = 0;          // current state of the sensor
int lastSensorState = 0;      // previous state of the sensor
int starttime = millis();     // Note starttime when Arduino starts
int KMH = 0;                 // Everything calculated back to KMH
int PWM = 0;                  // Input to motor




void setup() {
  pinMode(motorPin, OUTPUT);    // initialize the motorpin as an output
  pinMode(sensorPin, INPUT);    // initialize the sensor pin as an input:
  Serial.begin(9600);           // initialize serial communication:
  pinMode(LED_BUILTIN, OUTPUT) ; // LED
}


void loop() {
  back:
  Serial.print("back");
  RPM = 0;
  starttime=millis();
  KMH=0;
  PWM=0;
  while ((millis() - starttime) <= looptime) // Measure the RPM for a certain amount of time
  {
    sensorState = digitalRead(sensorPin);      // Read the status on input pin:

    if (sensorState != lastSensorState) {      //Is not equal to
      if (sensorState == HIGH) {
        RPM++;
      }
      lastSensorState = sensorState;


    }
  }                    //End of RPM measurement block

  //Serial.print(RPM);
  //delay(100);

  KMH = RPM * factorRPM ;                 // Some formula for calculation towards KMH
  PWM = KMH * factorKMH ;

Serial.print(PWM);

  if (RPM >= lowerControl && PWM >= 70)
  {
  analogWrite(motorPin, PWM) ;             // Control motor to calculated speed
  goto back;
  }
    else
    {
      analogWrite(motorPin, 0);
    }

}

Ik moet nu een stabiele 9V-voeding bouwen voor de Arduino en een 20V voeding voor de motor. De gelijkstroommotor heeft iets te weinig oempf op 12V maar we zullen het eerst wel eens uitproberen.

Ik heb de Velleman Arduino One gekocht met een VMA411 MOS driving module en een VMA313 Hall sensor. Dat samen was 25 euro. De motor was 7 euro.

Dit moet de APK-oplossing gaan worden, als dat achter de rug is, is het volgende een toerenteller. Daarna wellicht een aantal extra sensoren onder de motorkap en een beeldschermpje.


In theorie is het mogelijk de Megasquirt te kopieren maar de bibliotheken zijn nog veel te experimenteel. Als je een programmeerheld bent, zou het geen probleem zijn.
Aangezien ik geen programmeerheld ben, komt er waarschijnlijk op termijn ook nog een Megasquirt.


User avatar
uwbuurman
E21 VIP
E21 VIP
Posts: 18638
Joined: Fri Jun 12, 2009 4:49 pm
My E21(s): 1978 type 1 323i 5speed dogleg Polaris
Location: Ljouwert

Re: Arduino - wat kun je er mee?

Post by uwbuurman »

Ik zeg: prachtig. Klinkt alsof je weet wat je doet. Mooi hoor!!! En respect ervoor, ik snap er de ballen niet van.
It's the man next door!

1978 BMW 323i
1980 BMW 528i maior restitutio
1987 BMW 325iA cabriolet
2006 BMW 320d touring High Executive
2015 BMW 320dA touring xDrive High Executive ///Msport
Wilmo
E21 Mad
Posts: 1917
Joined: Thu Jun 30, 2011 8:35 pm

Re: Arduino - wat kun je er mee?

Post by Wilmo »

Je kent het project voor de digitale meters? Een Arduino is daar bij uitstek geschikt voor. Vooral omdat de ingredienten voor de code met veel trial and error aan te passen is tot iets dat werkt (omdat ik ook niet kan programmeren). En ik begrijp dan weer helemaal niets van hoe je een signaal met passieve componenten kunt bewerken, dus dan maar zo :D
User avatar
Jeroen
Site Admin
Posts: 29200
Joined: Tue Sep 14, 2004 12:23 pm
My E21(s): '81 323i Baur
Location: The Netherlands
Contact:

Re: Arduino - wat kun je er mee?

Post by Jeroen »

Je hebt als alternatief ook GPS gevallen die een motortje kunnen aansturen, zit je niet meer te klooien met correcties
Regards/groeten, Jeroen
Wilmo
E21 Mad
Posts: 1917
Joined: Thu Jun 30, 2011 8:35 pm

Re: Arduino - wat kun je er mee?

Post by Wilmo »

Maar je bent wel het signaal kwijt in een tunnel. Ik heb een tijd gereden met alleen een tomtom en vooral in de tunnels die behangen zijn met camera's vond ik dat een uitdaging.

Plus dat ik een platform wilde voor alle toekomstige electronica in de auto.
User avatar
Peter_P
Upcoming E21 fanatic
Posts: 155
Joined: Tue Apr 15, 2014 10:57 pm

Re: Arduino - wat kun je er mee?

Post by Peter_P »

Goed bezig. Ik was samen met Remy ook al wel eens gelijkaardige plannen aan het smeden.

Een paar bedenkingen:

Waarom moeite doen met 20V ? Neem gewoon een iets krachtiger 12V motortje. Anders heb je weer een hoop zever met 12V om te vormen naar 20V. Inbouwen is iets waar ik altijd het meest tegenop zie. Waar heb je plaats voor zo een motortje ? Meteen achter de KM-teller of moet je toch een (stuk) KM-teller kabel gebruiken om de motor elders te plaatsen. En hoe verbind je eea.

Wat is het probleem met een toerenteller ? Om een toerenteller te laten werken neem je toch gewoon het signaal van de bobijn en legt dat aan aan de toerenteller. Geen reden om dat doorheen een arduino te sturen. Tenzij je misschien een toerenteller voor het verkeerde aantal cilinders gekalibrrerd wil krijgen.

Lambda waarde zichtbaar maken is niet zo makkelijk. Een breedband lambda sensor is geen sensor waar je even 12V op zet en de lambda waarde komt eruit. Ze hebben een verwarmingselement dat gestuurd moet worden etc. Je kan wel een kant en klare module kopen die de sturing van de sonde voor z'n rekening neemt en die wel meteen een bruikbare uitgang levert. Ik zou dat aanraden, tenzij je echt niet weet wat doen met uw tijd.
User avatar
bmw e12 e21
E21 VIP
E21 VIP
Posts: 4531
Joined: Sat Nov 30, 2013 9:29 am
My E21(s): '82 323i Edition S man. + ´83 M315 man.
Location: Belgium - Limburg

Re: Arduino - wat kun je er mee?

Post by bmw e12 e21 »

Mooi Wilmo!
Peter had me dit idd willen uitdokteren. Maar ik denk dat dat niet meer nodig is.
Heb een M10 GETRAG 245 eco gevonden via een super tip van Jan. :D
THX Jan!
grt Remy

BMW e21 M315 1983 75pk+ 110Nm+ Double WEBER DCOE 40
BMW e21 323i ED. S 1982 143pk 190Nm
BMW e12 M535i 1980 218pk 310Nm
BMW e91 318d 2009 190pk 411Nm
FORD Focus 1.8TDci 2010 115pk 300Nm
Wilmo
E21 Mad
Posts: 1917
Joined: Thu Jun 30, 2011 8:35 pm

Re: Arduino - wat kun je er mee?

Post by Wilmo »

Peter_P wrote:Goed bezig. Ik was samen met Remy ook al wel eens gelijkaardige plannen aan het smeden.

Een paar bedenkingen:

Waarom moeite doen met 20V ? Neem gewoon een iets krachtiger 12V motortje. Anders heb je weer een hoop zever met 12V om te vormen naar 20V. Inbouwen is iets waar ik altijd het meest tegenop zie. Waar heb je plaats voor zo een motortje ? Meteen achter de KM-teller of moet je toch een (stuk) KM-teller kabel gebruiken om de motor elders te plaatsen. En hoe verbind je eea.

Wat is het probleem met een toerenteller ? Om een toerenteller te laten werken neem je toch gewoon het signaal van de bobijn en legt dat aan aan de toerenteller. Geen reden om dat doorheen een arduino te sturen. Tenzij je misschien een toerenteller voor het verkeerde aantal cilinders gekalibrrerd wil krijgen.

Lambda waarde zichtbaar maken is niet zo makkelijk. Een breedband lambda sensor is geen sensor waar je even 12V op zet en de lambda waarde komt eruit. Ze hebben een verwarmingselement dat gestuurd moet worden etc. Je kan wel een kant en klare module kopen die de sturing van de sonde voor z'n rekening neemt en die wel meteen een bruikbare uitgang levert. Ik zou dat aanraden, tenzij je echt niet weet wat doen met uw tijd.

Ik denk dat ik een boxje in de buurt van de zekeringkast ga maken waar de kilometertellerkabel in gaat. Je hebt gelijk met de 12V motor, maar de spanning over de accu kan nogal varieren? Dus die 12V moet dan sowieso gestabiliseerd worden. Maargoed, het kan nog eenvoudiger door een 9V motor te nemen en die aan te sluiten op de gestabiliseerde voeding van de Arduino.

Ik had ooit eens begrepen dat de toerentellers uniek waren voor de motorcode. Vandaar dat ik vast zit op dat spoor, maar ik zie nu dat dat helemaal niet zo is.

Dank voor de Lampda sonde tip, misschien nog eens iets meer denktijd daaraan besteden.


Ik heb op het moment geen werk, dus ik weet inderdaad niet wat ik met mijn tijd moet :mrgreen:
User avatar
Peter_P
Upcoming E21 fanatic
Posts: 155
Joined: Tue Apr 15, 2014 10:57 pm

Re: Arduino - wat kun je er mee?

Post by Peter_P »

Welke arduino heeft een 9V stabilisator die voldoende stroom kan leveren voor zo een DC motortje ?
Ik zou verder denken in de richting van de arduino het toerental ook te laten meten en bijregelen.

Ergens klopt het wel dat een toerenteller moet overeenstemmen met de motorcode maar in de praktijk komt dan enkel neer op 2 verschillende toerentellers, voor 4- of voor 6-cylinders.
User avatar
bmw e12 e21
E21 VIP
E21 VIP
Posts: 4531
Joined: Sat Nov 30, 2013 9:29 am
My E21(s): '82 323i Edition S man. + ´83 M315 man.
Location: Belgium - Limburg

Re: Arduino - wat kun je er mee?

Post by bmw e12 e21 »

Peter_P wrote:
Ergens klopt het wel dat een toerenteller moet overeenstemmen met de motorcode maar in de praktijk komt dan enkel neer op 2 verschillende toerentellers, voor 4- of voor 6-cylinders.
Klopt, Ik heb een e21 4-cilinder toerenteller in mijn M535i die door Peter_P is ''bijgewerkt''. :D
grt Remy

BMW e21 M315 1983 75pk+ 110Nm+ Double WEBER DCOE 40
BMW e21 323i ED. S 1982 143pk 190Nm
BMW e12 M535i 1980 218pk 310Nm
BMW e91 318d 2009 190pk 411Nm
FORD Focus 1.8TDci 2010 115pk 300Nm
Wilmo
E21 Mad
Posts: 1917
Joined: Thu Jun 30, 2011 8:35 pm

Re: Arduino - wat kun je er mee?

Post by Wilmo »

Peter_P wrote:Welke arduino heeft een 9V stabilisator die voldoende stroom kan leveren voor zo een DC motortje ?
Ah, ik begrijp je verwarring Peter. De Arduino heeft een voeding nodig, dus dat bleef in mijn zin 'de voeding van de Arduino'.

Omdat de 12V van de accu nog wel prima zou gaan, maar inclusief de laadstroom gaat het al snel richting de 14V teveel is.

Dus dat wordt misschien iets rond een LM78xx of een LM338.

Peter_P wrote: Ik zou verder denken in de richting van de arduino het toerental ook te laten meten en bijregelen.
Wat bedoel je hiermee?
User avatar
Peter_P
Upcoming E21 fanatic
Posts: 155
Joined: Tue Apr 15, 2014 10:57 pm

Re: Arduino - wat kun je er mee?

Post by Peter_P »

Ik bedoel: in eerste instantie laat je arduino het toerental van de cardan-as meten en stuur je een bepaalde PWM naar het DC motortje zodat die aan het gepaste toerental gaat draaien. Maar zoals je zegt is het nog niet zeker dat dit het juiste toerental is, zelfs na enige calibratie. De beschikbare spanning of een veranderende wrijving in de Km-teller of kabel kan roet in het eten gooien. Door het werkelijke toerental van het motortje te meten en eventueel bij te sturen kan dit probleem verhelpen. Je sprak hieromtrend toch over een PID regelaar.
Wilmo
E21 Mad
Posts: 1917
Joined: Thu Jun 30, 2011 8:35 pm

Re: Arduino - wat kun je er mee?

Post by Wilmo »

Jup, en precies dat zie ik als een beetje over mijn kennisniveau. Misschien dat ik me er nog eens in ga verdiepen maar ik wil eerst eens proberen hoe ver ik kom zonder een PID. Een Megasquirt lost het op met een 'sparkmap' of iets dergelijks, misschien dat dat ook mogelijk is in een Arduino, dat hij een calibratiewaarde oppikt vanuit een tabel, met een reeks if-statements kom je al een heel eind.
User avatar
Peter_P
Upcoming E21 fanatic
Posts: 155
Joined: Tue Apr 15, 2014 10:57 pm

Re: Arduino - wat kun je er mee?

Post by Peter_P »

Ik heb me nog niet verdiept in megasquirt. Kan die ook zo een motortje aansturen voor de Km-teller ?
In elk geval, zo lang je geen meting van het motortoerental doet, en terugkoppelt, heb je geen regelkring en ben je dus ook niet zeker dat het gevraagde toerental ook effectief gehaald wordt.
User avatar
BertjeConti
E21 Mad
Posts: 3007
Joined: Mon Nov 04, 2013 9:49 pm
My E21(s): E12 520-6
Location: nederland , Weert

Re: Arduino - wat kun je er mee?

Post by BertjeConti »

Ik wil er wel even op inhaken,

megasquirt weet de snelheid van de auto niet, dus neen die kan geen snelheidsmeter aansturen.

Voor het aansturen van een kmteller kabel zou ik geen DC motor nemen die je PWM aanstuurt, het toerental is veel te afhankelijk van de belasting van de motor, in plaats daarvan een stappenmotor aansturen lijkt mij een veel betere opzet.
Proximity sensor op differentieel, die de bouten in de flens van de cardanas gebruikt om pulsen van te maken.
Arduino gebruiken op deze pulsen om te zetten in een signaal om een stappenmotor in het gewenste toerental aan te sturen.

Als je een analoge meter wil voor bijvoorbeeld Lambda, of toerenteller, dan kun je daar prima de X227-168 mini stappenmotortjes voor kunnen gebruiken. deze stappenmotoren worden heel veel in dashboards gebruikt en zijn ook prima door arduino aan te sturen. Ik heb er al eens mee geexperimenteerd. Deze motortjes kunnen maximaal 300 graden draaien.
Image
Megasquirted '77 E12 520-6

Aspen Silver '96 E39 523i
Post Reply