Forum: Analoge Elektronik und Schaltungstechnik Zündkurve verstellen beim 2Takter


von Nick S. (kolbi)


Lesenswert?

Hallo,

Ich bastel an einem alten 2Takter (Vespa Pk50Xl Kat), der mittlerweile 
sehr hoch dreht, sich aber trotz guter Vergasereinstellung schlecht 
fährt. Vielleicht liegt das an der höheren Resonanzdrehzahl (irgendwo 
bei 10k, wird noch gemessen) wodurch die Zündkurve nicht mehr passt.

Ich würds halt gern genau wissen und den Zündzeitpunkt verstellen 
können.

Es ist eine Vespatronic verbaut, hab aber keinen Schaltplan zur CDI 
gefunden. Die CDI hat nur 2 Anschlüsse und zündet ohne Pickup 2x pro 
Umdrehung. Ab ca 4k upm geht die Vorzündung um 8° runter.


Schaltungstechnisch hab ich eh schon ein bisschen gebastelt, zb:

https://www.youtube.com/watch?v=0FbeTMbfEHU

aber CDIs etc sind mir noch zu kompliziert, ich hoffe ich blicke da bald 
besser durch.


Meine Idee für eine Zündwinkelverstellung für Zündungen mit Pickup wär, 
mittels Ladungspumpe am Pickup einen Kondensator mit Pulldown laden. Ein 
Levelmeter (zb LM3914) steuert einen NE555 für die Verzögerung. Je nach 
Drehzahl ist ein anderer Ausgang + Einstellpoti aktiv.

Kann das so funktionieren, oder gibts da bessere Ansätzte?

Lg, Nick

von Schreiber (Gast)


Lesenswert?

Nick S. schrieb:
> Ich bastel an einem alten 2Takter (Vespa Pk50Xl Kat), der mittlerweile
> sehr hoch dreht, sich aber trotz guter Vergasereinstellung schlecht
> fährt. Vielleicht liegt das an der höheren Resonanzdrehzahl (irgendwo
> bei 10k, wird noch gemessen) wodurch die Zündkurve nicht mehr passt.

Ich würde da mal über einen Satz neue Wellendichtringe nachdenken!

von Gerald M. (gerald_m17)


Lesenswert?

Die resonanzdrehzahl wird bei 2taktern von den stezerzeiten vom Zylinder 
und dem Auspuff bestimmt.
Hast du daran nichts geändert sollten sie noch dort sein wo sie waren.

von Nick S. (kolbi)


Lesenswert?

Da wurde einiges gemacht, verschiedene Zylinder mit verschiedenen 
Steuerzeiten, Resobirne, siehe Youtube Kanal.

Der Motor ist 100% dicht! Evtl geben die Membranplättchen bei den 
Drehzahlen auf, oder Verwirbelung, etc.

Trotzdem wärs schön die Zündkurve nach belieben zu verändern, rein aus 
neugierde wie sich das Fahrverhalten ändert.

lg

von Max D. (max_d)


Lesenswert?

Also im Jahr 2015 würde ich nichtmehr mit analogem Kram rumkleckern.
Man macht aus dem Signal von dem Pickup ein Rechteck (entweder via 
Komparator oder evtl. reicht schon der Schmitt-trigger am Eingang) und 
steuert dann den Zündwinkel in SW auf nem µC.
Da kannst du dann für jede Umdrehung deinen Winkel individuell 
festlegen.
Man könnte evtl. sogar eine automatische Optimierung nach Schema 
Klopfsensor anbringen (als "nicht-Bezin-Murkser" weiß ich nicht wie akut 
das bei nem 2 Takter is).

von user (Gast)


Lesenswert?


von Roller (Gast)


Lesenswert?


von Nick S. (kolbi)


Lesenswert?

Die EFI schaut interessant aus, und die Überlegung mit MC hatte ich auch 
schon bzw noch...

