Ontsteking uitlezen met Arduino

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
Ik heb al een tijdje een onvoltooid projectje op de plank liggen, namelijk een semi-digitale cockpit voor mijn motor. De snelheidsmeter gebaseerd op een 16x2 LCD en een Arduino Nano werkt al maanden uitstekend. De toerenteller blijft echter een probleem.
De toerenteller is voorzien van een Arduino Nano waar twee Switec X27 stappenmotoren aan hangen. Een stappenmotor geeft de versnelling weer (werkt perfect), de ander moet het toerental analoog weergeven.

Hier een video van de versnelling indicator

Hier een video van de toerenteller die ik door wat random toerentallen laat lopen. Dit gebeurt mbv van een kant en klare Ne555 puls generator module van Aliexpress, waar de rest van de hardware ook vandaan komt overigens.

De stappenmotoren en het weergeven van een toerental werkt zoals het moet. Op het droge (met de pulsgenerator) lijkt alles perfect te werken. Gemonteerd op de motor werkt het echter niet:

- onder de 3000rpm werkt toerental registratie redelijk
- boven de 3000rpm begint hij te weinig aan te geven: Loopt de motor zo'n 6500rpm dan geeft de toerenteller ca 4000rpm

Omdat het op het droge wel goed lijkt te werken denk ik dat er een fout zit in de hardware. Dit zit nu als volgt:

Afbeeldingslocatie: http://i66.tinypic.com/25jv87o.png

Er zit een simpel circuit tussen CDI (Ignitor) en de Arduino. Het idee is dat de CDI naast het bedienen van een van de bobines ook een optocoupler aan/uit zet die de Arduino simpelweg ziet als schakelaar (mbv input_pullup). Aantal sluitingen van de schakelaar tellen dan het toerental uitrekenen. Ipv de CDI heb ik hem met deze opstelling dus getest met een puls generator en dat werkt wel.

Iemand een idee waar en waarom het misgaat?

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • SuperKris
  • Registratie: Juni 2010
  • Laatst online: 16-09 18:00
Op zich lijkt het idee mij goed, Zo te zien krijgt de oranje draadje altijd 12v, en schakelt de CDI de bobine naar 0V. Die diode en en die zener snap ik volgens mij niet helemaal. Een enkel weerstandje zou voldoende moeten zijn toch? De octocoupler heeft ook al een diode.

Maar wat ik eerst eens zou doen is er een scope aanhangen. Die 555 zal een practige blokgolf geven met een strakke slope en een duty cycle van 50%. Vermoedelijk is dit voor je CDI anders. Het het zou best kunnen dat de een veel kleinere of grotere dutycyle er voor zorgt dat de pulsen boven een bepaalde toerental niet meer te onderscheiden zijn voor de arduino.

Dat kan komen door dat de octocoupler de snelheid niet aankan, of de GPIO van de arduino de snelheid niet aankan. Beide lijken mij niet heel voor de hand liggend. Misschien zorgt zelfs die condensator er wel voor dat de LED in de octocoupler te lang aan blijft. Zou je even moeten uitrekenen.

Hoe dan ook, even meten met een scope zal het vermoedelijk heel snel laten zien.

Acties:
  • 0 Henk 'm!

  • heggico
  • Registratie: Augustus 2011
  • Laatst online: 17:58
Als ik het zo zie staat er op O/W altijd 12V van de accu en schakelt de bobine de W naar 0 (zoals SuperKris al zei)


In dat geval moet je pin 1 en 2 van de optocoupler omdraaien, die diode zit nu in sper. (pin 2 altijd 12V, pin 1 schakelt naar 0, dus die omdraaien). Maar dan zit ook de diode en zener nog verkeerd om, dus het handigste is om ff O/W en W te verwisselen naar je schema toe.

Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
SuperKris schreef op woensdag 24 mei 2017 @ 12:33:
Misschien zorgt zelfs die condensator er wel voor dat de LED in de octocoupler te lang aan blijft. Zou je even moeten uitrekenen.
Helaas heb ik geen scope. Ik heb het overigens ook geprobeerd zonder die condensator dus dat is het probleem niet. Het schema vond ik ergens op een forum, er zat over de interruptpin en de gnd eenzelfde condensator. Dat werkte niet echt goed en toen heb ik ook meteen geprobeerd wat er gebeurde als ik de condensator links van de optocoupler ook weghaalde. Zowel op de motor als op het droge merkte ik daar verder geen verschil.
De blokgolf redenatie kan ik wel volgen en heb ik eigenlijk niet bij nagedacht. Ik ging er vanuit dat de CDI de primaire spoel gewoon aan/uit met gnd zou verbinden maar zo simpel en netjes zal het wel niet zijn idd.
heggico schreef op woensdag 24 mei 2017 @ 12:50:
Als ik het zo zie staat er op O/W altijd 12V van de accu en schakelt de bobine de W naar 0 (zoals SuperKris al zei)


