Forum: Mikrocontroller und Digitale Elektronik Projekt Motor über Start/Stop-Taster starten


von Manuel B. (mnlbkn)


Lesenswert?

Hallo alle zusammen,

ich bin neu hier und komme natürlich gleich mal mit einer Frage.
Zu meinem Vorhaben: Ich möchte mein Auto über einen Start/Stop-Taster 
einschalten bzw. auschalten. Ich habe mich auch schon eingelesen jedoch 
nichts zu meinem Vorhaben gefunden.
Auf dem Gebiet Mikrocontroller bin ich neu, löten und andere 
elektronische Dinge sind mir aber durchaus bekannt (Ich studiere 
Maschinenbau, da gibt es auch Elektrotechnik).

Ich stelle mir folgendes vor das ganze mit einem Atmega (IC1) ein 
zweiter Atmega (IC2) um die Drehzahl über CAN-Bus auszulesen:
Eingänge IC1: E1 = Blinker, E2 = Start/Stop Taster, E3 = Zündung+, E4 = 
Drehzahl des Motors über CAN-Bus
Ausgänge IC1: A1 = Relais für Zündung, A2 = Relais für Starter
Eingänge IC2: E12 = CAN-high, E22 = CAN-low
Ausgänge IC2: A12 = Drehzahl des Motors über CAN-Bus

- zu Beginn ist IC1 und IC2 im Ruhezustand um Energie zu sparen
- der IC1 und IC2 sollen aufwachen wenn ich das Auto öffne (Auto blinkt 
dabei zwei mal) sprich, wenn 2 mal kurz E1 = 1 und E3 = 0, dann 
aufwachen
- IC2 überprüft über den CAN-Bus die Drehzahl und setzt A12 = 1, wenn 
Drehzahl > 750 u/min
- wenn E2 = 1 (Taster gedrückt) und E3 = 0 (Zündung aus) ist, dann A1 = 
1 (Zündung an)
- wenn E2 = 1 (Taster gedrückt) und E3 = 1 (Zündung an) ist, dann 
solange E2 = 1 (Starter an) bis E4 = 1 (Drehzahl über 750 u/min)
- wenn E2 = 1 (Taster gedrückt), E3 = 1 (Zündung an) und E4 = 1 
(Drehzahl über 750 u/min -> Motor läuft), dann A1 = 0 (Zündung aus)
- der IC1 und IC2 sollen wieder in den Ruhemodus wenn ich das Auto 
abschließe (Auto blinkt dabei ein mal) sprich, wenn 1 mal kurz E1 = 1 
und E3 = 0, dann Ruhemodus

Meine Signale sind alle Analog +12V, diese müssten also über einen AD 
Wandler Eingang gehen.
Hört sich alles meiner Meinung nach komplizierter an als es ist. Die 
Relais für Zündung und Starter müssen maximal 1A aushalten, da ich damit 
nur die Leitungen vom Zündschloss "überbrücke" und das nur 
Signalleitungen sind welche an das Steuergerät gehen, im Steuergerät 
werden dann die "Lastrelais" geschalten.

Meine Frage nun: kann mir jemand bei der Schaltung behilflich sein? 
Programmiertechnisch hab ich einen studierten Programmierer zur Hand der 
mir dabei behilflich ist, für Tipps bin ich dennoch jederzeit offen ;)

von Route_66 H. (route_66)


Lesenswert?

Hallo!
Gibt es einen triftigen Grund, mit sowas zwei µC zu langweilen?

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Manuel Bü schrieb:

> Ich stelle mir folgendes vor das ganze mit einem Atmega (IC1) ein
> zweiter Atmega (IC2)

Da du Maschinenbau studierst, ein gut gemeinter Rat:

Man verwendet so gut wie NIE 2 Prozessoren, wenn einer alleine locker 
ausreicht. Das Gesamtsystem wird durch den Einsatz eines 2.ten 
Prozessors im Regelfall nicht einfacher sondern komplizierter! Denn die 
beiden Proezssoren müssen dann miteinander kommunizieren. Das bringt dir 
aber neue Ebenen in dein Programm hinein, die du nicht hättest, wenn es 
nur einen einzigen Prozessor gibt. Neue Ebenen bringen aber auch neue 
Schwierigkeiten und Fehlermöglichkeiten.

Die angestrebte Funktionalit schaukelt ein Mega alleine mit links und 
löst dabei noch zwischendurch teuflisch schwierige quadratische 
Gleichungen (tm Douglas Adams) eher noch ein Nickerchen macht.

> Meine Signale sind alle Analog +12V, diese müssten also über einen AD
> Wandler Eingang gehen.

