Dachmodul erster Prototyp

Alle eure Veränderungen und Mods kommen hier rein!

Moderator: Grauzone

Benutzeravatar
Viper-666
Moderator
Beiträge: 796
Registriert: Montag 13. Juni 2016, 22:19
Vorname: Andre
Auto: Chamäleon Roadster
Wohnort: Werne
Hat sich bedankt: 474 Mal
Danksagung erhalten: 212 Mal

Re: Dachmodul erster Prototyp

Beitrag von Viper-666 »

Hallo Udo,

ich glaube wir reden ein wenig aneinander vorbei ,grübel,
Frequenzen mit dem Transistor erzeugen brauche ich zwingend nur eine und zwar 3Hz.
Wahrscheinlich muss ich auch noch das Geschwindigkeitssignal (6Hz pro km/h) über einen Transistor nachbilden weil der Arduino eventuell Probleme bekommt wenn er dauerhaft dieses Signal (welches 12-14V in der oberen Flanke hat) direkt auf seinen mit 5V spezifizierten Eingang bekommt.

Die Dachmodule (X-Car, EasyRoof und meins) funktioniert so, dass sie das Geschwindigkeitssignal (6Hz pro km/h) beim Dachöffnen einfach weg schaltet (beim Relais den Stromkreis unterbricht).
Dies muss es auch mit dem 3Hz/27Hz Signal für die Regelung des ABS machen, da das im Crossfire verbaute Dachmodul das Dach nur öffnet wenn 3Hz anliegen aber bei Geschwindigkeiten über 6km/h vom Motorsteuergerät auf 27Hz geändert wird (und damit das ABS aktiviert und die Öffnung des Daches unterbinden würde).
Deshalb muss ich aber das vom Arduino erzeugte 3Hz Signal auf der im EasyRoof mit ABS_IN bezeichneten Leitung schalten damit das Dachmodul keine Störung ausgibt.
Dies wird im EasyRoof durch ein Wechselschalterrelais und einen Optocopler (für das vom Microcontroller erzeugte 3Hz Signal) gemacht.
Nun schaltet das Wechselrelais aber die "ofenen" Enden (ABS_Out und Tacho_Out) also die Seiten des Kabels welche vom Motorsteuergerät kommen über einen 1KOhm Widerstand auf +12V und das verstehe ich nicht weil die anderen Enden (ABS_In und Tacho_In) für die Auswertung der gefahrenen Geschwindigkeit von den XF-Steuergeräten verwendet werden.

Ich hoffe dies ist verständlich ,grübel, ich weiß, ein Schaltplan würde euch mehr helfen werde mich dran setzten einen zu erzeugen...
Benutzeravatar
Crossmire
Administrator
Beiträge: 1626
Registriert: Montag 20. Juni 2016, 04:54
Vorname: Udo
Auto: _QP_
Wohnort: bei Rottweil
Hat sich bedankt: 428 Mal
Danksagung erhalten: 980 Mal

Re: Dachmodul erster Prototyp

Beitrag von Crossmire »

Hallo Andre,

wir finden da schon wieder zusammen.

Das EasyRoof benutzt für die Pegelumsetzung 12V->5V einen Optokoppler. Das hat den Vorteil der Potenzialtrennung und klappt relativ gut. Man muss nur ausreichend Strom durch die LED schicken, sonst bekommt man mit der Alterung Probleme.
Die einfachste Lösung besteht in einem Reihenwiderstand und einer Zenerdiode. Die Zener begrenzt die Eingangsspannung auf den Maximalwert des Arduino.

Bezüglich des Relais sieht es so aus, dass EasyRoof einmal das Original Signal durchschaltet und im anderen Fall selbst erzeugt.
Der 1k Widerstand nach 12V entspricht dem 1k5 in unserer Einzeltransistorschaltung und anstelle des BC817 übernimmt dort ein Optokoppler LTV356 die Aufgabe des Schalttransistors. Entspricht also prinzipiell unserer Schaltung.

Bei uns fehlt das Umschaltrelais. Das sparen wir uns. Sind ja schliesslich besser. :supercooled: (*)
Denn die Aufgabe übernimmt auch der Arduino Controller einfach per Software. Bei den 3Hz und 27Hz ein Pipifax.
Du liest ja das Originalsignal und gibst entweder dieses weiter oder generierst im Sonderfall Dein eigenes Signal.
Unsere Schaltung ist gut für 2kHz, wir haben genug Freiraum und Sicherheit.

Grüße von Udo