Eine Spannung zur Drehzahl generieren, die gemütlich mit einem Arduino 
Nano auslesen und aus einer Liste oder mit Funktionen die passende 
Verzögerung ausgeben...könnt mit bisschen Hilfe gehen. Nano hab ich da, 
DC Spannung ist auch am Bordnetz.

Analoge Vorschläge sind natürlich weiterhin willkommen :)

lg

von F. F. (foldi)


Lesenswert?

Cool, dass heute auch noch an den Mopeds geschraubt wird.
Wir hatten noch alles mechanisch gemacht. Auslass vergrößert und poliert 
...

von Max D. (max_d)


Lesenswert?

Nick S. schrieb:
> Eine Spannung zur Drehzahl generieren, die gemütlich mit einem Arduino
> Nano auslesen und aus einer Liste oder mit Funktionen die passende
> Verzögerung ausgeben...könnt mit bisschen Hilfe gehen. Nano hab ich da,
> DC Spannung ist auch am Bordnetz.

Es ist nötig die Flanken des Signals auszuwerten, irgendwie musst du ja 
die genaue Position der Kurbelwelle kennen ...

von Nick S. (kolbi)


Lesenswert?

Ich meine die Drehzahlberechnung soll er über den Ladezustand eines 
Kondensators abfragen, oder haut das mit den Interrupts besser hin? 
Positionsbestimmung über das wechselnde Feld an der Zündspulenwicklung 
(2x Zünden pro Umdrehung) oder Hallsensor.

Die max Drehzahl liegt bei ca. 15k, mit Reserven sollte alles auf 20k 
ausgelegt sein.

Kriegt das der Nano hin?


Lg

von Max D. (max_d)


Lesenswert?

Nick S. schrieb:
> Positionsbestimmung über das wechselnde Feld an der Zündspulenwicklung
> (2x Zünden pro Umdrehung) oder Hallsensor.

Es ist ziemlich sinnlos die Drehzahl zweimal zu berechnen.
Damit du einen Zündwinkel benutzen kannst musst du ohnehin die Position 
des Rotors zu jedem Zeitpunkt kennen. Daraus ergibt sich automatisch die 
Drehzahl.

Nick S. schrieb:
> Die max Drehzahl liegt bei ca. 15k, mit Reserven sollte alles auf 20k
> ausgelegt sein.

In den 50 µS die eine Umdrehung braucht macht der Arduino mit seinen 16 
MHz 800 Takte. Das ist jetzt nicht überragend viel sollte aber bei 
schlauer Programmierung locker reichen. Je nach Design wirst du aber 
u.U. den Interrupt für die Zündung "von Hand" in Assembler machen müssen 
(Takte zählen). Man könnte aber evtl. auch einfach den Compare-Ausgang 
benutzen, hängt eben vom Design ab.

Eines kann ich dir aber versichern: dieses sub-µs genaue Timing wirst du 
mit der arduino IDE nur schwer bis garnicht hinkriegen.
gcc und C (ohne ++) sind hier deine Freunde, aber keine Angst, ist nicht 
viel komplizierter als arduino.

Solltest du dich für den Weg via µC entscheiden kann ich dir auf jeden 
Fall mit der SW Unterstützung leisten.

von Nick S. (kolbi)


Lesenswert?

Danke für das Angebot Max.D, aber da müsstest du mir schon gewaltig 
helfen, da ich von Arduino und C kaum Ahnung habe :)


Am besten ich bau mal ein Modell, zb Lochscheibe auf einem DC Motor, 
Lichtschranken, und versuche die Drehzahl mit dem Arduino auszugeben.

Grob überrissen: Der Interrupt reagiert auf die Flanke, dann Timer 
setzen, auf nächste Flanke warten, Drehzahl ausrechnen...mal schaun wie 
weit ich komm :)

Lg!

von Max D. (max_d)


Lesenswert?

