<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pdiener</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pdiener"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Pdiener"/>
	<updated>2026-04-08T15:59:03Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=84730</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=84730"/>
		<updated>2014-08-31T23:09:55Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
== Eckdaten ==&lt;br /&gt;
&lt;br /&gt;
Versorgungsspannung bei Betrieb mit Energierückgewinnung &amp;quot;Treiben / Bemsen&amp;quot;: 50 V&lt;br /&gt;
&lt;br /&gt;
Versorgungsspannung bei Betrieb ohne Energierückgewinnung: 100 V&lt;br /&gt;
&lt;br /&gt;
Dauerausgangsstrom pro Halbbrücke: 10 A&lt;br /&gt;
&lt;br /&gt;
Pulsausgangsstrom pro Halbbrücke: 20 A&lt;br /&gt;
&lt;br /&gt;
Anzahl Switch-mode Brückenausgänge: 8&lt;br /&gt;
&lt;br /&gt;
Anzahl Brückenausgänge mit RMS-Strommessung (RMS per HF-Periode): 4&lt;br /&gt;
&lt;br /&gt;
Bemessungsstrom der Einspeisung (vom Netzteil): 10 A dauernd, 20 A kurzzeitig&lt;br /&gt;
&lt;br /&gt;
Ausgangsstrom für schaltbaren Bremschopper-Widerstand: 10 A&lt;br /&gt;
&lt;br /&gt;
Modulationsfrequenz: 20 kHz bis 100 kHz&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Motorkonfigurationen (u.A.): ===&lt;br /&gt;
* 2 Stück 2-Phasen-Schrittmotoren&lt;br /&gt;
* 1 Stück 5-Phasen-Schrittmotor&lt;br /&gt;
* 2 Stück 3-Phasen-Synchronmotoren&lt;br /&gt;
* 2 Stück 3-Phasen-Asynchronmotoren&lt;br /&gt;
* evtl. Switched-Reluctance-Motoren&lt;br /&gt;
&lt;br /&gt;
== Vorüberlegungen ==&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell# 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell# 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell# 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell# 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
MOSFET für Schaltnetzteil: IRF7815PBF, 150V, 5.1A, SO8, Farnell# 1865585, 1,10 € (1 - 24 St.)&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell# 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell# 1469097 :: Ersetzt!!!&lt;br /&gt;
&lt;br /&gt;
Relaistreiber und Motorbremstreiber: Allegro A2981SLW-T, Farnell# 1329620, 3,12 €&lt;br /&gt;
&lt;br /&gt;
Eingangsmodule: Widerstandsteiler, dann 74HCT14 Schmitt-Trigger&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: ???&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell# 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
&lt;br /&gt;
=== Überblick ===&lt;br /&gt;
&lt;br /&gt;
Bei dem Entwurf handelt es sich um eine volldigitale Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Ein extern anzuschließendes Netzteil stellt Gleichspannung zur Verfügung. Damit wird ein Zwischenkreis versorgt, der wiederum mit einem Kondensatorpaket gestützt wird. Der Zwischenkreis ist für Spannungsniveaus zwischen 30 V und 100 V ausgelegt. Das externe Netzteil speist den Zwischenkreis über eine Diode, so dass im Bremsbetrieb die Spannung am Zwischenkreis bis 100 V ansteigen kann, ohne, dass das Netzteil diese erhöhte Spannung aushalten muss. Wir empfehlen für das System ein Netzeil im Bereich 48 V bis 60 V und einem Nennstrom von 10 A. Es können Schaltnetzteile sowie konventionelle Netzteile verwendet werden, eine Glättung ist nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
Aus dem Zwischenkreis wird mit einem Schaltnetzteil eine Allgemeinspannungsversorgung von 24 V erzeugt. Daraus wiederum werden mit 3 weiteren Schaltnetzteilen 15 V für die Gateansteuerung der MOS-FETs und die Strommessung erzeugt, sowie 5 V Versorgungsspannung für externe Funktionen (z.B. Motordrehencoder) und 3,3 V für die CPU.&lt;br /&gt;
Die CPU selbst enthält einen Linearregler auf 1,8 V für den Core.&lt;br /&gt;
&lt;br /&gt;
Die Motorphasen werden mit einer Brückenendstufe aus dem Zwischenkreis versorgt. Am Zwischenkreis sind 8 Halbbrücken angeschlossen. Das bedeutet, es gibt 8 Leistungsausgänge, von denen jeder wahlweise auf Masse oder auf Zwischenkreisspannung geschaltet werden kann. Durch schnelle Modulation im Bereich mehrerer kHz lässt sich dadurch Strom an ohmsch-induktiven Lasten wie Motoren, Magneten u.Ä. einprägen. Im gegebenen Anwendungsfall wird speziell auf die Funktionalität in Bezug auf Schrittmotoren Wert gelegt, jedoch kann (mit etwas Anpassung der Software) auch eine andere Last versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Jeder zweite Leistungsausgang verfügt über eine Strommessung, die digital ausgewertet werden kann. Dadurch kann der Strom an jeder Wicklung des Motors erfasst und auf einen Sollwert geregelt werden. Dieser Regler wird in Software implementiert.&lt;br /&gt;
&lt;br /&gt;
Jede Halbbrücke besteht aus 2 N-Kanal-MOS-FETs, die über einen gemeinsamen Treiberbaustein gesteuert werden. Dieser stellt durch ausreichende Totzeit in Hardware sicher, dass kein Brückenkurzschluss durch gleichzeitiges Einschalten des oberen und unteren Transistors auftritt - auch im Fall eines Softwarefehlers. &lt;br /&gt;
Über ein Enable-Signal kann die Treibersteuerung der FETs komplett abgeschaltet werden, hiermit lässt sich bei Bedarf eine Funktion für einen sicheren Halt einer Antriebsmaschine implementieren, aber auch ein freies Drehen ist möglich. &lt;br /&gt;
&lt;br /&gt;
Die CPU, ein Digital-Signalprozessor TMS320F28062 steuert und regelt alle Funktionen.&lt;br /&gt;
Hauptaufgabe ist die Regelung der Motorstrangströme durch Messung der Istwerte und entsprechende Ansteuerpulserzeugung für die MOS-FET-Halbbrücken. Sollwerte für diese Strangströme werden durch übergeordnete Regler errechnet (Lage-, und Geschwindigkeitsregelung). Die Regelung kann durch eine Rotorpositionsmessung am Motor per Drehencoder unterstützt werden. Dazu gibt es 2 Eingänge für gängige Incrementalencoder, wahlweise für 24 V oder 5 V Versorgungsspannung und wahlweise für 24 V oder 5 V Signalspannung. Unterstützt werden Incrementalgeber mit 2-Bit Gray Code mit und ohne und Indexmarke.&lt;br /&gt;
&lt;br /&gt;
Für externe Funktionen sind weiterhin 4 Analogeingänge (umschaltbar zwischen 0-10V und 0-20mA) vorgesehen, die hochauflösend mit bis zu 1 Megasample pro Sekunde abgetastet werden können. Die Auflösung des AD-Wandlers beträgt 12 Bit. Das vorgeschaltete RC-Filterglied muss bei schnellen Messfunktionen an die benötigte Grenzfrequenz angepasst werden. Momentan sind die Eingänge auf langsame Signaländerung konfiguriert. In einer aktuellen Anwendung soll beispielsweise ein externer Unterdrucksensor ausgewertet werden. &lt;br /&gt;
&lt;br /&gt;
Für allgemeine Funktionen stehen 8 Binäreingänge (24 V) zur Verfügung, hierüber lassen sich beispielsweise Fahrbefehle einfach per Taster steuern oder Rückmeldungen von angefahrenen Motorpositionen per Schalter abfragen. Außerdem sind 6 Binärausgänge zur Ansteuerung von 24 V Relais oder anderen kleinen Spulen, z.B. pneumatischen Magnetventilen vorgesehen.&lt;br /&gt;
&lt;br /&gt;
Es gibt 4 Eingänge für Endlageschalter zum Einrichten und Kalibrieren der Motorposition z.B. für Linearantriebe.&lt;br /&gt;
Per Software sind diese 4 Eingänge für eine Schnellbremsung vorgesehen, wenn die Endlagen überfahren werden.&lt;br /&gt;
&lt;br /&gt;
Zwei 24 V Ausgänge sind für elektromagnetische Not- und Haltebremsen vorgesehen. Bei Bedarf können diese Ausgänge auch für allgemeine Funktionen verwendet werden, wenn keine Bremsen benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Das Sytem kann über 2 serielle Schnittstellen (RS-232) an eine übergeordnete Steuerung (z.B. einen PC) angeschlossen werden. Über diese 2 Schnittstellen kann ein Loop von einem PC über mehrere Motorsteuerungen und zurück zum PC aufgebaut werden. Der Loop ist bidirektional, d.h. Daten können in beide Richtungen übertragen werden. Fällt eine Richtung z.B. durch Kabelbruch aus, steht noch die andere Seite zur Verfügung und das System kann einen sicheren Stoppzustand unter allen Teilnehmern aushandeln.&lt;br /&gt;
Über die serielle Schnittstelle ist ein Softwaredownload auf die CPU möglich. Dazu gibt es einen entsprechenden Bootloader.&lt;br /&gt;
&lt;br /&gt;
Bei dem Leiterplattenlayout wurde besonderer Wert auf hohe Stromtragfähigkeit gelegt. So können kurzzeitig Pulsströme auf den Wicklungen gefahren werden, die den Nennstrom von 10 A um Faktoren übersteigen. Die Leisterplatte wird dazu mit 70 Mikrometer Kupferlagendicke und 4 Lagen gefertigt. Die leistungsführenden Leiterbahnen sind nicht nur auf der maximal möglichen Lagenzahl geführt, sondern auch massiv an die Leistungsbauteile angebunden und mit vielen Durchkontaktierungen versehen, die den Strom und die Wärme optimal auf alle Lagen verteilen und zudem ein Löten der Bauteile an den dicken Bahnen (mit entsprechend schwerem Lötkolben) ermöglichen. &lt;br /&gt;
&lt;br /&gt;
Die Leiterplatte ist so gebaut, dass alle Anschlüsse für Kabel nach vorne herausgeführt werden können. Nur die serielle Schnittstelle sowie der JTAG-Debugger können von hinten über Flachbandkabel angeschlossen werden (Von DB-9 Steckern in Einlöttechnik halten wir nicht so viel... Wir nehmen lieber die mit Kabel und bauen diese neben der Leiterplatte in die Frontplatte). Alle Kabelanschlüsse sind über steckbare Klemmverbinder geführt.&lt;br /&gt;
&lt;br /&gt;
Die Karte ist so ausgelegt, dass eine gefräste Frontplatte über die frontseitigen Steckanschlüsse angeordnet werden kann, so dass an der Frontplatte alles ordentlich beschriftet zugänglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Schaltpläne ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-Chopper.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-IO.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-RS232.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_1.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-PowerSupply.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motor-Boards]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=84729</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=84729"/>
		<updated>2014-08-31T23:09:13Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