(*) getreu dem Motto von Albert Einstein: Machs einfacher, aber nicht zu einfach.
Ich habe schon mein H-Kennzeichen :irolleyes:
Benutzeravatar
Viper-666
Moderator
Beiträge: 796
Registriert: Montag 13. Juni 2016, 22:19
Vorname: Andre
Auto: Chamäleon Roadster
Wohnort: Werne
Hat sich bedankt: 474 Mal
Danksagung erhalten: 212 Mal

Re: Dachmodul erster Prototyp

Beitrag von Viper-666 »

Crossmire hat geschrieben: Dienstag 25. April 2017, 12:22 Die einfachste Lösung besteht in einem Reihenwiderstand und einer Zenerdiode. Die Zener begrenzt die Eingangsspannung auf den Maximalwert des Arduino.
Kann ich mir das so vorstellen:
Bild
(RL haben wir natürlich bei unserem Fall nicht sondern dies wäre dann der interne pullup vom Arduino?)

Und für die Berechnung des Vorwiderstandes Rv kann ich dann nach dem Beispiel Dimensionierung einer Stabilisierungsschaltung mit Z-Diode vorgehen?
Wobei bei mir IL die 20mA welche der Arduino verträgt wären?


Edit: Kann das sein, das bei dem X-Car-Modul die Diode welche da Quer aufgelötet ist auch eine Zener Diode ist?
Benutzeravatar
Crossmire
Administrator
Beiträge: 1626
Registriert: Montag 20. Juni 2016, 04:54
Vorname: Udo
Auto: _QP_
Wohnort: bei Rottweil
Hat sich bedankt: 428 Mal
Danksagung erhalten: 980 Mal

Re: Dachmodul erster Prototyp

Beitrag von Crossmire »

Genau. Nur beim Strom müssen wir es noch genauer betrachten,
sonst überschreitet man eventuell den Minimalpegel und der Arduino erkennt keine 'Null'.
Hast Du ein Bild von dem Schaltungsteil des Arduino?
Ich kann das dann wieder im LTspice über alle Umwelt Parameter hinweg simulieren.
Ich habe schon mein H-Kennzeichen :irolleyes:
Benutzeravatar
Viper-666
Moderator
Beiträge: 796
Registriert: Montag 13. Juni 2016, 22:19
Vorname: Andre
Auto: Chamäleon Roadster
Wohnort: Werne
Hat sich bedankt: 474 Mal
Danksagung erhalten: 212 Mal

Re: Dachmodul erster Prototyp

Beitrag von Viper-666 »

Crossmire hat geschrieben: Dienstag 25. April 2017, 13:18 Hast Du ein Bild von dem Schaltungsteil des Arduino?
Meinst du so was: Arduino Nano V3
Benutzeravatar
Crossmire
Administrator
Beiträge: 1626
Registriert: Montag 20. Juni 2016, 04:54
Vorname: Udo
Auto: _QP_
Wohnort: bei Rottweil
Hat sich bedankt: 428 Mal
Danksagung erhalten: 980 Mal

Re: Dachmodul erster Prototyp

Beitrag von Crossmire »

Ja. Der Nano hat einen Atmega328 und dessen Port D zuschaltbare Pullups.
Ich würde, weil diese im Einschaltmoment nicht aktiv sind, vielleicht parallel zur Diode noch einen 100k legen.

Die Pullups von Controllern haben, wie üblich, grosse Toleranzen. In diesem Fall liegen die zwischen 20k und 50k, also 250% !
Die Elektroniker müssen immer mit grossen Toleranzen zurecht kommen. Die Mechaniker sind da mehr als verwöhnt.

Also, bei der angehängten Dimensionierung sollten die High und Low Pegel im Einsatzbereich über- bzw. unterschritten werden.

grün = Signalspannung
rot = Eingangsstrom
zener.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Ich habe schon mein H-Kennzeichen :irolleyes:
Benutzeravatar
Viper
Administrator
Beiträge: 1358
Registriert: Montag 13. Juni 2016, 21:16
Vorname: Andre
Auto: Chamäleon Roadster
Wohnort: Werne
Hat sich bedankt: 562 Mal
Danksagung erhalten: 432 Mal

Re: Dachmodul erster Prototyp

Beitrag von Viper »

Hallo Udo,

