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 ;)
Hallo! Gibt es einen triftigen Grund, mit sowas zwei µC zu langweilen?
:
Bearbeitet durch User
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
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?
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.
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
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!!
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
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.
Ist das Softwaretechnisch so kompliziert? Ich dachte eher, dass die Software das kleinere Übel ist und dass die Hardware Probleme machen würde :D
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
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
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!
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.
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.
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.
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.
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)
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
Vergiss auch nicht den Fall: Habe ich heute das Auto, oder fährt meine Frau damit? ;-) MfG Paul
Ich würde auch sagen, du hast den Kupplungsschalter vergessen.
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'.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.