In dat geval moet je pin 1 en 2 van de optocoupler omdraaien, die diode zit nu in sper. (pin 2 altijd 12V, pin 1 schakelt naar 0, dus die omdraaien). Maar dan zit ook de diode en zener nog verkeerd om, dus het handigste is om ff O/W en W te verwisselen naar je schema toe.
Ik zal eens proberen om de connecties O/W en W te verwisselen omdat dat de meest eenvoudige handeling is.
Zoals gezegd vond ik dat optocoupler schema ergens op internet. Wat ik er van begreep (voor mezelf beredeneerd dat is) is dat de zenerdiode 'omgedraaid' zit omdat je daarmee de spanning omlaag haalt voordat je bij de optocoupler bent. Leek mij logisch en als ik de boel aan een aan/uit schakelende 12v lijn hang gaat de optocoupler ook netjes aan/uit. Wat die diode aan het begin daar doet weet ik eigenlijk ook niet en kan denk ik wel weg nu je het zegt :+

[ Voor 7% gewijzigd door leecher op 24-05-2017 13:35 ]

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • memphis
  • Registratie: Oktober 2000
  • Laatst online: 23:46

memphis

48k was toen meer dan genoeg.

Voor alle zekerheid kan je ook een externe pull-up weerstand plaatsen, en dan iets in de richting van 10k

Er zijn mensen die mij een GOD vinden


Acties:
  • 0 Henk 'm!

  • heggico
  • Registratie: Augustus 2011
  • Laatst online: 17:58
Houd er ook rekening mee dat zo'n ontsteking enorm veel storing kan geven, grote kans dat dat ook niet helpt met een fatsoenlijke meting te krijgen. Nu heb je wel iets van filtering (die condensator), maar dan nog.

Acties:
  • 0 Henk 'm!

  • _ferry_
  • Registratie: Januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

Toevallig pas wat gekeken naar het uitlezen van RPM, nadat ik een boordcomputer (reveltronics UTcomp) had gekocht. Ja, gekocht... Had geen tijd/kennis om al die functionaliteit zelf uit te vogelen. Werkt wel erg mooi, en kan alles uitlezen wat ik wil.

Heb uiteindelijk gewoon een hall sensor met magneetje genomen, aangezien ik dat min of meer had liggen. Zenerdiodes en optocoupler moest ik eerst nog bestellen.

Maar ik kwam nog wat info tegen;
https://forum.arduino.cc/index.php?topic=177219.0

En de Megasquirt heeft ook een duidelijk schema (pagina 2 links onder)
http://www.msextra.com/do...x/megasquirt_ShemV2.2.pdf

[ Voor 18% gewijzigd door _ferry_ op 24-05-2017 21:32 ]


Acties:
  • 0 Henk 'm!

  • TommyboyNL
  • Registratie: Januari 2006
  • Niet online
Post je interrupt routine hier eens. Wellicht is die simpelweg te lang waardoor je op hogere toerentallen pulsjes gaat missen.

Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
_ferry_ schreef op woensdag 24 mei 2017 @ 21:30:
Toevallig pas wat gekeken naar het uitlezen van RPM, nadat ik een boordcomputer (reveltronics UTcomp) had gekocht. Ja, gekocht... Had geen tijd/kennis om al die functionaliteit zelf uit te vogelen. Werkt wel erg mooi, en kan alles uitlezen wat ik wil.

Heb uiteindelijk gewoon een hall sensor met magneetje genomen, aangezien ik dat min of meer had liggen. Zenerdiodes en optocoupler moest ik eerst nog bestellen.