kannst du dein Simulationsprogramm noch mal Starten? Ich habe bei der Transistorschaltung leider nicht alle Widerstände mit den richtigen Werten.
Ich habe statt dem 33k einen 22k und statt des 1k5 einen 2k2 nehmen müssen. Mit meinem Frequenzsimulator sieht es gut aus.
Benutzeravatar
Crossmire
Administrator
Beiträge: 1626
Registriert: Montag 20. Juni 2016, 04:54
Vorname: Udo
Auto: _QP_
Wohnort: bei Rottweil
Hat sich bedankt: 428 Mal
Danksagung erhalten: 980 Mal

Re: Dachmodul erster Prototyp

Beitrag von Crossmire »

Sieht hier auch gut aus.
22k.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Ich habe schon mein H-Kennzeichen :irolleyes:
Benutzeravatar
Viper
Administrator
Beiträge: 1358
Registriert: Montag 13. Juni 2016, 21:16
Vorname: Andre
Auto: Chamäleon Roadster
Wohnort: Werne
Hat sich bedankt: 562 Mal
Danksagung erhalten: 432 Mal

Re: Dachmodul erster Prototyp

Beitrag von Viper »

So dank Udos tatkräftiger Hilfe bin ich wieder einen Schritt weiter :D

Leider habe ich noch das Problem, dass der Arduino so wie ich es mache nicht schafft die 3Hz zu erzeugen, er schafft so nur 2Hz ,heul,
Habe irgendwo mal gesehen/gelesen, dass es schneller geht wenn man nicht sagt schalte "Ausgang 2 High" sondern dies gleich irgendwie so macht "10010011" weil der Arduino das nicht mehr selbst umrechnen muss.
Jetzt muss ich erst mal recherchieren...

Dann habe ich es noch geschafft mein gesamtes System in einen Zustand zu bringen wo nichts mehr ging ,rauf, Das Dach war halb offen/zu und ich intensiv mit messen beschäftigt als ich das Dach weiter fahren wollte ging nichts mehr...
Ich dachte es liegt daran, dass das Dach in einem undefinierten Zustand ist und habe die Abdeckklappe ganz auf gedrückt und nicht gesehen, das der Spoiler ausgefahren war ,stop,
Dann ging erst recht nichts mehr, Spoiler fuhr nicht weil Klappe offen Dach fuhr nicht weil Klappe offen und Spoiler ausgefahren :roll:

Zum Glück entlüftet sich das Hydrauliksystem von selbst nach einigen Minuten so bin ich erst mal rein gegangen und als ich wieder raus kam war das Dach ganz offen und der Kasten zu gefallen. Nach dem Drücken von Verdeck schließen hat es einmal kurz "klack" gemacht und der Dachkasten war verriegelt und das System wieder in einem definierten Zustand.
Benutzeravatar
Crossmire
Administrator
Beiträge: 1626
Registriert: Montag 20. Juni 2016, 04:54
Vorname: Udo
Auto: _QP_
Wohnort: bei Rottweil
Hat sich bedankt: 428 Mal
Danksagung erhalten: 980 Mal

Re: Dachmodul erster Prototyp

Beitrag von Crossmire »

Zwei Hertzen sind in diesem Fall eindeutig zu wenig. ,:-),
Dann frisst das Arduino Betriebssystem massiv Leistung weg.
Ich habe die Atmels früher direkt ohne Betriebssystem beackert.
Dabei wird das von Dir angeführte Verfahren grundsätzlich verwendet.
Man schreibt die Betriebsart des Ports in das Richtungsregister (üblicherweise 0=Eingang, 1=Ausgang).
Dann kann man das Datenregister lesen und die Eingänge auswerten oder 0 bzw. 1 in den entsprechenden Ausgang schreiben.
Mit Timerinterrupt Steuerung macht der Atmel locker mehrere kHz.
Vielleicht findest Du hier den Ansatz mit den IO Ports.
Bezüglich der Timersteuerung scheint es mir hier ein bisschen ins Eingemachte zu gehen.

Du kannst vermutlich einen Ausgang auch als PWM Ausgang definieren.
Dann macht der das, bei richtiger Einstellung, völlig von selbst und ohne jegliche Rechenleistung sehr genau.

Bei meinem Raspi habe ich noch etwas mit dem Compiler gestritten. Wir sind jetzt aber so weit einig geworden. Meistens hatte er recht. Nächster Schritt bei mir sind die ganzen CAN Funktionalitäten mit GTK zu realisieren. Leider ist GTK bislang noch eine Unbekannte für mich. Aber das wird schon.