== Eckdaten ==&lt;br /&gt;
&lt;br /&gt;
Versorgungsspannung bei Betrieb mit Energierückgewinnung &amp;quot;Treiben / Bemsen&amp;quot;: 50 V&lt;br /&gt;
&lt;br /&gt;
Versorgungsspannung bei Betrieb ohne Energierückgewinnung: 100 V&lt;br /&gt;
&lt;br /&gt;
Dauerausgangsstrom pro Halbbrücke: 10 A&lt;br /&gt;
&lt;br /&gt;
Pulsausgangsstrom pro Halbbrücke: 20 A&lt;br /&gt;
&lt;br /&gt;
Anzahl Switch-mode Brückenausgänge: 8&lt;br /&gt;
&lt;br /&gt;
Anzahl Brückenausgänge mit RMS-Strommessung (RMS per HF-Periode): 4&lt;br /&gt;
&lt;br /&gt;
Bemessungsstrom der Einspeisung (vom Netzteil): 10 A dauernd, 20 A kurzzeitig&lt;br /&gt;
&lt;br /&gt;
Ausgangsstrom für schaltbaren Bremschopper-Widerstand: 10 A&lt;br /&gt;
&lt;br /&gt;
Modulationsfrequenz: 20 kHz bis 100 kHz&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Motorkonfigurationen (u.A.): ===&lt;br /&gt;
* 2 Stück 2-Phasen-Schrittmotoren&lt;br /&gt;
* 1 Stück 5-Phasen-Schrittmotoren&lt;br /&gt;
* 2 Stück 3-Phasen-Synchronmotoren&lt;br /&gt;
* 2 Stück 3-Phasen-Asynchronmotoren&lt;br /&gt;
* evtl. Switched-Reluctance-Motoren&lt;br /&gt;
&lt;br /&gt;
== Vorüberlegungen ==&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell# 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell# 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell# 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell# 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
MOSFET für Schaltnetzteil: IRF7815PBF, 150V, 5.1A, SO8, Farnell# 1865585, 1,10 € (1 - 24 St.)&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell# 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell# 1469097 :: Ersetzt!!!&lt;br /&gt;
&lt;br /&gt;
Relaistreiber und Motorbremstreiber: Allegro A2981SLW-T, Farnell# 1329620, 3,12 €&lt;br /&gt;
&lt;br /&gt;
Eingangsmodule: Widerstandsteiler, dann 74HCT14 Schmitt-Trigger&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: ???&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell# 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
&lt;br /&gt;
=== Überblick ===&lt;br /&gt;
&lt;br /&gt;
Bei dem Entwurf handelt es sich um eine volldigitale Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Ein extern anzuschließendes Netzteil stellt Gleichspannung zur Verfügung. Damit wird ein Zwischenkreis versorgt, der wiederum mit einem Kondensatorpaket gestützt wird. Der Zwischenkreis ist für Spannungsniveaus zwischen 30 V und 100 V ausgelegt. Das externe Netzteil speist den Zwischenkreis über eine Diode, so dass im Bremsbetrieb die Spannung am Zwischenkreis bis 100 V ansteigen kann, ohne, dass das Netzteil diese erhöhte Spannung aushalten muss. Wir empfehlen für das System ein Netzeil im Bereich 48 V bis 60 V und einem Nennstrom von 10 A. Es können Schaltnetzteile sowie konventionelle Netzteile verwendet werden, eine Glättung ist nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
Aus dem Zwischenkreis wird mit einem Schaltnetzteil eine Allgemeinspannungsversorgung von 24 V erzeugt. Daraus wiederum werden mit 3 weiteren Schaltnetzteilen 15 V für die Gateansteuerung der MOS-FETs und die Strommessung erzeugt, sowie 5 V Versorgungsspannung für externe Funktionen (z.B. Motordrehencoder) und 3,3 V für die CPU.&lt;br /&gt;
Die CPU selbst enthält einen Linearregler auf 1,8 V für den Core.&lt;br /&gt;
&lt;br /&gt;
Die Motorphasen werden mit einer Brückenendstufe aus dem Zwischenkreis versorgt. Am Zwischenkreis sind 8 Halbbrücken angeschlossen. Das bedeutet, es gibt 8 Leistungsausgänge, von denen jeder wahlweise auf Masse oder auf Zwischenkreisspannung geschaltet werden kann. Durch schnelle Modulation im Bereich mehrerer kHz lässt sich dadurch Strom an ohmsch-induktiven Lasten wie Motoren, Magneten u.Ä. einprägen. Im gegebenen Anwendungsfall wird speziell auf die Funktionalität in Bezug auf Schrittmotoren Wert gelegt, jedoch kann (mit etwas Anpassung der Software) auch eine andere Last versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Jeder zweite Leistungsausgang verfügt über eine Strommessung, die digital ausgewertet werden kann. Dadurch kann der Strom an jeder Wicklung des Motors erfasst und auf einen Sollwert geregelt werden. Dieser Regler wird in Software implementiert.&lt;br /&gt;
&lt;br /&gt;
Jede Halbbrücke besteht aus 2 N-Kanal-MOS-FETs, die über einen gemeinsamen Treiberbaustein gesteuert werden. Dieser stellt durch ausreichende Totzeit in Hardware sicher, dass kein Brückenkurzschluss durch gleichzeitiges Einschalten des oberen und unteren Transistors auftritt - auch im Fall eines Softwarefehlers. &lt;br /&gt;
Über ein Enable-Signal kann die Treibersteuerung der FETs komplett abgeschaltet werden, hiermit lässt sich bei Bedarf eine Funktion für einen sicheren Halt einer Antriebsmaschine implementieren, aber auch ein freies Drehen ist möglich. &lt;br /&gt;
&lt;br /&gt;
Die CPU, ein Digital-Signalprozessor TMS320F28062 steuert und regelt alle Funktionen.&lt;br /&gt;
Hauptaufgabe ist die Regelung der Motorstrangströme durch Messung der Istwerte und entsprechende Ansteuerpulserzeugung für die MOS-FET-Halbbrücken. Sollwerte für diese Strangströme werden durch übergeordnete Regler errechnet (Lage-, und Geschwindigkeitsregelung). Die Regelung kann durch eine Rotorpositionsmessung am Motor per Drehencoder unterstützt werden. Dazu gibt es 2 Eingänge für gängige Incrementalencoder, wahlweise für 24 V oder 5 V Versorgungsspannung und wahlweise für 24 V oder 5 V Signalspannung. Unterstützt werden Incrementalgeber mit 2-Bit Gray Code mit und ohne und Indexmarke.&lt;br /&gt;
&lt;br /&gt;
Für externe Funktionen sind weiterhin 4 Analogeingänge (umschaltbar zwischen 0-10V und 0-20mA) vorgesehen, die hochauflösend mit bis zu 1 Megasample pro Sekunde abgetastet werden können. Die Auflösung des AD-Wandlers beträgt 12 Bit. Das vorgeschaltete RC-Filterglied muss bei schnellen Messfunktionen an die benötigte Grenzfrequenz angepasst werden. Momentan sind die Eingänge auf langsame Signaländerung konfiguriert. In einer aktuellen Anwendung soll beispielsweise ein externer Unterdrucksensor ausgewertet werden. &lt;br /&gt;
&lt;br /&gt;
Für allgemeine Funktionen stehen 8 Binäreingänge (24 V) zur Verfügung, hierüber lassen sich beispielsweise Fahrbefehle einfach per Taster steuern oder Rückmeldungen von angefahrenen Motorpositionen per Schalter abfragen. Außerdem sind 6 Binärausgänge zur Ansteuerung von 24 V Relais oder anderen kleinen Spulen, z.B. pneumatischen Magnetventilen vorgesehen.&lt;br /&gt;
&lt;br /&gt;
Es gibt 4 Eingänge für Endlageschalter zum Einrichten und Kalibrieren der Motorposition z.B. für Linearantriebe.&lt;br /&gt;
Per Software sind diese 4 Eingänge für eine Schnellbremsung vorgesehen, wenn die Endlagen überfahren werden.&lt;br /&gt;
&lt;br /&gt;
Zwei 24 V Ausgänge sind für elektromagnetische Not- und Haltebremsen vorgesehen. Bei Bedarf können diese Ausgänge auch für allgemeine Funktionen verwendet werden, wenn keine Bremsen benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Das Sytem kann über 2 serielle Schnittstellen (RS-232) an eine übergeordnete Steuerung (z.B. einen PC) angeschlossen werden. Über diese 2 Schnittstellen kann ein Loop von einem PC über mehrere Motorsteuerungen und zurück zum PC aufgebaut werden. Der Loop ist bidirektional, d.h. Daten können in beide Richtungen übertragen werden. Fällt eine Richtung z.B. durch Kabelbruch aus, steht noch die andere Seite zur Verfügung und das System kann einen sicheren Stoppzustand unter allen Teilnehmern aushandeln.&lt;br /&gt;
Über die serielle Schnittstelle ist ein Softwaredownload auf die CPU möglich. Dazu gibt es einen entsprechenden Bootloader.&lt;br /&gt;
&lt;br /&gt;
Bei dem Leiterplattenlayout wurde besonderer Wert auf hohe Stromtragfähigkeit gelegt. So können kurzzeitig Pulsströme auf den Wicklungen gefahren werden, die den Nennstrom von 10 A um Faktoren übersteigen. Die Leisterplatte wird dazu mit 70 Mikrometer Kupferlagendicke und 4 Lagen gefertigt. Die leistungsführenden Leiterbahnen sind nicht nur auf der maximal möglichen Lagenzahl geführt, sondern auch massiv an die Leistungsbauteile angebunden und mit vielen Durchkontaktierungen versehen, die den Strom und die Wärme optimal auf alle Lagen verteilen und zudem ein Löten der Bauteile an den dicken Bahnen (mit entsprechend schwerem Lötkolben) ermöglichen. &lt;br /&gt;
&lt;br /&gt;
Die Leiterplatte ist so gebaut, dass alle Anschlüsse für Kabel nach vorne herausgeführt werden können. Nur die serielle Schnittstelle sowie der JTAG-Debugger können von hinten über Flachbandkabel angeschlossen werden (Von DB-9 Steckern in Einlöttechnik halten wir nicht so viel... Wir nehmen lieber die mit Kabel und bauen diese neben der Leiterplatte in die Frontplatte). Alle Kabelanschlüsse sind über steckbare Klemmverbinder geführt.&lt;br /&gt;
&lt;br /&gt;
Die Karte ist so ausgelegt, dass eine gefräste Frontplatte über die frontseitigen Steckanschlüsse angeordnet werden kann, so dass an der Frontplatte alles ordentlich beschriftet zugänglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Schaltpläne ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-Chopper.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-IO.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-RS232.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_1.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-PowerSupply.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motor-Boards]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=84728</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=84728"/>
		<updated>2014-08-31T23:08:20Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: Weiterentwicklung, Funktionsbeschreibung hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