Maar ik kwam nog wat info tegen;
https://forum.arduino.cc/index.php?topic=177219.0

En de Megasquirt heeft ook een duidelijk schema (pagina 2 links onder)
http://www.msextra.com/do...x/megasquirt_ShemV2.2.pdf
Hall sensor heb ik ook geprobeerd omdat ik dacht dat de bobine wel een sterk veld zou hebben. Dat kreeg ik niet aan de praat met het type hallsensor (A3144 non-latching) dat ik heb gebruikt voor de snelheid meting. Zou een makkelijke oplossing zijn geweest want de bobines zijn zeer toegankelijk geplaatst.

Mijn schema is blijkbaar gekopieerd van de megasquirt want die is hetzelfde. 1N4001 diode, 390 ohm weerstand, omgekeerde 5.1v zener, keramische condensator over de led in de optocoupler. In het megasquirt schema staat "Ignition Trigger Return Jumper" maar ik weet niet waar dat voor staat? Is dat de CDI die verbind met gnd?
TommyboyNL schreef op woensdag 24 mei 2017 @ 21:38:
Post je interrupt routine hier eens. Wellicht is die simpelweg te lang waardoor je op hogere toerentallen pulsjes gaat missen.
Dat zal niet het probleem zijn want met de Ne555 werkt het prima tot 12.000+ RPM. Desalniettemin:

void ignitionpulse(){
currentRPM=60000/(millis()-deltat);
deltat=millis();
timea=millis();
}

Waarbij ik timea gebruik om te checken of de volgende puls te lang duurt zodat RPM=0.
Ik heb nog een verzameling met andere codes die ik heb geprobeerd maar uiteindelijk niet gebruikt omdat deze de naald niet vloeiend laten bewegen (oa te kleine refreshrate bij lage RPM). Bijv:

void ignitionpulse(){
pulsecounter=pulsecounter+1;
}

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
leecher schreef op woensdag 24 mei 2017 @ 11:45:
Er zit een simpel circuit tussen CDI (Ignitor) en de Arduino. Het idee is dat de CDI naast het bedienen van een van de bobines ook een optocoupler aan/uit zet die de Arduino simpelweg ziet als schakelaar (mbv input_pullup).
Ik denk dat je interne pull-up te groot is. Fototransistoren in optocouplers zijn notoir trage dingen. Een hogere collector stroom helpt om ze wat sneller uit te schakelen en een hogere LED stroom laat ze sneller aan schakelen.
https://www.arduino.cc/en/Tutorial/DigitalPins
The value of this pullup depends on the microcontroller used. On most AVR-based boards, the value is guaranteed to be between 20kΩ and 50kΩ. On the Arduino Due, it is between 50kΩ and 150kΩ. For the exact value, consult the datasheet of the microcontroller on your board.
De megasquirt gebruikt een externe 4.7kΩ pullup;. Probeer dat eens?

Acties:
  • 0 Henk 'm!

  • itcouldbeanyone
  • Registratie: Augustus 2014
  • Laatst online: 12-09 21:49
leecher schreef op woensdag 24 mei 2017 @ 22:59:
[...]


Hall sensor heb ik ook geprobeerd omdat ik dacht dat de bobine wel een sterk veld zou hebben. Dat kreeg ik niet aan de praat met het type hallsensor (A3144 non-latching) dat ik heb gebruikt voor de snelheid meting. Zou een makkelijke oplossing zijn geweest want de bobines zijn zeer toegankelijk geplaatst.

Mijn schema is blijkbaar gekopieerd van de megasquirt want die is hetzelfde. 1N4001 diode, 390 ohm weerstand, omgekeerde 5.1v zener, keramische condensator over de led in de optocoupler. In het megasquirt schema staat "Ignition Trigger Return Jumper" maar ik weet niet waar dat voor staat? Is dat de CDI die verbind met gnd?


[...]


Dat zal niet het probleem zijn want met de Ne555 werkt het prima tot 12.000+ RPM. Desalniettemin:

void ignitionpulse(){
currentRPM=60000/(millis()-deltat);
deltat=millis();
timea=millis();
}