Grüße von Udo
Ich habe schon mein H-Kennzeichen :irolleyes:
Benutzeravatar
Viper
Administrator
Beiträge: 1358
Registriert: Montag 13. Juni 2016, 21:16
Vorname: Andre
Auto: Chamäleon Roadster
Wohnort: Werne
Hat sich bedankt: 562 Mal
Danksagung erhalten: 432 Mal

Re: Dachmodul erster Prototyp

Beitrag von Viper »

Hallo Udo,

dein Tipp war wieder Goldrichtig ;up; mit dem Link zu Heise ist es mir gelungen ein 3Hz Signal zuverlässig zu erzeugen welches auch die XF-Steuergeräte akzeptieren :D vielen Dank :thunbupp:
Leider hat sich dadurch wieder ein neues Problem aufgetan :o
Vorher habe ich die 3Hz nur erzeugt wenn ich sie brauchte und den Ausgang des Arduino gleich dazu genutzt den Transistor zu schalten welcher das Signal durch schalten von 12V+ verstärkt hat.
Da nun die 3Hz ständig anliegen funktioniert dies nicht mehr also dachte ich mir ich schalte noch einen Transistor dazwischen welcher die erzeugten 3Hz nur an den 12V Verstärkungstransistor durchschaltet wenn ich das Signal brauche. Leider kommen dann von den 4-5V welche an dem Transistor anliegen nur noch 2-3V raus was nicht reicht den 12V Transistor zu schalten ,heul,
Was ich heute nicht mehr versucht habe ist die 3Hz vom Arduino wieder direkt an den 12V Transistor zu legen (welcher dann getestet ein von den XF-Steuergeräten akzeptiertes Signal erzeugt) und dieses Signal durch einen weiteren Transistor zu blocken und diesen Transistor mit dem Arduino durchzuschalten wenn ich das Signal brauche.

Was Funktioniert bis jetzt:
-Erkennung ob Dach öffnen/schließen gedrückt wird
-Erkennen der Roten LED im Schalter und unterbrechen des öffnens/schließens wenn die LED aus geht
-Dach automatisch öffnen
-Dach automatisch schließen
-3Hz Frequenz erzeugen
-Geschwindigkeitssignal auswerten
-Geschwindigkeitssignal zu unterbrechen wenn ich das Dach öffne
-3Hz/21hz Signal vom XF-Motorsteuergerät zu unterbrechen wenn ich das Dach öffne

Was noch optimiert werden muss:
-3Hz Signal vom Arduino zu schalten wenn ich es brauche
-Erzeugung vom Signal Dach öffnen stabiler machen

Die Erzeugung des Signals Dach öffnen/schließen funktioniert im Schalter vom XF ja so, dass es entweder direkt gegen Masse gezogen wird oder über einen 200Ohm Widerstand. Gemessen habe ich ohne das der Motor lief 5V wenn nichts gedrückt wird, 1V beim Öffnen (über den 200Ohm Widerstand) und 0V beim Schließen.
Das versuche ich nun über 2 Transistoren zu erledigen. Die 0V funktionieren auch über den Transistor ohne Probleme, die 1V mit dem anderen Transistor bekomme ich aber nicht vernünftig hin.
Wenn ich es wie im Schalter einfach über einen 200Ohm Widerstand leite bleiben 3-4V übrig nicht 1V und das Dach öffnet sich nicht. Ich vermute, das der Transistor das Signal/den Strom verstärkt. Habe jetzt mit den Widerstandswerten ein wenig gespielt da ich aber nicht alle Werte habe habe ich zwei hintereinander geschaltet.
Aber Motor aus und Lichtmaschine arbeitet erzeugen zwischen 4-6V Spannung welche beim durchschalten des Transistors zu Spannungen von 0,5-1,3V führen wast dazu führt, dass es passieren kann das das Dachsteuermodul entweder gar nicht schaltet oder es ist auch schon vorgekommen, dass es erst öffnen erkannt hat und mitten im Öffnungsvorgang die Spannung soweit abgefallen ist, das es das Dach wieder geschlossen hat ,oh,
Kann man die Spannung welche beim Öffnen durch den Transistor kommt erst Stabilisieren, eventuell mit einer Z-Diode auf 5V? Oder würde man sie dann gar nicht mehr auf 1V bekommen?
Oder kann man sogar mit einer richtigen Z-Diode die Spannung auf 1V bekommen?