== Eckdaten ==&lt;br /&gt;
&lt;br /&gt;
Versorgungsspannung bei Betrieb mit Energierückgewinnung &amp;quot;Treiben / Bemsen&amp;quot;: 50 V&lt;br /&gt;
&lt;br /&gt;
Versorgungsspannung bei Betrieb ohne Energierückgewinnung: 100 V&lt;br /&gt;
&lt;br /&gt;
Dauerausgangsstrom pro Halbbrücke: 10 A&lt;br /&gt;
&lt;br /&gt;
Pulsausgangsstrom pro Halbbrücke: 20 A&lt;br /&gt;
&lt;br /&gt;
Anzahl Switch-mode Brückenausgänge: 8&lt;br /&gt;
Anzahl Brückenausgänge mit RMS-Strommessung (RMS per HF-Periode): 4&lt;br /&gt;
&lt;br /&gt;
Bemessungsstrom der Einspeisung (vom Netzteil): 10 A dauernd, 20 A kurzzeitig&lt;br /&gt;
&lt;br /&gt;
Ausgangsstrom für schaltbaren Bremschopper-Widerstand: 10 A&lt;br /&gt;
&lt;br /&gt;
Modulationsfrequenz: 20 kHz bis 100 kHz&lt;br /&gt;
&lt;br /&gt;
=== Mögliche Motorkonfigurationen (u.A.): ===&lt;br /&gt;
* 2 Stück 2-Phasen-Schrittmotoren&lt;br /&gt;
* 1 Stück 5-Phasen-Schrittmotoren&lt;br /&gt;
* 2 Stück 3-Phasen-Synchronmotoren&lt;br /&gt;
* 2 Stück 3-Phasen-Asynchronmotoren&lt;br /&gt;
* evtl. Switched-Reluctance-Motoren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorüberlegungen ==&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell# 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell# 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell# 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell# 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
MOSFET für Schaltnetzteil: IRF7815PBF, 150V, 5.1A, SO8, Farnell# 1865585, 1,10 € (1 - 24 St.)&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell# 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell# 1469097 :: Ersetzt!!!&lt;br /&gt;
&lt;br /&gt;
Relaistreiber und Motorbremstreiber: Allegro A2981SLW-T, Farnell# 1329620, 3,12 €&lt;br /&gt;
&lt;br /&gt;
Eingangsmodule: Widerstandsteiler, dann 74HCT14 Schmitt-Trigger&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: ???&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell# 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
&lt;br /&gt;
=== Überblick ===&lt;br /&gt;
&lt;br /&gt;
Bei dem Entwurf handelt es sich um eine volldigitale Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Ein extern anzuschließendes Netzteil stellt Gleichspannung zur Verfügung. Damit wird ein Zwischenkreis versorgt, der wiederum mit einem Kondensatorpaket gestützt wird. Der Zwischenkreis ist für Spannungsniveaus zwischen 30 V und 100 V ausgelegt. Das externe Netzteil speist den Zwischenkreis über eine Diode, so dass im Bremsbetrieb die Spannung am Zwischenkreis bis 100 V ansteigen kann, ohne, dass das Netzteil diese erhöhte Spannung aushalten muss. Wir empfehlen für das System ein Netzeil im Bereich 48 V bis 60 V und einem Nennstrom von 10 A. Es können Schaltnetzteile sowie konventionelle Netzteile verwendet werden, eine Glättung ist nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
Aus dem Zwischenkreis wird mit einem Schaltnetzteil eine Allgemeinspannungsversorgung von 24 V erzeugt. Daraus wiederum werden mit 3 weiteren Schaltnetzteilen 15 V für die Gateansteuerung der MOS-FETs und die Strommessung erzeugt, sowie 5 V Versorgungsspannung für externe Funktionen (z.B. Motordrehencoder) und 3,3 V für die CPU.&lt;br /&gt;
Die CPU selbst enthält einen Linearregler auf 1,8 V für den Core.&lt;br /&gt;
&lt;br /&gt;
Die Motorphasen werden mit einer Brückenendstufe aus dem Zwischenkreis versorgt. Am Zwischenkreis sind 8 Halbbrücken angeschlossen. Das bedeutet, es gibt 8 Leistungsausgänge, von denen jeder wahlweise auf Masse oder auf Zwischenkreisspannung geschaltet werden kann. Durch schnelle Modulation im Bereich mehrerer kHz lässt sich dadurch Strom an ohmsch-induktiven Lasten wie Motoren, Magneten u.Ä. einprägen. Im gegebenen Anwendungsfall wird speziell auf die Funktionalität in Bezug auf Schrittmotoren Wert gelegt, jedoch kann (mit etwas Anpassung der Software) auch eine andere Last versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Jeder zweite Leistungsausgang verfügt über eine Strommessung, die digital ausgewertet werden kann. Dadurch kann der Strom an jeder Wicklung des Motors erfasst und auf einen Sollwert geregelt werden. Dieser Regler wird in Software implementiert.&lt;br /&gt;
&lt;br /&gt;
Jede Halbbrücke besteht aus 2 N-Kanal-MOS-FETs, die über einen gemeinsamen Treiberbaustein gesteuert werden. Dieser stellt durch ausreichende Totzeit in Hardware sicher, dass kein Brückenkurzschluss durch gleichzeitiges Einschalten des oberen und unteren Transistors auftritt - auch im Fall eines Softwarefehlers. &lt;br /&gt;
Über ein Enable-Signal kann die Treibersteuerung der FETs komplett abgeschaltet werden, hiermit lässt sich bei Bedarf eine Funktion für einen sicheren Halt einer Antriebsmaschine implementieren, aber auch ein freies Drehen ist möglich. &lt;br /&gt;
&lt;br /&gt;
Die CPU, ein Digital-Signalprozessor TMS320F28062 steuert und regelt alle Funktionen.&lt;br /&gt;
Hauptaufgabe ist die Regelung der Motorstrangströme durch Messung der Istwerte und entsprechende Ansteuerpulserzeugung für die MOS-FET-Halbbrücken. Sollwerte für diese Strangströme werden durch übergeordnete Regler errechnet (Lage-, und Geschwindigkeitsregelung). Die Regelung kann durch eine Rotorpositionsmessung am Motor per Drehencoder unterstützt werden. Dazu gibt es 2 Eingänge für gängige Incrementalencoder, wahlweise für 24 V oder 5 V Versorgungsspannung und wahlweise für 24 V oder 5 V Signalspannung. Unterstützt werden Incrementalgeber mit 2-Bit Gray Code mit und ohne und Indexmarke.&lt;br /&gt;
&lt;br /&gt;
Für externe Funktionen sind weiterhin 4 Analogeingänge (umschaltbar zwischen 0-10V und 0-20mA) vorgesehen, die hochauflösend mit bis zu 1 Megasample pro Sekunde abgetastet werden können. Die Auflösung des AD-Wandlers beträgt 12 Bit. Das vorgeschaltete RC-Filterglied muss bei schnellen Messfunktionen an die benötigte Grenzfrequenz angepasst werden. Momentan sind die Eingänge auf langsame Signaländerung konfiguriert. In einer aktuellen Anwendung soll beispielsweise ein externer Unterdrucksensor ausgewertet werden. &lt;br /&gt;
&lt;br /&gt;
Für allgemeine Funktionen stehen 8 Binäreingänge (24 V) zur Verfügung, hierüber lassen sich beispielsweise Fahrbefehle einfach per Taster steuern oder Rückmeldungen von angefahrenen Motorpositionen per Schalter abfragen. Außerdem sind 6 Binärausgänge zur Ansteuerung von 24 V Relais oder anderen kleinen Spulen, z.B. pneumatischen Magnetventilen vorgesehen.&lt;br /&gt;
&lt;br /&gt;
Es gibt 4 Eingänge für Endlageschalter zum Einrichten und Kalibrieren der Motorposition z.B. für Linearantriebe.&lt;br /&gt;
Per Software sind diese 4 Eingänge für eine Schnellbremsung vorgesehen, wenn die Endlagen überfahren werden.&lt;br /&gt;
&lt;br /&gt;
Zwei 24 V Ausgänge sind für elektromagnetische Not- und Haltebremsen vorgesehen. Bei Bedarf können diese Ausgänge auch für allgemeine Funktionen verwendet werden, wenn keine Bremsen benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Das Sytem kann über 2 serielle Schnittstellen (RS-232) an eine übergeordnete Steuerung (z.B. einen PC) angeschlossen werden. Über diese 2 Schnittstellen kann ein Loop von einem PC über mehrere Motorsteuerungen und zurück zum PC aufgebaut werden. Der Loop ist bidirektional, d.h. Daten können in beide Richtungen übertragen werden. Fällt eine Richtung z.B. durch Kabelbruch aus, steht noch die andere Seite zur Verfügung und das System kann einen sicheren Stoppzustand unter allen Teilnehmern aushandeln.&lt;br /&gt;
Über die serielle Schnittstelle ist ein Softwaredownload auf die CPU möglich. Dazu gibt es einen entsprechenden Bootloader.&lt;br /&gt;
&lt;br /&gt;
Bei dem Leiterplattenlayout wurde besonderer Wert auf hohe Stromtragfähigkeit gelegt. So können kurzzeitig Pulsströme auf den Wicklungen gefahren werden, die den Nennstrom von 10 A um Faktoren übersteigen. Die Leisterplatte wird dazu mit 70 Mikrometer Kupferlagendicke und 4 Lagen gefertigt. Die leistungsführenden Leiterbahnen sind nicht nur auf der maximal möglichen Lagenzahl geführt, sondern auch massiv an die Leistungsbauteile angebunden und mit vielen Durchkontaktierungen versehen, die den Strom und die Wärme optimal auf alle Lagen verteilen und zudem ein Löten der Bauteile an den dicken Bahnen (mit entsprechend schwerem Lötkolben) ermöglichen. &lt;br /&gt;
&lt;br /&gt;
Die Leiterplatte ist so gebaut, dass alle Anschlüsse für Kabel nach vorne herausgeführt werden können. Nur die serielle Schnittstelle sowie der JTAG-Debugger können von hinten über Flachbandkabel angeschlossen werden (Von DB-9 Steckern in Einlöttechnik halten wir nicht so viel... Wir nehmen lieber die mit Kabel und bauen diese neben der Leiterplatte in die Frontplatte). Alle Kabelanschlüsse sind über steckbare Klemmverbinder geführt.&lt;br /&gt;
&lt;br /&gt;
Die Karte ist so ausgelegt, dass eine gefräste Frontplatte über die frontseitigen Steckanschlüsse angeordnet werden kann, so dass an der Frontplatte alles ordentlich beschriftet zugänglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Schaltpläne ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-Chopper.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-IO.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-RS232.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_1.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-PowerSupply.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motor-Boards]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController.zip&amp;diff=84716</id>
		<title>Datei:StepperController.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController.zip&amp;diff=84716"/>
		<updated>2014-08-31T13:07:59Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: Pdiener lud eine neue Version von „Datei:StepperController.zip“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController.zip&amp;diff=69953</id>
		<title>Datei:StepperController.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController.zip&amp;diff=69953"/>
		<updated>2012-12-19T21:35:01Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: hat eine neue Version von „Datei:StepperController.zip“ hochgeladen:&amp;amp;#32;Schaltplan fertig, layout angelegt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69691</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69691"/>
		<updated>2012-12-08T21:35:10Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell# 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell# 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell# 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell# 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