Waarbij ik timea gebruik om te checken of de volgende puls te lang duurt zodat RPM=0.
Ik heb nog een verzameling met andere codes die ik heb geprobeerd maar uiteindelijk niet gebruikt omdat deze de naald niet vloeiend laten bewegen (oa te kleine refreshrate bij lage RPM). Bijv:

void ignitionpulse(){
pulsecounter=pulsecounter+1;
}
maar bereken je nou je " currentRPM" in je interupt ?
is het niet gewoon veel beter om dat buiten je interupt te berekenen, nadat pulsecounter boven een bepaalde waarde uit komt.

met een 80 pulsen a/b sensor kan ik meer dan 10.000 rpm uitlezen op arduino.
hou er rekening mee, dat je senor kabels, en alle kabels waar hoog frequent overheen gaat, de kleinste ruis, je ISR kan laten triggeren.

Ben niet slim, maar wel dom


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
itcouldbeanyone schreef op vrijdag 26 mei 2017 @ 18:02:
[...]


maar bereken je nou je " currentRPM" in je interupt ?
is het niet gewoon veel beter om dat buiten je interupt te berekenen, nadat pulsecounter boven een bepaalde waarde uit komt.
Ja en nee. Ik snap dat je in de interrupt zo min mogelijk code wil draaien. Gewoon pulsen tellen en buiten de interrupt de RPM berekenen na x pulsen of x tijd is dan het meest logisch. Helaas merkte ik dat bij lagere toerentallen er te weinig pulsen zijn om de wijzer vloeiend uit te laten slaan of dat er bij hogere toeren de RPM teveel fluctueerd. Die X27 steppers zijn zeer vlotte stappenmotoren dus de naald begint dan enorm te flipperen wat niet fijn is om af te lezen.
Ik bereken daarom bij élke puls het toerental en tel dat bij een lopend gemiddelde.
RPM=RPM*0,999+currentRPM*0.001

Daar valt nog een klein beetje aan te tweaken omdat dat dan weer voor wat overgevoeligheid zorgt bij hogere toerentallen. Ik kan er bijv voor currentRPM>5000 van maken 0.9998 en 0.0002. Zoals ik eerder schreef werkt die code met de pulsgenerator prima tot 12.000+ RPM.

Een andere optie die ik heb gebruikt (zelfde trucje als bij mijn snelheidsmeter) elke puls de currentRPM berekenen en los daarvan bijv 10 per seconde de currentRPM te sampelen, dat in een array te zetten en dan het gemiddelde van de array te pakken. Werkt uitstekend voor de KM teller (constant een 0,5s snelheid refreshrate) maar minder goed dan het lopende gemiddelde in dit geval.

Morgen heb ik weer tijd en ga ik eens wat rommelen met de hardware om te kijken of het daar aan ligt.
itcouldbeanyone schreef op vrijdag 26 mei 2017 @ 18:02:

hou er rekening mee, dat je senor kabels, en alle kabels waar hoog frequent overheen gaat, de kleinste ruis, je ISR kan laten triggeren.
Omdat ik nog bezig ben met de toerenteller zit de boel nog in een soort van beta opstelling. Hall sensor (Andere Arduino dan de toerenteller) zit voorlopig nog bij het achterwiel en de kabel daarvan loopt langs een van de bobines. Als ik bij het stoplicht sta ga ik soms 380km/h :+

[ Voor 13% gewijzigd door leecher op 26-05-2017 21:36 ]

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • itcouldbeanyone
  • Registratie: Augustus 2014
  • Laatst online: 12-09 21:49
leecher schreef op vrijdag 26 mei 2017 @ 21:31:
[...]


Ja en nee. Ik snap dat je in de interrupt zo min mogelijk code wil draaien. Gewoon pulsen tellen en buiten de interrupt de RPM berekenen na x pulsen of x tijd is dan het meest logisch. Helaas merkte ik dat bij lagere toerentallen er te weinig pulsen zijn om de wijzer vloeiend uit te laten slaan of dat er bij hogere toeren de RPM teveel fluctueerd. Die X27 steppers zijn zeer vlotte stappenmotoren dus de naald begint dan enorm te flipperen wat niet fijn is om af te lezen.
Ik bereken daarom bij élke puls het toerental en tel dat bij een lopend gemiddelde.
RPM=RPM*0,999+currentRPM*0.001

