Forum: Mikrocontroller und Digitale Elektronik Grundlegende Fragen zu SPI mit TPIC8101


von Metaworld (Gast)


Lesenswert?

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

von MO (Gast)


Lesenswert?

>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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Metaworld (Gast)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Metaworld (Gast)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

>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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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.

von Metaworld (Gast)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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.

von Metaworld (Gast)


Angehängte Dateien:

Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Stefan M. (metaworld)


Angehängte Dateien:

Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Stefan M. (metaworld)


Angehängte Dateien:

Lesenswert?

Bild noch mal Upgeloadet

von Stefan M. (metaworld)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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.

von Stefan M. (metaworld)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich hab mal den Schaltplan etwas überarbeitet und die Analogeingänge von
dem TPIC noch beschaltet.

Grüße,

Peter

von Peter D. (pdiener) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier noch für alle Interessierten die zusätzlich notwendige Bibliothek.

von Stefan M. (metaworld)


Lesenswert?

Sieht mehr als sauber Aus nun das Ganze.. Perfekt Peter!!!

Grüße,  Stefan

von Peter D. (pdiener) Benutzerseite


Angehängte Dateien:

Lesenswert?

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:
1
#include "MAIN.h"
2
3
FILE uart_stream = FDEV_SETUP_STREAM(uputchar0, ugetchar0, _FDEV_SETUP_RW);
4
5
int main(void)
6
{
7
  SPI_init();
8
  TPIC_init();
9
10
  stdout = stdin = &uart_stream;
11
  init_uart0(9600);
12
13
  while(1)
14
  {
15
    printf("Klopfwert: %u \n", TPIC_get_knock_value());
16
    _delay_ms(500);
17
  }
18
19
  return 0;
20
}

Grüße,

Peter

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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.

von Stefan M. (metaworld)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

>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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

So, ich hab mal was zusammengetippt:
http://www.mikrocontroller.net/articles/Klopfsensormessgeraet

Dort werde ich ab sofort alles an neuer Software, Schaltpläne und 
Layouts reinstellen.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Ich korrigiere mal einen kleinen Hardwarebug:
Am TPIC8101 war Vdd nicht an die 5 Volt Versorgung angeschlossen, das 
muss da natürlich dran...

von Peter D. (pdiener) Benutzerseite


Lesenswert?


von Stefan M. (metaworld)


Lesenswert?

Hi Peter. Hast du meine PN nicht erhalten?

von Knock (Gast)


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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

von Knock (Gast)


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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

von Knock (Gast)


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

Nochmal zum Verständnissf für mich. Der INT/HOLD befehl komibinert mit 
der Integratorzeitkonstante macht letzendlich die Auswertung oder?

Grüße, Stefan

von Knock (Gast)


Lesenswert?

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

von Knock (Gast)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Knock (Gast)


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

Also 12.000 1/min ist schon ne Hausnummer.... Ws für eine Steuerung hast 
du entworfen? Mal einen Link dazu?

MfG

von Knock (Gast)


Lesenswert?


von Stefan M. (metaworld)


Lesenswert?

In welcher Preisklasse bewegst du dich da Thorsten für deine ECU wenn 
ich fragen darf?

von Knock (Gast)


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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

von Knock (Gast)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

>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

von Stefan M. (metaworld)


Lesenswert?

@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

von Knock (Gast)


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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???

von Knock (Gast)


Lesenswert?

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) ...

von Knock (Gast)


Lesenswert?

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 ?!

von Stefan M. (metaworld)


Lesenswert?

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

von Knock (Gast)


Lesenswert?

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

von Knock (Gast)


Lesenswert?

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 ...

von Stefan M. (metaworld)


Lesenswert?

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???

von Knock (Gast)


Lesenswert?

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 ...

von Stefan M. (metaworld)


Lesenswert?

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ß

von Stefan M. (metaworld)


Lesenswert?

Welche Adresse muss ich Nutzen um bei dir rauszukommen?

Mfg

von Knock (Gast)


Lesenswert?

'nimm doch einfach das Kontaktformular. Dann habe ich Deine Mail zum 
Antworten ...

Gruss bis dann

von Stefan M. (metaworld)


Lesenswert?

@ 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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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?

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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?

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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?

von Stefan M. (metaworld)


Lesenswert?

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 :-)

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Was war es denn falsch angeschlossen, dass gleich gar nichts mehr ging?

von Stefan M. (metaworld)


Lesenswert?

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-programmierung/onlinekurs/mikrocontroller-onlinekurs-teil-1

von Peter D. (pdiener) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

von Stefan M. (metaworld)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

>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

von Stefan M. (metaworld)


Lesenswert?

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?

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Die Einstellungen passieren im Moment alle in der Datei TPIC8101.c
1
// Takt Vorteiler und SDO Funktion auswählen.
2
void TPIC_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

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Also hier ist der Fehler:
1
// Klopflautstärke auslesen und Integrator rücksetzen
2
unsigned int TPIC_get_knock_value(void)
3
{
4
  unsigned int knock_value;
5
6
  TPIC_hold;
7
  TPIC_transfer (TPIC_prescaler_SDO);                                  // Auslesen von LSB initiieren
8
  knock_value  = TPIC_transfer (TPIC_prescaler_SDO);                    // LSB auslesen
9
  TPIC_select_channel (TPIC_current_channel);                          // Auslesen von MSB initiieren
10
  knock_value |= (2 << TPIC_select_channel (TPIC_current_channel) );  // MSB auslesen
11
  TPIC_run;
12
  return knock_value;
13
}