Edit: Ich habe zur Erzeugung von den 5V für den Arduino folgenden Spannungregler [welcher 1A auf der 5V Seite erzeugen kann.
Gemessen habe ich max. 100mA aber der Spannungsregler wird schon ziemlich heiß, schätze 60-70°C ist das normal?
Benutzeravatar
Crossmire
Administrator
Beiträge: 1626
Registriert: Montag 20. Juni 2016, 04:54
Vorname: Udo
Auto: _QP_
Wohnort: bei Rottweil
Hat sich bedankt: 428 Mal
Danksagung erhalten: 980 Mal

Re: Dachmodul erster Prototyp

Beitrag von Crossmire »

Hallo Andre,

um den Ausgabepuls zu deaktivieren oder wieder zu reaktivieren müsste es genügen entweder den Overflow oder den Compare Interrupt aus- und einzuschalten. Ich weiss jetzt nicht welche der Lösungen Du gewählt hast. Also entweder den Interrupt durch eine 0 im entsprechenden Bit aus bzw durch eine 1 einschalten.
Beispiel zum Overflow Interrupt

einschalten, so wie bei heise durch
nointerrupts();
TIMSK1 |= (1 << TOIE1); // Timer Overflow Interrupt aktivieren
interrupts();

ausschalten
nointerrupts();
TIMSK1 &= (~(1 << TOIE1)); // Timer Overflow Interrupt deaktivieren
interrupts();

Grüße von Udo
Ich habe schon mein H-Kennzeichen :irolleyes:
Benutzeravatar
Crossmire
Administrator
Beiträge: 1626
Registriert: Montag 20. Juni 2016, 04:54
Vorname: Udo
Auto: _QP_
Wohnort: bei Rottweil
Hat sich bedankt: 428 Mal
Danksagung erhalten: 980 Mal

Re: Dachmodul erster Prototyp

Beitrag von Crossmire »

Beim Schalter würde ich es einfach so machen
IMG_5252.JPG
Basis natürlich mit Pulldown Widerstand und Reihenwiderstand versehen.
Sonst gibt es ein falsches Signal wenn der Mikrocontroller startet.
Dessen Port steht dann noch nicht auf Ausgang mit Null.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Ich habe schon mein H-Kennzeichen :irolleyes:
Benutzeravatar
Viper
Administrator
Beiträge: 1358
Registriert: Montag 13. Juni 2016, 21:16
Vorname: Andre
Auto: Chamäleon Roadster
Wohnort: Werne
Hat sich bedankt: 562 Mal
Danksagung erhalten: 432 Mal

Re: Dachmodul erster Prototyp

Beitrag von Viper »

Hallo Udo,

das mit dem Ein und Ausschalten durch deinen Code werde ich versuchen.

Das mit dem Dachschalter und den Transistoren habe ich fast so gemacht wie du es gezeichnet hast, habe nur den Widerstand am Emitter und nicht am Kolektor angeschlossen. Kann es noch mal so rum versuchen.

Noch mal vielen Dank für deine immer Zielführenden Antworten ;up;
Benutzeravatar
Viper
Administrator
Beiträge: 1358
Registriert: Montag 13. Juni 2016, 21:16
Vorname: Andre
Auto: Chamäleon Roadster
Wohnort: Werne
Hat sich bedankt: 562 Mal
Danksagung erhalten: 432 Mal

Re: Dachmodul erster Prototyp

Beitrag von Viper »

Udo du bist der BESTE ,star, mit den zwei von dir vorgeschlagenen Änderungen Funktioniert mein Modul jetzt einwandfrei :D

Was sind jetzt die Unterschiede zwischen meinem Modul und dem von X-Car:
- Frei einstellbare Geschwindigkeitsgrenze bis zu der das Dach funktioniert
- Es wird nicht dauernd bis 60km/h das Geschwindigkeitssignal unterbrochen was z.B. Probleme mit der Scheibenwischersteuerung verursacht.
- Erweiterung der Funktionen geplant (nicht nur Dachsteuerung, der Arduino kann noch mehr :mrgreen: )

Was sind die nächsten Schritte:
- Erstellung eines Schaltplanes, habe sowas noch nie gemacht :? muss noch schauen wie ich das hin bekomme und welche Software ich am besten nehme, Vorschläge sind willkommen
- Aufbau eines Prototypen auf Lochrasterplatine
- ausführlicher Test in meinem Crossi

Hier noch ein kleines Video von der Funktion. Bitte entschuldigt die wackelige Aufnahme und das man das Dach nicht richtig sieht...

Passwort ist wie immer die Abkürzung des Crossfire mit 2 Großbuchstaben:

Antworten