Datum:
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
Datum:
>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
Datum:
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
Datum:
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
Datum:
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
Datum:
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
Datum:
>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
Datum:
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.
Datum:
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
Datum:
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.
Datum:
Angehängte Dateien: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
Datum:
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
Datum:
Angehängte Dateien: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
Datum:
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... 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
Datum:
Hab mir heute den ISP Programmer bestellt. http://shop.embedded-projects.net/index.php?module... 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
Datum:
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
Datum:
Wegen dem Max232ACPE hab ich gerade nochmal nachgeschaut: http://www.datasheetcatalog.org/datasheets2/45/453523_1.pdf Laut diesem Datenblatt braucht der Max232A 0,1 µF Kondensatoren.
Datum:
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;jsession... Auch bittet Bosch das hier an. http://rb-aa.bosch.com/boaasocs/index.jsp;jsession... 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
Datum:
Angehängte Dateien:Ich hab mal den Schaltplan etwas überarbeitet und die Analogeingänge von dem TPIC noch beschaltet. Grüße, Peter
Datum:
Angehängte Dateien:Hier noch für alle Interessierten die zusätzlich notwendige Bibliothek.
Datum:
Sieht mehr als sauber Aus nun das Ganze.. Perfekt Peter!!! Grüße, Stefan
Datum:
Angehängte Dateien: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:
* Initialisierung des TPIC8101 * Auslesen der Werte aus dem Sensor und Übertragen zum PC 2 mal pro Sekunde |
Was noch fehlt:
* Sinnvolle Initialisierungswerte für Verstärkung und Mittenfrequenz * Timergesteuertes Auslesen der Daten aus dem TPIC8101 * Terminalsoftware, über die man im laufenden Betrieb Parameter verstellen kann * Auswertung der Messwerte, also die Ausgabe der Signale an die Motorsteuerung * Der Bootloader |
Die Komplexität habe ich in separate Dateien ausgelagert, damit ist das Hauptprogramm recht übersichtlich geblieben:
#include "MAIN.h" FILE uart_stream = FDEV_SETUP_STREAM(uputchar0, ugetchar0, _FDEV_SETUP_RW); int main(void) { SPI_init(); TPIC_init(); stdout = stdin = &uart_stream; init_uart0(9600); while(1) { printf("Klopfwert: %u \n", TPIC_get_knock_value()); _delay_ms(500); } return 0; } |
Grüße, Peter
Datum:
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.
Datum:
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
Datum:
>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/... - AVR Studio Service pack (optional) http://www.atmel.no/beta_ware/avrstudio418/b715/AV... - WINAVR C Compiler http://sourceforge.net/projects/winavr/files/WinAV... 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
Datum:
So, ich hab mal was zusammengetippt: http://www.mikrocontroller.net/articles/Klopfsenso... Dort werde ich ab sofort alles an neuer Software, Schaltpläne und Layouts reinstellen.
Datum:
Ich korrigiere mal einen kleinen Hardwarebug: Am TPIC8101 war Vdd nicht an die 5 Volt Versorgung angeschlossen, das muss da natürlich dran...
Datum:
Die ISP Programmieranleitung ist fertig: http://www.mikrocontroller.net/articles/Klopfsenso...
Datum:
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
Datum:
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
Datum:
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
Datum:
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
Datum:
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
Datum:
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
Datum:
Nochmal zum Verständnissf für mich. Der INT/HOLD befehl komibinert mit der Integratorzeitkonstante macht letzendlich die Auswertung oder? Grüße, Stefan
Datum:
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
Datum:
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
Datum:
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
Datum:
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
Datum:
Also 12.000 1/min ist schon ne Hausnummer.... Ws für eine Steuerung hast du entworfen? Mal einen Link dazu? MfG
Datum:
hier mal ein Link zum Steuergerät http://www.maf-map-engineering.de/maf-map-engineer... und zum Handbuch http://www.maf-map-engineering.de/downloads/Ecu481... Gruss Thorsten
Datum:
In welcher Preisklasse bewegst du dich da Thorsten für deine ECU wenn ich fragen darf?
Datum:
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
Datum:
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
Datum:
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
Datum:
>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/Klopfsenso... Grüße, Peter
Datum:
@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
Datum:
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
Datum:
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???
Datum:
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) ...
Datum:
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 ?!
Datum:
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
Datum:
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
Datum:
da muss ich natürlich noch fragen, was hast Du eigentlich für AGT's ? Bei unsren Motoren z.B. VR6, ~800PS, 2.7bar LD, ZV 320% max. 920°C ...
Datum:
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???
Datum:
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 ...
Datum:
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ß
Datum:
Welche Adresse muss ich Nutzen um bei dir rauszukommen? Mfg
Datum:
'nimm doch einfach das Kontaktformular. Dann habe ich Deine Mail zum Antworten ... Gruss bis dann
Datum:
@ 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
Datum:
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
Datum:
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?
Datum:
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
Datum:
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?
Datum:
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?
Datum:
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 :-)
Datum:
Was war es denn falsch angeschlossen, dass gleich gar nichts mehr ging?
Datum:
Hab den PIN 11 vom TPIC auf den ISP Stecker PIN 5 also gegen +5Volt gelegt.. Mache grad den Kurs mal da um ein bischen zu Verstehen was da vor sich geht. http://www.elo-web.de/elo/mikrocontroller-und-prog...
Datum:
Angehängte Dateien: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.
Datum:
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
Datum:
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
Datum:
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/opa2134headphon... Warum ist der kein richtiger Verstärker? Sind das nich alle OP´S
Datum:
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
Datum:
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
Datum:
>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
Datum:
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?
Datum:
Die Einstellungen passieren im Moment alle in der Datei TPIC8101.c
// Takt Vorteiler und SDO Funktion auswählen. void TPIC_init(void) { // Porteinstellungen TPIC_deselect; // Chip select high DDR_TPIC_CS |= (1<<Pin_TPIC_CS); // Chip select ist ein Ausgang PORT_TPIC_test |= (1<<Pin_TPIC_test); // Test Pin high DDR_TPIC_test |= (1<<Pin_TPIC_test); // Test Pin ist ein Ausgang TPIC_hold; DDR_TPIC_Int_Hold |= (1<<Pin_TPIC_Int_Hold); // Int_hold ist ein Ausgang // Taktfrequenz einstellen TPIC_transfer (TPIC_prescaler_SDO); // Advanced SPI Mode auswählen TPIC_transfer (0b01110001); // Initialisierungswerte einstellen TPIC_select_channel(CH1); TPIC_set_bandpass_frequency(TPIC_freq_5_29_kHz); TPIC_set_gain(0); //TBD TPIC_set_integration_time_constant(0); //TBD } |
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
Datum:
Also hier ist der Fehler:
// Klopflautstärke auslesen und Integrator rücksetzen unsigned int TPIC_get_knock_value(void) { unsigned int knock_value; TPIC_hold; TPIC_transfer (TPIC_prescaler_SDO); // Auslesen von LSB initiieren knock_value = TPIC_transfer (TPIC_prescaler_SDO); // LSB auslesen TPIC_select_channel (TPIC_current_channel); // Auslesen von MSB initiieren knock_value |= (2 << TPIC_select_channel (TPIC_current_channel) ); // MSB auslesen TPIC_run; return knock_value; } |
Es ist in der Schiebeoperation ein Fehler: Es muss heißen:
knock_value |= (TPIC_select_channel (TPIC_current_channel) << 2); // MSB auslesen |
Datum:
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&f... 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.
Datum:
Angehängte Dateien: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. :
Wert = TPIC_transfer (TPIC_prescaler_SDO); //Hier kommt TPIC_prescaler_SDO 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.
Datum:
Hallo Othmar, welchen Wert hast du denn für TPIC_prescaler_SDO eingestellt? Grüße, Peter
Datum:
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...
Datum:
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
Datum:
Hi Peter. Hast du meine PN nicht erhalten? Mfg Stefan
Datum:
Deine PN hab ich gerade beantwortet... Grüße, Peter
Datum:
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)
Datum:
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
Datum:
Ich sage es ja nur ungern aber habt ihr schon wider mal hier geschaut........ Frisch aufm markt in der beta phase.......... Hast du eine MS3? http://www.msextra.com/forums/viewtopic.php?f=125&...
Datum:
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
Datum:
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........