Nick S. schrieb:
> Der Interrupt reagiert auf die Flanke, dann Timer
> setzen, auf nächste Flanke warten, Drehzahl ausrechnen...

Also in diesem Speziellen Fall würde ich eher auf einen Timer-Capture 
hinarbeiten.
Das funktioniert so:
Der Timer läuft endlos im Kreis (ein Durchlauf muss länger als eine 
Umdrehung des Motors sein). Das Signal von dem Sensor kommt an den 
Capture Input. Wenn jetzt der Sensor auslöst, dann wird der aktuelle 
Timerwert in das Capture Register gespeichert und der Timer läuft 
unbeirrt weiter. Gleichzeitig wird für die CPU ein Interrupt ausgelöst.
In diesem Interrupt liest du jetzt das Capture register ein und 
vergleichst es mit dem Wert vom letzten mal.Aus der Tick-zeit des timers 
und der anzahl der Ticks zwischen den zwei events bekommst du die zeit 
für eine Umdrehung und die Drehzahl ist einfach der Kehrwert.

Dieses Verfharen hat den großen Vorteil, dass es schon für den 
Zündwinkel vorbereitet ist, den machst du nämlich indem du aus dem 
Inhalt des Capture-Registers und der gewünschten Verzögerung den Wert 
für ein Compare-Match register berechnest an desssen zugehörigen ausgang 
der Auslöser für die Zündung hängt.

von Max D. (max_d)


Lesenswert?

GROßES FAIL von mir: Die 20k bei dir beziehen sich auf RPM, ich hab die 
aus Gewohnheit als Hz interpretiert facepalm

Damit ist das Timing natürlich extrem entspannt ^^

von Nick S. (kolbi)


Lesenswert?

Cool, so erklärt versteh ichs einigermaßen :)

Das Rad/Lichtschranken-Modell ist aufgebaut, gibt mit NE555 ein sauberes 
Rechteck aus, und der Nano steckt auch schon daneben.

Ich guck mal was sich zum Capture Input auf der Arduino HP finden lässt, 
evtl hat jemand ein Stück Code zum vertraut machen?

Lg

von Max D. (max_d)


Lesenswert?

Also dadurch, dass ich zu dumm war RPM als solche zu erkennen und damit 
20k als Hz interpretiert habe hab ich hier etwas die Pferde scheu 
gemacht.

So kann es sein, dass man den Timer garnicht weit genug runterskalieren 
kann um bei niedrigen RPM noch auf einen Umlauf zu kommen.
Was ist denn die minimale Drehzahl bei der der Motor läuft (anders als 
ein elektrischer kann er ja nicht stehen) ?

Ansonsten: Als avr-gcc Nutzer kann ich jetzt zu dem arduino-Teil der 
Sache weniger sagen, aber allgemein kann ich dir das Datenblatt des 
verwendeten µC (auf dem nano sitzt glaube ich ein ATmega328 drauf) ans 
Her(t)z legen.
Die Atmel Blätter sind eigentlich recht sinnvoll strukturiert.

von Nick S. (kolbi)


Lesenswert?

Leerlaufdrehzahl sind knapp 1k upm.

Ich hab da schon drüber gelesen dass bei niedrigen Drehzahlen die 
Impulslänge, und bei hohen Drehzahlen die Zeit bis zum nächsten Impuls 
gemessen wird.

Warum funktioniert das nicht mit längeren Zeiten mit dem Timer, kann mir 
das jemand erklären?

Edit: Jedesmal wenn der Timer voll ist, soll er das in einer Liste 
vermerken, dann kann man am Ende einfach zusammenrechnen und hat die 
Zeit/Drehzahl. Geht das?

Lg!

: Bearbeitet durch User
von Max D. (max_d)


Lesenswert?

