Forum: Mikrocontroller und Digitale Elektronik Vollprogrammierbare Zündanlage für 1Zylinder 2 und 4 Takt Motoren


von Hyronimus H. (avr_by_ronny)


Angehängte Dateien:

Lesenswert?

Ich bin gerade dabei eine CDI Zündanlage zu entwickel die für 1 Zylinder 
2 und 4 Takt Motoren geeignet ist.

Die Zündelektronik besteht aus einem Atmega8 der von einem 
Hallsensor(latch) das signal bekommt (dies könnte man auch für 
Unterbrecher konfigurieren).
Auf dem Atmega erfolg die Drehzahlmessung und dann die Zündzeitpunk 
errechnung.
Der Zündzeitpunkt darf Maximal +-50° von OT betragen. Wobei ab 19000rpm 
nur noch Maximal 45° vor OT da sonst die Berechnung nicht mehr im 
Zeitfenster liegt.
Der geber Impuls muss dabei 60° vor OT entstehen mit einer steigenden 
Flanke. Und auf OT ein zweiter Impuls mit einer Fallenden flanke. So 
wird gewärleistet. Dass der Zündfunke beim starten des Motors auf OT 
fällt.

Es kann im betrieb zwischen 3 unterschiedlichen Zündkurven gewählt 
werden.
Die neue Kurve wird innerhalb einer Umdrehung geladen.
Maximal Drehzahl ist mit 20000rpm für eigentlich alle halbwegs normalen 
Motoren ausreichend.

Zu dem System gehört eine Software die ich in C# geschrieben habe.
Mit ihr können Zündkurven auf dem PC gespeichert und geladen werden.
Zu dem werden die Kurven Grafisch in einem Diagramm angezeigt.
Es können Kurven zur Zeit Linear Interpoliert werden. Später folg noch 
eine Kubische Spline Interpolation.

Mit hilfe eines einfachen RS232 Programmer oder später per USB werden 
die Daten auf den Atmega8 geschrieben. Wobei ein von mit entwickeltes 
Komunikations Protokoll verwendet wird.
Es wird nicht der Atmega neu programmiert!

Einganz wichtiger Punkt ist die Veränderung der Aktiven-Kurve wärend des 
Betriebes.
Also wenn der Motor läuft lässt sich in die Zündkurve eingreifen und 
Optimieren.

Die erzeugung des Zündfunkens folgender Maßen ab.
Die Grundplatte(Lichtmaschien) liefert eine 300v wechsel Spannung (bei 
Motorrädern und Krads so üblich)
dies wird gleichgerichtet und in einem "WIMA MKP10" gespeichert.
Der Atmega ermittelt den Zündzeitpunkt und schaltet über einen "MOC3032" 
einen "TIC246M" (Wechselspannungs Tick).
Der Kondensator bildet dann einen Schwingkreis mit der Zündspule. (CDI)

Mit der richtigen Elektronik könnte man auch eine TCI Zündung 
realisieren.


Mein Problem ist die Elektronik.
Ich möchte den Prototypen schon gerne auf eine Geätzteplatine löten.
Allerdings kann ich keine Layouts zeichnen. Eagle habe ich mir mal 
angeschaut steige ich aber nicht durch.
Den Schaltplan werde ich die Tage mal von hand zeichnen oder so und dann 
Anhängen.

Also wenn jemand interesse hat so was zu machen könnte er sich ja bei 
mir melden.
Ich Plane auch eine version für Modellmotoren zb Flugzeuge mit 
Kettensägenmotoren oder so was in der richtung.

Und Kritik zwecks Optik von der GUI würde ich micht freuen.
Dies ist immerhin mein erstes Programm für PC.

von Hyronimus H. (avr_by_ronny)


Angehängte Dateien:

Lesenswert?

So ich habe mich mal in Eagle versucht und das ist bis jetzt herraus
gekommen.

Ich hab keine Wert an die Bauteile geschrieben da ich nicht genau weiß
was denn zu empfehlen ist.

von bitte löschen (Gast)


Lesenswert?

Das Projekt macht einen sehr interessanten Eindruck, auch wenn ich kein 
Modellbauer oder Krad-Fahrer bin. Wenn ich mehr Zeit hätte, würde ich 
rein aus Interesse mitmachen wollen.

Für die Eingabe der Kurven (die vielen Edit-Controls links) würde ich 
mir etwas dynamisches einfallen lassen, wie eine Zeile zum Eingeben 
neuer Werte und einer Listbox mit den Einträgen und "Editieren", 
"Löschen", etc.. im Kontext-Menü.

Im "Verbinden"-Dialog würde ich einen ganz normalen Progress-Bar nehmen 
und mir die Mühe machen, den prozentualen Anteil der Übertragung zu 
berechnen und anzuzeigen.

Hauptfenster: "interpolieren" statt "Interpolieren"
Im Config-Dialog: "Hinweis" statt "Hinweiß"

Eine Frage zur Schaltung fällt mir ein:
Warum hast Du PD2 (INT0) und PD3 (INT1) verbunden?

von Hyronimus H. (avr_by_ronny)


Lesenswert?

Sorry erstmal für die Rechtschreibfehler. Werde dass natürlich sofort 
verbessern.

Int0 und Int1 sind zusammen, weil Int0 auf steigende Flanke reagiert und 
Int1 auf fallende Flanke.
Wenn der Motor aus ist, ist nur Int1 aktiv und der Interrupt für die 
zündung auf OT wird unabhängig der Drehzahl ausgelöst.
Wenn die Drehzahl auf über 250rpm steigt gibt es keine Timer1 Overflows 
mehr und Int1 wird deaktiviert ,Int0 aktiviert. Damit bekommt das 
Programm dann messbare Werte und kann den ZZP berechnen.
Also Int1 ist auf OT und Int0 60° vor OT.