Daar valt nog een klein beetje aan te tweaken omdat dat dan weer voor wat overgevoeligheid zorgt bij hogere toerentallen. Ik kan er bijv voor currentRPM>5000 van maken 0.9998 en 0.0002. Zoals ik eerder schreef werkt die code met de pulsgenerator prima tot 12.000+ RPM.

Een andere optie die ik heb gebruikt (zelfde trucje als bij mijn snelheidsmeter) elke puls de currentRPM berekenen en los daarvan bijv 10 per seconde de currentRPM te sampelen, dat in een array te zetten en dan het gemiddelde van de array te pakken. Werkt uitstekend voor de KM teller (constant een 0,5s snelheid refreshrate) maar minder goed dan het lopende gemiddelde in dit geval.

Morgen heb ik weer tijd en ga ik eens wat rommelen met de hardware om te kijken of het daar aan ligt.


[...]


Omdat ik nog bezig ben met de toerenteller zit de boel nog in een soort van beta opstelling. Hall sensor (Andere Arduino dan de toerenteller) zit voorlopig nog bij het achterwiel en de kabel daarvan loopt langs een van de bobines. Als ik bij het stoplicht sta ga ik soms 380km/h :+
ik zou je een goede tip geven om adaptive het gemidelde te brekenen, en zo bij hoge toeren, minder schokkerig is.

uitgaande dat currentRPM, je werkelijke input van je RPMs zijn.
en RPM je output
Java:
1
2
3
4
5
6
7
8
9
10
long lstRPM=0; // plaats dit voor Setup();
long RPM; // plaats dit voor Setup();
int adaptiveTune;

void loop(){
adaptiveTune=map(currentRPM, 0, 12000, 100, 1);  // nu ga je bij 0 toeren in stappen van 100 //contstrainen, geleidelijk tot aan 12000 toeren, dan in stappen van 1. dit kun je nog wat tweaken wat het smoothste werkt.

RPM=constrain(currentRPM, lstRPM-adaptiveTune, lstRPM+adaptiveTune); // snelle manier om een vloeiender resultaat te krijgen, je RPM waarde zal dus nooit hoger of lager uitvallen dan: laasteRPM waarde + je adaptiveTune. 
lstRPM=RPM;// onthoud laatse RPM waarde voor volgende loop
}


probeer dat maar eens, en je zult merken dat dat perfect werkt, voor waardes die ruis achtig zijn. bovendien werkt het veel sneller dan gemidelde berekenen.

Ben niet slim, maar wel dom


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
heggico schreef op woensdag 24 mei 2017 @ 12:50:


In dat geval moet je pin 1 en 2 van de optocoupler omdraaien, die diode zit nu in sper. (pin 2 altijd 12V, pin 1 schakelt naar 0, dus die omdraaien). Maar dan zit ook de diode en zener nog verkeerd om, dus het handigste is om ff O/W en W te verwisselen naar je schema toe.
Ik heb de draden naar O/W en W omgedraaid. Ik denk dat hij nu meer pulsen oppikt omdat hij niet meer stopt bij 4000rpm. Helaas zal er teveel ruis zijn of mijn code gewoon niet goed in het smoothen van de naalduitslag. Stationair (1200rpm) tot ongeveer 3000rpm springt de naald behoorlijk willekeurig omhoog. 3500rpm is ongeveer de sweetspot waarbij de naald stabiel het toerental aangeeft. Bij zo'n 5500rpm is de naald weer flink aan het flipperen maar zie je hem enigszins 'zoeken' naar het juiste toerental van 5500pm. Daarboven weer willekeurig omhoog springen. Bij 6500rpm (snelweg 120km/h) is het toerental inmiddels van de schaal verdwenen en geeft de wijzer de maximale waarde 12,500RPM aan.
itcouldbeanyone schreef op zaterdag 27 mei 2017 @ 01:13:

probeer dat maar eens, en je zult merken dat dat perfect werkt, voor waardes die ruis achtig zijn. bovendien werkt het veel sneller dan gemidelde berekenen.
Die map functie kende ik dus helemaal niet. Ik ga eens kijken wat dat doet met het apparaat. Er staat trouwens adaptiveAvarage, waar is dat het gemiddelde van?