MOSFET für Schaltnetzteil: IRF7815PBF, 150V, 5.1A, SO8, Farnell# 1865585, 1,10 € (1 - 24 St.)&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell# 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell# 1469097 :: Ersetzt!!!&lt;br /&gt;
&lt;br /&gt;
Relaistreiber und Motorbremstreiber: Allegro A2981SLW-T, Farnell# 1329620, 3,12 €&lt;br /&gt;
&lt;br /&gt;
Eingangsmodule: Widerstandsteiler, dann 74HCT14 Schmitt-Trigger&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: ???&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell# 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-Chopper.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-IO.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-RS232.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_1.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-PowerSupply.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motor-Boards]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController-PowerSupply.png&amp;diff=69690</id>
		<title>Datei:StepperController-PowerSupply.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController-PowerSupply.png&amp;diff=69690"/>
		<updated>2012-12-08T21:30:23Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController-ClassD_Amp_2.png&amp;diff=69689</id>
		<title>Datei:StepperController-ClassD Amp 2.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController-ClassD_Amp_2.png&amp;diff=69689"/>
		<updated>2012-12-08T21:29:42Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController-ClassD_Amp_1.png&amp;diff=69688</id>
		<title>Datei:StepperController-ClassD Amp 1.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController-ClassD_Amp_1.png&amp;diff=69688"/>
		<updated>2012-12-08T21:29:07Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController-RS232.png&amp;diff=69687</id>
		<title>Datei:StepperController-RS232.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController-RS232.png&amp;diff=69687"/>
		<updated>2012-12-08T21:28:32Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController-IO.png&amp;diff=69686</id>
		<title>Datei:StepperController-IO.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController-IO.png&amp;diff=69686"/>
		<updated>2012-12-08T21:28:03Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController-Chopper.png&amp;diff=69685</id>
		<title>Datei:StepperController-Chopper.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController-Chopper.png&amp;diff=69685"/>
		<updated>2012-12-08T21:27:23Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController.png&amp;diff=69684</id>
		<title>Datei:StepperController.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController.png&amp;diff=69684"/>
		<updated>2012-12-08T21:26:14Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69683</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69683"/>
		<updated>2012-12-08T21:25:13Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell# 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell# 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell# 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell# 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
MOSFET für Schaltnetzteil: IRF7815PBF, 150V, 5.1A, SO8, Farnell# 1865585, 1,10 € (1 - 24 St.)&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell# 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell# 1469097 :: Ersetzt!!!&lt;br /&gt;
&lt;br /&gt;
Relaistreiber und Motorbremstreiber: Allegro A2981SLW-T, Farnell# 1329620, 3,12 €&lt;br /&gt;
&lt;br /&gt;
Eingangsmodule: Widerstandsteiler, dann 74HCT14 Schmitt-Trigger&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: ???&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell# 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-Chopper.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-IO.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-RS232.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-ClassD_Amp_2.png]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:StepperController-PowerSupply.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motor-Boards]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController.zip&amp;diff=69681</id>
		<title>Datei:StepperController.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController.zip&amp;diff=69681"/>
		<updated>2012-12-08T20:36:01Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: hat eine neue Version von „Datei:StepperController.zip“ hochgeladen:&amp;amp;#32;Schaltplan eigentlich fertig...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69680</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69680"/>
		<updated>2012-12-08T19:53:06Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell# 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell# 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell# 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell# 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