Nö.
Die erste Frage lautet: Sind das konzeptionell digitale oder analoge 
Signale. Ist es bei dem Signal unerheblich, ob das jetzt 12V oder 11.5V 
sind oder gar nur 10V, hauptsache der eine Pegel unterscheidet sich 
grundlegend vom anderen Pegel (0v oder 0.5V oder 1V) dann sind das 
digitale Signale. Es gibt nur 2 Zustände: Entweder ein Schalter ist 
geschaltet oder er ist nicht geschaltet. Ob das dann wie gesagt 12V oder 
11.5V in dem einen Fall bedeutet spielt keine Rolle. Daher brauchst du 
auch keinen AD Wandler, sondern du musst nur die Spannung von 0 bis 12V 
auf 0 bis 5V runter-"dividieren" um wieder die 2 Zustände ein/aus zu 
kriegen, die du dann in den µC an einem normalen digitalen Pin 
einspeisen kannst. Da ist dann ein AD Wandler das falsche Werkzeug 
dafür, denn das können 2 Widerstände als Spannungsteiler geschaltet 
genausogut.

: Bearbeitet durch User
von Manuel B. (mnlbkn)


Lesenswert?

Wenn du mir eine andere Möglichkeit nennst, dann natürlich nicht ;) Das 
war das erste woran ich gedacht habe.

Wie würdest du die Drehzahl aus dem CAN-Bus auslesen?

von Karl H. (kbuchegg)


Lesenswert?

Manuel Bü schrieb:
> Wenn du mir eine andere Möglichkeit nennst, dann natürlich nicht ;) Das
> war das erste woran ich gedacht habe.
>
> Wie würdest du die Drehzahl aus dem CAN-Bus auslesen?

Das ist leicht.
Mit einem CAN Controller. Die gibt es fix fertig als IC zu kaufen.

von Route_66 H. (route_66)


Lesenswert?

Manuel Bü schrieb:
> Wie würdest du die Drehzahl aus dem CAN-Bus auslesen?

Mit einem Controlle mit integriertem CAN. Atmel hat sowas -auch noch in 
der 51er Archtektur, Mikrochip hat sowas, TI, Motorola, Infieon, usw. 
usw.

Frag Deinen Programmierer, welcher ihm am liebsten ist.

: Bearbeitet durch User
von Manuel B. (mnlbkn)


Lesenswert?

Ein Atmel hat er erwähnt. Habt ihr mir da einen genauen Typ oder können 
mein Vorhaben alle "CAN-fähigen" Atmels bewältigen? Auf was muss ich 
achten?

Ich würde mich heute Abend dann mal an einen Schaltplan machen.

Vielen Dank schonmal!!

von Karl H. (kbuchegg)


Lesenswert?

Manuel Bü schrieb:
> Ein Atmel hat er erwähnt. Habt ihr mir da einen genauen Typ oder können
> mein Vorhaben alle "CAN-fähigen" Atmels bewältigen?

Dein Vorhaben ist im Grunde so simpel, dass das jeder µC der in den 
letzten 50 Jahren gebaut wurde, problemlos bewältgt, solange er dir nur 
den CAN Teil abnimmt.

> Auf was muss ich
> achten?

Das dein Programmierer was drauf hat. Sonst wird das eine unendliche 
Geschichte.


und natürlich, dass die elektrischen Bedingungen in einem KFZ alles 
andere als einfach sind.

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Manuel Bü schrieb:
> Ein Atmel hat er erwähnt. Habt ihr mir da einen genauen Typ oder können
> mein Vorhaben alle "CAN-fähigen" Atmels bewältigen?
 AT90CAN32 - AT90CAN128

Manuel Bü schrieb:
> Auf was muss ich achten?
 Auf Fehler beim Programmieren.

von Manuel B. (mnlbkn)


Lesenswert?

Ist das Softwaretechnisch so kompliziert?

Ich dachte eher, dass die Software das kleinere Übel ist und dass die 
Hardware Probleme machen würde :D

von Karl H. (kbuchegg)


Lesenswert?

Manuel Bü schrieb:
> Ist das Softwaretechnisch so kompliziert?

Wenn man es kann, dann nein.

Das würde ich als Statemachine ausführen. Das drängt sich meiner Meinung 
nach gerade zu auf.

> Ich dachte eher, dass die Software das kleinere Übel ist und dass die
> Hardware Probleme machen würde :D

Das dachte die NASA 1964 auch, als sie die Bordcomputer für Apollo in 
Auftrag gegegeben hat. Aus dem angedachten Software-Spaziergang wurden 
dann 5 Jahre Entwicklung und die ersten Crews sind mit Programmen 
losgeflogen, in denen noch Fehler waren (die man aber zum großen Teil 
kannte und die den Astronauten keine Kopfzerbrechen bereiteten.)


