Hallo Zusammen,
Ich möchte mich ganz kurz Vorstellen.
Mein Name ist Stefan, bin 28 Jahre und Kfz-Mechatroniker Meister meines
Zeichen`s. Ich weis auf den Titel kann ich Pfeifen den damit kann man
Säue füttern gehen :-)
In meiner Freizeit bin ich sehr dem Motorsport gewidmet wo ich
unteranderem
auch eine Freiprogramierbare Motorsteuersteuerung names Megasquirt
http://www.bgsoflex.com/megasquirt.html gestoßen bin. Nach anfänglichen
Startschwierigkeiten haben ein bekannter und Ich uns sehr gut in die
Materie eingearbeit. Mittlerweile bauen wir die ein oder Adpaterplatine
zb selbst.
Ich habe gefallen dran gefunden in Target die Platinen zu erstellen nach
meinen Wünschen und Anforderungen. Abstruße Geschichten zum laufen zu
bringen ist kein Thema mehr.
Doch um unsere Systeme permanent zu verbessern möchten wir den nächsten
Schritt eine Klopfregelung realisieren. Bisher haben wir uns ein Klopf
Tool gekauft womit wir Quasi den Klopf Sensor mittels eine Kopfhöher
abgehört haben. Doch leider gibt es den nicht mehr neu zu kaufen da der
Hersteller die Produktion eingestellt hat. Also muss was anderes her.
Doch da beise ich mit meinen Schulwissen aus Berufschulzeiten auf
massiven Granit.
Wir würden gerne diesen IC hier verwenden
http://focus.ti.com/lit/ds/symlink/tpic8101.pdf
Eingige Grundlagen dazu habe ich auch Verstanden doch hier mal meine
Fragen die mir der ein oder andere Aufgrund des Datenblattes vielleicht
erklären kann.
Brauche ich Permant einen Prozessor um den IC zu bedienen oder brauche
ich den nur einmal um ihn zu Programieren? Läuft der IC im Stand Alone
Modus und macht einen Analogen Ausgang abhängig vom Klopfen? Kann ich
mittels SPI die Bandpassfilter etc verändern? Woher erhalte ich ein
Interface um SPI zu Proggen. Crashkurs wie man SPI vollzieht??
Bitte lasst mich nicht dumm sterben :-)
Mfg, Stefan
>Brauche ich Permant einen Prozessor um den IC zu bedienen oder brauche>ich den nur einmal um ihn zu Programieren?
Ja brauuchst du, den laut Datenblatt(vorsicht habs nur schnell
überflugen) seite 12 ganz unten steht das der IC nach dem power up im
default mode is.
Man muss ihn quasi nochmal anlernen.
>Läuft der IC im Stand Alone>Modus und macht einen Analogen Ausgang abhängig vom Klopfen?
Siehe 1. antwort...
Aber ich denke das es eh nix nützt, denn man soll/muss ihn ja
"Kalibrieren" in dem man den Gain usw. einstellt.
>Woher erhalte ich ein>Interface um SPI zu Proggen.
Was ist mit interface gemeint? IC zum ansteuern?
>Crashkurs wie man SPI vollzieht??
Crashkurs ist schwer denn man muss eine Programmiersprache können(nicht
kennen), einen Mikrocontroller kennen/haben zum Programmieren und das
nötige Programmier Tool haben.
Wie du siehst ist es schon schwerer als gedacht aber eventuell hast du
ja einen/eine im Bekanntenkreis....
MfG
Die SPI Schnittstelle ist bei diesem IC zur Konfiguration und zum Test
ausgelegt. Das Filter konfiguriert man damit (Mittenfrequenz), die
Verstärkung kann man einstellen, die Integrationszeitkonstante und den
Eingangskanal auswählen.
Die Einstellungen gehen verloren, wenn man die Versorgungsspannung
abschaltet.
Den µC braucht man immer dann, wenn etwas an den Einstellungen verändert
werden soll, das ist meistens nach einem Stromausfall notwendig.
Sinnvoll ist es also, den Controller ständig angeschlossen zu lassen.
Vor allem das Int_Hold Signal muss regelmäßig gesetzt und rückgesetzt
werden, das könnte man zwar ohne µC machen, wäre aber unnötig aufwändig.
Eigentlich kann man SPI Geräte mit jedem halbwegs modernen µC
ansprechen, das ist nicht weiter kompliziert, vor allem nicht, wenn der
Controller schon eine SPI-hardware integriert hat. Alle ATmega von Atmel
haben das beispielsweise.
Wenn der Controller sonst nichts zu tun hat, kann man irgendeinen
einfachen, z.B. den ATmega8 verwenden, der beim Einschalten die
gewünschten Einstellungen am tpic8101 vornimmt.
Das kann man z.B. so anschließen:
ATmega8 TPIC8101
------- -------
MOSI----------SDI
MISO----------SDO
SCK ----------SCLK
SS ----------CS
PC1 ----------Test
PC2 ----------Int_Hold
Gnd ----------Gnd
Vcc ----------Vdd
Vcc wird über 5 Volt versorgt. SDI, SDO, SCLK und CS bilden zusammen die
SPI-Schnittstelle, Test und Int_Hold sind spezielle Steuersignale, die
der tpic8101 braucht. Diese Steuersignale habe ich im Anschlussbeispiel
auch mal an den Controller angeschlossen. Die Spannungsversorgung (Vcc
bzw. Vdd und Gnd) muss für beide ICs von der selben Quelle kommen.
Das Ausgangssignal kann man auch mit dem µC auswerten, dazu muss es an
einen der Analogeingänge angeschlossen werden, z.B. an PC0:
ATmega8 TPIC8101
------- -------
PC0-----------OUT
Der µC sollte nach dem Schaltungsbeispiel (application schematic) die
Taktversorgung des TPIC übernehmen. Hier sollte man besser ein eigenes
10 MHz Quarz verwenden und daher den Takt nicht von µC erzeugen lassen.
Damit der µC auch mit der Außenwelt kommunizieren kann, sollte man die
serielle Schnittstelle anschließen. Das ist Txd und Rxd. Mit einem
MAX232 setzt man die Pegel der Schnittstelle um, so dass ein PC mit
RS-232 Schnittstelle angeschlossen werden kann. Mit einem einfachen
Terminalprogramm kann man dann mit dem µC kommunizieren, Einstellungen
vornehmen und Messwerte anzeigen. Der ATmega braucht, damit die serielle
Schnittstelle richtig funktioniert, ein Baudratenquarz, z.B. 14,7456
MHz.
Eine Kleinigkeit gibt es noch, auf die man aufpassen muss, das betrifft
den SPI vom ATmega. Das Programm wird nämlich beim ATmega über SPI
geladen, dabei sollte der TPIC nicht angeschlossen sein.
Man kann das so lösen, dass man den Cotroller zum erstmaligen
Programmieren nicht in der Zielschaltung hat, sondern irgendwo anders
programmiert. So kann man einen Bootloader aufspielen, der dann, wenn
der Controller in der Zielschaltung steckt, über RS-232 vom PC seine
Firmware bekommt. Das ist ein relativ gängiges Verfahren und auch
angenehm, da die RS-232 Schnittstelle ohnehin schon angeschlossen ist.
So muss man für ein Firmwareupdate nichts Zusätzliches anschließen.
Bootloader gibt es fertig hier in der Codesammlung, auch für den
ATmega8.
Das Ganze ist wirklich Minimalaufwand, nur der TPIC, ein ATmega8 und ein
Max232 werden benötigt für ein Universal-Klopfsensor-Messgerät.
Vorerst könnte ein PC die Klopfsensormessdaten auswerten und
entsprechende Änderungen an der Einspritzanlage und Zündanlage
vornehmen, später könnte das der ATmega8 eventuell auch selbst über die
RS-232 Schnittstelle direkt machen.
Am besten zeichnest du mal einen Schaltplan (z.B. mit Target), in dem
der TPIC, der ATmega8 und Max232 drin sind. Dann kommt die
Außenbeschaltung der drei ICs dazu (Beispielschaltungen anschauen) und
eine 5 Volt Spannungsversorgung. Wenn das soweit fertig ist, schaut hier
bestimmt gern jemand drüber und erkennt eventuelle Fehler.
Wegen der Programmierung des ATmega - das ist nicht so aufwändig wie es
aussieht. Zur Verwendung des Hardware-SPI gibt es im Datenblatt des
ATmega sogar ein fertiges Code-Beispiel. Zum usart, der die serielle
Schnittstelle darstellt, gibts auch ein Beispiel. Alles andere ist nur
noch das Einbauen der eigentlichen Funktionalität, also das Aufrufen der
verschiedenen Funktionen, die der TPIC kann und das Auswerten der
gemessenen Klopflautstärke.
Vorerst ist wichtig, dass die Hardware steht, wenn die aufgebaut ist,
kann man mit der Software experimentieren.
Ich denke, das sollte als kleine Einführung vorerst bis zu einem
Schaltplan einige Unklarheiten beseitigen.
Grüße,
Peter
Vielen Dank euch beiden.
Vorallem Peter´s Auführung war sehr sehr gut. Nur möchte ich das
Ausgangssignal nicht unbeding über den ATMega8 auswerten. Meine MS
besitzt dafür direkt einen Eingang. Den kann ich auf PULL UP/DOWN
setzen. Oder über den AT Auswerten und der macht wieder einen Ausgang.
Echt keinen Plan davon. Meine Programierkenntnisse sind quasi Nullo.
Schon lange her das mein Informatiklehrer micht mit MS BASIC gequält hat
:-) Damals waren wir der Meinung das brauch ich nie mehr im Leben...
Musste seit ich Massiv in der MS Sache drin bin öfters mal alte
Schulsachen rauskramen :-)
Heute Abend mache ich mich mal in ner Ruhigen Minute über den Schaltplan
und bestell mir mal beim Reichelt ein Entwicklerboard. MAX 232 hab ich
noch zwei oder drei da. Den TPIC8101 muss ich halt noch auftreiben.
Vielen vielen Dank das mir mit so nen Noob erbarmen habt.
MfG Stefan
So wie ich das aus dem Artikel der Motorsteuerung
http://www.megamanual.com/ms2/knock.htm
und
http://www.viatrack.ca/Knock/knock_log.jpg
sehe, ist das Signal aus dem TPIC8101 noch nicht direkt zur Verarbeitung
in der Steuerung geeignet.
Die Steuerung erwartet eine Spannung an dem Klopfsensoreingang, die der
Klopflautstärke entspricht. Der TPIC liefert das Signal hinter einem
Integrator, der Klopfgeräusche über kurze Zeiträume aufsummiert. Das
Signal ist also immer ansteigend, solange, bis der µP Int_Hold kurz
auslöst und damit den Integrator zurücksetzt. Zu diesem Zeitpunkt kann
die aufsummierte Klopflautstärke aus dem Ausgangssignal des TPIC
abgelesen werden.
Diese Aufgabe, das Signal kurz vor der Int_Hold Auslösung auszulesen,
kann der ATmega8 übernehmen. Man benutzt dafür den
Analog-Digitalwandler, um die Spannung des Ausgangssignals vom TPIC
genau im richtigen Moment zu messen. Deswegen habe ich das
Ausgangssignal in meinem Verdrahtungsbeispiel an PC0 vom Atmega8
angeschlossen, das ist ein Analogeingang.
Es sollte für erste Experimente erst mal das Ziel sein, die
Klopflautstärke auf dem PC anzuzeigen. Somit kann man auch mal
ausprobieren, was die besten Einstellungen am TPIC sind. Das
Spannungssignal, das die Motorsteuerung erwartet, kann der ATmega8 dann
später auch erzeugen. Dazu würde ich einen Pulsweitenausgang verwenden
und mit RC-Tiefpass filtern. Dazu werden nur ein Widerstand und ein
Kondensator zusätzlich benötigt. Bevor man daran die Motorsteuerung
anschließt, kann man auch ein Zeigermessgerät dran anschließen um die
Funktionsfähigkeit zu testen.
Wie auch immer, ich würde das Ausgangssignal auf jeden Fall an den
ATmega anschließen, selbst, wenn dieser es nicht weiter verarbeitet,
stört es nicht, das dort anzuschließen. Es kann ja, trotzdem es dort
angeschlossen ist, auch noch zusätzlich an andere Schaltungen
angeschlossen werden, wenn sich das als notwendig herausstellt.
Grüße,
Peter
Mit der Erkennung des Klopfens der MS hast du recht. Sie kann nicht
erkennen wie Stark sondern nur wann es Klopft oder nicht. Also für mich
ein Schwarz/Weis Eingang. Aber zum Mitloggen habe ich ADC`s frei. Also
könnte ich doch den OUT vom TPIC doch an einen solchen anschliesen
oder???
Das mit der Int/Hold Funktion will mir gerade nicht so richtg
begreiflich werden. Oder meinst du das die Ausgangsspannung vom TPIC
sich solange steigert bis sie ein Gewissen Pegel (zb 3 Volt->wäre
vielleicht ein Klopfen ) ereicht hat, diesen Pegel als so eine Art
Max-Wert hält und wenn er weiter steigen würde dannn der ATMega so eine
art Reset des TIPC ausführt um wieder erneut die Klopfintensität zu
messen. Pegel am Ausgang dann wieder 0 Volt wenn nichts mehr klopft das
die Motorsteuerung Maßnahmen zur Klopfreduzierung eingeleitet hat.
Hab erstmal 4 TPIC´s bestellt in den Staaten.
Woher krieg ich nen SOIC Adapter zum Auflöten für die Teile? Einzeln
Anpinnen wird wohl nix mehr werden:-)
ATMega8 nehm ich wohl am besten in der 28DIP Version oder?
MfG Stefan
>Also könnte ich doch den OUT vom TPIC doch an einen solchen anschliesen
oder???
Nein, die Steuerung erwartet einen Wert, der der Klopflautstärke
entspricht. Der TPIC liefert aber das Integral davon. Das ist, wie wenn
du dich dafür interessierst, wie viel Liter Wasser in der Sekunde aus
einer Leitung in einen Eimer fließen und jemand sagt dir, es sind gerade
5 Liter im Eimer. Dise Information nützt dir nichts. Du musst den Eimer
regelmäßig ausleeren (INT_HALT auslösen) und schauen, wie viel nach
einer bestimmten Zeit drin ist.
So wie ich das verstehe, verwendet die Motorsteuerung schon einen ADC
für die Klopferkennung:
"Threshold (V): The is the voltage from the knock sensor module which
defines whether there is knock occurring or not. Note that you can
define a 6-element table of rpm versus voltage instead of a single
value."
Der ATmgea8 sollte also eine Spannung erzeugen, die der Lautstärke
entspricht.
>Woher krieg ich nen SOIC Adapter zum Auflöten für die Teile?
Beim Bürklin gibts einen (Best.-Nr. 11H1700), kostet aber fast 15 Euro.
Ich würde eher eine Leiterplatte ätzen, als das von Hand aufzubauen,
dann erübrigt sich der Adapter.
Den ATmega8 würde ich - zumindest auf den aller ersten
Versuchsschaltungen - als DIP einbauen.
Grüße,
Peter
Ich hab gerade gesehen, dass man den Messwert aus dem TPIC8101 auch über
SPI auslesen kann:
"The detected signal is full-wave rectified and integrated by use of the
INT/HOLD signal. The digital output from the integration stage is either
converted to an analog signal, passed through an output buffer, or be
read directly by the SPI."
Den Anschluss von OUT kann man sich also sparen.
Der Regelkreis wurde im Quellcode der MS geändert. Das Manual ist nicht
mehr auf den neusten Stand. Die MS entscheidet nur noch Klopft Ja oder
Nein und nicht mehr "Wie Stark klopf" es.
Platinen kann ich leider noch nicht selber ätzen. Eins nach dem anderen
:-)
Will ich aber auch unbedingt mal probieren.
Hab das was ich brauchte immer fertigen lassen. Meistens waren meine
Unkosten gedeckt bzw meine Sachen umsonst wenn ich ein Paar davon
verkauft hab.
Hab jetzt 5 Solche Adapter für nen 10er grad gekauft. Bauteile sind also
Unterwegs. Ich mach mich mal nun an den Schaltplan
MfG
Das ist ja auch kein Problem, dann muss eben der ATmega entscheiden, ob
es klopft oder nicht. Also aus dem 10 bit Messwert der Lautstärke
entscheiden, ob es zu laut ist. Digitalausgänge sind ja genug frei.
So hab hier mal meinen Schaltplan. So Locker Flockig wollte das aber net
von der Hand. Immer wieder Datenblätter wälzen und Schaltungen schauen.
Kannst du Bitte mal nen Blick drüber werfen?
Drauf sind der ATMega, MAX 232, TPIC8101, ein LM2904 für die 5 Volt
Versorgung, zwei Quarze (1x14 Mhz für den ATMEGA und einmal 4Mhz für den
TPIC)und jede Menge Kondensatoren. Die 4 Mhz hab ich aus dem Datenblatt
des IC`s wo rausgefischt. Harmonieren dann die beiden wenn sie
Unterschiedliche Taktraten haben? Den 14Mhz kann ich auf den Datenblatt
des TP IC net finden.
Muss noch die Kondensatoren bestellen da ich nix in der Größenordnung
teilweise hab.
MfG Stefan
Ja, dann fang ich mal an...
Die Kondensatoren am Max232 müssen 0,1 µF sein.
Die Induktivität an AVcc braucht man nicht, das kann direkt an Vcc, denn
wir verwenden den AD-Wandler nicht. Und selbst wenn wir ihn verwenden
würden, ist die Spannung sauber genug.
Das Quarz am Atmega muss zwischen PB6 und PB7 rein.
ARef benötigt einen 100 nF Keramikkondensator gegen Masse.
T2IN und R2IN vom Max232 sollten auf Gnd gelegt werden.
Man zeichnet zur besseren Übersichtlichkeit keine Leitungen über
Bauteile und verwendet Gnd und Vcc Symbole direkt am Bauteil, nicht mit
Leitungen dazwischen.
Und bitte überall, wo an einem IC Gnd oder Vcc steht, konsequent ein
Powerlabel verwenden und nicht mit Draht anschließen, das machts bei
gleicher Funktion nur unübersichtlich.
Ich hab in der Zwischenzeit mal mit der Software angefangen, der SPI und
TPIC-Treiber sind schon programmiert. Es fehlt noch die serielle
Schnittstelle, wobei ich die schon irgendwo hab, und ein Timer.
Edit: das Quarz am TPIC hab ich auf 10 MHz eingestellt, das am ATmega
auf 14,7456 MHz.
Grüße,
Peter
So Peter,
Hab die Schaltung mal Optisch Aufgebessert und die Mängel behoben.
Nur meine Kondensatoren passen denke ich. Für MAX232A gilt lt Datenblatt
0,01µF.
Also Im Prinzip wenn ich das jetzt richtig verstanden habe mit der
Kleinen Schaltung bzw Ablauf.
Als erstes Schaltung aufbauen. Die Drei SPI Leitung zum TPIC trennen da
ich erst den Bootloader draufbruzeln muss auf den ATMega. Was für
Software brauche ich um den Boolader aufzuspielen? Hardware zum
Bootloaderaufspielen
wird im Endeffekt doch momentan nur ein MAX232 (Herstellung der
Seriellen Schnittstelle??) benötigt bzw verwendet?
Wozu gibt es dann so sachen wie den ISP Programmer?
Im moment fühle ich mich wie ein kleines Kind das erste Krabbelversuche
unternimmt... Ans Aufstehen und laufen lernen will ich erstmal noch gar
net denken :-)
Grüße Stefan
Das Bild kann ich irgendwie nicht anzeigen. Im Firefox ist es komplett
weiß und ein Imageviewer behauptet, es sei zu groß.
So eine ISP Schaltung braucht man immer zum Programmieren, solang noch
kein Bootloader drauf ist. Erst wenn der Bootloader drauf ist, kann man
über die serielle Schnittstelle programmieren.
Zum Programmieren vom Bootloader kann man als Minimalausrüstung Ponyprog
verwenden.
http://www.lancos.com/ppwin95.html
Einfach die neueste Version installieren.
Wenn man einen Parallelport am Rechner hat, kann man die folgende
Schaltung zum ISP Programmieren aufbauen:
http://www.lancos.com/e2p/betterSTK200.gif
Noch einfacher ist diese hier:
http://www.ulrichradig.de/home/index.php/avr/base_kit_avr
Siehe Minimalbelegung eines Programmierkabels.
Das kommt mit nur 4 Widerständen aus und funktioniert (zumindest bei
mir) auch. Man darf damit nur keinen Fehler machen, sonst ist eventuell
der Parallelport hinüber.
Auf die Dauer ist natürlich so ein schönes Originalteil von Atmel mit
USB schöner:
http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=33
Wenn man dem CS Signal einen Widerstand von 10k gegen Vcc gibt, kann man
den TPIC auch angeschlossen lassen beim Programmieren. Das gehört
eigentlich noch in den Schaltplan rein. Dadurch ist er immer, wenn der
ATmega im Reset ist, deselektiert und verhält sich vollkommen passiv.
Grüße,
Peter
Hab mir heute den ISP Programmer bestellt.
http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=33
Ich denke mal eine Investition in die Zunkunft die sich sicher lohnt.
Morgen oder Übermorgen sollten die erste Bauteile eintreffen. Ein
Potentielles Testopfer hab ich auch. Ein Motor mit viel zu hoher
Verdichtung.
Der klingelt so stark im mittleren Drehzahlbereich unter hoher Last da
könnte man sich fast so ein Tool sparen :-)
Grüße, Stefan
Mir sind auch noch ein paar Kleinigkeiten am Schaltplan aufgefallen:
Der ATmega braucht von Vcc gegen Gnd noch 100 nF und der Kondensator
(C14) an AVcc sollte auch 100 nF haben. Am Spannungsregler sollte man
auch so nah wie möglich sowohl am Eingang als auch am Ausgang 100 nF
hinbauen, das macht den Regler robust gegen Hochfrequenz. Auch parallel
zu C9 sollten noch 100 nF sein. So große Kondensatoren wie C9
stabilisieren die Spannung nur bei niederfrequenter Last, der kleine 100
nF übernimmt die hochfrequenten Ströme.
Die Kondensatoren am Quarz (C12 und C13) sind viel zu groß, das sollten
22 pF sein.
Beim ATmega finde ich es recht nervig, dass die alternativen
Pinfunktionen nicht dranstehen, da muss man immer im Datenblatt
nachschauen (z.B. wo Rxd und Txd sind). Vielleicht kann man das ja in
der Bauteilbibliothek eintragen.
Die ganze Sache mit dem Anschluss des Klopfsensors fehlt auch noch.
Welche Klopfsensoren setzt man da eigentlich ein?
Grüße,
Peter
Jepp da hab ich mich wohl verschaut. Im Datenblatt ist wirklich 0,1µF
angegeben.
Die anderen Kondensatoren tausche ich Aus. Gibt es auch so ne Art
Anhaltspunkt für welche Störende Frequenz man welchen Kondensator nimmt?
Der Klopfsensor ist kein Hexenwerk der Technik. Ist ein einfacher
Piezogeber der auf einer Planen sauberen Fläche, Meist in der Mitte des
Motors etwas über der Lagergasse sitzt.
Standartmäßig ist in Deutschland bei Deutschen Motoren der hier verbaut.
http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=EEF5E364944158F2CEAB5E2723FF8467.sundoro?ccat_id=51
Auch bittet Bosch das hier an.
http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=EEF5E364944158F2CEAB5E2723FF8467.sundoro?ccat_id=85
Aber mit kleinen Leuten wollen die nix machen. Bosch hat auch sehr gute
Zündungstreiber wie den BIP 373. Mindestabnahme aber 1500 Stück..
Grüße, Stefan
So, hier stell ich mal meinen Softwareentwurf zur Verfügung.
Da ich keine Hardware habe, ist alles ungetestet.
Es sind der SPI Treiber und TPIC8101 Treiber komplett fertig.
Die gepufferte serielle Schnittstelle ist von Peter Dannegger und sollte
soweit auch funktionieren.
Was funktionieren sollte:
1
* Initialisierung des TPIC8101
2
* Auslesen der Werte aus dem Sensor und Übertragen zum PC 2 mal pro Sekunde
Was noch fehlt:
1
* Sinnvolle Initialisierungswerte für Verstärkung und Mittenfrequenz
2
* Timergesteuertes Auslesen der Daten aus dem TPIC8101
3
* Terminalsoftware, über die man im laufenden Betrieb Parameter verstellen kann
4
* Auswertung der Messwerte, also die Ausgabe der Signale an die Motorsteuerung
5
* Der Bootloader
Die Komplexität habe ich in separate Dateien ausgelagert, damit ist das
Hauptprogramm recht übersichtlich geblieben:
Einen kleinen Fehler mit größerer Auswirkung hab ich gerade gefunden,
die Interrupts müssen natürlich global eingeschaltet werden.
z.B. hier:
stdout = stdin = &uart_stream;
init_uart0(9600);
sei(); // <<---
Ansonsten läuft das zumindest im Simulator schon ganz gut.
So wenn der Postmann zweimal klingelt. Also der AVR ISP Programmer is
nun da.
Auf die beiden IC`s muss ich aber noch warten. Werde nachher mal auf den
Steckbrett die Schaltung schon mal anfangen aufzubauen. Damit es logehen
kann
wenn der Rest gar da ist.Bis dahin kein Problem. Aber mit der Software
was du da gemacht hast... Was kann ich Terminalsoftware benutzen? Muss
da wieder was Programiert werden? Keinen Plan davon... :-( Könnte ich
dich mal anrufen Peter?
Grüße, Stefan
>Was kann ich als Terminalsoftware benutzen?
Die folgenden Terminalprogramme sollten sich alle dafür eignen:
Unter Windows:
- Hyperterminal
- Putty
- Realterm
Unter Linux:
- GTKterm
- minicom
Ich verwende Putty dafür:
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
Einfach nach dem Start rechts oben "Serial" als Verbindung auswählen,
bei "Serial line" den verwendeten COM-Port einstellen und bei Speed
sollte eh schon 9600 stehen, sonst das dort eintragen.
Links die Category "Serial" auswählen und bei "Flow Control" den Wert
"None" auswählen.
Dann Open drücken. Das wars schon.
Wenn alles funktioniert, sollte im Terminal alle 0,5 Sekunden eine neue
Zeile vom ATmega kommen, etwa so:
Klopfwert: 2
Klopfwert: 40
Klopfwert: 980
Klopfwert: 675
Klopfwert: 430
Klopfwert: 320
usw.
Mehr kann mein Programm noch nicht, ich würde gern erst mal das testen.
Die Werte sind aber schon echte Messwerte, man sollte also eine Reaktion
sehen, wenn man den Klopfsensor leicht auf den Tisch klopft oder so.
Es kann auch sein, dass ich die Integrationszeit noch viel zu groß
eingestellt hab, dass also immer 1023 als Messwert kommt.
Die Schaltung läuft soweit auch ohne den TPIC, dann kommen halt
unsinnige Messwerte raus, aber "Klopfwert" und irgendeine Zahl muss auf
jeden Fall angezeigt werden.
Soviel zum Terminal. Vielleicht schreib ich irgendwann noch eine
richtige Software für den PC dazu, mit der man die Daten grafisch
aufzeichnen kann.
Beim ersten (und nur beim ersten) Programmieren des ATmega8 müssen die
Fuses richtig gesetzt werden.
Für die Softwareentwicklung und auch das Programmieren des ATmega
braucht man zwei Softwarepakete:
- AVR Studio
http://www.atmel.com/dyn/resources/prod_documents/AvrStudio4Setup.exe
- AVR Studio Service pack (optional)
http://www.atmel.no/beta_ware/avrstudio418/b715/AVRStudio4.18SP3.exe
- WINAVR C Compiler
http://sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-20100110-install.exe/download
Hat man das installiert, kann man mit AVR Studio ein Softwareprojekt
öffnen, erstellen und programmieren.
Klopfsensor.zip runterladen und in ein beliebiges (Projekt)Verzeichnis
entpacken.
Startet man AVR Studio, gibt es ein Startbild, in dem man direkt ein
Projekt öffnen kann.
Open drücken und im Projektverzeichnis "Klopfsensor.aps" auswählen.
Jetzt öffnen sich mehrere Quellcodefenster, einfach mal bei irgendeinem
das Fenster maximieren, dann ist die Unordnung weg.
Im Menu links kann man unter "Source Files" das Hauptprogramm
"Klopfsensor.c" durch Doppelklick auswählen.
Dort muss noch die Änderung (siehe oben) mit dem Einschalten der
Interrupts gemacht werden.
Speichern und mit F7 das Projekt erstellen.
Es gibt noch zwei Warnings, das habe ich aber auch schon behoben, die
neue Projektversion lad ich bald hoch. Die Warnungen können vorerst
ignoriert werden.
Jetzt das AVRISP MK2 an den USB anstecken. Es dauert etwas bis dann die
Treiber installiert sind.
Im Menu "Tools"->"Program AVR"->"Connect..." drücken.
AVRISP MKII auswählen.
USB auswählen.
Connect drücken.
Jetzt sollte sich ein neues Fenster öffnen mit allen möglichen
Einstellungen zum Programmieren des ATmega.
Als erstes muss man die Fuses richtig setzen.
Dort darf man keine Fehler machen, sonst wirds kompliziert mit der
Rettung des ATmega.
Zu den Fuses schreib ich nochmal gesondert was, wenn ich mir genau
überlegt hab, was ich da eingestellt haben möchte.
Auf jeden Fall Crystal Oscillator > 8 MHz mit großer startup time
einstellen (slowly rising power), den Rest nicht verändern, das sollte
vorerst funktionieren. Auf keinen Fall "External Clock" auswählen, sonst
war das vorerst das letzte, was der ATmega getan hat.
Danach kann man jedenfalls das eigentliche Programm reinladen.
Ich werd mir jetzt auch mal einen kleinen Prototypen davon aufbauen und
dann die Anleitung weiter schreiben.
Wenn das Projekt jetzt schon mal so dokumentiert ist, könnte man
eigentlich auch einen Artikel daraus machen, in dem man das alles
beschreibt.
Grüße,
Peter
also ich will Euch ja nicht den Mut nehmen, aber so einfach ist das mit
der Klopferkennung selbst mit einem so schönen Auswerte-IC wie dem
TPIC8101 nicht.
Prinzipbedingt tritt Klopfen nur an spezifischen Zeitpunkten im
Arbeitsspiel eines Zylinders auf. Dadurch ist es essentiell für die
Klopfpegelmessung eine Kurbelwinkel-/Zylinderzuordnung zu haben. Sonst
könnte es im schlimmsten Fall passieren, dass Ihr immer das Messfenster
des TPIC offen habt, wenn Klopfen überhaupt nicht auftreten kann. Ergo
es wird nichts gemessen aber der Motor "brennt" trotzdem ab. Desweiteren
geht es bei der Auswertung überhaupt nicht um den absoluten Wert der
Pegelmessung, sondern es wird eine recht aufwendige relative Bewertung
gefahren ...
Gruss
Wichtig für mich ist erstmal das der IC überhaupt arbeitet. Das mit dem
Knock Window hast du zum Teil recht. Ist aber eher oder weniger nur
interessant wenn man das ganze Zylinderselektiv machen möchte um genau
zu detektieren welcher Zylinder klopft. Verstellmöglichkeiten
Zylinderselektiv gibt es ja leider nur bei Motoren mit Einzel oder
Doppelfunkenspulen.
Wenn der IC mit einer Abtastrate von (ausgehend von einem Zylinder bei
8000 1/min) macht das Pro Sekunde 66 Zündereignisse. Also dauert es von
Zündung zu Zündung 0,015 Sekunden der TP kann aber bis zu 0,0004
Sekunden arbeiten.
Also erfassen wird er es jedesmal oder mache ich da nen Denkfehler
gerade???
Ein Time Window zum Messen kann ich ihm auch geben und es sogar dann
Zylinderselektiv regeln lassen bei meinen Motoren. Habe ein 60-2 Signal
auf der KW und eine Zylinder 1 Kennung auf NW. Beide Signale im Pegel
von 0-5 Volt als Rechtecksignal. Wenn der ATMega später mal weiß wo er
ist (bei wieviel Grad KW kann man ihm ein Fenster machen zum Auswerten.
MfG
Wenn Du aber mit einem so kleinen Messfenster arbeitest, dann ist der
SNR extrem schlecht. Das Fenster ist ja dafür da, um wirklich nur an den
entsprechenden Zeitpunkten zu messen und die Störungen so weit wie
möglich draussen zu lassen aber auch genug vom Klopfkörperschall zu
erfassen. Mit so kurzen Messfenstern und der zugehörigen Setupzeit für
Wandlung/SPI-Transfer und Start des neuen Fensters gehen schon gute
Teile des Klopfkörperschalls verloren ...
Wieso sollte übrigens mit einer z.B. Verteilerzündverteilung eine
zylinderselktive Klopfregelung nicht gehen ?
Gruss
Bei einer Verteilerzündung ist meist keine Signal für Zylinder 1
Erkennung vorhanden da die Zündreinfolge ja Mechanisch vorgegeben ist.
Gut gibt auch Motoren mit Sequentieller Einspritzung und Verteiler die
waren aber nur Kurz auf dem Markt. Rein Theoretisch würde das mit der
Verteilerzündung gehen.. Doch hier spielt die Mechanik eine große Rolle
für mein Empfinden.. Da schwankt der ZZP im LL schon mal gut und gerne
+- 2 Grad hin und her. Bei einer Ruhenden Verteilung konnte ich das so
nicht festellen. Unterschiede im Zündzeitpunkt sind halt recht groß
durch die Verteilerkappe. Auch die Zündenergie ist bedingt durch die
kurzen Ladezeiten bei hoher Drehzahl mit ordenlich hohen Drücken im
Zylinder meist nicht ausreichend. Kann man zwar durch verringern des
Elektrodenabstandes ein bisschen kompensieren aber ist doch nur eine
Notmaßnahme da die Flammbildung darunter leidet und auch die
Klopfneigung durch so etwas zunimmt.
Aber nochmal zur Erfassung des Klopfsignales in Abhängingkeit zum
Messfenster. Das Hold/Int Signal gibt doch den Befehl "Fange an zu
messen und höre damit auf oder"???
Grüße, Stefan
das mit der Verteilerzündung kann ich so nicht bestätigen. Sicher es
gibt keine Z1-Erkennung aber die zylinderselektive Klopferkennung und
Regelung funktionieren sehr gut ...
Ja, mit dem Fenstersignal low/high startest Du die Messung und die
Integration mit high/low wird der Intergrator in Hold geschaltet und bei
dem TPIC zusätzlich die Wandlung für den digatalen Teil gestartet (es
gab auch mal einen baugleichen IC von Intersil, dort gab es keinen
digitalen Teil und es wurde nur der Intrator in den Hold Zustand
geschaltet. Der TPIC lässt sich auch in einem Kompatibilitätsmodus zu
diesem IC betreiben ...)
Gruss
Das mit der Verteilerlosen Zündung und des Aussetzern kann ich
jedenfalls bestätigen. Ich hatte schon das Problem das mir der Zündfunke
"ausgeblasen" wurde unter entsprechenden Bedingungen. Funktionieren kann
das schon mit der Rotierenden Verteilung. Veilleicht muss ich meine
Aussage dahingehend etwas berichtigen. Für mich überwiegen die Vorteile
der RUV. Kenne bis jetzt halt nur Zylinderselektive Regelung mit einer
Ruhenden Verteilung. Was für eine Steuerung verwendest du wenn du den
HIP9011 ansprichst? VEMS? Den hab ich auch gefunden. Beide IC´s scheinen
echt indentisch zu sein. Bei VEMS Nutzern wird auch geschrieben das man
beide einfach "durchtauschen" kann.
Grüße, Stefan
Nochmal zum Verständnissf für mich. Der INT/HOLD befehl komibinert mit
der Integratorzeitkonstante macht letzendlich die Auswertung oder?
Grüße, Stefan
nö, eine Auswertung macht der TPIC keinesfalls, er konditioniert
lediglich das Signal des Piezosensors, macht eine Gleichrichtung,
Hochpassfilterung und dann Integration. Das Ausgangssignal an diesem
Integrator ist ertsmal noch nichts. Es wird erst dann zu einer
Information bzgl. Klopfen, wenn es in Beziehung zu Signalen aus der
Vergangenheit (z.B. letzte Verbrennung) gesetzt wird (dazu gibts dann
natürlich noch vieles andere zu beachten um wirklich Klopfen erkennen zu
können) ...
Gruss
ach, bzgl. Steuergerät, ich habe ein komplett selbst entwickeltes
Steuergerät. Ich mag auch nicht so den TPIC oder den Intersil, da die
beiden IC's problematisch mit der Filtergüte (hat sich bei
Indizierungsversuchen leider so gezeigt) und der Ansteuerung vom uC sind
(es ist z.B. äusserst kritisch einen SPI-Bus winkelsynchron zu betreiben
bei 12000Upm) ...
Gruss
Nach meiner Softwaresimulation benötigt ein Auslesezyklus vom TPIC über
SPI knapp 46µs.
Angenommen, die Mittenfrequenz des Bandpasses wäre auf 5 kHz
eingestellt, würde eine Periode der Mittenfrequenz 200 µs dauern.
Durch den Auslesevorgang geht also nicht mehr als eine Viertelschwingung
der Mittenfrequenz verloren.
Ich halte das für absolut vernachlässigbar und sehe überhaupt kein
Timingproblem bedingt durch den SPI.
Eine Kurbelwellenumdrehung dauert bei 12000 UpM 5000 µs, demnach sollte
auch mit dem TPIC genügend Zeit bleiben, um ausreichend viele Messwerte
zu erfassen.
Wenn das nicht reicht, habe ich noch die Option, die Taktfrequenz des
SPI um einen Faktor 4 zu erhöhen.
Das Aufsynchronisieren der Messung auf die Kurbelwellenposition ist
momentan in der Hardware noch nicht vorgesehen, ich werde das aber noch
einbauen.
Grüße,
Peter
ja, man muss das natürlich im Kontext eines kompletten
Motorsteuergerätes sehen. Dort hast Du mehr als einen SPI Teilnehmer und
es ist sehr unglücklich, wenn ein Teilnehmer winkelsynchron und der
andere zeitsynchron bedient werden müssen, oder sogar 2 Teilnehmer zu
verschiedenen Zeitpunkten winkelsynchron. Das erhöht den
Synchronisationsaufwand doch erheblich. In meinem Steuergerät z.B.gibt
es extrenes EEPROM, Breitbandlambdasondenauswertung,
Steuergerätetemperatur, Kaltstellentemperatur für Abgastemperaturmessung
und Klopfsignalerfassung und Konfiguration (zylindersequentielle
Konfiguration vor der Messung brauchts auch noch) alles über SPI. Alles
mit ganz verschiedenen Anforderungen.
Dazu kommt, das es meist nur Sinn macht eine Sync-Task zu haben, damit
verschwendest Du für die Kommunikation die Zeit von 2x46us
(Konfiguration und Auslesen) in der Sync-Task, bzw. must erheblichen
Aufwand treiben, um eine Vorübertragung zu starten, damit die Daten in
der Sync-Task vorliegen. Wie gesagt alles im Kontext eines kompletten
Motorsteueregrätes. Da ist dann doch noch einiges andere zu tun in der
Sync-Task (die Klopferkennung ist da eher untergeordnet). Und
schliesslich ist bei einen 6Zylinder z.B. bei 10000Upm nur noch
2ms/Segment übrig ...
Gruss
Steuergerät liegt bei 1650Euro, incl. unbegrenztem Support und
unbegrenzter Updateberechtigung für die Steuergerätesoftware. Jetzt
werden hier wieder Interessierte die andere Anlagen kennen aufschreien,
wegen des 'ach so überhöhten Preises, aber man darf hier einfach nicht
die geringen Stückzahlen und den doch sehr intensiven Support vergessen
(neben den eigentlichen Steuergeräteproblemem werden natürlich auch noch
diverse bautechnische Probleme gelöst). Dazu werden auch Kundenwünsche
bzgl. Funktionen ode Änderungen, falls umsetztbar, meist kostenlos
umgesetzt ...
Das Steuergerät wird derzeit meistens im Dragracing bei Fahrzeugen der
Kategorie >600PS eingesetzt. Da ist der Motorschaden unendlich viel
teurer als ein Steuergerät und bei 3bar Ladedruck muss dann auch die
Klopfregelung perfekt funktionieren ...
Das Steuergerät ist eigentlich ein Spass- und Hobbyprojekt, was aus
Langeweile, Spass an der Sache und Interesse entstanden ist. Ich
entwickle halt Steuergeräte für die Serie und manchmal ist mir halt
langweilig und ich dachte man könnte mal funktional die Lücke zwischen
den bisherigen am Markt befindlichen freiprogrammierbaren Steuergeräten
und Seriensteuergeräten schlisssen. Ich wollte halt mal sehen und zeigen
was mit kleinen Mitteln doch so alles geht, da bisherige Steuergeräte in
meinen Augen doch schon vom Konzept her ettliche Jahre auf dem Buckel
haben (es sind vom Konzept her meistens Umsetzungen von
Vergaserfunktionalität auf Steuergeräte mit einigen kleinen
Korrekturen). Ausnahme bildet hier natürlich der Grosse mit B und seinen
Steuergeräten der MSA-Serie, aber hier sprengt der Preis jeden Rahmen
des Hobby-Racers ...
Gruss
Thorsten
Also 1650,- für ein ECU die auf den Profi Limit mithalten kann finde ich
für mein Empfinden okay. Dein Konzept ist okay und sehr gut Aufgezogen
das muss man neidlos anerkennen. Da steckt richtig Arbeit dahinter.
Auch wenn ich sagen muss das eine MS mit einem MS3 Prozzesor deiner ECU
bis auf die Klopferkennung in fast nichts mehr nachsteht auser die
dämliche Klopferkennung :-) Ich hab letztens mit zwei VEMS Nutzern
gesprochen (Pedant zur MS mit ATMEGA Prozessor) die eigentlich sehr
zufrieden mit der Klopfregelung der VEMS mittels HIP-IC sind. Einmal mit
dem Kopfhörer abgehört und die Filter bestimmt und fertig. Der eine
fährt einen 2.O Liter 4-Zylinder mit runden 550PS im Altagsbetrieb und
Quarter Mile Einsätzen. Einer der wenigen die ich kenne die Permanent
auf Eigener Achse zu solchen Event´s antretten egal wie weit die Anreise
ist :-)
Ich finde ein Lösung wie Peter es anstrebt in Ordnung.
Für die Hardware zur Drehzahlerfassung kann ich folgenden IC Empfehlen.
Den MAXX9926. Kann für Hall/Induktivgeber verwendet werden.
Eine hätte ich aber noch auf der Wunschliste und zwar einen
Kopfhöhreranschluss des ungefilterten Klopfsensorsignal´s.
Wäre sowas möglich mittels zb einen LM324?
@ Peter Dein Packerl ist heute an dich rausgegangen.
Grüße, Stefan
na ja, da muss man etwas genauer hinschauen. Vordergründig sieht es
ähnlich aus, allerdings fehlen natürlich erstmal noch Ethernet zum
Messen und die gesamte Funktionssoftware ist komplett ein anderes
Konzept (ich glaube es ist z.B. mit einer VEMS kaum möglich 100
Messwerte zylindersynchron zu messen, eine Zylinderfüllung zu bestimmen
oder eine belibige Applikationssoftware zu verwenden). Meins ist dem
eines Seriensteuergerätes näher. Die doch etwas einfacheren Konzepte der
z.B.Fülllungserfassung über einfache Druck/Drehzahlkennfelder sind was
ganz anderes als ein vollständig physiklisch basierter Luftpfad, incl.
z.B Saugrohrmodell und Restgasmodell (die Breitbandsondenauswertung der
VEMS hat auch durchaus noch ein paar Probleme ;-))
Ich kann Dir halt sagen wie effizient Dein Motor bzgl.
Füllungsverlauf/Drehmomentverlauf funktioniert und wo noch was durch
z.B. Steuerzeiten zu korregieren ist (das geht mit einem
Druck/Drehzahlansatz der lambdabasiert abgestimmt wurde prinzipbedingt
nicht, da es bei extremen Überschneidungen eben starke
Lambdaverfälschungen gibt). Ich könnte da noch unzälige Unterschiede
aufzählen. Die eröffnen sich aber erst bei ganz genauer Betrachtung und
Kenntnis der Probleme, sowie evtl. Lösungsmöglichkeiten ...
Ich will hier nichts schlecht reden. Alle Steuergeräte am Markt werden
einen Motor zum Laufen bringen (manche schlechter manche besser,
billiger oder auch teurer), aber wie effizient, langzeitstabil und
sicher sie das tun, das ist der wirkliche Unterschied und ob ich
kryptische Zahlenwerte applizieren will oder physikalisch basiert, das
macht dann den wahren Unterschied in der Abstimmzeit und dem Verständnis
aus ...
Gruss
>Eine hätte ich aber noch auf der Wunschliste und zwar einen>Kopfhöhreranschluss des ungefilterten Klopfsensorsignal´s.>Wäre sowas möglich mittels zb einen LM324?
Das ist kein Problem, mach ich drauf.
Es gibt jetzt eine Wunschliste:
http://www.mikrocontroller.net/articles/Klopfsensormessgeraet#Wunschliste
Grüße,
Peter
@Thorsten
Zylindersynchrone Auswertung kann die MS überhaupt nicht da sie nicht in
der Lage ist eine Time Window zu erstellen. Soll aber demnächst kommen
mit dem neuen Prozzesor und ab Firmware 1.0. Die Datenerfassung mittels
MS ist aber schon recht gut meiner Meinung nach. Die kostenlosen
Applikationssoftwaren
erfüllen sehr gut ihren Zweck. Jedenfalls für uns kleine Anwender mehr
als Ausreichend bis jetzt. Zwar muss man mit dem ein odere anderen Bug
leben der so auftaucht aber ist halt so :-)
Du arbeitest ja mit HFM wenn ich mir dein Manual so ansehe das ich
übrigens eines der besten Manuals für solche Steuerungen erachte was mir
bis jetzt in die Finger kam. Das da deine Luftmasse natürlich exacter
ist als eine bei einer P/N oder Alpha/N auswertung liegt klar auf der
Hand. Misst du etwa so Zylinderselektiv die Luftmasse die jeder Zylinder
sich holt? Das dürfte aber nur bis zu maximal 4 Zyinder dann hundert
Prozentig genau Funktionieren da sonst ja schon ein Anderer Zylinder mit
Luft holt? Auser du machst das Messfenst kleiner bei einen 6 Zylinder
dann nur noch maximal 120° KW.. Gedankengang richtig?
Hat die VEMS überhaupt nen Lambdacontroller On Board? Ich vertraue da
nur auf meine LC-1 bis jetzt. Zwar etwas teurer in der Anschaffung aber
dafür ein absolut für mich Zuverlässiger Controller. Zur gemisch
Korrektur für jeden Zylinder einzeln arbeiten wir mit einzel AGT
Messung.
4 Lambdacontroller sprengen das Bastler/Hobby Budget sowie die
Verbaumöglichkeiten.
Die Schaltung für dem LM324 wird dann einfach auf den Klopfsensor
Eingang mit drauf gehängt? Verfälscht sowas nicht? Zwar ne Dumme frage
aber ich bin halt leider nicht ganz so Fit in der Materie. Bin grad wie
ein kleiner Junge der Spass am lernen hat. Danke euch beiden Peter und
Thorsten
die Luftmasse wird zylinderselektiv und segmentsynchron gemessen ;-))
Das macht den "feinen" Unterschied aus (gegen P/N oder alpha/N). Das
ganze läuft über eine 0D Behältermodell (1. Hauptsatz Thermodynamik).
Ich weiss ja welcher Zylinder was und wann aus dem Saugrohr gezogen hat
und was wieder nachgeströmt ist. Somit kann über die Bilanz diese
"Integrators" problemlos die Einzelzylinderluftmasse sogar bezogen auf
den Einlasssteuerzeiten ermittelt werden. Du siehst sogar, falls
Zylinder wieder Masse ausschieben :-))
Ja, die VEMS hat den Versuch eines Breitbandcontrollers gemacht.
Funktioniert aber nach meinen letzten Erfahrungen leider nicht wirklich
(da kann ich den meien Preis/Leistungsverhältnis dann auch wieder
deutlich verbessren, da Du bei meiner Anlage die Breitbandauswertung
mitbekommst und keinen LC-1 dazu brauchst. Damit ist dann lambda auch
verfügbar in den Datenaufzeichnungen (zylinderselektiv) und für die
Diagnose) Für Abstimmfälle gibt es auch die Möglichkeit mit der einen
Sonde hochauflösend zylinderselektiv zu messen (Sondersoftware), da ich
ein einfaches Abgasanlagenmodell in Beziehung zum Abgasmassenstrom auch
laufen lassen kann ...
Wie gesagt ales nur aus Interesse am technisch Machbaren mit kleinem
Budget ;-))
Gruss
Dier Erfassung der Luftmasse nach Zylinder bzw Zahnsegment das kann ich
ja noch logisch nachvollziehen und macht auch Sinn.
Das mit dem Lambda will mir nicht so richtig in den Kopf gehen. Das sich
ja das Gesamtlambda aus den einzelnen Abgaströmen zusammensetzt. Wie
bitte willst du immer genau erfassen welcher Abgasstrom von welchem
Zylinder gerade an der Sonde vorbeisaust???????? Bei mir sitzt die
Lambda aus Thermischen Problemen ca 1,30m vom Ausgang des Turboladers
weg. Bis dahin vermischt sich doch alles vorallem in hohen
Last/Drehzalbereichen???
na, Du sagst es ja schon fast selbst. Wenn Du den Abgasmassenstrom und
die Temperatur bei ja konstantem ;-) Abgasanlagenvolumen kennst, kannst
Du auch halbwegs gut sagen (die Laufzeit bestimmen) aus welchem Zylinder
das Abgas kommt (das wird nur immer schwieriger, falls deine Abgasanlage
sehr hohen Staudruck aufweist) ...
ach so (man sollte bis zum Ende lesen ;-) ), natürlich Sonde nach dem
Turbolader ist dafür nicht wirklich hilfreich, wobei natürlich auch hier
jeder Zylinder einzeln erkennbar sein müsste, wenn es sich um einen
Stossaufladungskrümmer handelt (das ist ja gerade der Witz an der
Stossaufladung ...)
Wieso hast Du die Sonde nach dem Lader. Jede Temp. die der Lader kann
kann die Sonde schon lange ?!
Nicht ganz richtig. Wenn die Temp der Sonde am Fuß über 600° steigt ist
ihre Messunggenauigkeit nicht mehr gewährleistet. AGT kann sie immer
Dauerbetrieb zwar 930° und Maximal 1030° zwar wegstecken aber wenn der
Fuß/Sechskannt zu heiß wird steigt sie aus da meines Wissen die
Sondenheizung zumacht...
Vorallem verkürzen aber auch solche AGT´s sehr stark die Lebenszeit der
Sonde.
Siehe mal kurz hier
http://www.bosch-motorsport.de/pdf/sensors/lambda/LSU42.pdf
Ähnliche Erfahrung haben wir mit den LC-1 gemacht. Deshalb die
Entfernung zum Turboausgang
na, Du hast ja nicht gesagt, dass Du eine 4.2 verwendest. Ich nehme wenn
möglich immer eine 4.9, diese ist schneller und kann höhere Temperturen
ab.
Der Link ist ja nur die Info für Arme von Bosch (es gibt noch eine ~25
seitige TKU). Wenn Du die TKU anschaust siehst Du deutlich klarer. Da
heisst es dann 1030°C für 250h, ab 850°C die Heizung aus. 600°C am
Seckskant sind noch gut möglich. Mit Keramiktemperaturkompensation
gibt's auch erstmal keinerlei Messungenauigkeiten, aber meines Wissens
nach gibt es im LC-1 sowas leider nicht, bei mir schon ...
Gruss
Bedingt durch die Konstruktion (Serien Integrallader vom C20LET von
Opel)
und Leistungen an der Schmerzgrenze des Laders kommen durch den hohen
Abgasgegendruck etwa 960° grad bei Lambda 0,74 raus. Bei meinen GTK 450
Umbau den ich gerade mache habe ich noch keine Werte. Bei meinen Kumpel
seinen Liebling (Polo 1 mit 1.4 16V und Aufladung mittels M62 Roots
Gebläse und GT2871 mit 0.86 Abgasgehäuse) sind es auch um die 950°
gewesen. Durch den Umbau auf Laminova Cores in der Ansaugbrücke hoffen
wir aber das wir da runter kommen.
Ist das TKU öffentlich erhältlich? Gibt es für ne LSU 4.9 überhaupt nen
Aftermarkt Controller???
ich habe für die 4.9 noch nichts im Aftermarket (ausser meine ECU, die
kann beide Sonden ;-) ) gesehen.
Die TKU kann ich die gerne mal zusenden bei Bedarf. Schick' mir doch
einfach 'ne Kontaktmail über meine Website ...
Ich denke eh wir sollten eine andere Art der Komunikation wählen um den
Thread hier nur zu zu Müllen Thorsten. Sind ein Wenig vom Thema
abgeschweift:-)
Gruß
@ Peter So mein aller erster ATMega ist ins leben gerufen!!! Ich kann es
gar nicht glauben :-) Putty spricht auch an. Hab das ganze bis jetzt
aber ohne den TPIC Laufen. Den brate ich noch ran. Muss leider die PIN`S
des IC leider einzeln erstmal ankabeln da meine Adpaterplatinen irgendwo
in dieser Welt unterwegs sind :-(... Vielen vielen Dank Peter nochmal.
Eigentlich wollte ich dich mal anrufen aber bin noch net dazu gekommen.
Gruß, Stefan
Ich werd meine Schaltung auch bald in Betrieb nehmen. Dein Päckchen ist
angekommen und somit hab ich jetzt auch Hardware zum testen.
Ich meld mich dann, wenns läuft. Das dauert bei mir etwas länger, weil
ich gleich eine richtige Leiterplatte mache.
Wegen dem Kopfhörerausgang weiß ich noch nicht, ob ich das überhaupt mit
einem LM324 mach, oder ob vielleicht ein stärkerer OP nötig ist.
Belastet wird der Sensor dadurch jedenfalls nicht signifikant, dafür
setzt man einen Impedanzwandler ein, bevor man auf die Verstärkerstufe
geht. So wird die Messung des TPIC nicht beeinflusst.
Grüße,
Peter
Hab das mal hier nachgeschaut mit dem OP und den Impedanzwandler.
Eigentlich recht einfach wenn einen mal einer mal mit der Nase mal in
bisschen hinstupst:-) Mein erster Testlauf mti dem TPIC ist ohne Erfolg.
In Putty passiert nichts mehr. Wenn ich den IC aus dem Sockel entferne
fängt es an zu laufen. Ne Idee Peter?
Das darf eigentlich so nicht passieren, da der TPIC das Programm nicht
anhalten kann, egal welche Daten von ihm zurückkommen. Ich würde den
Aufbau nochmal genau überprüfen, vielleicht entsteht irgendwo eine
ungewollte Verbindung beim Einstecken oder der TPIC ist falsch
angeschlossen.
Insbesondere würde ich überprüfen:
- ob die Versorgung stabil 5 Volt hat
- der Resetpin vom ATmega stabil 5 Volt hat
Schon mal gut zu wissen das ein Bug in der Software daruf keine
Auswirkung haben kann. Also die Spannungsversorgung steht an beiden. Dem
TPIC und dem ATMega. Die einbaulage vom Quarz spielt aber keine Rolle
oder?
Die Einbaulage ist egal, aber es sollte recht nah am ATmega sein und die
Kondensatoren davon auch.
Ich bastel gerade an dem Kopfhörerausgang. Soll man beide Sensoren
getrennt hören können, also z.B. einen am linken Ohr und den anderen
rechts oder reicht ein Verstärker, der nur Sensor 1 auf beide Seiten
verstärkt?
Also Fehler gefunden. Hatte den SPI BUS falsch angeschlossen. Was
anderes hätte es ja auch fast nicht sein können. Tja solche Sachen
passieren halt auf einen Experimentierboard :-)
Ich hab jetzt das Layout fertig. Vielleicht muss man noch ein paar
Details daran ändern (z.B. Klemmen- und Steckerpositionen), aber im
Wesentlichen sollte es passen.
Es ist so ausgelegt, dass man es selbst ätzen kann und ohne besondere
Ausrüstung bestücken kann. Die Lieterkarte kann (wenn man alle
oberseitigen Leiterbahnen als Draht einbaut) auch einseitig sein.
Schaut gut aus Peter.
Wegen dem Verstärker IC für den Kopfhörerausgang hab ich mich mal a
wenig umgeschaut und bin auf den hier gestoßen.
http://focus.ti.com/lit/ds/symlink/opa134.pdf
Gruß, Stefan
Ich hab einen LM386 als Verstärker eingebaut, der OPA134 ist ja
eigentlich kein Leistungsverstärker.
Es gibt einen Verstärker, der beide Seiten des Kopfhörers ansteurt. Über
einen Jumper kann man auswählen, welcher Sensor abgehört werden soll.
Den Jumper kann man auch weglassen, dann ist der Verstärker komplett
abgekoppelt und leise.
Die Änderungen sind jetzt alle im Artikel eingebaut, auch der Schaltplan
und das Layout sind hochgeladen.
Grüße,
Peter
Eigentlich dachte ich an den OPA2134 der zweikanal Version des OP. Und
das man Quasi über einen DIP Schalter wählen kann welcher Klopfsensor
auf beide ohren kommt oder jeder Sensor auf ein Ohr. Das dürfte aber nur
für V-Motoren interessant sein. Der hat zwei Eingänge und ist ein
Verstärker der sehr gut geeignet ist für Kopfhörerausgang lt
http://www.loetstelle.net/projekte/opa2134headphone/opa2134headphone.php
Warum ist der kein richtiger Verstärker? Sind das nich alle OP´S
Es ist halt ein Kleinsignal OP, der zwar sehr präzise ist, aber nicht
besonders viel Leistung bringt. Ich hab es für wichtig gehalten, dass
man das auch recht laut machen kann, wenn man neben einem
Verbrennungsmotor unter Vollast steht, könnte es halt sein, dass ein
normaler OP zu leise ist.
Außerdem ist der LM386 in Deutschland fast in jedem Elektronikgeschäft
zu bekommen.
Einen zweiten Kanal kann man ja noch irgendwann einbauen. Jetzt möchte
ich aber erstmal so die Software fertig machen.
Grüße,
Peter
Mit der Lautstärke hast du mehr als Recht. Denke aber trotzdem das der
genug Leistung dafür hat. An 600 Ohm -> 120 db. Ich order mal wieder
was beim Reichelt. Brauche ich auch C24+C25 und den Wiederstand am
Ausgang? Beim OPA hab ich sowas noch net gesehen.
Mein Funktionsgenerator ist auch eingetroffen. Heute Abend wenn es
klappt mach ich mal nen Test damit.
Gruß, Stefan
>Brauche ich auch C24+C25 und den Wiederstand am Ausgang?
Ja, die braucht man. C25 entkoppelt den Gleichspannungsanteil, der bei
unidirektionaler Spannungsversorgung zwangsweise auftritt. C24 und R9
werden benötigt, dass der Verstärker nicht schwingt, wenn ich das
richtig verstanden habe. Die Schaltung ist fast genau wie in dem Demo im
Datenblatt.
>An 600 Ohm -> 120 db
Das sagt nichts über die Leistung aus. Das ist nur eine
Verstärkungsangabe und bedeutet, dass das Signal bei 600 Ohm Last nicht
mehr als 120 dB (Faktor 1000000) verstärkt werden kann. Dieser Parameter
ist für unsere Anwendung aber völlig egal, da wir nur einen
Verstärkungsfaktor von etwa 20 brauchen.
Der für die maximale Lautstärke relevante Parameter ist
Short-Circuit Current ±40 mA.
Also der Strom, der fließt, wenn man den Ausgang kurzschließt. Das
sollte man natürlich nicht machen und daher kann man im normalen Betrieb
vielleicht 10 mA nutzen.
An einem Kopfhörer mit 64 Ohm, wäre das eine Ausgangsleistung von
0,01 A * 0,01 A * 64 Ohm = 6,4 Milliwatt
Für den LM386 wird bei 0,2 % Klirrfaktor (was noch sehr gut klingt) eine
Leistung von 125 Milliwatt angegeben.
Das habe ich für angemessener gehalten, wenn man bedenkt, dass ein
normaler Kopfhörerverstärker wie der TPA152 mit 75 Milliwatt angegeben
ist. Da erschienen mir die 10 mA der meisten Standard-OPs einfach zu
wenig.
Leider bekommt man den TPA152 nicht so einfach, deswegen habe ich den
LM386 eingebaut.
Grüße,
Peter
So Tag der Wahrheit ist da Peter. Habe mein Frequenz Generator in
Betrieb genommen und mit dem Scope geprüft. Als Simulation als
Klopfsenosor hab ich mit ner Amplitude V/V ca 1,6 Volt AC mal
eingestellt. Nur was muss ich jetzt tun um den TPIC zu aktivieren? Wo
kann ich die Frequenzwerte, Integrator, Gain einstellen. Das muss ich
doch im AVR Studio machen und dann wieder in den ATMEGA brennen oder?
Die Einstellungen passieren im Moment alle in der Datei TPIC8101.c
1
// Takt Vorteiler und SDO Funktion auswählen.
2
voidTPIC_init(void)
3
{
4
// Porteinstellungen
5
TPIC_deselect;// Chip select high
6
DDR_TPIC_CS|=(1<<Pin_TPIC_CS);// Chip select ist ein Ausgang
7
PORT_TPIC_test|=(1<<Pin_TPIC_test);// Test Pin high
8
DDR_TPIC_test|=(1<<Pin_TPIC_test);// Test Pin ist ein Ausgang
9
TPIC_hold;
10
DDR_TPIC_Int_Hold|=(1<<Pin_TPIC_Int_Hold);// Int_hold ist ein Ausgang
11
12
// Taktfrequenz einstellen
13
TPIC_transfer(TPIC_prescaler_SDO);
14
15
// Advanced SPI Mode auswählen
16
TPIC_transfer(0b01110001);
17
18
// Initialisierungswerte einstellen
19
TPIC_select_channel(CH1);
20
TPIC_set_bandpass_frequency(TPIC_freq_5_29_kHz);
21
TPIC_set_gain(0);//TBD
22
TPIC_set_integration_time_constant(0);//TBD
23
}
Vorallem bei den folgenden beiden Funktionsaufrufen müssen sinnvolle
Werte eingestellt werden:
TPIC_set_gain(TPIC_gain_1_000);
TPIC_set_integration_time_constant(TPIC_intTime_100_us);
Warum als Ausgabe immer 2 angezeigt wird, hab ich noch nicht
rausgefunden, das ist aber mit Sicherheit ein Softwarefehler.
Grüße,
Peter
Bei manchen Versionen von WinAVR tritt beim Debuggen im Simulator das
Problem auf, dass AVR-Studio nach fehlenden Dateien fragt. Es wird ein
Pfad angegeben, der auf dem Rechner nicht existiert.
So wie es aussieht, tritt das Problem nicht mit allen AVR-Prozessoren
auf, bei mir ist es mit diesem Projekt zum ersten Mal aufgetreten.
Lösung siehe:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=96945
Die Vorgehensweise von Shadowalker273 scheint das Problem zu lösen.
Einfach immer folgenden Pfad angeben:
C:\WinAVRxxxxxx\lib\gcc\avr\4.3.3
Je nach dem, wo WinAVR installiert ist.
Hallo zusammen,
das Projekt ist sehr interessant !
Ich habe es mal auf einem PIC24FJ32GA004 portiert.
Allerdings hab ich Probleme mit dem TPIC.
Die SPI-Schnittstelle ist soweit Ok, Signale kommen an, die Frequenz ist
mit 1.8MHz auch noch im Rahmen.
Die Initialisierung des TPIC ist ok, ich habe die eingelesenen Werte
kontrolliert und es scheint alles in Ordnung. Trotzdem habe ich ein
Problem im advanced mode den Wert auszulesen. Als Antwort erhalte ich
immer den bereits gesendeten Wert.
z.B. :
1
Wert=TPIC_transfer(TPIC_prescaler_SDO);//Hier kommt TPIC_prescaler_SDO
2
knock_value=TPIC_transfer(TPIC_prescaler_SDO);//Hier auch ....
Zuerst bestand der Verdacht dass eine Verbindung zwischen MISO-MOSI
besteht.
Dies hab ich mittels weglassen vom CS\-Signal überprüft.
Hat jemand eine Idee was ich flasch mache ??
Ich habe die Initialisierung von Peter 1:1 übernommen.
So, jetzt ist meine Testhardware fertig.
Also, das beschriebene Verhalten tritt bei mir auch auf, Ursache war ein
falsch eingestellter SPI Modus. Es muss mode 1 sein.
Jetzt kommen andere, jedoch immer noch falsche Daten.
Ich hab irgendwie den Eindruck, dass der Advanced SPI Modus nicht
aktiviert wird.
Mal sehen...
So, nachdem ich jetzt noch die Intergationszeitkonstante, die
Verstärkung und das Auslesezeitfenster auf plausible Werte gestellt
habe, kommen gute Ergebnisse raus.
Den entsprechenden Quellcode hab ich schon im Artikel veröffentlicht.
Grüße,
Peter
Hallo Peter,
sorry wenn ich mich nicht mehr hier im Forum gemeldet habe,
aber fürs Programmieren und Basteln bleibt nicht immer Zeit.
Ok, Hardware und Software laufen soweit. Danke für dein
Beispielprogramm.
Nun tritt ein anderes Phänomen auf.
Irgendwie ist der Tpic sehr anfällig für starke Signale.
Tests mit einem Frequenzgenerator bei konstanter Frequenz zeigen dass
mit dem Pegel des Eingangssignals auch der ausgelesene Wert des TPIC
ansteigt. Ein weiterer Test an meinem Wagen zeigen auch das selbe
Resultat, bei 900 RPM ist das
Ausgangssignal ca. 70, bei 6000 RPM = 1010. Die Verstärkung des TPIC ist
bei 0.111 eingestellt.
Das Abhören des Sensors zeigt allerdings kein Klopfen.
Ein willkürlich herbeigeführtes Klopfen wird aber schon mit einer
Pegeländerung von 300 korrekt angezeit.
Hatte jemand schon ähnliche Probleme ?
Hier meine eingestellten Werte:
Frequenz = 41 (6.94 kHz)
Gain = 63 (0.111)
Integrator = 24 (320us)
Hallo falls es noch jemanden interessiert. Es gibt bei den alten Polo 6N
Bj 95-2000 sehr wohl eine Zylinder 1 Erkennung. Und die funktioniert so
das das Hallfenster des Zylinder 1 etwas größer ist gegenüber der
anderen Zylinder. So kann die Einspritzanlage den klopfenden Zylinder
erkennen und fährt den Zündwinkel um 3-5° zurück so lange wie der
Zylinder klopft. Zugleich dient das Hallfenster auch zum selektiven
Einspritzen.Falls noch genauere Angaben benötigt werden sollten einfach
melden.
Grüße Ralle
Und je nach dem welche ms das du hast kannst du treshold spannungen
eingeben über drehzahl......... Und die habens glaube ich auch gleich an
die SPI schnitstelle gehängt (kannste jetzt im Tunerstudio gleich Gain
usw. einstellen) Aber erst ab MS3 firmware alpha 18 möglich (kommt in
den nächsten tagen)..........
Bin sehr erstaunt denn so wie es aussieht ist es exakt die gleiche
schaltung (bis auf den mC und den Stereo ausgang den ich Spitzenmässig
finde (kalibrierung der schwellwerte (wenn klopfts wirklich) sind hörbar
und somit easy einstellbar..............
viel spass
also ms3 alpha18 ist draussen seit heute............ Was jetzt
interessant wäre ist ob deine schaltung des TPIC über die SPI
schnittstelle des TPIC irgendwelche messwerte liefert in TS....... Ach
übrigens ich werde das ganze mal versuchen nachzubauen und mittels oszi
und den datenblättern einfach mal kucken wohin ich komme...........
danke euch nochmals war sehr interessant........
Ich habe mir vor kurzem das Projekt zur Klopfauswertung angeschaut und
da ich sowas für meinen Käfer brauche auch sofort nachgebaut...zur
Auswertung habe ich zunächst ein Arduino UNO in Betrieb...Ich habe einen
realen Klopfsensor zu testzwecken angeschlossen. Den Code habe ich
angepasst, da der von Arduino ja etwas anders aufgebaut wird...
Soweit sogut :) habe ich jetzt das Problem, dass ich immer eine 1023 als
Klopfwert angezeigt bekomme...Ich habe schon diverse Parameter variiert,
bekomme aber keine Veränderung in der Anzeige.
Das projekt scheint jetzt ja irgendwie zum Stillstand gekommen zu sein,
da es eine fertige Lösung für die MS3 gibt. Da ich aber die MS2 besitze
und auch gerne etwas mehr über den Hintergrund erfahren will gehe ich
diesen Weg.
Gibt es mittlerweile noch weitere Informationen die nicht veröffentlicht
sind? Oder arbeitet niemand mehr an der Klopfregelung?
Kann mir jemand vielleicht irgendwie einen Hinweis geben wie ich
rausfinden kann wo mein Fehler liegt? Kann mir da die testfunktion
helfen?Die Hardware sollte eigentlich passen...!
Vielen Dank!
Grüße,
Alex
Hi, ich habe mir ein eigenes board geroutet mit dem Schaltplan den es im
Projekt Ordner gibt. Ein paar kleine Änderungen habe ich bereits
vorgesehen. Eine lcd Ausgabe und ein ft232rl sind auch dabei.
Ich denke ich werde die tage beginnen die Software zu erweitern. Bei
Interesse berichte ich gern weiter.
Grüße denis
Moin allerseits...
allmählich treibt mich ATMEL STUDIO in den Wahnsinn...
Ich habe das aktuelle Projekt geöffnet, die Dateien in dem neuen Ordner
kopiert, mit A.S. als Projekt Dateien angelegt und "gebuildet"... keine
Fehler/Hinweise.
Der Erfolg ist dennoch mäßig, denn ich bekomme nur Datenmüll über die
Serielle Schnittstelle. Nach nun 3h Fehlersuche an der Hardware und
weiteren 3h an der Software habe ich Testweise mal die *.hex und die
*.eep aus dem default Ordner drauf gespielt... geht... :-~ . Ok,
Fehlersuche beendet, wie bekomme ich denn die Source von AVR Studio nach
ATMEL Studio portiert??? Oder stehe ich so sehr auf dem Schlauch, dass
ich es einfach nicht sehe, was da schief geht...
Das Layout habe ich als PNG angehangen, wenn jemand Interesse daran hat,
gebe ich es gerne weiter.
Im Bild ist die Falsche Quarzfrequenz. Ausserdem habe ich den XOUT des
TPIC auf den XIN des AVR gelegt. Nicht schön, geht aber erstaunlich gut.
Es soll später ein Oszillator verwendet werden. Ist eben noch ein
Prototyp.
Grüße von der Nachtschicht