MOSFET für Schaltnetzteil: IRF7815PBF, 150V, 5.1A, SO8, Farnell# 1865585, 1,10 € (1 - 24 St.)&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell# 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell# 1469097 :: Ersetzt!!!&lt;br /&gt;
&lt;br /&gt;
Relaistreiber und Motorbremstreiber: Allegro A2981SLW-T, Farnell# 1329620, 3,12 €&lt;br /&gt;
&lt;br /&gt;
Eingangsmodule: Widerstandsteiler, dann 74HCT14 Schmitt-Trigger&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: ???&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell# 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motor-Boards]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69679</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69679"/>
		<updated>2012-12-08T19:49:49Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell# 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell# 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell# 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell# 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
MOSFET für Schaltnetzteil: IRF7815PBF, 150V, 5.1A, SO8, Farnell# 1865585, 1,10 € (1 - 24 St.)&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell# 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell# 1469097 :: Ersetzt!!!&lt;br /&gt;
&lt;br /&gt;
Relaistreiber und Motorbremstreiber: Allegro A2981SLW-T, Farnell# 1329620, 3,12 €&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Eingangsmodule, ...&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell# 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motor-Boards]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69678</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69678"/>
		<updated>2012-12-08T19:33:09Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
MOSFET für Schaltnetzteil: IRF7815PBF, 150V, 5.1A, SO8, Farnell# 1865585, 1,10 € (1 - 24 St.)&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell 1469097&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Eingangsmodule, Relaistreiber...&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motor-Boards]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69677</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69677"/>
		<updated>2012-12-08T19:01:57Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell 1469097&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Eingangsmodule, Relaistreiber...&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motor-Boards]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69251</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69251"/>
		<updated>2012-11-20T18:32:08Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F28062&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell 2082653 3,36 €, allerdings bei 250 kHz.&lt;br /&gt;
&lt;br /&gt;
DC-DC Wandler für RS232: ADUM5000, Farnell 2102522, 6,72 €, Besonderheit: Trafo in Silizium!&lt;br /&gt;
&lt;br /&gt;
Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell 1469097&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Eingangsmodule, Relaistreiber, Bremssystem...&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell 1839292, 1,64 €&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Peter,&lt;br /&gt;
es waere voll super wenn du die logiclevel FETs hier rein schreiben koenntest, die du ausgesucht hast...&lt;br /&gt;
&lt;br /&gt;
IO sheet hinzugefügt.&amp;lt;br&amp;gt;&lt;br /&gt;
5v Powersupply eingebaut.&amp;lt;br&amp;gt;&lt;br /&gt;
Encoder angeschlossen.&amp;lt;br&amp;gt;&lt;br /&gt;
Endschalter angeschlossen.&amp;lt;br&amp;gt;&lt;br /&gt;
Bremsen Angeschlossen.&amp;lt;br&amp;gt;&lt;br /&gt;
8 Ausganstreiber für peripherie angeschlossen.&amp;lt;br&amp;gt;&lt;br /&gt;
(das sind jetzt PMOS)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
hab dir das Projekt per Mail geschickt, da meine anmeldung hier nicht geklappt hat und ich deshalb nix hochladen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lg flo&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:StepperController.zip&amp;diff=69230</id>
		<title>Datei:StepperController.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:StepperController.zip&amp;diff=69230"/>
		<updated>2012-11-18T19:17:54Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69229</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69229"/>
		<updated>2012-11-18T19:09:12Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F2809&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell 2082653 3,36 €&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Netzteil, Shunt, Relaistreiber...&lt;br /&gt;
&lt;br /&gt;
Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell 1839292&lt;br /&gt;
&lt;br /&gt;
Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €&lt;br /&gt;
&lt;br /&gt;
* Aktuelles KiCAD-Projekt (nicht fertige Schaltung) [[Datei:StepperController.zip]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69213</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69213"/>
		<updated>2012-11-18T00:38:58Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F2809&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell 2082653 3,36 €&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Netzteil, Shunt, Relaistreiber...&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69212</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69212"/>
		<updated>2012-11-18T00:35:15Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F2809&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Eingesetzt wird WE-PD XL 220,0uH 1,49A bei 250 kHz. RS  744-4870, 2,08 €&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Netzteil, Shunt, Relaistreiber...&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69211</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69211"/>
		<updated>2012-11-18T00:03:31Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F2809&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Drossel für Schaltnetzteil nach Berechnung:&lt;br /&gt;
&lt;br /&gt;
100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -&amp;gt; 456 µH&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Netzteil, Shunt, Relaistreiber...&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69210</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69210"/>
		<updated>2012-11-17T23:48:39Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F2809&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell 1342345, 8,04 €&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Netzteil, Shunt, Relaistreiber...&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69209</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69209"/>
		<updated>2012-11-17T23:47:15Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: TMS320F2809&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Netzteil, Shunt, Relaistreiber...&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69208</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69208"/>
		<updated>2012-11-17T23:46:40Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: Irgendein TMS320F2xxx&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Netzteil, Shunt, Relaistreiber...&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69207</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69207"/>
		<updated>2012-11-17T19:30:10Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: Irgendein TMS320F2xxx&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
Noch aussuchen: Netzteil, Shunt, Relaistreiber...&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69205</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69205"/>
		<updated>2012-11-17T19:24:07Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: Irgendein TMS320F2xxx&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: &lt;br /&gt;
&lt;br /&gt;
IRFI4110GPBF, Farnell 1888169, 4,71 € (25 St.)&lt;br /&gt;
&lt;br /&gt;
alternativ PSMN5R6-100XS, Farnell 2114735, 2,28 € (25 St.)&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69204</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69204"/>
		<updated>2012-11-17T18:46:58Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: Irgendein TMS320F2xxx&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: IRFI4110GPBF? 4,71 € (25 St.)&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69202</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69202"/>
		<updated>2012-11-17T18:20:21Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: Irgendein TMS320F2xxx&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)&lt;br /&gt;
&lt;br /&gt;
FETs: ?&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69201</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69201"/>
		<updated>2012-11-17T18:11:52Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: Irgendein TMS320F2xxx&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: Half Bridge Modules?&lt;br /&gt;
&lt;br /&gt;
FETs: ?&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69200</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69200"/>
		<updated>2012-11-17T18:10:57Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: Irgendein TMS320F2xxx&lt;br /&gt;
&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655&lt;br /&gt;
&lt;br /&gt;
Gatetreiber: ?&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69199</id>
		<title>StepperController</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=StepperController&amp;diff=69199"/>
		<updated>2012-11-17T18:09:47Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: Die Seite wurde neu angelegt: „Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.  Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.  Vorüberlegungen: …“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source Schrittmotorsteuerung von Peter Diener und Florian Kaiser.&lt;br /&gt;
&lt;br /&gt;
Hier entsteht eine Seite zu einer DPS-basierten Schrittmotorsteuerung.&lt;br /&gt;
&lt;br /&gt;
Vorüberlegungen:&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
&lt;br /&gt;
DSP: Irgendein TMS320F2xxx&lt;br /&gt;
Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655&lt;br /&gt;
Gatetreiber:&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=59501</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=59501"/>
		<updated>2011-08-12T22:56:29Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
Ein Projekt von &#039;&#039;&#039;Peter Diener ([http://www.mikrocontroller.net/user/show/pdiener pdiener])&#039;&#039;&#039; und &#039;&#039;&#039;Stefan Mandl ([http://www.mikrocontroller.net/user/show/metaworld metaworld])&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 115200 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 10 Millisekunden der Messwert als ASCII String ausgegeben und der Cursor wieder an den Zeilenanfang geschoben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 42  \r&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht also immer nur eine Zeile mit dem aktuellen Wert.&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software läuft, man bekommt plausible Werte.&lt;br /&gt;
Mit einem echten Klopfsensor ist der Aufbau allerdings noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
* Konfigurations- und Auswertesoftware für den PC mit grafischer Oberfläche&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
* Der Kopfhörerverstärker arbeitet nicht im linearen Bereich, er wird durch den Gleichspannungsanteil übersteuert. Vor dem Poti (praktisch statt dem Jumper) ein 10 nF Kerko entkoppelt geeignet. Schaltplanänderung folgt.&lt;br /&gt;
&lt;br /&gt;
===Software===&lt;br /&gt;
&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
* Fehler in TPIC8101.c: in #define TPIC_hold hat &amp;quot;~&amp;quot; gefehlt&lt;br /&gt;
* Fehler in SPI Initialisierung behoben: Es muss mode 1 statt mode 0 sein&lt;br /&gt;
* Fehler in TPIC_set_integration_time_constant behoben (&amp;quot;if (time &amp;lt; 31) time = 31;&amp;quot; muss heißen: &amp;quot;if (time &amp;gt; 31) time = 31;&amp;quot;)&lt;br /&gt;
* Plausiblere Initialisierungswerte und Auswertezeitfenster eingestellt&lt;br /&gt;
&lt;br /&gt;
==Wo wird das Projekt eingesetzt==&lt;br /&gt;
Es wäre schön, wenn jeder, der das Projekt oder Teile davon einsetzt, hier kurz was dazu schreiben könnte. z.B. so:&lt;br /&gt;
&lt;br /&gt;
* Projektbezeichnung [Link] [Name], gebaute Stückzahl (Hobby / Prototyp / Serie), Kommentar&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55272</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55272"/>
		<updated>2011-02-23T01:19:59Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