Die "Edit Controls" also Textboxen lassen sich per Pfeiltasten steuern.
Pfeil-Links,Rechts nächste, vorherige Textbox.
Pfeil-Hoch,Runter Wert +- 0,1°.

Das es nervig ist alle wert einzutragen ist mir klar. Deshalb kann man 
ja Interpolieren. Mit 6 werten kann man schon verwendbare Kurven 
erzeugen.

Wenn man auf Datei klick kann man dort zwischen
Neu
Öffnen
Speichern
Speichern Unter

wählen.
Bei Neu wird derzeit die ausgewählte kurve gelöscht sofern gespeichert.
Speichern kann man die Kurven im *.zzp format ist aber uncodiert.

von Hyronimus H. (avr_by_ronny)


Lesenswert?

Wenn man auf Verbinden drückt sendet die Zündanlage ihren Namen in 
diesem Fall "MM" und die Version der Software "V 1.0.0".
Zu dem wird gesendet welches die Aktive-Zündkurve ist auf der Zündung.
Dies geschieht recht schnell und da fand ich eine Marquee Progressbar 
schöner. Hinter dem Wort Verbinde ist ein Punkt zu sehen dieser wird bis 
4 Punkte aufgebaut und beginnt dann wieder von vorne. Dies geschieht 
immer dann wenn Daten gesendet oder empfangen werden.

Wenn man die Kurven liest oder schreibt gibt es eine Progressbar die den 
tatsächlichen Vortschritt anzeigt.

von Tim (Gast)


Lesenswert?

Interessantes Thema. Wollte ich auch mal machen, habe aber keine zeit 
zum Programmieren...

Einige Anmerkungen zum Schaltplan:
- D1..4 ist ein 400V 1A Typ. Das könnte knapp werden.
 Ist zu der "300v wechsel Spannung" die Frequenz und der Strom bekannt?
- Jeder VCC Pin des AVR brauch einen 100nF(!)
- AVCC solltest du auch Anschließen (wie VCC mit 100nF)
- GND an AVR Pin 21 fehlt
- IC2 fehlt am Eingang 100nF
 Wo kommt die Spannung von Pad 6/7 her?
- Wie gross soll C3 sein?
- Bei T1 währen 180 Ohm am Gate empfehlenswert
- Ein Max232 für die RS232? oder gleich USB?
- Status Led?
- Eingänge zum Umschalten der Kurven?

Generell vermisse ich Bauteile zum Schutz der Schaltung.

Eine Drehzahlbegrenzung hast du vorgesehen?

von Alex R. (Gast)


Lesenswert?

> Ich Plane auch eine version für Modellmotoren zb Flugzeuge

Hatte auch schon soetwas ähnliches mal gehabt, allerdings ganz brutal in 
C geschrieben unter Windows und der dazugehörigen API.
Habs aber wieder verworfen, da ich feststellen musste, dass die 
elektronische Zündung für Glühzündermotoren aus dem Modellbau eigentlich 
ziemlich überflüssig bis hin zu sinnlos war, da diese nur noch mit 
Normalbenzin funktionierten und des öffteren überhitzten.

So ein Programm in Verbindung mit Zündkurven würden erst dann richtig 
Spaß machen, wenn man auch noch elektronische Miniatureinspritzdüsen 
hätte, mit denen man Vor-, Haupt-, Nach- und Mehrfacheinspritzungen 
realisieren könnte, erst dann würde das Ganze im wahrsten Sinne 
Turbo-Spaß machen.

von Hyronimus H. (avr_by_ronny)


Lesenswert?

Also die Hinweise über die schaltung werde ich mal einbeziehen.

Aber ganz ehrlich hmm Drehzahl begrenzung? Hast du schon mal versucht 
einen Motor mit ZZP 45° nach OT zum laufen zubekommen? Mehr als Standgas 
wird da nicht mehr drin sein.

Pad6/7 kommt vom Boardnetz/Lipo also ca 10-14V.
Die Wechselspannung ist von Modell zu Modell unterschiedlich.
Angenommen die Schungmasse hat 6 Festmagneten und eine HS Spule.
Dann ändert sich das Potential 6 mal pro umdrehung.
Bei unserem test Motor allerdings nur 2 mal.
10000rpm/60s * 2 = 333Hz
Schneller wird unser Motor nicht.
Aber bei Maximal Drehzahl
20000rpm/60s * 6 = 2000Hz
Also es müssten schon recht schnelle Dioden sein.
Ganz universell kann man es eh nicht machen da es auch Drehstrom 
Grundplatten gibt. Es müssten als eh verschiedene Platinen entwickelt 
werden.

Ich möchte aber erst mal nur das eine System zum laufen bringen und dann 
schauen.

Es gibt solche Systeme schon die liegen im Preis segment zwischen 
300-1000€.
Sind dann aber Komplettlösungen.

von Hyronimus H. (avr_by_ronny)


Angehängte Dateien:

Lesenswert?

So ich habe mir überlegt man könnte einen Zündkurven-Wahlschalter 
einbauen.
Dazu müsste man nur zwei Pins abfragen welcher auf Gnd ist, wenn keiner 
dann wird die Kurve1 genommen.
Zu dem würde ich der Software eine Funktione verpassen mit der man die 
Abfrage der Pins abschalten kann.
Wir die Zündung immer per UART umschalten werden. (Über einen Zweiten 
Atmega8 im Multicokpit mit RFM12 modul. Also per funk vom Notebook aus)