Iemand trouwens nog tips hoe ik ruis/valse interrupt triggers kan voorkomen?

-edit
ah dat constraint() kwartje valt pas net. Grotere afwijkingen dan x RPM gewoon niet meetellen. Geniaal daar had ik nog niet aan gedacht. Heb dat erin gestopt in combinatie met verschillende lopende gemiddelden per toerental range om in te spelen op de motor karakteristiek. Op het droge met de pulsgenerator is het nu een superstabiele meter met silky smooth naalduitslag. Binnenkort maar weer terug op de motor schroeven en kijken wat het doet. _/-\o_

[ Voor 16% gewijzigd door leecher op 27-05-2017 22:06 ]

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • itcouldbeanyone
  • Registratie: Augustus 2014
  • Laatst online: 12-09 21:49
leecher schreef op zaterdag 27 mei 2017 @ 17:43:
[...]


Ik heb de draden naar O/W en W omgedraaid. Ik denk dat hij nu meer pulsen oppikt omdat hij niet meer stopt bij 4000rpm. Helaas zal er teveel ruis zijn of mijn code gewoon niet goed in het smoothen van de naalduitslag. Stationair (1200rpm) tot ongeveer 3000rpm springt de naald behoorlijk willekeurig omhoog. 3500rpm is ongeveer de sweetspot waarbij de naald stabiel het toerental aangeeft. Bij zo'n 5500rpm is de naald weer flink aan het flipperen maar zie je hem enigszins 'zoeken' naar het juiste toerental van 5500pm. Daarboven weer willekeurig omhoog springen. Bij 6500rpm (snelweg 120km/h) is het toerental inmiddels van de schaal verdwenen en geeft de wijzer de maximale waarde 12,500RPM aan.


[...]


Die map functie kende ik dus helemaal niet. Ik ga eens kijken wat dat doet met het apparaat. Er staat trouwens adaptiveAvarage, waar is dat het gemiddelde van?

Iemand trouwens nog tips hoe ik ruis/valse interrupt triggers kan voorkomen?

-edit
ah dat constraint() kwartje valt pas net. Grotere afwijkingen dan x RPM gewoon niet meetellen. Geniaal daar had ik nog niet aan gedacht. Heb dat erin gestopt in combinatie met verschillende lopende gemiddelden per toerental range om in te spelen op de motor karakteristiek. Op het droge met de pulsgenerator is het nu een superstabiele meter met silky smooth naalduitslag. Binnenkort maar weer terug op de motor schroeven en kijken wat het doet. _/-\o_
Sorry mijn fout, adaptiveAvarage moet adaptiveTune zijn

Anders werkt het niet.

Ik zat een beetje te twijfelen welke benaming ik zou gebruiken om duidelijk te maken, vandaar .

Ik gebruik dit zelf ook voor een ac inductie motor controller, alle ruis in een keer weg

[ Voor 5% gewijzigd door itcouldbeanyone op 27-05-2017 22:57 ]

Ben niet slim, maar wel dom


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
Helaas nog steeds geen succes. Met de pulsgenerator werkt het perfect, op de motor totaal niet. Toerental blijft flipperen ondanks de betere code en de 4,7k pullup weerstand op de input pin ipv input_pullup methode.
Toerental is te hoog en nog steeds erg instabiel.


Correctie, ik had hem blijkbaar niet goed aangesloten. Ik had het deel voor de optocoupler aangesloten op de + en - polen van een van de bobines. Het werkt tot 4000rpm perfect wanneer het is aangesloten op de - pool van de bobine en GND van de motor. Boven de 4000rpm wil hij niet echt meer aangeven tenzij je op zo'n 5500rpm komt dan gaat hij nog richting 4500pm maar echt veel meer wil niet.

Iemand nog suggesties?

[ Voor 47% gewijzigd door leecher op 31-05-2017 16:14 ]

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Zit de GND van de Arduino aan de GND van de motor accu of heeft deze een aparte voeding?

Als ze aan elkaar zitten heb je eigenlijk geen optocoupler nodig (maar uiteraard wel een bescherming tegen te hoge spanningen).

Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
Ploink schreef op woensdag 31 mei 2017 @ 20:23:
Zit de GND van de Arduino aan de GND van de motor accu of heeft deze een aparte voeding?