Ein Projekt von &#039;&#039;&#039;Peter Diener ([http://www.mikrocontroller.net/user/show/pdiener pdiener])&#039;&#039;&#039; und &#039;&#039;&#039;Stefan Mandl ([http://www.mikrocontroller.net/user/show/metaworld metaworld])&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 115200 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 10 Millisekunden der Messwert als ASCII String ausgegeben und der Cursor wieder an den Zeilenanfang geschoben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 42  \r&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht also immer nur eine Zeile mit dem aktuellen Wert.&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software läuft, man bekommt plausible Werte.&lt;br /&gt;
Mit einem echten Klopfsensor ist der Aufbau allerdings noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
* Konfigurations- und Auswertesoftware für den PC mit grafischer Oberfläche&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
* Fehler in TPIC8101.c: in #define TPIC_hold hat &amp;quot;~&amp;quot; gefehlt&lt;br /&gt;
* Fehler in SPI Initialisierung behoben: Es muss mode 1 statt mode 0 sein&lt;br /&gt;
* Fehler in TPIC_set_integration_time_constant behoben (&amp;quot;if (time &amp;lt; 31) time = 31;&amp;quot; muss heißen: &amp;quot;if (time &amp;gt; 31) time = 31;&amp;quot;)&lt;br /&gt;
* Plausiblere Initialisierungswerte und Auswertezeitfenster eingestellt&lt;br /&gt;
&lt;br /&gt;
==Wo wird das Projekt eingesetzt==&lt;br /&gt;
Es wäre schön, wenn jeder, der das Projekt oder Teile davon einsetzt, hier kurz was dazu schreiben könnte. z.B. so:&lt;br /&gt;
&lt;br /&gt;
* Projektbezeichnung [Link] [Name], gebaute Stückzahl (Hobby / Prototyp / Serie), Kommentar&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55271</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55271"/>
		<updated>2011-02-23T00:48:25Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Behobene Fehler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 115200 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 10 Millisekunden der Messwert als ASCII String ausgegeben und der Cursor wieder an den Zeilenanfang geschoben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 42  \r&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht also immer nur eine Zeile mit dem aktuellen Wert.&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software läuft, man bekommt plausible Werte.&lt;br /&gt;
Mit einem echten Klopfsensor ist der Aufbau allerdings noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
* Konfigurations- und Auswertesoftware für den PC mit grafischer Oberfläche&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
* Fehler in TPIC8101.c: in #define TPIC_hold hat &amp;quot;~&amp;quot; gefehlt&lt;br /&gt;
* Fehler in SPI Initialisierung behoben: Es muss mode 1 statt mode 0 sein&lt;br /&gt;
* Fehler in TPIC_set_integration_time_constant behoben (&amp;quot;if (time &amp;lt; 31) time = 31;&amp;quot; muss heißen: &amp;quot;if (time &amp;gt; 31) time = 31;&amp;quot;)&lt;br /&gt;
* Plausiblere Initialisierungswerte und Auswertezeitfenster eingestellt&lt;br /&gt;
&lt;br /&gt;
==Wo wird das Projekt eingesetzt==&lt;br /&gt;
Es wäre schön, wenn jeder, der das Projekt oder Teile davon einsetzt, hier kurz was dazu schreiben könnte. z.B. so:&lt;br /&gt;
&lt;br /&gt;
* Projektbezeichnung [Link] [Name], gebaute Stückzahl (Hobby / Prototyp / Serie), Kommentar&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55270</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55270"/>
		<updated>2011-02-23T00:42:10Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 115200 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 10 Millisekunden der Messwert als ASCII String ausgegeben und der Cursor wieder an den Zeilenanfang geschoben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 42  \r&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht also immer nur eine Zeile mit dem aktuellen Wert.&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software läuft, man bekommt plausible Werte.&lt;br /&gt;
Mit einem echten Klopfsensor ist der Aufbau allerdings noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
* Konfigurations- und Auswertesoftware für den PC mit grafischer Oberfläche&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
* Fehler in TPIC8101.c: in #define TPIC_hold hat &amp;quot;~&amp;quot; gefehlt&lt;br /&gt;
* Fehler in SPI Initialisierung behoben: Es muss mode 1 statt mode 0 sein&lt;br /&gt;
* Fehler in TPIC_set_integration_time_constant behoben (&amp;quot;if (time &amp;lt; 31) time = 31;&amp;quot; muss heißen: &amp;quot;if (time &amp;gt; 31) time = 31;&amp;quot;)&lt;br /&gt;
* Plausiblere Initialisierungswerte und Auswertezeitfenster eingestellt&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55269</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55269"/>
		<updated>2011-02-23T00:41:51Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 115200 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 10 Millisekunden der Messwert als ASCII String ausgegeben und der Cursor wieder an den Zeilenanfang geschoben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 42  \r&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht also immer nur eine Zeile mit dem aktuellen Wert.&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software läuft, man bekommt plausible Werte.&lt;br /&gt;
Mit einem echten Klopfsensor ist der Aufbau allerdings noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
* Konfigurations- und Auswertesoftware für den PC mit grafischer Oberfläche&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
&lt;br /&gt;
In Funktion TPIC_set_integration_time_constant wird TPIC_current_integration_time_constant immer auf 31 gesetzt. &lt;br /&gt;
&lt;br /&gt;
Der Fehler liegt beim Vergleich :&lt;br /&gt;
if (time &amp;lt; 31) time = 31; &lt;br /&gt;
&lt;br /&gt;
Es muss heisen: &lt;br /&gt;
&lt;br /&gt;
if (time &amp;gt; 31) time = 31;&lt;br /&gt;
----------------&lt;br /&gt;
SPI mode muss mode 1 sein, aktuelle Software hat 0 eingestellt.&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
* Fehler in TPIC8101.c: in #define TPIC_hold hat &amp;quot;~&amp;quot; gefehlt&lt;br /&gt;
* Fehler in SPI Initialisierung behoben: Es muss mode 1 statt mode 0 sein&lt;br /&gt;
* Fehler in TPIC_set_integration_time_constant behoben (&amp;quot;if (time &amp;lt; 31) time = 31;&amp;quot; muss heißen: &amp;quot;if (time &amp;gt; 31) time = 31;&amp;quot;)&lt;br /&gt;
* Plausiblere Initialisierungswerte und Auswertezeitfenster eingestellt&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55268</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55268"/>
		<updated>2011-02-23T00:33:29Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 115200 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 10 Millisekunden der Messwert als ASCII String ausgegeben und der Cursor wieder an den Zeilenanfang geschoben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 42  \r&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht also immer nur eine Zeile mit dem aktuellen Wert.&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software läuft, man bekommt plausible Werte.&lt;br /&gt;
Mit einem echten Klopfsensor ist der Aufbau allerdings noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
* Konfigurations- und Auswertesoftware für den PC mit grafischer Oberfläche&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
&lt;br /&gt;
In Funktion TPIC_set_integration_time_constant wird TPIC_current_integration_time_constant immer auf 31 gesetzt. &lt;br /&gt;
&lt;br /&gt;
Der Fehler liegt beim Vergleich :&lt;br /&gt;
if (time &amp;lt; 31) time = 31; &lt;br /&gt;
&lt;br /&gt;
Es muss heisen: &lt;br /&gt;
&lt;br /&gt;
if (time &amp;gt; 31) time = 31;&lt;br /&gt;
----------------&lt;br /&gt;
SPI mode muss mode 1 sein, aktuelle Software hat 0 eingestellt.&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
* Fehler in TPIC8101.c: in #define TPIC_hold hat &amp;quot;~&amp;quot; gefehlt&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Klopfsensor_Software.zip&amp;diff=55267</id>
		<title>Datei:Klopfsensor Software.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Klopfsensor_Software.zip&amp;diff=55267"/>
		<updated>2011-02-23T00:30:00Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: hat eine neue Version von „Datei:Klopfsensor Software.zip“ hochgeladen:&amp;amp;#32;Bugs behoben, erste lauffähige Version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55266</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=55266"/>
		<updated>2011-02-22T22:51:09Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 9600 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 0,5 Sekunden der Messwert als ASCII String ausgegeben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 2 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 40 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 980 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 675 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 430 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 320 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist ungetestet und enthält noch Fehler, siehe Beitrag im Forum.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
* Konfigurations- und Auswertesoftware für den PC mit grafischer Oberfläche&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
&lt;br /&gt;
In Funktion TPIC_set_integration_time_constant wird TPIC_current_integration_time_constant immer auf 31 gesetzt. &lt;br /&gt;
&lt;br /&gt;
Der Fehler liegt beim Vergleich :&lt;br /&gt;
if (time &amp;lt; 31) time = 31; &lt;br /&gt;
&lt;br /&gt;
Es muss heisen: &lt;br /&gt;
&lt;br /&gt;
if (time &amp;gt; 31) time = 31;&lt;br /&gt;
----------------&lt;br /&gt;
SPI mode muss mode 1 sein, aktuelle Software hat 0 eingestellt.&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
* Fehler in TPIC8101.c: in #define TPIC_hold hat &amp;quot;~&amp;quot; gefehlt&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=52340</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=52340"/>
		<updated>2010-10-26T09:47:24Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Wunschliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 9600 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 0,5 Sekunden der Messwert als ASCII String ausgegeben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 2 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 40 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 980 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 675 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 430 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 320 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist ungetestet und enthält noch Fehler, siehe Beitrag im Forum.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