Den Drehzahlbegrenzer über die Zündkurvelaufen zulassen ist viel 
angenehmer als das mitmal der Zündfunke ausbleibt und unverbranter 
Kraftstoff in die Abgasanlage gelangt.

Ja bei Glühzündern ist der Aufwand wohl zugroß. Aber für 1:5 Bigscale 
Autos und Flugzeuge mit mehr als 30ccm lohnt es sich wieder.

Wie ich anfangs schon geschrieben habe Programmiere ich den EEPROM 
gerade per MAX232. Da muss ich aber immer eine extra Stromquelle mit 
rumschleppen.
Ich will jetzt so schnell wie möglich einen USB Programmer mit hilfe 
eines FT232R realisieren.
Allerdings habe ich mit son einem Chip noch nicht gearbeitet. Mal 
schauen was draus wird.

von Tim (Gast)


Lesenswert?

Der FT232R ist ziemlich Simpel zu beschalten.
Im Datenblatt gibt es genügend Beispiele.

Wegen der Spannungsversorgung lies mal:
http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23

Hast du den Hochspannungsteil schon mal getestet?
Ich habe da bedenken, dass T1 nicht mehr sperrt.

Als Quarz empfehle ich einen mit möglichst kleiner Bauform.

>Aber ganz ehrlich hmm Drehzahl begrenzung? Hast du schon mal versucht
>einen Motor mit ZZP 45° nach OT zum laufen zubekommen? Mehr als Standgas
>wird da nicht mehr drin sein.

Dachte das sei so leichter einzustellen. Und nein, mit Motoren kenne ich
mich nicht aus.

von Hyronimus H. (avr_by_ronny)


Angehängte Dateien:

Lesenswert?

So ich habe mir ein paar Gedanken gemacht und möchte die Zündanlage doch 
universeller gestalten.
Dazu brauche ich aber eine Schaltung die ein Signal aufarbeitet.

Ich habe schon etwas geschaut und denke das eine Schmidttrigger mit 
einem Optokoppler verwendet werden könnte.
Aber ich frage lieber die Elektroprofies wie sie das signal aus dem 
Anhang verarbeiten würden.

Das Signal würde von einem Pickup kommen.
Zudem soll von der Zündung zwischen Hall/Unterbrecher und Pickup 
umgeschaltet werden können.
Um Sicherheit rein zubringen das ganze mit Optokoplern getrennt und mit 
einem Mosfet umschalt bar. Denke so sollte es gehen.

Habe mal meine Ideen in den Schaltplan einfließen lassen. Leider habe 
ich keine ahnung was für einen Trigger/Oamp ich verwenden muss!
Ich Hoffe, dass hier auch Leute reinschauen die sich Elektronik 
auskenne.


Mal dazu eine ganz andere Frage. Wieviele schreib Zyklen halten die 
EEPROMS der Atmegas aus? Fangen die wirklich nach rund 100000 zyklen an 
Fehler zu erzeugen?

von Thomas (kosmos)


Lesenswert?

Gratulation das du es soweit hin bekommen hast. Aber ich muss auch etwas 
negatives anmerken: Ohne einen Bezug zur Last wird es sich nicht gut 
fahren lassen. Hatte auch mal nen Tuner an meinem Wagen (Zylinderkopf, 
Nockenwellen Verdichtung...) und dann wurde die Unterdruckverstellung 
des Verteilers dicht gemacht. Die Zündung reagiert also gar nicht mehr 
auf eine geänderte Last das Gemisch aber sehr stark. Das Fahrgefühl war 
ernüchtern. Am einfachsten das Analoge Signal 0-5V eines 
Luftmengen/massenmessers oder Drucksensors auswerten und ein 3D Kennfeld 
erstellen. Habe dann auf eigene Faust den Verteiler bearbeiten um die 
Unterdruckverstellung angepasst (Endanschlag) und bei der 
Fliehkraftverstellung andere Federn verbaut um das Ding besser 
abzustimmen.

von Tim (Gast)


Lesenswert?

Zum Pickup:
LM1815 wurde genau dafür gemacht.
Oder den Pickup auf 5V/2 hängen und dann mit 2 OPs auf
>4V und <1V prüfen. Den Eingang mit Dioden und Widerständen
entsprechend schützen. Bei passender Dimensionierung kannst du
an diesen Eingang alle Sensortypen anschließen.
Die 2 Ausgänge der OPs führst du dann getrennt auf INT0/1.

Wenn du zwischen verschiedenen Eingängen umschalten willst
mach das doch mit 2 4081 und 3 Ausgängen am AVR.

>Um Sicherheit rein zubringen das ganze mit Optokoplern getrennt und mit
>einem Mosfet umschalt bar. Denke so sollte es gehen.

Schon mal aufgebaut und getestet?
Welche Sicherheit soll das bringen?
Zumal die Eingänge zum umschalten der kurve überhaupt nicht
geschützt sind und auch keinen brauchbaren Pullup haben.

Da du noch genügen Pins am AVR frei hast verstehe ich die Doppelbelegung 
der Ports für die LEDs nicht. Die am UART wirst du sowiso kaum leuchten 
sehen und die LED1 kannst du auch direkt über den AVR Schalten.

Für was soll D9 gut sein?

Atmel garantiert 100.000 Zyklen für die eeproms. Darüber hinaus kann es
Funktionieren muss aber nicht. Da du eine Motorsteuerung baust solltest
du unter den 100.000 bleiben. Must du dir halt ausrechnen ob es reicht.
Wenn nicht, dann externes Sram / Fram oder eine passende Software 
Lösung.
Und vergiss nicht den BownOut Detektor im AVR einzuschalten.

von Thomas (kosmos)


Angehängte Dateien:

Lesenswert?