Als ze aan elkaar zitten heb je eigenlijk geen optocoupler nodig (maar uiteraard wel een bescherming tegen te hoge spanningen).
Arduino krijgt prik van zo'n stepdown converter:

Afbeeldingslocatie: https://s9.postimg.org/8qmrjazwv/conv.jpg

Deze hangt aan het 12v systeem van de motor en met de GND direct op de accu. Ik was in de veronderstelling dat die optocoupler wenselijk is vanwege ruis door de bobines ed.

Als dat niet uitmaakt (is dat wat je zegt?) misschien is het dan handiger om een simpele npn transistor ertussen te stoppen in plaats van een optocoupler?

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • itcouldbeanyone
  • Registratie: Augustus 2014
  • Laatst online: 12-09 21:49
en wat nou als je een weerstand over C1 plaatst,

je hebt ook kans dat je opto te traag is met afschakelen op hoge frequentie, waardoor je de boel niet meer goed uit kan lezen

met een weerstand over C1 , pak en beet 100 Ohm per volt wat er over die pinnen staat van je input van de opto.
kun je er voor zorgen dat de interne led van de opto eerder afschakeld.

een transitor zou ik niet aanraden, tenzij je de gate goed beveiligd tegen elke vorm van ruis.
anderzijds is een transistor erg ruis gevoelig hiervoor

[ Voor 49% gewijzigd door itcouldbeanyone op 31-05-2017 23:24 ]

Ben niet slim, maar wel dom


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
De optocoupler is in principe snel genoeg want met de ne555 werkt het perfect. Ik gok dat de output van de CDI geen handige vorm heeft zoals SuperKris zei waardoor de led te lang blijft branden oid.

Ik heb een weerstand van 150ohm over c1 gezet maar geen resultaat.

Ik zat een beetje te googelen naar het uitlezen van non-square waveforms, zou ik een schmitt trigger kunnen gebruiken voor de optocoupler?

[ Voor 30% gewijzigd door leecher op 01-06-2017 12:06 ]

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • itcouldbeanyone
  • Registratie: Augustus 2014
  • Laatst online: 12-09 21:49
leecher schreef op donderdag 1 juni 2017 @ 00:24:
De optocoupler is in principe snel genoeg want met de ne555 werkt het perfect. Ik gok dat de output van de CDI geen handige vorm heeft zoals SuperKris zei waardoor de led te lang blijft branden oid.

Ik heb een weerstand van 150ohm over c1 gezet maar geen resultaat.

Ik zat een beetje te googelen naar het uitlezen van non-square waveforms, zou ik een schmitt trigger kunnen gebruiken voor de optocoupler?
hij is non square ? sorry dat had ik niet begrepen, weet je ook ongeveer wat de spanning is die hier afkomt ?

je kan proberen die zener diode te vervangen met een 2v7, 3v1 of een 3v9, het lijkt erop dat 4v7 een beetje te hoog is, waardoor je ledje aan blijft, ik weet het stiekum vrijwel zeker ;)

Ben niet slim, maar wel dom


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
itcouldbeanyone schreef op donderdag 1 juni 2017 @ 19:05:
[...]


hij is non square ? sorry dat had ik niet begrepen, weet je ook ongeveer wat de spanning is die hier afkomt ?

je kan proberen die zener diode te vervangen met een 2v7, 3v1 of een 3v9, het lijkt erop dat 4v7 een beetje te hoog is, waardoor je ledje aan blijft, ik weet het stiekum vrijwel zeker ;)
Er zit nu een 5,1v zener diode in. Wat is de redenatie dat er dan een diode in moet met een lagere zenerspanning? Moet er dan niet juist een in met een hogere waarde, zodat er pas hoger in de golf/piek spanning over de led komt te staan?

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • itcouldbeanyone
  • Registratie: Augustus 2014
  • Laatst online: 12-09 21:49
leecher schreef op donderdag 1 juni 2017 @ 22:02:
[...]


Er zit nu een 5,1v zener diode in. Wat is de redenatie dat er dan een diode in moet met een lagere zenerspanning? Moet er dan niet juist een in met een hogere waarde, zodat er pas hoger in de golf/piek spanning over de led komt te staan?
het zou ook hoger kunnen, het hangt er een beetje af hoe je input eruit ziet,