* Konfigurations- und Auswertesoftware für den PC mit grafischer Oberfläche&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
zur Zeit sind keine Fehler bekannt&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
* Fehler in TPIC8101.c: in #define TPIC_hold hat &amp;quot;~&amp;quot; gefehlt&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=51475</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=51475"/>
		<updated>2010-10-17T13:27:37Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 9600 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 0,5 Sekunden der Messwert als ASCII String ausgegeben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 2 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 40 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 980 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 675 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 430 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 320 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist ungetestet und enthält noch Fehler, siehe Beitrag im Forum.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
zur Zeit sind keine Fehler bekannt&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
* Fehler in TPIC8101.c: in #define TPIC_hold hat &amp;quot;~&amp;quot; gefehlt&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=51474</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=51474"/>
		<updated>2010-10-17T13:27:23Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 9600 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 0,5 Sekunden der Messwert als ASCII String ausgegeben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 2 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 40 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 980 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 675 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 430 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 320 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist ungetestet und enthält noch Fehler, siehe Beitrag im Forum.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
zur Zeit sind keine Fehler bekannt&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Klopfsensor_Software.zip&amp;diff=51473</id>
		<title>Datei:Klopfsensor Software.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Klopfsensor_Software.zip&amp;diff=51473"/>
		<updated>2010-10-17T13:24:08Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: hat eine neue Version von „Datei:Klopfsensor Software.zip“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Klopfsensor_Software.zip&amp;diff=51451</id>
		<title>Datei:Klopfsensor Software.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Klopfsensor_Software.zip&amp;diff=51451"/>
		<updated>2010-10-16T17:30:11Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=51450</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=51450"/>
		<updated>2010-10-16T17:28:56Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 9600 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 0,5 Sekunden der Messwert als ASCII String ausgegeben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 2 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 40 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 980 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 675 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 430 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 320 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