Nick S. schrieb:
> Warum funktioniert das nicht mit längeren Zeiten mit dem Timer, kann mir
> das jemand erklären?
>
> Edit: Jedesmal wenn der Timer voll ist, soll er das in einer Liste
> vermerken, dann kann man am Ende einfach zusammenrechnen und hat die
> Zeit/Drehzahl. Geht das?

Also erstmal wieso der Timer nicht unendlich langsam sein kann: Es gibt 
nur prescaler bis 1024. Damit bekommt der Timer alle 1024 Systemtakte 
einen Puls, bei 16 MHz sind dass dann 15625 Hz (~15,6 kHz). Zusammen mit 
dem maximalen wert des Timer (timer 1 hat 16-Bit) von 65536 ergibt sich 
damit eine maximale Umlaufzeit von ~4s. In deinem Fall also durch die 
Verwendung von Timer 1 lösbar. Mit Timer 0 oder 2 wären dass (8-Bit) 256 
Ticks und damit min. ~60 Hz und damit mindestens 3600 RPM, also nicht 
direkt nutzbar.

Deine Idee mit dem SW-Teiler ist gut, allerdings verlängert dieser 
Zähler natürlich die Zeit die im Interrupt verbracht wird und behindert 
damit (zumindest theoretisch, bei den ~300 Hz die der Motor maximal 
dreht ist es egal) die Einstellung der Zündung.

Was du aber ohnehin machen müssen wirst ist den Prescaler nachzustellen 
wenn sich die Drehzahl massiv ändert. Weil wenn du den Scaler fest auf 
1024 lässt (damit der Leerlauf gut efasst wird), dann hast du bei 
maximaler Drehzahl nurnoch ~50 Inkremente per umdrehung, das taugt nich 
wenn du den Winkel im Sub-Grad-Bereich justieren willst.

Das klingt zwar jetzt hier kompliziert, läuft aber auf eine Handvoll 
if() im Code raus.

von Nick S. (kolbi)


Lesenswert?

Wenn ich richtig gerechnet habe, dauert 1 Umdrehung bei Standgas (1kUpm) 
60 Millisekunden, bei 20kUpm 3ms.

Mit Timer1 Prescale 64 (4us pro  Tick) hätte ich 750 Ticks bei 20kUpm.

Nach 524,288ms ist der Timer voll, das entspricht ca 8 Umdrehungen bei 
Standgas?

Oder gleich Prescale 8, 0,5us/Tick und max 65,536ms. Wenn der Timer voll 
wird, weiß ich dass knapp unter Leerlaufdrehzahl bin, dann soll der 
Arduino die Zündung auf Leerlaufeinstellung stellen und erst wieder mit 
dem Zählen weitermachen bis die neue Flanke vom Pickup kommt.?

lg

: Bearbeitet durch User
von Max D. (max_d)


Lesenswert?

Nick S. schrieb:
> Mit Timer1 Prescale 64 (4us pro  Tick) hätte ich 750 Ticks bei 20kUpm.
>
> Nach 524,288ms ist der Timer voll, das entspricht ca 8 Umdrehungen bei
> Standgas?

Der Timer läuft bei 65536 über, also schon nach 260 ms. Wäre aber egal.
Die Einstellbarkeit wäre dann in 0,5° Schritten, wenn dir das reicht, 
dann passt das.

Nick S. schrieb:
> Oder gleich Prescale 8, 0,5us/Tick und max 65,536ms. Wenn der Timer voll
> wird, weiß ich dass knapp unter Leerlaufdrehzahl bin, dann soll der
> Arduino die Zündung auf Leerlaufeinstellung stellen und erst wieder mit
> dem Zählen weitermachen bis die neue Flanke vom Pickup kommt.?

Gleicher Fehlschluss, Überlauf schon nach 32 ms.

Was du aber sehr einfach machen kannst wäre, dass du bis ~2k RPM (evtl. 
mit Hysterese) mit 64 skalierst und danach, dann umschaltest. Quasi eine 
Gangschaltung für den Timer.
Eine weitere Möglichkeit wäre noch den Quarz zu tauschen und mit 8 MHz 
Sys-Clock zu arbeiten, damit wäre mit prescale 8 eine Laufzeit von ~64 
ms drinnen, also ideal für Leerlauf.