Es ist in der Schiebeoperation ein Fehler:
Es muss heißen:
1
knock_value |= (TPIC_select_channel (TPIC_current_channel) << 2);  // MSB auslesen

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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.

von Othmar (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Hallo Othmar,

welchen Wert hast du denn für TPIC_prescaler_SDO eingestellt?

Grüße,

Peter

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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...

von Peter D. (pdiener) Benutzerseite


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

Hi Peter.

Hast du meine PN nicht erhalten?

Mfg Stefan

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Deine PN hab ich gerade beantwortet...

Grüße,

Peter

von Othmar (Gast)


Lesenswert?

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)

von Ralle (Gast)


Lesenswert?

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

von morrische (Gast)


Lesenswert?

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&t=43766

von morrische (Gast)


Lesenswert?

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

von morrische (Gast)


Lesenswert?

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........

von Alex S. (zwiback)


Lesenswert?

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

von Alex S. (zwiback)


Lesenswert?

Ich hab hier mal noch den verwendeten code, ich vermute den Fehler schon 
irgendwo in der initialisierung...bzw. in dem Umgang mit int/hold oder 
cs
1
#include <SPI.h>
2
3
4
5
const int slaveSelectPin = 10;
6
const int inthold = 5;
7
const int cs = 6;
8
const int test = 7;
9
unsigned int data =0;
10
11
void setup() {
12
  // set the slaveSelectPin as an output:
13
  pinMode (slaveSelectPin, OUTPUT);
14
  pinMode(test, OUTPUT);
15
  pinMode(cs, OUTPUT);
16
  pinMode(inthold, OUTPUT);
17
18
  digitalWrite(slaveSelectPin,LOW);
19
  digitalWrite(test,HIGH);
20
21
  // initialize SPI:
22
  SPI.begin(); 
23
  SPI.setDataMode(SPI_MODE1);
24
  SPI.setBitOrder(MSBFIRST);
25
  SPI.setClockDivider(SPI_CLOCK_DIV4); 
26
  Serial.begin(9600); 
27
  
28
}
29
30
31
void loop(){
32
  
33
  TPIC_init();
34
  data = lesen();
35
  ausg(data);
36
  
37
}
38
39
40
41
void TPIC_init(void)
42
{
43
  // Porteinstellungen
44
  digitalWrite(cs, HIGH);          // Chip select high
45
  digitalWrite(test, HIGH);        // Test Pin high
46
  digitalWrite(inthold, LOW);                            // hold mode 
47
48
  austausch(B01110001);        // Advanced SPI Mode auswählen
49
  austausch(B01001000);            // Taktfrequenz einstellen, 10MHz, SDO aktive
50
  austausch(B01110001);           // Advanced SPI Mode auswählen
51
  austausch(B11100001);           //Channel 2
52
  austausch(B00010010);          //band-pass Frequenz 18 2.62kHz
53
  austausch(B10111111);   //gain, 0.111
54
55
  // Niedrigere Zeitkonstante bedeutet schnelleren Anstieg, also größere
56
  // Empfindlichkeit (größeres Ergebnis bei gleichem Signal)
57
  austausch(B11000010);  //integrator zeitkonstante 2=50mys
58
}
59
60
61
// Klopflautstärke auslesen und Integrator rücksetzen
62
unsigned int lesen(void)
63
{
64
  unsigned int knock_value=38;
65
66
  digitalWrite(inthold, LOW); 
67
  austausch (B01001000);            // Auslesen von LSB initiieren
68
  knock_value  = austausch(B01001000);          // LSB auslesen
69
  austausch (B11100001);            // Auslesen von MSB initiieren
70
  knock_value |= ((austausch (B11100001) & B11000000) << 2);    // MSB auslesen
71
  digitalWrite(inthold, HIGH); 
72
  return knock_value;
73
}
74
75
76
77
78
79
80
unsigned char austausch(unsigned char data)
81
{
82
  unsigned char answer;
83
84
  digitalWrite(cs, LOW);                // Wähle TPIC8101 als Ziel aus
85
  answer = SPI.transfer(data); 
86
  digitalWrite(cs, HIGH);                // Wähle Ziel ab
87
88
  return answer;
89
}
90
91
92
93
void ausg(int ausgeben)
94
{
95
  Serial.print("Klopf:");
96
  Serial.print(ausgeben);
97
  //Serial.write(0xFE);   //command flag
98
  //Serial.write(0x01);   //clear command.
99
  delay(100);
100
  Serial.write(0xFE);   //command flag
101
  Serial.write(128); 
102
103
}

Hoffentlich befasst sich überhaupt noch jemand mit dem Projekt :/

von Alex S. (zwiback)


Lesenswert?

ok hatte eine verwechslung am spi bus...scheint zu laufen....aber 
arbeitet noch jemand an dem projekt????

von Denis K. (denis_tbg)


Lesenswert?

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

von Denis K. (denis_tbg)


Angehängte Dateien:

Lesenswert?

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

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