Der VR-Sensor gibt halt bei niedrigen Drehzahlen ein schwaches Signal 
aus, deswegen würde ich auf einen Hallgeber setzen der liefert immer ein 
sauberes Signal.

Bei niedrigen Drehzahlen wird nur der starke Impuls ausgewertet, den die 
größere Aussparung liefert 
http://www.picoauto.com/waveforms/images/zoom/tdcaudis2.gif und diese 
sitzt dann meist so auf 10-15° vor OT so das das STG beim starten 
(Anlasserdrehzahl) erstmals einfach blind hierauf zündet. Es wird also 
nur die Schließzeit für diesen festen ZZP berechnet.

Das Kennfeld kann man ja aus dem Flash ins SRAM schreiben.
in Assembler legt man dazu einfach eine Tabelle im .dseg ab einfach vor 
dem eigentlichen Programm dann kann man sehr viel einfacher daran 
rumspielen ohne ständig das EEPROM zu nutzen.

Oder an programmiert es so das vor dem Programm das EEPROM im SRAm 
gespiegelt wird und beim beenden die neuen Daten wieder ins EEPROM 
zurückgeschrieben werden, dann hält das EEPROM schon ein Autoleben lang.

von Peter B. (pbuenger)


Lesenswert?

Nur als Hinweis: Der Brückengleichrichter aus D5...8 ist verpolt. Und 
bei D9 sieht es so aus, als ob die kurzgeschlossen wäre (grüne Linie 
durch D9).

Peter

von Hytonimus H. (Gast)


Lesenswert?

Erstmal Danke an den Moderator der die "Produktiven" Beiträge gelöscht 
hat.

Das mit dem Gleichrichter ist mir erst garnicht aufgefallen. Vielen dank 
für den Hinweis. Und durch D9 geht tatsächlich noch der Leiter durch. 
Soll so natürlich auch nicht sein.

Also die sache mit dem EEPROM ist so, ich habe da 240Byte für die 
Zündkurven definiert. und 80Byte im Ram. Wenn der Kontroller 
eingeschaltet wird läd er die richtige Kurve in den Ram und Arbeitet 
damit.
Die Idee den gesamten EEPROM zu Kopieren finde ich auch richtig gut. 
Dann kann man soviele Kurven wie man will laden und ausprobieren ohne 
den EEPROM zu benutzen. Beim umschalten der Zündkurve speicher ich auch 
gerade jedes mal im EEPROM die aktive Kurve ab.
Das werde ich so umbauen, dass der Controller einen Pin hin und wieder 
mal abfrag ob die Betriebsspannung noch anliegt und dann nur beim 
Abschalten die nummer der aktiven Kurve speichert, falls es eine andere 
ist.
Also muss ein etwas größere Kondensator her. Allerdings muss auch nur 
ein Byte gesichert werden, dass sollte nicht so lange dauern.

Zu den VR und Hallsensoren.
Ich werde die Zündanlage immer mit einem Hallsensor betreiben und 
versuchsweiße mit original Unterbrecher.
Aber man kann nicht davon ausgehen, dass sich jeder die Arbeit macht und 
auf Hallsensor umbaut. Deshalb möchte ich auch VR(Pickups) unterstützen.
Das die aber eine so hohe Spannung liefern wusste ich garnicht.
Aber es gibt da auch Unterschiede zwischen Auto und Roller,
beim Auto hat man ja eine Zahnscheibe mit 60 -1 Zähnen oder änliches.
Beim Roller hat man nur einen langen Zahn. Deshalb gibt es pro Umdrehung 
auch nur zwei Signale.

Ich werde jetzt mal bischen über Oamps lesen.

von Thomas (kosmos)


Lesenswert?

Ja auch von mir Danke an den Moderator, habe beide Beiträge auch selber 
gemeldet, das klappt bisher immer sehr gut.

Nun zum VR-Sensor, ja viele Schrecken vom Umbau ab. Die hohe Spannung 
die du ansprichst bzw. auf dem Diagramm zu sehen ist tritt ja nur bei 
der großen Lücke des Zahnrades auf, die Impulse dazwischen sind ja 
eigentlich sehr schwach um die 100mV und bei niedriger Drehzahl 
entsprechend niedriger wodurch dieses schwache Signal halt auch 
störanfällig ist.

Mit 1 kByte SRAM des ATMega8 sollte man schon weit kommen. Das 
Grundkennfeld 16x16=256 evtl. mal 2 umschalten zu können, dann einige 
Kennlinien für Motortemp, Ansauglufttemp, einige Variablem im SRAM für 
ADC Werte Zwischenergebnisse...da man ja nicht soviele Register zur 
Verfügung hat... Mit mehr SRAM könnte man man halt die Kennfelder schon 
vorher im PC interpolieren und dann mit z.b. 64x64 = 4096 Bytes ablegen 
so spart man sich einige Berechnungen im µC.

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

wenn du wirklich etwas mit leistung erreichen willst nimm dir gleich 
einen größeren controller ..- vielleicht sogar mit CAN Bus anbindung... 
AT90CAN128 oder sogar einen XMega.
aber der AT90CAN sollte ausreichen. Hab mcih selber shcon mit dem Thema 
beschäftigt und kann dir das nur empfehlen.

Was genau hast du dann damit vor?
Immerhin gibt es in dieser Richtung (Motorsteuergeräte)schon einige Open 
Source Projekte.

von Martin J. (bluematrix) Benutzerseite


Angehängte Dateien:

Lesenswert?

hier noch ein Beispiel... wie so etwas sonst gemacht wird

von Hyronimus H. (avr_by_ronny)


Lesenswert?

Danke für die Tips.

Aber eins verwechseln hier viele.
Auto vs Krad.