Wenn dein Programmierer sich gleich hinsetzt und drauf los codet, dann 
sollte man hellhörig werden.
Ne im Ernst. Das was du da oben beschrieben hast ist schon nicht 
schlecht. Du kannst es in eine bessere Form bringen, wenn du dir zb die 
graphische Methode einer Statemachine (neudeutsch für Zustandsautomat) 
ansiehst und das ganz mal so aufbereitest und auf dem Papier 
durchtestest. Auch auf "Fehlerfälle" achten, wie zb: Taste losgelassen 
auch wenn der Motor noch nicht läuft.

http://www.mikrocontroller.net/articles/Statemachine

von Karl H. (kbuchegg)


Lesenswert?

Das zum Beispiel
> - der IC1 und IC2 sollen aufwachen wenn ich das Auto öffne (Auto blinkt dabei 
zwei mal) sprich, wenn 2 mal kurz E1 = 1 und E3 = 0, dann aufwachen

geht so nicht. Der µC wacht bei der ersten Pulsflanke bereits auf.
Aber er kann dann in weiterer Folge überprüfen wie lang der Puls war und 
wieviele Pulse er auf der E1 Leitung in einem bestimmten Zeitraum 
gesehen hat. Wenn diese Information mit dem Muster 2 mal 'kurz' 
übereinstimmt, dann schaltet das Programm in den Zustand 'aktiv'. Stimmt 
das Muster nicht, dann legt er sich wieder schlafen, das Programm geht 
in den Zustand 'inaktiv'.

D.h. aus deiner banalen Beschreibung "aufwachen wenn 2 mal kurz gepulst' 
wird schon etwas Komplexeres, wenn man es in eine realisierbare Form 
bringt.

: Bearbeitet durch User
von Manuel B. (mnlbkn)


Lesenswert?

Danke, den Artikel über Statemachine hab ich mir natürlich gleich 
angesehen.

Das mit deinem Beispiel Fehlerfall möchte ich ja ausschließen, dass ist 
ja der Grund weshalb ich die Drehzahl und somit auch CAN brauche. Ich 
möchte den Motor ja durch einen kurzen tast-impuls starten wie bei den 
neuen Fahrzeugen (Da muss man einmal kurz den Starter antippen und der 
Starter dreht dann automatisch solange, bis der Motor läuft).
Bei meinem Auto muss ich nämlich den Starter solange betätigen bis der 
Motor läuft und das soll wie gesagt von dem IC übernommen werden.
Der Starter dreht nämlich mit ca 250 - 500 u/min und die 
Leerlaufdrehzahl vom Motor liegt bei ca 750-850 u/min, deshalb soll das 
IC den Starter solange betätigen, bis die Leerlaufdrehzahl (>750 u/min) 
erreicht ist.

Ich mach mich heute Abend auf jeden Fall erstmal an die Hardware.

Wenn ich die Software selbst (mit eurer Hilfe) hinbekommen würde, wäre 
das wirklich Klasse. Weil programmieren lassen kann jeder, selbst ist 
der Mann ;) Und natürlich steht beim selbstprogrammieren der Lernfaktor 
ganz vorne!

von Karl H. (kbuchegg)


Lesenswert?

Manuel Bü schrieb:

> Wenn ich die Software selbst (mit eurer Hilfe) hinbekommen würde, wäre
> das wirklich Klasse.

Das sind schon ein paar Falltüren drinnen.
Wenn du noch nie programmiert hast, dann ist das erst mal ein paar 
Nummern zu groß. Mit kleineren Brötchen anfangen.

von Hinz (Gast)


Lesenswert?

Nur so als Anmerkung: Und was passiert wenn der Motor nicht anspringt?
Dann läuft der Starter bis in alle Ewigkeit... ich meine natürlich bis 
die Batterie leer ist.

von Manuel B. (mnlbkn)


Lesenswert?

Hinz schrieb:
> Und was passiert wenn der Motor nicht anspringt?

Vielen Dank, daran hab ich noch nicht gedacht. Bei euch bekommt man 
wirklich viele hiflreiche Informationen.

Dann müsste man den Starter durch einen Tastimpuls stoppen wie z. B.?:
- wenn E2 = 1 (Taster gedrückt), E3 = 1 (Zündung an), E2 = 1 (Starter 
an) und Drehzahl unter 750 u/min, dann E2 = 0 (Starter aus)

Auf genau solche Kommentare habe ich auch gehofft, da gibt es soviele 
Dinge die man übersieht.

von Hinz (Gast)


Lesenswert?

Manuel Bü schrieb:
> Dann müsste man den Starter durch einen Tastimpuls stoppen wie z. B.?:
> - wenn E2 = 1 (Taster gedrückt), E3 = 1 (Zündung an), E2 = 1 (Starter
> an) und Drehzahl unter 750 u/min, dann E2 = 0 (Starter aus)

Nein, denn möglicherweise braucht der Motor ja ein paar Sekunden bis er 
anspringt (im Winter?) und bis dahin ist die Drehzahl ja unter 750 
U/Min.
Ich würde den Anlasser einfach solange drehen lassen bis du den Taster 
los lässt oder die Drehzahl über 750 U/Min liegt.

