Hallo, ich entwickle für ein Projekt ein Motorateuergerät: Ein STM32 detektiert über einen Hallsensor die Position des Kolbens und berrechnet anhand mehrerer Kennfelder die Einspritzdauer, den Einspritzzeitpunkt und den Zündzeitpunkt. Einspritzventile werden über MOSFETs angesteuert und machen mitentsprechender EMV Schutzbeschaltung keine Probleme. Der HallSensor macht auch keine Probleme mit geschrimten Kabel und ebenfalls mit entsprechender EMV Schutzbeschaltung und diverser Modifikationen. Mit der Zündspule kommen die Probleme: - Verbaut ist eine Doppelfunkenzündspule da 4 Zylinder von einem GOLF https://www.ebay.de/itm/390917026412?hash=item5b0478726c:g:w1EAAOSwwTZdn1Ex diese wird mit 5V Signalen angesteuert und triggert auf die steigende Flanke. Die Probleme kommen wenn ich die Zündspule extern, über einen Funktionsgenerator ansteuere (50Hz Testweise). Die Probleme sind: - Der STM32 löst wilkürlich seine Interupts aus. Dort liegt der Hall Sensor drauf. Das Hall Sensor Signal ohne uC sieht gut aus (Rauschverhalten, Spikes etc.) Nur am uC angschlossen gibt es ordenltliche Probleme. Wie kann ich den uC schützen? Die Spannungsversorung ist ordnungsgemäß und zeigt auch keine Veränderungen. Hat jemand evtl einen Schaltplan von eine Motorsteuergerät? Bitte kein Speeduino oä wo die Hälfte fehlt und meiner Meinung nach dieselben Probleme erscheinen werden. Schönen Sonntag noch
:
Verschoben durch Moderator
Tobias R. schrieb: > Hat jemand evtl einen Schaltplan von eine Motorsteuergerät? Und Du glaubst daß es dir etwas nützt? Da sind lauter ASICs drauf auf die Du sicher keinen Zugriff hast. Ich hoffe Du hast wie die Motorsteuergeräte auch ein solides Metallgehäuse. Die Eingangssignale sind selbstverständlich so gefiltert daß nur die Nutzfrequenzen durchkommen. Häufig wird aber auch schon der Sensor gestört, dann nützt dir die Filterung im Steuergerät gar nichts weil das Signal wie ein Nutzsignal aussieht. Der Eingang geht nach dem Filter auf einen Schmitt-Trigger Eingang. Interrupt geht gar nicht sofern der Prozessor keine Glitch-filterung am Eingang durchführt um Fehlimpulse auszublenden. Wenn das Dein Prozessor nicht kann ist es ggf. der falsche. Gruß Anja
Danke für den Tipp mit dem Schmitt Trigger. Werde ich mal testen. Und: Ja das in einem KFZ MSG alles mit Asics gelöst wurde habe ich vermutet. Mit geht es dabei auch eher um die EMV Schutzschaltungen der Asics. Welche Maßnahmen wurden an der Versorgungsspannung getroffen, welche an Analogen Sensorwerten, welche an digitalen Eingängen der Asics. Wie sieht die befilterung aus. Wird dort mit den heiß diskutierten Ferrit Beads gearbeitet, wo und wieviele Dioden Varistoren etc. Natürlich werden die Schaltungen nicht 1:1 passen aber da wird was brauchbares davei sein - hoffe ich - mit dem ich meine EMV Probleme in den Griff bekommen.
Tobias R. schrieb: > Ein STM32 detektiert über einen Hallsensor die Position des Kolbens Ich dachte bisher man detektiert den Kurbelwellenwinkel. Schau mal hier: http://www.megamanual.com/ms2/pcb.htm
Tobias R. schrieb: > Hat jemand evtl einen Schaltplan von eine Motorsteuergerät? http://megasquirt.de/wiki/index.php?title=Stromlaufpl%C3%A4ne Tobias R. schrieb: > Nur am uC angschlossen gibt es ordenltliche Probleme. Na ja, wie sieht DEINE bisherige Schaltung und ihr Aufbau aus ? Du musst erst mal für guten Masseanschluss sorgen, EIN Masseverbinder an der Steuerung und die Abschirmung des Hallsensors geht direkt an ihn, ebenso Massepins anderer Leitungen Das Signal und VCC des Hallsensors sind somit in der Nähe und werden mit kleinen Kondensatoren gegen Masse abgestützt. Sie dürfen nicht so gross sein, dass sie das Signal bis zur Unbrauchbarkeit verschleifen, so 1-10nF am Signal und 10-100nF an VCC. Um das Hallsensorkabel darf ein Ferrit. Serienwiderstande in der Datenleitung sind möglich, sogar 10 bis 100 Ohm in der VCC Leitung. Von dieser Platinenstelle darf die Leitung weiter zum uC gehen, das Gehäuse ist hoffentlich geschirmt und mit genau der Massestelle verbunden. Masse von diesem Punkt über die Platine zum uC sollte niederinduktiv erfolgen, breit und kurz oder Massefläche.
Eine einfache Motorsteuerung mit Atmega für Guzzis mit Einspritzanlage Sicherlich nicht die Krone der Steuergeräteschöpfung, funktioniert aber bei meiner 1100 Sport seit Jahren einwandfrei. Auf jeden Fall besser als das schlecht abgestimmte Originalsteuergerät. (aus den kleinen Fiats der Zeit) Die Parameter lassen sich per Bluetooth und Android App justieren. https://www.myecu.biz/MyECU/index.htm Schaltpläne unter "How it works" Uwe
Hi, Das wahr früher so, dass die Entwicklung mit FPGAs gemacht wurde und die FPGAs aus dem Grund der Stückzahlenkosten in ASICs gegossen wurden. Der Grund war die zu geringe Performance der MCUs. jetzt geht man immer mehr wieder zu MCUs über, weil die Performance gegeben ist, man jetzt alles reprogrammieren kann, MCUs sind günstiger als Asics (Asics kosten auch in der Entwicklung) und man die Hardwarevarianten reduzieren kann (dasselbe Steuergerät für sämtliche 4-Zylinder Motoren - Unterschied nur noch in SW und Parameter-Codierung). Da ich selbst aus der Branche bin, kann ich nur den Tipp geben - blende die Sensoren/Interrupts zum Zeitpunkt der Zündspulenaktivität aus. Eine statische Filterung reicht da für eine zuverlässige Funktion nicht aus, da die Zündspule einen ganz "bösen" Impuls erzeugt, der vom Nutzsignal nicht mehr unterschieden werden kann. Dieser Impuls streut auch über alle Anschlüsse rein. z.B. Zündvorgang: __disable_interrupts __inhibit sensor input __ignite __wait_500us __enable_sensor_input __enable_interrupts Metallgehäuse ist ein Muss, da der Zündimpuls sogar den Zero-Flag-Bit im Armcore kippen kann, wodurch ein Conditional Jump vollkommen irrational ausgeführt werden kann (if then else, while, case funktionieren plötzlich nicht zuverlässig).
Vom ECU Input zum GPIO sind dann noch folgende Beschaltung: - 2 Dioden zwischen GND->SIG->VCC - ESD Supressor - Serienwiederstand zur Strombegrenzung (Wert abhängig von Max ratings des MCU) - Filterung basierend auf RC (Wobei die Filterung immer öfter in SW gelöst wird als FIR / IIR Filter eventuell sogar adaptiv = Filterparameter ändern sich abhängig von der Motordrehzahl).
R.B. schrieb: > __wait_500us ganz tolle Idee: damit verliert man bei 6000 RPM bei jedem Zündimpuls 18 Grad an Winkelposition. Gruß Anja
Punkt 1: Die 500us waren ein reiner Beispielwert, der genaue Wert muss noch bestimmt werden (Impulsdauer mim Oszi bestimmen. 6000 ist übrigens ein sehr interessanter Betriebsbereich eines Motors :) Punkt2: man verliert gar nichts! Da die Zeitbasis immer noch gegeben ist. Punkt3: Konstruktiver Gegenvorschlag Deinerseits? :) :) (jetzt bin ich gespannt) :) :)
Tobias R. schrieb: > Wie kann ich den uC schützen? Metallgehäuse gegen eingestrahlte Störungen und Optokoppler zur galvanischen Trennung funktionieren zuverlässig.
Danke für die Ratschläge und die Beispiel Motorsteuergeräte. Ja über einen Hall Sensor jeweils die Nockenwelle und die Kurbelwelle. Thomas F. schrieb: > Ich dachte bisher man detektiert den Kurbelwellenwinkel. Danke für den Tipp mit dem Interrupt ausblenden. Das funktioniert nach bisschen rum probieren mit den Zeiten super. R.B. schrieb: > blende > die Sensoren/Interrupts zum Zeitpunkt der Zündspulenaktivität aus Ansonsten hier mal eine kleine Auflistung was bei mir zu einem guten Ergebniss geführt hat: - EMV Störquelle verringern: Widerstand im HV Bereich erhöhen um schnelle Strom Transienten zu vermeiden mit zusätzlichen 5 kOhm in der Zündkerze - 2 Interrupt Pins (werden bauartbedingt nie gleichzeit ausgelöst, wurden aber durch EMV) mit einem EXOR und einem AND Gatter so verschaltet, dass nie an beiden Interrupts gleichzeit HIGH anliegen kann und Interrupts kurz vor und nach der Zündung ausblenden. - Erhöhung des Stroms des Hall Sensors (OpenCollecor mit vormals 9mA Pull Down, jetzt mit 86mA) - Versorgungsspannung stabilierst mit Lastwiderstand und Elko am Ende der Leitung - Und ganz banal in die uC Versorgungsspannung eine 1N4007 in Reihe mit einer Ferritperle. Das System funktioniert so bei mir jetzt. Das einzeige Problem was mir jetzt nur noch bekannt ist, ist der Ground der 12V Versorgungsleitung hat Spikes bei jedem Zündimpuls. Nach allen Maßnahmen nur etwa 200 - 500 mV (vorher etwa 2 - 3 V). Wenn man den noch runter bekommen könnte wäre das natürlich super. Was meint ihr? Ist das nur Kosmetik oder relevant?
Prokrastinator schrieb: > Optokoppler zur > galvanischen Trennung funktionieren zuverlässig. Ja genau, Makers Wunderwaffe der Optokoppler. Wozu sollte man in einem Motorsteuergerät gleich wieder galvanisch trennen ?
HG schrieb: > Ja genau, Makers Wunderwaffe der Optokoppler. Nein, die Erfahrung von jemanden der HV Impulsprüfplätze gebaut hat und dabei mit erheblichen MCU Problemen konfrontiert war. HG schrieb: > Wozu sollte man in einem Motorsteuergerät gleich wieder galvanisch > trennen ? Wenn man die Probleme hat die der TO beschreibt und keine Ahnung wie man dem beikommt, braucht man eine Lösung und kein Ideologisches Gewäsch von jemanden der zwar die vorgeschlagenen Lösungen Kacke findet, selbst aber keine funktionierende anbieten kann. Leitungsgebundene Störungen sind nunmal ätzend zu filtern, wenn das Signal trotzdem schnell sein muss.
Zu den Impulsen auf auf der 12V Maße - wenn du mehrere solche Steuergeräte baust - könnte durch die Bauteiletoleranz irgendwo ein Schwellwert überschritten werden. Arbeitet die Core intern mit 3V3 oder mit 1V8 Versorgung da kommt man mit 500mV schon näher an einen Bitkipper. Dann kann auch noch die Wärme den Arbeitspunkt wegschieben. Würde ich probieren, noch etwas weg zu filtern. Je nach impulsbreite müssen nicht mal sehr große Elkos rein. Prüf beim Testen dann auch den Temperaturbereich - zumindest sollte der Motor bis 90°C hochgefahren werden und einige Zeit in diesem Bereich bleiben. die MCUs haben oft einen eingebauten Temperatursensor - da kann man gucken, wohin die Temperatur im Steuergerät geht.
Verbrenner werden doch baldmöglichst verboten, nach dem Willen der Grünen am besten noch heute. Hilf lieber bei der Entwicklung moderner Batteriezellen für Elektroautos mit, da gibt es solche krassen EMV-Probleme nicht.
@ R.B. Danke für den Input. Kannst du mich bitte PN anschreiben. Ich würde gerne mal mit dir telefonieren.
R.B. schrieb: > 6000 ist übrigens > ein sehr interessanter Betriebsbereich eines Motors :) Je nach Motor: beim Motorad ist das knapp über Leerlauf. R.B. schrieb: > Punkt2: man verliert gar nichts! Da die Zeitbasis immer noch gegeben > ist. Du denkst daß die Drehzahl konstant ist? R.B. schrieb: > (jetzt bin ich > gespannt) :) :) Hättest Du meinen ersten Beitrag hier gelesen: Tiefpaß, Schmitt-Trigger + (digitales) Glitch-Filter. Letzteres verzögert das Nutzsignal nur, entfernt aber keine Flanke. Gruß Anja
Anja schrieb: > R.B. schrieb: >> 6000 ist übrigens >> ein sehr interessanter Betriebsbereich eines Motors :) > Je nach Motor: beim Motorad ist das knapp über Leerlauf. Ja, aber oben ist die Rede vom Golf, nicht Mopped! Da ich selbst eine Ninja gefahren bin, kenn ich den Drehzahlbereich. Aber, wie gesagt, geht um Golf. > > R.B. schrieb: >> Punkt2: man verliert gar nichts! Da die Zeitbasis immer noch gegeben >> ist. > Du denkst daß die Drehzahl konstant ist? > Nein ist sie nicht, aber sie ändert sich nicht von 6000 auf 0 innerhalb der 250ms bzw. zwischen 2 Zähnen (die i.d.R. 10° Auflösung haben) man kann definitiv aufgrund der Zeitbasis rekonstruieren, ob ein Zahn verpasst wurde, da man ausgehend von der gegebenen Drehzahl eine min. oder eine max. Drehzahl hat, die innerhalb von 250ms machbar ist. Und, wie bereits erwähnt ist 250ms eine erste Näherung, die genaue Zahl sollte am Prüfstand mit realer Physik justiert werden. > R.B. schrieb: >> (jetzt bin ich >> gespannt) :) :) > Hättest Du meinen ersten Beitrag hier gelesen: > Tiefpaß, Schmitt-Trigger + (digitales) Glitch-Filter. > Letzteres verzögert das Nutzsignal nur, entfernt aber keine Flanke. Hier willst du statisch filtern, obwohl die Drehzahl sich dynamisch über einen großen Bereich ändert? Wer von uns beiden hat also die Annahme, die Drehzahl wäre konstant? Btw. Glitch-Filter digital auszulegen, halte ich für eine sehr gute Idee, da eine diskrete Auslegung zu viele Bauteile braucht und die Kosten p.p. hochtreiben würde, zumindest bei einem Serienprojekt. Allerdings müsste evaluiert werden, ob ein reiner statischer Filter ausreicht - am besten mit einem Oszi am Motorprüfstand.
Roman B. schrieb: > Hier willst du statisch filtern, Habe ich nicht behauptet. Man kann auch ein Glitchfilter zur Laufzeit umprogrammieren wenn es richtig gemacht ist. Auf der anderen Seite: bei Start-Stop Systemen ist in der Impulsbreite häufig die Drehrichtung codiert. (2 verschiedene Impulsdauern für vorwärts / rückwärts). Roman B. schrieb: > (die i.d.R. 10° Auflösung haben) i.d.R. nur beim Motorad (oder hochtourige Motoren) Beim PKW sind es häufiger 6 Grad. Gruß Anja
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.