von Nick S. (kolbi)


Lesenswert?

Jetzt bin ich ein bisschen verwirrt, dachte bei Prescale 8 ist der
Timer erst nach 65,53ms voll: http://playground.arduino.cc/code/timer1

Aber es würden auch 32ms reichen. Timer voll heist dann 
Leerlaufvorzündung, ab ca 2kUpm kann man dann Vorzündung feineinstellen.

Ansonsten würde mir 1/2 Grad Auflösung mit Prescale 64 genügen. 
Hauptsache einfach, sonst hab ich keinen Überblick mehr :)

lg

von Max D. (max_d)


Lesenswert?

Ich weiß ehrlichgesagt nicht wie der Arduino-Kerl zu diesen Werten 
kommt.
Timer 1 hat 16 Bit und damit 2^16 = 65536 Schritte.
Wie er in diesen 16 Bit jetzt 65536µs/0,5µs = 131072 Schritte speichern 
will ist mir schleierhaft. Vielleicht teilt er in der lib ja irgendwie 
nochmal die Interrupts runter, keine Ahnung.

von Nick S. (kolbi)


Lesenswert?

Ok, dann Prescale 64, ist mir genau genug.

Also ganz grob:

Interrupt reagiert auf Pickup-Flanke ->

Wenn Timer 0 oder größer erwarteter Leerlaufzeit: Motor dreht zu langsam 
-> CDI sofort zünden

Sonst: Drehzahl ausrechnen, Vorzündung ausrechnen/setzen, Timer 
nullsetzen.

Bei erreichen der gesetzten Zündzeit die CDI funken lassen.



?!

: Bearbeitet durch User
von Nick S. (kolbi)


Lesenswert?

Alles blödsinn, glaub mit Prescale64 wärs so besser:

Pickup steht zb auf OT, Arduino startet, und wartet aufs erste 
Pickupsignal->

Timer auslesen, Drehzahl ausrechnen, Vorzündung ausrechnen und Flag? 
setzen, dann Timer auf 0 zurücksetzen.

Bei erreichen der Flag zünden, warten bis Pickupsignal und das Spiel 
beginnt von vorn...

Richtig?

: Bearbeitet durch User
von Max D. (max_d)


Lesenswert?

Nick S. schrieb:
> Wenn Timer 0 oder größer erwarteter Leerlaufzeit: Motor dreht zu langsam
> -> CDI sofort zünden

Damit zerschießt du dir potentiell den Motor, auch wenn der Motor zu 
langsam läuft musst du ihn noch richtig zünden.
Höchstens kannst du die Zündung ganz aussetzen wenn er zu langsam ist.

Nick S. schrieb:
> Pickup steht zb auf OT, Arduino startet, und wartet aufs erste
> Pickupsignal->
>
> Timer auslesen, Drehzahl ausrechnen, Vorzündung ausrechnen und Flag?
> setzen, dann Timer auf 0 zurücksetzen.
>
> Bei erreichen der Flag zünden, warten bis Pickupsignal und das Spiel
> beginnt von vorn...

Also: Der Timer wird "für dich" von der Hardware in genau dem Augenblick 
ausgelesen in dem das Pickup-Signal kommt. Zurücksetzen musst du ihn 
nicht (ist sogar kontraproduktiv). Stattdessen nimmst du den Inhalt des 
Capture-Registers (in dem ist der Wert der zum Pick-Up Zeitpunkt im 
Timer war) und addierst auf ihn die berechnete Zeit zwischen pickup und 
Zündung dazu. Das Ergebnis kommt in das Compare-Match register. Wenn der 
Timer jetzt diesen Wert erreicht hat, dann löst er selbsttätig die 
Zündung aus und informiert dich via interrupt. Du musst dann via Code 
die Auslösung wieder abschalten, damit sich energie für die nächste 
Runde aufbaut.