Software: [[Datei:Klopfsensor_Software.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist ungetestet und enthält noch Fehler, siehe Beitrag im Forum.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=51239</id>
		<title>Klopfsensormessgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Klopfsensormessger%C3%A4t&amp;diff=51239"/>
		<updated>2010-10-10T02:49:45Z</updated>

		<summary type="html">&lt;p&gt;Pdiener: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier entsteht eine Seite zum Klopfsensormessgerät für Verbrennungsmotoren&lt;br /&gt;
siehe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#new&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Als &amp;quot;Klopfen&amp;quot; bezeichnet man bei Verbrennungsmotoren eine explosionsartige Verbrennung des Gemischs, verursacht durch druckbedingte Selbstzündung. Klopfen tritt vor allem bei Benzinmotoren auf, die bei hoher Verdichtung zu früh zünden. Die frühzeitige Zündung führt zu einem Druckanstieg im Brennraum, wodurch sich auch Volumenteile, die noch nicht von der von der Zündkerze ausgehenden Flammenfront erfasst worden sind, alleine durch den druckbedingten Temperaturanstieg explosionsartig entzünden. Man spricht in diesem Zusammenhang auch von einer Detonation des Gemischs. Dabei brennt das Benzin-Luft-Gemisch nicht kontinuierlich von der Zündkerze ausgehend ab, sondern zündet im gesamten Brennraum nahezu gleichzeitig. Dadurch entsteht eine hochfrequente Druckwelle, die beim Auftreffen auf den Kolben auf den gesamten Antriebsstrang wirkt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Druck, ab dem ein Brennstoff-Luft-Gemisch von selbst zündet, hängt unter anderem von der Oktanzahl des eingesetzten Brennstoffes ab. Brennstoffe mit niedriger Oktanzahl zünden bei niedrigerem Druck als Brennstoffe mit hoher Oktanzahl. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Oktanzahl (ROZ) ist ein Maß für die Klopffestigkeit.&lt;br /&gt;
Der Einsatz von minderwertigem Brennstoff (ROZ &amp;lt; 91) in modernen Benzinmotoren kann zu klopfender Verbrennung führen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der besonders hohe Druck und die hochfrequenten Kräfte, die bei klopfender Verbrennung wirken, können einen Motor schädigen und auch (in Extremfällen) sehr schnell zerstören.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Brennstoff einzusparen und Motoren möglichst leistungsfähig zu machen, ist eine früh gezündete, jedoch noch nicht klopfende Verbrennung notwendig. Dennoch ist es erwünscht, dass solche Motoren auch mit minderwertigem Brennstoff betrieben werden können. Weiterhin muss beachtet werden, dass ein zu früh gewählter Zündzeitpunkt sich aber auch wieder negativ auf die Leistung auswirkt.&lt;br /&gt;
Ideal sollte der höchste Verbrennungsdruck bei etwa 20° Kurbelwelle nach OT liegen. Auch müssen hierbei bauliche Eigenschaften des Motors beachtet werden, wie etwa das Verhältnis von Pleuel zu Hub.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Motorsteuerung kann durch Auswertung eines Klopfsensors auf klopfende Verbrennung reagieren und üblicherweise durch späteres Zünden eine klopfende Verbrennung unterbinden und damit eine Schädigung des Motors vermeiden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Klopfsensor besteht oft aus einem piezoelektrischen Schallwandler, der den hochfrequenten Körperschall am Motor in ein elektrisches Signal wandelt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen dieses Projekts soll eine Auswerteschaltung für einen solchen Klopfsensor entwickelt werden.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Messgerät kann beispeilsweise für eigene Motorsteuerungen im Rennsport, im Bereich der Forschung und Entwicklung oder als Kontrollmessgerät an Prüfständen und in Werkstätten eingesetzt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein besonders interessantes Einsatzgebiet ergibt sich bei methanolbetriebenen Modellverbrennungsmotoren, deren Zündung mittels Glühkerzen erfolgt. Hier ist eine Abstimmung der Glühkerzentemperatur auf Verdichtung und Nitromethananteil im Brennstoff in Bezug auf das Auftreten klopfender Verbrennung notwendig. Dabei kann ein Klopfmessgerät sehr hilfreich sein.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Autor übernimmt keinerlei Verantwortung für eventuell auftretende Schäden, die durch den Nachbau oder Einsatz bzw. eventuelle Fehlfunktion, mangelnde Zuverlässigkeit oder ähnliche Fehler der Schaltung eintreten. Jeder, der dieses Projekt nachbaut oder einsetzt, handelt auf eigene Gefahr und sollte wissen, dass ein Verbrennungsmotor eine leistungsstarke Maschine ist, die bei falscher Betriebsweise schwere Schäden an Sachen und Personen verursachen kann. Weiterhin sei an dieser Stelle darauf hingewiesen, dass bei einer Modifikation eines Kraftfahrzeugs oder einer anderen Maschine mit Verbrennungsmotor eventuell die Zulassung erlischt und ein Betrieb unzulässig ist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Ein TPIC8101 digitalisiert, filtert, und verstärkt das Signal vom Klopfsensor. Nach dieser Vorverarbeitung erfolgt eine digitale Gleichrichtung und Integration. Nach der Integration steht quasi eine über einen bestimmten Zeitraum aufakkumulierte Lautstärke des Klopfgeräusches im Messwertregister des TPIC8101. Der Integrator muss regelmäßig nach dem Auslesen auf 0 zurückgesetzt werden. Ein ATmega8 ist über SPI mit dem TPIC8101 verbunden und konfiguriert das Filter, die programmierbare Verstärkung, den Integrator und den Eingangskanal. Die Messdaten werden digital als 10 bit Wert über SPI ausgelesen und über die serielle Schnittstelle ausgegeben. Nach dem Auslesen erfolgt das Rücksetzen des Integrators über das Signal &amp;quot;Int_hold&amp;quot;. Eine Analogausgabe über RC-gefilterte PWM sowie eine Digitalausgabe eines Binärwertes (klopft / klopft nicht) ist geplant. Wahlweise kann eines der beiden analogen Klopfsensorsignale mit dem LM386 verstärkt und über einen Kopfhörer direkt abgehört werden. Die Lautstärke ist über ein Poti einstellbar.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung beinhaltet weiterhin einen 5V-Spannungsregler zur Versorgung des ATmega8, des TPIC8101 und des MAX232. Der 12V-Spannungseingang ist über eine bidirektionale 24V TVS-Diode vor transienten Überspannungen eines KFZ-Bordnetzes geschützt. Der Spannungseingang ist verpolgeschützt und mittels Feinsicherung gegen Überstrom geschützt. Der Analogausgang sowie der Digitalausgang sind über unidirektionale 5,6V TVS-Dioden gegen leitungsgekoppelte Transienten geschützt.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Taster zum Start eines Bootloaders. Darüber soll ein Firmwareupdate über die serielle Schnittstelle ohne spezielles Programmiergerät möglich sein.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Klopfsensormessgeraet_Layout.png|miniatur|400px|Leiterplattenlayout (KiCAD 3D Simulation)]]&lt;br /&gt;
&lt;br /&gt;
Die Schaltung ist mit [http://www.mikrocontroller.net/articles/KiCAD KiCAD] gezeichnet, es gibt einen (ungetesteten) Schaltplan sowie ein Leiterplattenlayout. Die Leiterplatte ist noch nie gefertigt worden, es kann sein, dass noch Fehler drin sind. Die Platine kann einseitig geätzt werden, die wenigen Leiterbahnen auf der Oberseite können dann als Draht eingelötet werden. Es wurde bewusst auf intensive Benutzung von SMD-Bauformen verzichtet.&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1856757&lt;br /&gt;
&lt;br /&gt;
Aktuelle Version:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Schaltplan: [[Datei:Klopfsensor_sch.pdf‎]] &amp;lt;br&amp;gt;&lt;br /&gt;
KiCAD Projekt: [[Datei:Klopfsensor_EDA.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Programmiersprache: [http://www.mikrocontroller.net/articles/C C] &amp;lt;br&amp;gt;&lt;br /&gt;
Entwicklungsumgebung: [http://www.mikrocontroller.net/articles/AVR-Studio AVR Studio] &amp;lt;br&amp;gt;&lt;br /&gt;
Compiler: [http://www.mikrocontroller.net/articles/WinAVR WINAVR] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Software ist zur besseren Übersicht in mehrere Module geteilt:&lt;br /&gt;
* SPI.c: Hardware SPI Treiber für ATmega8&lt;br /&gt;
* TPIC8101.c: Treiber für TPIC8101&lt;br /&gt;
* UART.c: UART mit FIFO&lt;br /&gt;
* Klopfsensor.c: Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
Die Kommunikation mit einem PC erfolgt über ein gewöhnliches Terminalprogramm. &amp;lt;br&amp;gt;&lt;br /&gt;
Einstellungen: &lt;br /&gt;
* Baudrate: 9600 &lt;br /&gt;
* Format: 8n1 &lt;br /&gt;
* Flow Control: None &lt;br /&gt;
&lt;br /&gt;
Momentan wird nur alle 0,5 Sekunden der Messwert als ASCII String ausgegeben, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Klopfwert: 2 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 40 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 980 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 675 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 430 &amp;lt;br&amp;gt;&lt;br /&gt;
Klopfwert: 320 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendete Module anderer Programmierer: [http://www.mikrocontroller.net/topic/101472#882716 UART mit FIFO von Peter Dannegger]&lt;br /&gt;
&lt;br /&gt;
Erste Version siehe: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/190088#1857780&lt;br /&gt;
&lt;br /&gt;
Die Software ist ungetestet und enthält noch Fehler, siehe Beitrag im Forum.&lt;br /&gt;
&lt;br /&gt;
===Programmieren des Mikrocontrollers===&lt;br /&gt;
Es sind prinzipiell zwei Möglichkeiten vorgesehen, wie die Firmware in den Flashspeicher des ATmega8 programmiert werden kann:&lt;br /&gt;
&lt;br /&gt;
* über ein ISP Programmiergerät&lt;br /&gt;
* über einen Bootloader&lt;br /&gt;
&lt;br /&gt;
Natürlich kann statt der ISP Programmierung auch eine HV-Programmierung verwendet werden. Die Fuseeinstellungen sind dabei identisch zu wählen, damit eine ISP Programmierung auch später noch möglich ist.&lt;br /&gt;
&lt;br /&gt;
====Direktes Programmieren mit ISP====&lt;br /&gt;
Dafür wird für jeden Programmiervorgang ein ISP Programmiergerät benötigt. Es eignet sich beispielsweise das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=33 AVRISP MKII von Atmel].&lt;br /&gt;
&lt;br /&gt;
Nachdem das Projekt &amp;quot;Klopfsensor.aps&amp;quot; in AVR Studio geöffnet worden ist, erstellt man den Maschinencode mit F7.&lt;br /&gt;
&lt;br /&gt;
Wenn das Programmiergerät richtig mit der Schaltung und dem PC verbunden ist, wählt man im Menu &amp;quot;Tools&amp;quot;-&amp;gt;&amp;quot;Program AVR&amp;quot;-&amp;gt;&amp;quot;Connect...&amp;quot;. Dann AVRISP MKII und USB auswählen und &amp;quot;Connect&amp;quot; drücken.&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich ein neues Fenster öffnen mit den Einstellungen zum Programmieren des ATmega.&lt;br /&gt;
&lt;br /&gt;
Als erstes wählt man den Reiter &amp;quot;HW Settings&amp;quot; und drückt &amp;quot;Read&amp;quot;. VTarget muss jetzt etwa 5 Volt anzeigen, ist das nicht der Fall, liegt keine Versorgungsspannung an.&lt;br /&gt;
&lt;br /&gt;
Die Fuses müssen nur einmal programmiert werden, die Einstellungen gehen bei weiteren Programmiervorgängen nicht verloren. Wenn das also nicht der erste Programmiervorgang ist, kann man diesen Abschnitt überspringen.&lt;br /&gt;
Jetzt wählt man den Reiter &amp;quot;Fuses&amp;quot;. Dann stellt man im unteren Fensterteil folgende Fuseeinstellunegn ein:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC7 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Return drücken, damit werden die Einstellungen in die Detailansicht geladen. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Program&amp;quot; drücken, um die Fuseeinstellungen in den Flashspeicher zu programmieren.&lt;br /&gt;
&lt;br /&gt;
Um die eigentliche Firmware zu programmieren, wählt man den Reiter &amp;quot;Program&amp;quot;. Es muss nur das Flash programmiert werden, nicht das EEPROM. Als Input hex file wählt man im Projektverzeichnis \default\Klopfsensor.hex aus und startet den Vorgang mit &amp;quot;Program&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Die Firmware ist jetzt programmiert.&lt;br /&gt;
&lt;br /&gt;
====Programmieren per Bootloader====&lt;br /&gt;
Bevor man einen Bootloader verwenden kann, muss auch dieser per ISP in das Flash programmiert werden. Ist der Bootloader einmal programmiert, kann die eigentliche Firmware über die serielle Schnittstelle programmiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einmaliges Programmieren des Bootloaders&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Programmiervorgang ist ein direktes Programmieren über SPI, siehe oben. Es wird jedoch das Projekt des Bootloaders geöffnet (der Autor hat noch keinen Bootloader ausgewählt, es wird hier später stehen, welcher sich am besten eignet).&lt;br /&gt;
&lt;br /&gt;
Zur Auswahl steht [http://www.roland-riegel.de/boofa/index.html boofa von Roland Riegel]&lt;br /&gt;
&lt;br /&gt;
Die Fuseeinstellungen unterscheiden sich jedoch vom oben gezeigten Vorgang, denn der Mikrocontroller muss meim Start die Bootsection anspringen. Das wird durch folgende Fuseeinstellungen erreicht:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
FUSE HIGH  0xC2 &amp;lt;br&amp;gt;&lt;br /&gt;
FUSE LOW   0x3F&lt;br /&gt;
&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programmieren der Firmware mit dem Bootloader&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist der Bootloader erfolgreich im ATmega, kann die Firmware des Klopfsensormessgeräts über die serielle Schnittstelle programmiert werden. Dafür wird kein separates Programmiergerät benötigt und die Schaltung muss nicht zugänglich sein, eine Verbindung über die Schnittstelle genügt.&lt;br /&gt;
&lt;br /&gt;
Hier wird später stehen, wie man den Bootloader verwendet.&lt;br /&gt;
&lt;br /&gt;
==Wunschliste==&lt;br /&gt;
* Eingang für Kurbelwellenpositionsgeber (z.B. 60 Ticks pro Umdrehung und Nullmarke)&lt;br /&gt;
&lt;br /&gt;
==Umgesetzte Wünsche==&lt;br /&gt;
* Kopfhörerausgang zum Abhören des Sensorausgangs&lt;br /&gt;
&lt;br /&gt;
==Bekannte Fehler==&lt;br /&gt;
Jeder, der dieses Projekt nachbaut und Fehler findet, möge diese bitte hier eintragen. &amp;lt;br&amp;gt; Wenn die Fehler behoben sind, werden sie von hier nach &amp;quot;Behobene Fehler&amp;quot; verschoben.&lt;br /&gt;
===Hardware===&lt;br /&gt;
Keine.&lt;br /&gt;
===Software===&lt;br /&gt;
* sei(); fehlt im Hauptprogramm&lt;br /&gt;
* UART uputchar0 und ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren&lt;br /&gt;
* Fehler in TPIC8101.c: in TPIC_get_knock_value siehe http://www.mikrocontroller.net/topic/190088#1889419&lt;br /&gt;
&lt;br /&gt;
==Behobene Fehler==&lt;br /&gt;
===Hardware===&lt;br /&gt;
* TPIC8101 hatte keinen Anschluss an Vcc&lt;br /&gt;
===Software===&lt;br /&gt;
Keine.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Pdiener</name></author>
	</entry>
</feed>