von Manuel B. (mnlbkn)


Lesenswert?

Das habe ich ja bereits ganz am Anfang erwähnt, dass der Anlasser drehen 
soll bis 750 u/min erreicht sind.
Manuel Bü schrieb:
> - wenn E2 = 1 (Taster gedrückt) und E3 = 1 (Zündung an) ist, dann
> solange E2 = 1 (Starter an) bis E4 = 1 (Drehzahl über 750 u/min)

Und falls der Motor nicht anspringt, dann kann ich den Starter mit einem 
erneuten Tastdruck wieder stoppen.

Manuel Bü schrieb:
> Dann müsste man den Starter durch einen Tastimpuls stoppen wie z. B.?:
> - wenn E2 = 1 (Taster gedrückt), E3 = 1 (Zündung an), E2 = 1 (Starter
> an) und Drehzahl unter 750 u/min, dann E2 = 0 (Starter aus)

von Karl H. (kbuchegg)


Lesenswert?

Manuel Bü schrieb:

> Und falls der Motor nicht anspringt, dann kann ich den Starter mit einem
> erneuten Tastdruck wieder stoppen.

Womit du die einfache Schiene "mach was, solange ein Taster gedrückt 
ist" verlässt und eine zuverlässige Erkennung und Entprellung von 
Tastendrücken benötigst "mach was, wenn du einen Wechsel an der 
Tastenleitung erkennst, denn dann ist die Taste niedergedrückt worden"

Ich kann dir wirklich nur raten: mal dir so einen Automaten auf. Und 
dann spiel den Automaten durch. Mit allen Sonderfällen und Dingen, die 
dir einfallen. So was, wie eine leer gestartete Batterie darfst du nicht 
übersehen. Du musst dich bei jedem Zustand in der Grafik fragen: was 
kann mir da alles passieren? Was kann auftreten?
So eine Grafik hilft dir, die Logik zu veranschaulichen und sie hilft 
dir auch die Sonderfälle zu erkennen und dir zu überlegen, wie du sie 
behandeln willst.
Denn gerade diese Sonderfälle sind es, die deiner Aufmerksamkeit 
bedürfen. Solange nichts aussergewöhnliches passiert ist der Weg durch 
die Logik eh geradlinig und einfach. Die Ausnahmen sind es, die 
Schwierigkeiten machen.

: Bearbeitet durch User
von Paul B. (paul_baumann)


Lesenswert?

Vergiss auch nicht den Fall: Habe ich heute das Auto, oder fährt meine
Frau damit?
;-)
MfG Paul

von Fred (Gast)


Lesenswert?

Ich würde auch sagen, du hast den Kupplungsschalter vergessen.

von Jojo S. (Gast)


Lesenswert?

Manuel Bü schrieb:
> - der IC1 und IC2 sollen aufwachen wenn ich das Auto öffne (Auto blinkt
> dabei zwei mal) sprich, wenn 2 mal kurz E1 = 1 und E3 = 0, dann
> aufwachen

d.h. wenn das Auto nicht abgeschlossen ist braucht man (Kind) sich nur 
reinzusetzten und den Startknopf drücken? Bei den mir bekannten PKW ist 
das etwas anders...
Und es gibt weitere Verriegelungen: Kupplung muss getreten sein oder bei 
Automatik Wählhebel in Stellung 'P'.

von Manuel B. (mnlbkn)


Lesenswert?

Nein den Kupplungsschalter habe ich nicht vergessen, jedoch die 
Wahlhebelstellung P. Diese Daten bekomme ich ja über den CAN Bus. Aber 
danke für den Hinweis!

Jojo S. schrieb:
> d.h. wenn das Auto nicht abgeschlossen ist braucht man (Kind) sich nur
> reinzusetzten und den Startknopf drücken?

Nein so wird es nicht sein. Es wird an einer Stelle in der Mittelkonsole 
der Empfänger für die Wegfahrsperre sein. Dort muss der Zündschlüssel 
liegen um starten zu können da im Schlüssel der Transponder ist.

von Route_66 H. (route_66)


Lesenswert?

Manuel Bü schrieb:
> Nein so wird es nicht sein. Es wird an einer Stelle in der Mittelkonsole
> der Empfänger für die Wegfahrsperre sein. Dort muss der Zündschlüssel
> liegen um starten zu können da im Schlüssel der Transponder ist.

Warum erkennt der Startknopf nicht am Fingerabdruck, ob der Drückende 
berechtigt ist? Da kann Dein Kind nicht vom Beifahrersitz aus das 
Fahrzeug starten, wenn Du nur noch mal schnell aus dem Auto springst, 
weil die Kofferklappe nicht richtig zu ist.

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