Meine Zündanlage soll nur für zweiräder sein und selbst dort nicht für 
ne Yamaha r1.
Sondern nur Krads aus dem vorigen Jahrhundert.
Und ein Motorrad mit canbus kenne ich nicht. Vielleicht bei BMW oder so.

Bei den Mopped Motoren ist das so,
entweder man stellt den Zündzeitpunkt original ein dann springt das 
Moppet gut an. Aber der Motor dreht nur bis ca 6-7000.
Wenn man jetzt den Unterbrecher etwas früher einstellt. Dann dreht der 
Motor gut 8-9000 aber man bekommt ihn meist nur durch Schieben an.

Und ich möchte halt einfach nen sauberes startverhalten und eine hohe 
Drehzahl vereinen. und dies geht nur mit ZZP verschiebung.

Ich möchte nicht die Leistung oder die Effiziens der Verbrennung 
verbessern sondern lediglich das Drehzahlband erweitern.

Klar wären sachen wie Druck, Motor-Temperatur, Abgaswerte, 
Drosselklappen öffnung, Luftmasse und Kraftsorten-erkennung ideal um 
noch mehr Leistung aus einem Motor zuholen.

ABER das ist nicht mein Ziel.

Ich schreibe jetzt erst mal die EEPROM geschichte um.

von Anja (Gast)


Lesenswert?

Hyronimus Herzberg schrieb:
> Und ich möchte halt einfach nen sauberes startverhalten und eine hohe
> Drehzahl vereinen.

Deshalb wird im Normalfall im Start (unterhalb Leerlauf) der ZZP nach 
spät verstellt und bei höheren Drehzahlen um den Zündverzug nach früh.

Gruß Anja

von Jan (Gast)


Lesenswert?

Hallo Hyronimus

Ohne Zweifel ein Hochinteressantes Projekt.
Ich konstruiere zur Zeit selbst eine Zündanlage für mein Kartmotor ( V2 
Motor 630 ccm nichts hochtechnisches).
Eventuell können wir uns ja mal austauschen.
Allerdings muss ich sagen, dass ich einen wesentlich potenteren µC 
benutze (Stm32f103rc).

Ich muss zugeben ich bin etwas faul, daher hab ich mir nicht den 
kompletten Post durchgelesen.

Zuerst einmal das ganze auf eine fertig geäzte Platine aufzubauen ist 
eine ganz schlechte Idee.
Vor allem bei der Aufnahme des OTs entstehen hier Probleme.
Ich benutze hierzu ein Optokoppler in Verbindung mit einem Hallgeber.

In einer erweiterten Version wird zusätzlich noch die 
Drosselklappenstellung erfasst.

Bei nennen wir sie mal Holzmotoren ist diese Drosselklappenabhängige 
Regelung meiner Meinung nach nicht notwendig, da die Erhöhung der 
Drehzahl innerhalb einer Umdrehung nicht gravierend ist.

Von der kubischen Spline Interpolation kann ich dir bei einem Atmega8 
eigentlich nur abraten. Selbst die lineare Interpolation dürfte 
Rechenzeitkritisch sein wenn du deine Zündzeitpunkte in echtzeit ändern 
möchtest, da der Atmega doch soviel ich weiß keinen Hardware Multiplier 
und Divisor besitzt oder ?

Deine Idee mit drei verschiedenen Grundkennlinien ist schon sehr gut. 
Ich würde es im Programm aber in einem seperaten zweiten Fenster zur 
Bearbeitung öffnen und mit einem globalen ZZP arbeiten, der mit dem 
drehzahlabhängigen Wert verrechnet wird.

Ich arbeite auch mit einem Triggerrad mit 32 Zähnen um zusätzlich Werte 
zu erhalten.

mfg Jan

von Jan (Gast)


Lesenswert?

Achja zu der Sache mit dem Starten.

Ich arbeite mit 2 Modis. Der Startmodus setzt den ZZP direkt auf OT und 
gezündet wird auch erst ab einer bestimmten erfassten Drehzahl um ein 
zurückschlagen des Motors zu verhindern.

Gleichzeitig ist eine Regelung im Leerlaufbereich noch nicht unbedingt 
wichtig. Zusätzlich ist es sinnvoll hier mit festen Werten zu arbeiten, 
denn du brauchst einen schnell hochzählenden Timer um auch im hohen 
Drehzahlbereich drehzahländerungen noch mit einer guten Auflösung zu 
erfassen ( Stichwort Timervariable läuft über).


mfg Jan

von Hytonimus H. (Gast)


Lesenswert?

Hey Jan finde ich cool das hier jemand etwas ähnliches macht.

Kurz zu der Interpolation.
Der Atmega fürt keine interpolation durch. Dies wäre viel zu aufwändig 
für den kleinen Controller.
Das macht nur die Software um die Eingabe zu erleichtern.


Die Software habe ich erstmal komplet übern haufengeschmissen.
Mache eine neue, die so aufgebaut ist wie der WindowsExplorer.

Schade das du nicht alles gelesen hast. Aber ich beschreibe kurz nochmal 
meine Zündsystem.

Also ich nehme als beispiel einen Motor mit Unterbrecher Zündung.
Original öffnet der Unterbrecher 10° vor OT und schließt sagen wir mal 
30° nach OT.
Nun wird der Unterbrecher so eingestellt, dass er 40-50° vor OT öffnet 
und 5° nach OT schließt.
Nun schließt man "mein Zündsystem" an. Startet die Software auf dem Pc 
und lässt dort die Zündwinkel erkennung laufen. Nun muss man den Motor 
mehrmals durchdrehen(vieleicht kann der Motor auch im standgas laufen, 
muss ich erst testen).
Das System ermittelt jetzt einen wert von 52°(imaginär).