Was hier (hoffentlich) auffält: Der µC muss Zeit haben den Zündzeitpunkt 
festzulegen nachdem er das Pickup-Signal bekommen hat. Wenn die Zündung 
erfolgen müsste bevor er fertig gerechnet hat, dann findet die nicht 
statt.
Du kannst dem µC das ganze erleichtern indem du das Pickup Signal eine 
gewisse Zeit vor der Zündung ansetzt (z.B. im unteren Totpunkt). Der 
Abstand lässt sich leicht mit einer Konstanten rausrechnen.


Was ich noch anmerken wollte: "Richtige" ECUs werten zusätzlich die 
Stellung der Drosselklappe aus. Das könnte dir auch hier einen weiteren 
Effizienzgewinn bringen.

von Nick S. (kolbi)


Lesenswert?

Cool, du hast da echt feine Tips!


Pickup auf UT hab ich mir mittlerweile auch schon gedacht, ein Poti 
zwischen den Vergaserzug wär auch kein übertiebener Aufwand...aber eins 
nach dem anderen :)

Zündung bei Buffer overflow ausschalten ist eine gute Idee. Die nötige 
ca 1 Umdrehung pro Sekunde fürs starten ist ausreichend, das krieg ich 
beim ankicken locker hin.

Jetzt bin ich endlich mal auf einen gscheidn Link gestoßen:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR


Und hab gleich meine erste Frage:

Wie kann ich das TCCR auf Prescale 64 setzen? TCCR1 = ??


Lg

: Bearbeitet durch User
von Max D. (max_d)


Lesenswert?

Das machst du mit
1
 TCCR1B |= (1<<CS11)|(1<<CS10);

Diese Information kommt (genau wie alle Register-Infos) aus dem 
Datenblatt des AVRs http://www.atmel.com/images/doc8161.pdf
Ab Seite 113 geht es um Timer1. Auf Seite 136/137 ist TCCR1B mit den 
Prescaler-Bits behandelt.

Im Allgemeinen dürfte die Antwort 80% aller Fragen die dir während dem 
Coden kommen in dem DB sein.

von Nick S. (kolbi)


Lesenswert?