als je input maar heel ff boven 5.1 v uitkomt gaat maar heel kort je opto aan.
mischien haalt hij op hoge snelheid die 5.1V niet eens.
dan zou je je zener spanning moeten verlagen.

als je input bijna of helemaal niet onder die 5.1V uitkomt dan zou je zener spanning omhoog moeten
dan heb je een 5v6, 6v2 om te proberen.

Ben niet slim, maar wel dom


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
itcouldbeanyone schreef op donderdag 1 juni 2017 @ 22:47:
[...]

als je input maar heel ff boven 5.1 v uitkomt gaat maar heel kort je opto aan.
Daar zit misschien wel wat in als ik kijk naar hoe de CDI zijn input krijgt. Dit gaat mbv een nok op de krukas die langs een spoel draait. Geen idee wat de CDI doet met de output maar ik kan me zo voorstellen dat als die nok sneller voorbij komt de input van kortere duur is en de output dan ook. Heb helaas geen oscilloscoop en ken ook niemand die er een heeft. Ik heb ergens nog 3,3v zeners liggen dus ik kan het proberen.

Verder checkte ik nog maar eens wat info over zener diodes want ik ben op zich niet heel erg thuis in deze materie. Wat ik begreep is dat het soms handig kan zijn gebruik te maken van de voltage drop over de zener diode zodat je bijv constant die 5,1v kan gebruiken. In het schema dat ik heb gebruikt zit die zener gewoon 'in de lijn' ipv dat je er iets overheen zet. Zou het schema dan niet meer zoals dit moeten zijn?

Afbeeldingslocatie: https://s2.postimg.org/amsafadex/voltage_drop.png

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)


Acties:
  • 0 Henk 'm!

  • itcouldbeanyone
  • Registratie: Augustus 2014
  • Laatst online: 12-09 21:49
leecher schreef op donderdag 1 juni 2017 @ 23:48:
[...]


Daar zit misschien wel wat in als ik kijk naar hoe de CDI zijn input krijgt. Dit gaat mbv een nok op de krukas die langs een spoel draait. Geen idee wat de CDI doet met de output maar ik kan me zo voorstellen dat als die nok sneller voorbij komt de input van kortere duur is en de output dan ook. Heb helaas geen oscilloscoop en ken ook niemand die er een heeft. Ik heb ergens nog 3,3v zeners liggen dus ik kan het proberen.

Verder checkte ik nog maar eens wat info over zener diodes want ik ben op zich niet heel erg thuis in deze materie. Wat ik begreep is dat het soms handig kan zijn gebruik te maken van de voltage drop over de zener diode zodat je bijv constant die 5,1v kan gebruiken. In het schema dat ik heb gebruikt zit die zener gewoon 'in de lijn' ipv dat je er iets overheen zet. Zou het schema dan niet meer zoals dit moeten zijn?

[afbeelding]
een zener gaat pas geleiden tegen de pijl in, waneer je de spanning hoger hebt dan het aangegeven zener spanning, in dit geval dus 5.1v
de andere kant op in de richting van de pijl, heb je gewoon je normale voltage drop van je diode.


nu heb je je zener parralel staan, dit zou je input als het ware beveiligen dat je spanning nooit boven je zenerspanning komt.

net had je hem in serie staan, dan gaat er pas bij 5,2v 0,1 volt lopen naar je opto, en bij 5,0 v gaat er helemaal nix meer naar je opto en is je led dus uit.

je laatste schema zal alleen werken waneer je input beneden de benodigde spanning komt om het ledje te doven.

je eerste schema leek niet erg verkeerd, persoonlijk had ik zelf je eerste schema gepakt, en dan met een extra zener de ingang van je opto beveiligd tegen spanningspieken

Ben niet slim, maar wel dom


Acties:
  • 0 Henk 'm!

  • leecher
  • Registratie: December 2004
  • Laatst online: 26-09 12:35
Begrepen. Ik zal gewoon eens de 3,3 zener proberen.

Ik heb een betaalde 2025 WinRAR licentie (geen leugen)

Pagina: 1