Nun stellt man im Korrekturwinkel -5° ein, da der Geber erst 5° nach OT 
schließt(diesen Wert muss man selber so gut wie möglich ermitteln. Ich 
würde es über den Kreisabschnitt auf dem Rotor erechnen).

Demnach öffnet der Geber 47° vor OT. Diesen Bezugspunkt verwendet die 
Software um daraus den richtigen Winkel zuerrechnen anhand der Werte die 
man in die Software eingibt.

Die daraus entstehenden Werte werden für den Mikrocontroller noch 
verschönert.

Also der Mikrocontroller erkennt das Öffnen und das Schließen des 
Unterbrechers.

Einen anderen Mikrocontroller würde ich von Atmel nur nehmen, wenn die 
eine bedeutend höhere Taktrate haben. Habe mich aber noch nicht mit den 
Xmegas beschäftigt. Mal Schauen.

von Hyronimus H. (Gast)


Lesenswert?

Ach verdammt schon wieder falscher Name ;-)

von Hyronimus H. (Gast)


Lesenswert?

Ich würde mich natürlich über eine Austausch freuen. Kann jede hilfe 
gebrauchen. Und helfe natürlich auch wo ich kann.

Zur aufnahem des Pickup signals habe ich folgendes gefunden
[[Beitrag "Re: Induktivgeber- / Pickup-Signalaufbereitung macht Schwierigkeiten"]]
denke das werde ich noch durch ein RSFlipFlop jagen und dann habe ich 
mein Hallsensor änliches Signal.

Werde das mal mit jemande besprechen der mich hier aus dem Forum 
angeschrieben hat.
Werde im laufe des Tages Antworten.

von Tim (Gast)


Lesenswert?

Weil Zweifel an der Rechenleistung aufgekommen sind mal eine 
Überschlagsrechnung:

Gehen wir mal von 50° vor OT aus und 10° vor OT als frühesten Winkel:
Bei 20.000UPM und 16MHz Schaft der AVR in den 40° 5333 Zyklen.
Für Realwerte könnte da knapp werden, aber eine lineare
Interpolation mit Festkomma Arithmetik ist da 10 mal drin.
Zumal die Mega Serie über einen HW-Multiplier verfügt.

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Hytonimus H. schrieb:
> Hey Jan finde ich cool das hier jemand etwas ähnliches macht.
>
> Kurz zu der Interpolation.
> Der Atmega fürt keine interpolation durch. Dies wäre viel zu aufwändig
> für den kleinen Controller.
> Das macht nur die Software um die Eingabe zu erleichtern.
>
Tim (Gast)  sagte das die Mega Serie einen Hardware Multiplier hat. 
Wusste ich gar nicht. Hab nur Attiny benutzt. Dann könnte es sogar 
möglich sein müsste man mal ausprobieren.


> Die Software habe ich erstmal komplet übern haufengeschmissen.
> Mache eine neue, die so aufgebaut ist wie der WindowsExplorer.

Habe mal ein Bild von meinem Interface angehängt erstellt wurde es mit 
QT.
Ist aber noch eine alpha Version.

> Schade das du nicht alles gelesen hast. Aber ich beschreibe kurz nochmal
> meine Zündsystem.
>
> Also ich nehme als beispiel einen Motor mit Unterbrecher Zündung.
> Original öffnet der Unterbrecher 10° vor OT und schließt sagen wir mal
> 30° nach OT.
> Nun wird der Unterbrecher so eingestellt, dass er 40-50° vor OT öffnet
> und 5° nach OT schließt.
> Nun schließt man "mein Zündsystem" an. Startet die Software auf dem Pc
> und lässt dort die Zündwinkel erkennung laufen. Nun muss man den Motor
> mehrmals durchdrehen(vieleicht kann der Motor auch im standgas laufen,
> muss ich erst testen).
> Das System ermittelt jetzt einen wert von 52°(imaginär).
>
> Nun stellt man im Korrekturwinkel -5° ein, da der Geber erst 5° nach OT
> schließt(diesen Wert muss man selber so gut wie möglich ermitteln. Ich
> würde es über den Kreisabschnitt auf dem Rotor erechnen).
>
> Demnach öffnet der Geber 47° vor OT. Diesen Bezugspunkt verwendet die
> Software um daraus den richtigen Winkel zuerrechnen anhand der Werte die
> man in die Software eingibt.
>
> Die daraus entstehenden Werte werden für den Mikrocontroller noch
> verschönert.
>
> Also der Mikrocontroller erkennt das Öffnen und das Schließen des
> Unterbrechers.
>
> Einen anderen Mikrocontroller würde ich von Atmel nur nehmen, wenn die
> eine bedeutend höhere Taktrate haben. Habe mich aber noch nicht mit den
> Xmegas beschäftigt. Mal Schauen.
>

Du möchtest deine Schaltung bis 20000 rpm betreiben und benutzt einen 
Unterbrecherkontakt ?
Sinnvoller fände ich eine Zündung mit einem OT-Signal ( Hallgeber wäre 
am einfachsten)
Denn:
Es ist einfach dem µc zu sagen zünd bei prestart einfach wenn du ein OT 
Signal bekommst. Aber wie stellst du sicher das bei der doch sehr 
unterschiedlichen Drehzahl beim Starten dein Timer exakt so eingestellt 
ist, dass du OT erwischst.
Ich könnte mir vorstellen, dass die Erkennung des Signals 5° nach OT 
schwierig ist . Vor allem wenn man auf einem Motorrad per kickstarter 
startet.

Mit meinem Triggerrad würde es z.b. nicht funktionieren ein Motorrad mit 
einem Kickstarter zu starten, ich benutze es aber aus anderen Gründen ( 
Kompressionserkennung, wasted Spark u.s.w)