Vom Datenblatt verstehe ich vielleicht 10% :(

Irgendwie tu ich mir schwer Seiten zu finden, wo Codefunktionen 
ausführlich und animiert dargestellt werden. Mich in die Programmierung 
einarbeiten dauert mind 1 Jahr, so lange will ich die Motorentests nicht 
auf Eis legen.

Gibts denn nicht schon fertige Sketches die auf meine Anwendung passen, 
haben doch bestimmt schon tausend Leute vorher gemacht??

Lg

von Max D. (max_d)


Lesenswert?

Hier hat jemand schonmal was vergleichbares gebastelt, aber am Ende sind 
die Infos etwas löchrig.
Beitrag "Vollprogrammierbare Zündanlage für 1Zylinder 2 und 4 Takt Motoren"

von Nick S. (kolbi)


Lesenswert?

Das schaut interessant aus, sind das hier die richtigen Daten dazu:

https://docs.google.com/file/d/0BxQHqG9HPIj3UFdwNXNuRUt2UnM/edit

?

Wie bekomme ich den Code auf den Nano, hab bisher nur ein bisschen mit 
der Arduino SW gearbeitet?

Kann ich den Vespatronic-Stator mit 4 Spulen / 2 Zündungen pro Umdrehung 
dann mit einer "normalen" CDI mit 3 Anschlüssen verwenden?

Danke schonmal für die Infos!

von Nick S. (kolbi)


Lesenswert?

Ich wär für den Anfang schon begeistert wenn ich zumindest einen 
Drehzahlmesser Sketch nach Max.Ds Angaben hätte:



Der Timer läuft endlos im Kreis (ein Durchlauf muss länger als eine 
Umdrehung des Motors sein). Das Signal von dem Sensor kommt an den 
Capture Input. Wenn jetzt der Sensor auslöst, dann wird der aktuelle 
Timerwert in das Capture Register gespeichert und der Timer läuft 
unbeirrt weiter. Gleichzeitig wird für die CPU ein Interrupt ausgelöst.
In diesem Interrupt liest du jetzt das Capture register ein und 
vergleichst es mit dem Wert vom letzten mal.Aus der Tick-zeit des timers 
und der anzahl der Ticks zwischen den zwei events bekommst du die zeit 
für eine Umdrehung und die Drehzahl ist einfach der Kehrwert.


Kann mir jemand dabei helfen? Ein Modell mit Lochscheibe (12Löcher) und 
Lichtschranken mit NE555 Trigger ist aufgebaut, kann auch gerne Bilder 
hochladen wenns funktioniert.

Lg!

von Max D. (max_d)


Lesenswert?

Der Link von dir enthält Code für einen PIC, das passt nich zum arduino.

Nick S. schrieb:
> Ein Modell mit Lochscheibe (12Löcher) und
> Lichtschranken mit NE555 Trigger ist aufgebaut, kann auch gerne Bilder
> hochladen wenns funktioniert.

Das ist auf jeden Fall keine schlechte Idee.

von Nick S. (kolbi)


Lesenswert?

Kann mir niemand mit dem Code helfen??

von Max D. (max_d)


Lesenswert?

Ich besitze selber keinen arduino und hab dem entsprechend auch nicht so 
viel mit der IDE am Hut.

Im Allgemeinen brauchst du das:
Im setup:
1
TCCR1A = 0;
2
TCCR1B = 0b11000011;
3
TIMSK1 = 0b00100111;

Dann musst du die Interrupts global freischalten, beim gcc geht das mit 
"sei();" unter arduino weißich nicht.

In dem Capture Interrupt kannst du für den anfang einfach die Timerwerte 
auf die UART ausgeben (das is unter arduino ja einfach mit 
Serial.print).

Die Formel um von dem rohen Tick-Wert auf RPM zu kommen sieht übrigens 
etwa so aus:
RPM = (1/(Ticks*64/F_CPU))*60  ohne Gewehr auf Richtigkeit ;)
Damit kannst du erstmal mit dem Taschenrechner deine Messwerte prüfen.

von Nick S. (kolbi)


Lesenswert?

Es stimmt! Mit 750 Ticks sagt mein Taschenrechner:

(1/(750*64/16000000))*60=20000 :)

Und wenn ich das richtig verstanden habe, und der Timer 65536 Ticks 
schafft, dann funktionierts runter bis 228 U/min.

Aber je mehr du mir erklärst, desto mehr schreckt es mich ab, bin 
vielzuweit weg das zu lernen...und optimier lieber mal meine 
Grundschaltungskenntnisse.


Falls du einen fertigen Code hast/teilen willst, gib bitte Bescheid, 
würd mich sehr freuen!

lg

: Bearbeitet durch User
von Nick S. (kolbi)


Lesenswert?

Es gibt mittlerweile kleine Fortschritte und sogar ein Bild:

Beitrag "Re: Arduino Drehzahlmesser"

Bitte, spendet Code zur Modernisierung alter Motoren! :)

von Nick S. (kolbi)


Lesenswert?

Das Programm läuft, aber ich schaffe es einfach nicht das Pickupsignal 
auszuwerten, bekomme keine genaue Anzeige :(

Das Signal schwankt um die 2V mit vielen kleineren Ripples, RC Filter 
habe ich bereits verschiedene probiert, ohne Erfolg.

Kann mir da jemand weiterhelfen, zB RC dimensionierung und richtige 
Kondensatorart?

lg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.