mfg Jan

von Hyronimus H. (avr_by_ronny)


Lesenswert?

Ich möchte die Zündanlage verkaufen. Und den Leuten die möglichkeit 
geben, entwerde einen Unterbrecher, Pickup oder Hallsensor verwenden zu 
können.

Ich werde immer Hallsensoren verwenden.

Solltest dann schon mal ein paar beiträge lesen, habe auch eine lust 
alles mehrfach zuschreiben.

Also dein Interface finde ich sehr interessant.
Allerdings ist die ja um alle relevanten Motordaten zuerfassen.
Ich mache ja nur eine Software, mit der man möglichst einfach Zündkurven 
erstellen kann.

Am Wochenende werde ich wohl meinen Prototypen testen können.

von Manfred (Gast)


Lesenswert?

Wenn du so etwas verkaufen willst für KFZ brauchst du E13 Zulassungen, 
musst das Elektronikgesetz beachten (WEEE) und und und
Wenn irgendetwas abfackelt aus deiner Schaltung trägst du die 
Verantwortung. Darüber solltest du dich mal genauer informieren, da gibt 
es einiges zu stemmen!
Zudem behaupte ich jetzt mal, so wie du schreibst, hast du nicht 
wirklich die Ahnung von der Hardware. Ein "Zusammengeschustertes 
Produkt" dann zu verkaufen, halte ich für fragwürdig.
Keine Kritik, nur mal ein Denkanstoß!

von Thomas (kosmos)


Angehängte Dateien:

Lesenswert?

ich muss mal meinen Bestand durchforsten eine Interpolation in ASM hatte 
ich mal gemacht, braucht vielleicht geschätzte 200 Takte oder weniger.

Gemacht habe ich es in etwa so, angenommene Drehzahl=1200 U/Min und 
Last=0% also Leerlauf

aus dem Kennfeld ergeben sich nun die Werte 10 und 12° vor OT als ZZP 
und die beiden Drehzahlpunkte von 1000 und 1500

Rechenweg

1500 - 1000   =500
  12 -   10   =  2
   2 /  500   =  0,8
  10 +    0,8 = 10,8

Das gleiche müsste man halt auch mit der Last machen. Aber wie gesagt 
man könnte das Kennfeld auch am PC z.B. Excel interpolieren und dann so 
in den Flash oder EEPROM ablegen, so spart man sich die Berechnung im µC 
nur die Kennfelder werden halt sehr groß, aber ein ATMega32 hat ja genug 
Flash vorhanden um auch sehr große Kennfelder zu speichern.

von Hyronimus H. (avr_by_ronny)


Angehängte Dateien:

Lesenswert?

So ich habe mal einen Prototypen für die Modellbau Zündanlage zusammen 
gelötet.
Allerdings habe ich ein Problem mit den Transistoren für den Zerhacker. 
also es sind
zwei BD131 NPN Transistoren.
Die Basis ist mit 100k an GNG und mit 1k an dem µC angeschlossen.
Wenn der µC jetzt den Pin auf VCC zieht schalten die Transistoren nicht 
durch.
Woran kann das liegen.
Habe vorher auf einem Steckbrett getestet und mit der kombi 100k/1k hat 
es wunderbar geklappt.

Kann es sein, dass die Spannung am Collector mit 12V zugroß ist?
Da ich in die Basis nur mit 5V reingehe

Was ist der geringeste wiederstand, dem ich den µC zutrauen kann.
(beim schalten des BD131 entsteht fast ein kurzschluss (20wdg 0,75mm² 
Draht))

von Hyronimus H. (avr_by_ronny)


Lesenswert?

Verdammt ich seh gerade auf dem Bild, dass ich mit 10k an den µC gehe.
Muss ich wohl mit 1k ausprobieren.

von Hyronimus H. (avr_by_ronny)


Lesenswert?

Also auch mit nur 1k schalten die Transistoren nicht richtig durch.
Lediglich 0,4A fließen.
Ist zwar schon was aber nicht genug. Sollten schon die 5A des netzteil 
geschaltet werden.

Hmm mir ist gerade der Linearregler durchgebrannt. Der mag es nicht wenn 
er von der falschen seite 10V bekommt.
Naja hab ja noch nen paar davon.

Ich schätze aber, dass ich wohl Transistoren vor schalten muss. werde 
ich dann wohl mal probieren.
Oder wären dort Mosfets besser geeignet?

von Thomas (kosmos)


Lesenswert?

vom Reglerausgang zum Reglereingang eine schnelle Diode anbringen.

von Hyronimus H. (avr_by_ronny)


Lesenswert?

und das hilft die Transistoren zu schalten oder nur um den Regler 
zuschützen?
Ich würde ja jetzt auf zweites tippen.

Im normal fall bekommt der Regler aber die 12V nicht ab.
Ich habe zum Testen die Basis eines Transistor an 12V gelegt und dann 
ist der Strom durch den 100k Widerstand in den Regler geflossen.
Passiert normal halt nicht.

von Thomas (kosmos)


Lesenswert?

Quelle Wikipedia: In einigen Anwendungen empfiehlt sich eine 
Verpolungsschutzdiode vom Regler-Ausgang zum Eingang. Von Bedeutung ist 
dieser Schaltungszusatz bei großem C4 und wenn gleichzeitig mehrere 
Lasten von der ungeregelten Eingangsspannung abzweigen. Dann kann es 
passieren, dass beim Ausschalten C1 schneller als C4 entladen wird und 
die Ausgangsspannung höher als die Eingangsspannung ist (verpolter 
Regler). Eine Schutzdiode bewahrt den Regler dann vor der Zerstörung. 
Eine schnelle Diode (z. B. Schottkydiode) ist hier besonders geeignet, 
die Sperrspannung muss mindestens so hoch wie die maximale Spannung der 
Speisung betragen.

Ein hoher positiver Impuls auf der Ausgangsseite kann das gleiche 
bewirken.

von Hyronimus H. (avr_by_ronny)


Lesenswert?

So habe eine PR1002L Diode gefunden und diese eingelötet. Denke die 
sollte schnell genug sein.
Habe auch zwei Mosfets die ich jetzt statt der Transistoren verwenden 
will.
Kann nur leider nichts darüber im Inet finden.
Auf den dingern steht
S150
  77
wobei die 77 auch ZZ oder 33 sein könnte lässt sich nicht so recht 
erkennen.
Das Internet spuckt einfach nichts dazu aus.

Zudem ist in zwei kleinen prägestempel (wirklich sehr klein) E und BD 
geprägt.

von luli (Gast)


Lesenswert?

Hallo,

finde ich echt gut dein Projekt

von Heinz L. (luli)


Lesenswert?

Hallo

Hyronimus, finde das Projekt echt cool. Habe dir ne Nachricht gesendet.

Grüße

von Robin R. (zerocool1989)


Lesenswert?

tolles projekt sag kannst du mir programm und die hex datei igendwie 
zukommen lassen

von Heinz L. (luli)


Lesenswert?

Hallo, habe den Autor auch schon darum gebeten, irgendwie gehts hier 
nicht weiter, bzw. ich weis nicht wie ich den Hyronimus direkt 
kontaktieren kann.
Grüße

von Rigi Taler (Gast)


Lesenswert?

Der vollprogrammierbaren Zuendanlage sind wahrscheinlich aus duftenden 
Ohm'schen Gruenden die Bytes empoert weggelaufen.Keine Zuendung mehr.

von Heinz L. (luli)


Lesenswert?

Rigi Taler schrieb:
> Der vollprogrammierbaren Zuendanlage sind wahrscheinlich aus duftenden
> Ohm'schen Gruenden die Bytes empoert weggelaufen.Keine Zuendung mehr.


was heisst das jetzt ?? Gibts keine Infos mehr vom Hyronimus ??
wirklich Schade, hätte grosses Interesse gehabt

von Cahyo A. (Firma: easypcb inc) (nobitaemon)


Lesenswert?

Wer noch keine Firmware? fragen darf? per E-Mail

von nyemi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo an alle.
New cdi.
Schauen Sie es funktioniert :).

http://www.youtube.com/user/ignitionyemi/videos?view=0&flow=grid

Danke nyemi.

von Marx (Gast)


Lesenswert?

falls es auch mit 6v und Gleichstromlima funktionieren soll: 
http://metriccustom.de/?subject=fridaDZS%20Digitalz%FCndung&theme=Metric%20Custom%20Elektronik&action=none

inkl. schaltplan und firmware

m.

von nyemi (Gast)


Lesenswert?

Hi
TCI-Zündung ist nicht mehr aktuell.
Wirkungsgrad ist schlecht.
Nicht geeignet für MSD.
Die Zukunft:) MSD CDI

von nyemi (Gast)


Angehängte Dateien:

Lesenswert?

Hi
Das Projekt ist jetzt
Bilder von der Code funktioniert.

Video der Code funktioniert.
Zündverstellkurve
Link:http://youtu.be/wBt48RQyMMU
Plasma
Link:http://youtu.be/rwEKokuVYEQ



Gruß nyemi.

von Seelaub (Gast)


Lesenswert?

Hallo Nyemi

 Du scheinst es ja geschafft zu haben?
Hast Du evtl mal einen Schaltplan?
Versuche gerade eine alte Kawa mit ihrer beknakten Zündung wieder zum 
Leben zu erwecken.
 Merci da Christoph

von Zoltán N. (nyemi)


Lesenswert?

Hallo, alle miteinander.
Neue Software 12f683, vier Zündverzug Kurve.
Mein Freund getestet: "Ich bin die Firmware in Proteus getestet Verhält 
sich wie erwartet. 0 ... 5 Hz (0 ... 300 Umdrehungen pro Minute) - kein 
Funke, dann 6 ... 15 Hz (360 ... 900 Umdrehungen pro Minute ) - 3 
Funkens und dann höher als 16 Hz (960 Umdrehungen pro Minute), nur einen 
Funken bis zu 200 Hz (12000 rpm) und höher als 210 Hz (12600 rpm) ist 
kein Funken.
Ich habe versucht, die Spannung auf dem dritten Stift 12F683 und Kurven 
eindeutig nur in der Impulsposition des Ausgangs relativ zum Eingang 
weil merkliche Veränderung im angegebenen Spannungsbereich geschaltet zu 
ändern. "
Bitte testen Sie Ihre gut. Wenn Sie irgendwelche Ideen 
Programmänderungen haben.
Danke im Voraus.

Link:www.rcgroups.com/forums/showatt.php?attachmentid=9236676&d=14705537 
76
You tube Link:https://youtu.be/u0YNx6cCv60

nyemi schrieb:
>

von Christoph (Gast)


Lesenswert?

Hallo Community,

ich wollte mir auch mal eine elektronische Zündung mit Winkelverstellung 
basteln, jetzt bin ich auf diese Seite gestossen. Ich finde das Projekt 
ja richtig cool und wollte es schon nachbauen, aber für den Nachbau 
fehlt mir im Moment der Sourcecode bzw, das Hex File für den Controller 
und die Exe zum parametrieren der Zündung.
Wie komm ich denn an die Daten oder hat die einer?

VG Christoph

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.