⌛Projekt: SpiegelHeizung In Italienischen Tunneln (SHiIT) [Erfolgreich abgeschlossen]

Zum Abschluss "schnell" ein passendes Gehäuse mit Deckel konstruiert, gedruckt und final zusammengebaut.

20241114_213438_cpr.jpg
Gehäuse

20241114_210745_cpr.jpg
Deckel

20241114_212904_cpr.jpg
Platine mit Spiegelsteuerung montiert. Die blaue Arduino-Platine und die grüne Spannungsreglerplatine stecken in DIL-Sockelleisten und wurden per Kabelbinder fixiert, damit sie sich im Fahrzeug nicht losvibrieren und abfallen können.


20241114_213148_cpr.jpg
Deckel und Box.
 
Zuletzt bearbeitet:
Der obige CAD-Entwurf war eine ganz interessante Übung mit SCAD, in dem man parametrisierte Modelle entwerfen kann.

Im Grunde schreibt man alle Kanten, Flächen und Positionen als Quellcode runter. Dabei kann man jedoch auch Berechnungen einfließen lassen, um z.B. Objekte zentriert zu positionieren. Dies habe ich z.B. bei den Gehäusebeschriftungen sowie der Positon des DSUB-Steckers genutzt.

Da ich dieses Script bereits mehrfach auch für andere Gehäuse verwendet habe, kann ich die jeweiligen Varianten durch simple Auswahl einer Indexvariablen jederzeit abrufen, abwandeln und daraus eine STL-Datei generieren.

Deckel und Box basieren auf dem selben Script und sind daher automatisch passend. Interessanterweise passen sie nach dem Druck so exakt aufeinander, daß ich noch nicht einmal die vorgesehene Verschraubung benötige, sondern die beiden Teile einfach aufeinander klemmen kann.


SCAD_1.jpg



Bei dieser Art "CAD-Design" entstehen dann aber auch schon mal sehr spezielle syntaktische Ergüsse wie der Folgende, der einen beliebig großen DSUB-Stecker (9...78-polig) beschreibt: :D

1731669422564.png



SCAD ist ein ziemlich mächtiges CAD-Werkzeug, das wie üblich nicht unbedingt auf den ersten Blick intuitiv ist und ein wenig Einarbeitungszeit benötigt.


Mit Hilfe von CURA (oder ähnlichen Slicern) entsteht dann aus dieser generierten STL-Datei die gCode-Datei für den 3D-Drucker:

Bild2.jpg
 
Zuletzt bearbeitet:
Aber zum Thema: Hat mal jemand geprüft, ob das Verhalten vielleicht coderbar ist?

@home muss ich mal mit NCSExpert und Bimmercode nachschauen.
Gestern Abend habe ich abschließend meine Z4 Steuergeräte mit BimmerCode (Handy-App mit OBD-Adapter UnicarScan_UCSI-2000) betrachtet und mich auf die Suche nach möglicherweise konfigurierbaren Spiegel- und Heckscheibenheizungs-Parametern gemacht.
BimmerCode.jpg
UnicarScan_UCSI-2000.jpg

Ich weiß, das hätte ich als Erstes machen sollen, ehe ich die obige Bastelorgie begonnen habe. Dann hätten wir aber nichts über die Technik in unseren Fahrzeugen gelernt. :D

Gefunden habe ich bisher nur das Folgende, ungewöhnlicherweise unter der Rubrik "Gurtbringer"!

Asp1.jpg
ASP bedeutet Außenspiegel. Da gibt es einige konfigurierbare Parameter, aber keinen, der die Heizleistung beschreibt.
ASP2.jpg
Hier ist aktuell ein Wert "02" eingetragen. Dessen Bedeutung ist mir unklar, hat aber wahrscheinlich nichts mit der Spiegelheizungsabschaltgrenze oberhalb von 14,5 °C zu tun.

Mehr habe ich nicht gefunden, auch nichts zur wilden Takterei der Heckscheibenheizung (80/40s-Takt) nach 26 Minuten Dauerheizung.


Fazit:
Nach jetzigem Kenntnisstand sind also nur die oben beschriebenen Hardwareerweiterungen (simpel bei Nicht-LIN-Spiegeln, aufwendiger bei LIN-Spiegeln) eine Lösung für das im 1. Beitrag geschilderte Problem in längeren überhitzten Straßentunneln.

In der Tat:
...mit Kanonen auf Spiegel geschossen. :D
 
Zuletzt bearbeitet:
...mit Kanonen auf Spiegel geschossen. :D
Hierzu fällt mir noch das Folgende ein:

Der in obiger Realisierung verwendete Arduino nano ist nun in vielerlei Hinsicht völlig überdimensioniert und benötigt viel Platz.

Verwendet wird von meiner Lösung tatsächlich nur 1 digitaler IO-Port, das gibt's auch deutlich kleiner:

ATTINY85-20PU DIP-8 IC
20241116_121640.jpg
Sehr klein, wenige Pins, günstig.

Damit ließe sich die Gehäusegröße im Vergleich zu meiner Lösung auf etwa 30% reduzieren bei weiterhin vorhandener Nutzbarkeit der Arduino Entwicklungsumgebung.

Vermutlich gibt es weitere Tiny CPUs mit ähnlichen Fähigkeiten.
 
... um die Begeisterung für diese Tinys ein wenig einzufangen:
  • Aufgrund der Doppelbelegung quasi aller Ports für USB (Programmierung ...) und "general purpose" (in der Applikation) gibt es massenhaft "Fallstricke" in der Nutzung. Ich habe schon viele davon benutzt, aber immer etliches an Zeit vorab darauf verwenden müssen, vorab auszutüfteln, wie ich die Ports belege, damit es am Ende auch wirklich ohne "Special Effects" funktioniert :rolleyes: .
  • manche haben einen funktionsfähigen Reset, manche nicht
  • lästig in vielen Situationen ist die recht lange Startup-Zeit mancher Derivate, nur "getopped" von manchen Arduino "pro Mini". Es ist halt zuweilen sehr unschön, wenn die CPU für hunderte von Millisekunden nach Power-On im Bootloader wartet ... auch hier muss man oft Sorge tragen, dass die Portbeschaltung für die Applikation während dieser Zeiten keinen Unsinn veranstaltet
  • Die ATTiny 85 CPU hat auch kaum Speicher und Performance, was aber eher selten ein echtes Problem ist.
  • ich habe inzwischen Gedächtnisstützen im Quelltext, aber wenn man die Schaltung zu Rate zieht, gibt es noch mehr Probleme ...
1731760850226.png

Das alles ist beim Nano oder Uno extrem viel entspannter ;)
 
Das alles ist beim Nano oder Uno extrem viel entspannter ;)
Ergänzende Links:
Sicher korrekte Details.

Allerdings für diese MiniPipiSimple-Schaltung ausnahmsweise mal egal. :) :-)

Boottime - egal, hab' eh 'ne 5s Verzögerung
Anzahl Ports - nur 1 Ausgang reicht
Speicher - sollte für diesen Sketch ausreichen
Platzbedarf - deutlich besserer Footprint :) :-)
 
Zuletzt bearbeitet:
Und was lernen wir daraus? Wenn man ne Menge Shi(i)t, Mi(s/S)t und Sca(d/t) in italienische Tunnel packt ;) , dann kann am Ende doch etwas richtig Tolles dabei herauskommen. Echt schön, euch beiden dabei "zusehen" zu können und besonders auch Robbi beim "Spielen" zu erleben.

Das einzige, was noch fehlt: Ein Video davon, wie Robbi im italienischen Tunnel mit beschlagenen Spiegeln fährt, sein Gerät einschaltet und sich der Nebel lichtet. Erinnert mich grad ein wenig an James Bonds Aston Martin mit den ganzen Kippschaltern am Amaturenbrett :D .

Die Heckscheibenheizung läuft im Hintergrund getaktet weiter, obwohl die Anzeige dafür im Armaturenbrett abgeschaltet wurde. :) :-)
Interessant. Das heißt, BMW schaltet nur nach einiger Zeit die LED ab, die Heizung heizt aber noch weiter, bis... man noch einmal auf den eigentlich deaktivierten Taster drückt? Oder schaltet das dann einfach nur die LED wieder ein und man muss dann noch einmal drücken? Oder bleibt die Heckscheibenheizung bis zum nächten Neustart unausschaltbar an?
Wundert mich, dass man nur die LED ausschaltet. Zumindest beim E46 stand in der Anleitung, dass die Heckscheibe automatisch ausgeschaltet wird nach einiger Zeit (was ja aber auch nichts hier heißen muss).
 
Die Story mit der Heckscheibenheizung habe ich aus Zeitmangel nicht bis zum Ende ausgetestet.

Entweder
  • gibt es eine 2. Zeitspanne, nach der sich das System endgültig abschaltet
  • oder es gibt eine weitere Temperaturgrenze oberhalb von 10°, bei der diese Taktung nicht mehr stattfindet
  • oder es läuft bis zum Abstellen des Fahrzeugs so weiter

Wenn die Heizung inkognito im Hintergrund weiter taktet, leuchtet die Konsolen- LED nicht. Dann kann man aber über deren Taster die Heizung erneut einschalten und sie funktioniert erst mal wieder im langen Zyklus. Dabei kann man sie natürlich auch wieder ausschalten.
 
Zuletzt bearbeitet:
Die Story mit der Heckscheibenheizung habe ich aus Zeitmangel nicht ausgetestet...
... aber heute doch noch mal bis zum "Ende" durchgespielt.

Interessant. Das heißt, BMW schaltet nur nach einiger Zeit die LED ab, die Heizung heizt aber noch weiter, bis... man noch einmal auf den eigentlich deaktivierten Taster drückt? Oder schaltet das dann einfach nur die LED wieder ein und man muss dann noch einmal drücken? Oder bleibt die Heckscheibenheizung bis zum nächsten Neustart unausschaltbar an?
Der 80/40s-Takt läuft im Hintergrund offensichtlich unbegrenzt weiter, bis das Fahrzeug abgestellt/ausgeschaltet wird.

Meine Spiegelkontroll-LED blinkt dann munter temperaturabhängig weiter im LIN-Modul Zyklus, mein Arduino wird parallel alle 80s erneut durch den HSHzg-Takt eingeschaltet und überlagert die LIN-Heizung mit seiner abfallenden Heizkurve für die folgenden 35 Sekunden.

Dann kommt der "Dunkeltakt" der Heckscheibenheizung und entzieht meinem Arduino die Stromversorgung.


Drückt man nun in dieser Dunkelphase der Heckscheibenheizungstaster-LED (HSHzg-LED) erneut auf den Heckscheibenheizungstaster (was für ein Wort :D), dann startet die HS-Heizung ihren Standard-Zyklus mit gelber Kontrollleuchte.


Klingt kompliziert, stellt aber im nachrichtentechnischen Sinne lediglich eine Überlagerung mehrere unterschiedlicher Frequenzen mit gelegentlicher Schwebung dar. :D :D

Ups, das war das Wort zum Sonntag.
 
Zuletzt bearbeitet:
Danke fürs weiter testen!
Drückt man nun in dieser Dunkelphase der Heckscheibenheizungstaster-LED (HSHzg-LED) erneut auf den Heckscheibenheizungstaster (was für ein Wort :D), dann startet die HS-Heizung ihren Standard-Zyklus mit gelber Kontrollleuchte.
Ok, ist eigentlich auch eine sehr sinnige Lösung. Am Anfang gibt die Heizung Vollgas und "entschlägt" (oder was ist das Gegenteil von Beschlagen?) die Scheibe mit maximaler Wärme. Nach einigen Minuten ist die Scheibe frei und muss nur noch vor Beschlagen geschützt werden, was deutlich weniger Energie notwendig macht. Es ist aber unwahrscheinlich, dass sich das Wetter so stark bessert während einer Fahrt, dass ein Beschlagfreihalten überhaupt nicht mehr nötig ist. Also lässt man sie geringergetaktet weiterlaufen. Und dann "lügt" man ein wenig, ähnlich wie mit der stabilisierten Kühlwassertemperatur, um den Fahrer nicht unnötig zu beunruhigen, ws passieren würde, wenn die Lampe die Farbe wechselte oder im Takt von selbst anginge.
Der Mehrstromverbrauch ist vermutlich auch, gedade bei der Taktung, zu vernachlässigen. Allein: man sollte bei schwacher Batterie nicht nur testweise die Heckscheibenheizung einschalten, sonst läuft sie versteckt dauerhaft mit. Oder kann man sie ausschalten, wenn man den HSHzg-Taster drückt, während die HSHzg-LED leuchtet?
 
...bei schwacher Batterie nicht nur testweise die Heckscheibenheizung einschalten, sonst läuft sie versteckt dauerhaft mit.
Dieser Inkognito-Effekt startet ja erst nach 13 oder 26 Minuten (Zeit ist noch unklar, beide beobachtet).

Ausschalten kannst Du die HSHzg per Tastendruck immer, wenn die gelbe LED leuchtet.
 
Den unteren Pfeil zurück verstehe ich nicht.
Du meinst den mit "Taster/LED ein"? Im Erhaltungsmodus ist die LED ja aus. Das heißt, ganz egal, ob er gerade heizt oder nicht, wenn man dann den Taster drückt, geht die LED an und die Heizung geht wieder in den 13-Minuten-Volllastheizen-Zustand ("Ein"). Es wird also der gleiche Zielzustand erreicht, als wenn man im (kompletten) Aus-Zustand ist (Pfeil von oben über links nach unten). Dieses "egal, ob die Heizung gerade heizt oder nicht, wenn der Nutzer im Erhaltungsmodus die Taste drückt, wird in ein Ein-Zustand (links unten) gewechselt, drückt der Pfeil aus, der vom Oberzustand ("Erhaltung") zum Ein-Zustand (links unten) geht.

Ist man im Ein-Zustand (unten links), können zwei Sachen passieren: Nutzer drückt die Taste, dann geht es in den Aus-Zustand (oben). Oder es laufen die 13 Minuten ab, dann geht er in den Incognito-Modus ("Erhaltung") und die Heizung ist aus. Vergehen 40 Sekunden, so wechselt man in den oberen rechten Zustand (Erhaltung-Ein). Drückt hingegen der Nutzer eine Taste, so geht man in den Ein-Zustand (links unten).

Ungefähr klar und stimmt das mit dem tatsächlichen Verhalten überein?
 
Ich habs's nochmal "verschärft":
  • Taster schaltet EIN, wenn die gelbe LED aus ist, auch im Inkognito-Modus
  • Taster schaltet AUS, nur wenn die gelbe LED an ist
:) Genau das steckt im Zustandsdiagramm oben:
Es gibt drei Übergänge, die zum Einschalten (links unten) führen: Wenn vorher aus war (links oben) und wenn vorher die LED aus war, er aber im ein- oder Auszustand im Inkognitomodus war. Die beiden letzten Transitionen werden zusammengefasst mit einem Pfeil, der aus dem übergeordneten Inkognito/Erhaltung-Zustand herausgeht.

Aus dem Ein-Zustand (links unten) gibt es nur einen Weg mit dem Taster raus: In den Aus-Zustand (oben links).

Vielleicht verwirrt es etwas, dass es im Diagramm zwei Ein-Zustände und zwei Aus-Zustände gibt. Aber tatsächlich gibt es ja insgesamt 4 Zustände: Ein (LED an), Aus (LED aus), Ein (Incognito, LED-aus) und Aus (Auto-An-nach-40-Sekunden, LED-aus).

Das vor dem Schrägstrich an den jeweiligen Übergängen ist der Auslöser für den Übergang, das nach dem Schrägstrich ist der Effekt (hier: LED an oder aus).
 
... um die Begeisterung für diese Tinys ein wenig einzufangen:
  • Aufgrund der Doppelbelegung quasi aller Ports für USB (Programmierung ...) und "general purpose" (in der Applikation) gibt es massenhaft "Fallstricke" in der Nutzung. Ich habe schon viele davon benutzt, aber immer etliches an Zeit vorab darauf verwenden müssen, vorab auszutüfteln, wie ich die Ports belege, damit es am Ende auch wirklich ohne "Special Effects" funktioniert :rolleyes: .
  • manche haben einen funktionsfähigen Reset, manche nicht
  • lästig in vielen Situationen ist die recht lange Startup-Zeit mancher Derivate, nur "getopped" von manchen Arduino "pro Mini". Es ist halt zuweilen sehr unschön, wenn die CPU für hunderte von Millisekunden nach Power-On im Bootloader wartet ... auch hier muss man oft Sorge tragen, dass die Portbeschaltung für die Applikation während dieser Zeiten keinen Unsinn veranstaltet
  • Die ATTiny 85 CPU hat auch kaum Speicher und Performance, was aber eher selten ein echtes Problem ist.
Das alles ist beim Nano oder Uno extrem viel entspannter ;)
Der in obiger Realisierung verwendete Arduino nano ist nun in vielerlei Hinsicht völlig überdimensioniert und benötigt viel Platz.

Verwendet wird von meiner Lösung tatsächlich nur 1 digitaler IO-Port, das gibt's auch deutlich kleiner:
ATTINY85-20PU DIP-8 IC
Sehr klein, wenige Pins, günstig.
Damit ließe sich die Gehäusegröße im Vergleich zu meiner Lösung auf etwa 30% reduzieren bei weiterhin vorhandener Nutzbarkeit der Arduino Entwicklungsumgebung.
Vermutlich gibt es weitere Tiny CPUs mit ähnlichen Fähigkeiten.
Ein gravierender Vorteil der angebotenen Digispark ATTINY85 ist, daß sie im Auto-Einsatz keinen externen Spannungsregler (bei meiner obigen Lösung die grüne Platine) benötigen!

Das war mir bisher nicht bewusst und vereinfacht den Aufbau eigener Lösungen doch enorm. In meinem Beispiel hier für die Spiegel wie auch im Umfeld meiner Diagnose-Module kann ich wesentlich kompaktere 12V Lösungen bauen, wenn es die Port-Anforderungen zulassen.
1732106027281.png
1732105748031.png

Vermutlich werde ich im kommenden, schneereichen Winter spaßeshalber einen Kompaktaufbau mit diesem Chip für obige Spiegelheizung realisieren. Ich habe mal ein paar Exemplare bestellt... :) :-)

@MiSt's Hinweise sowie weitere zum Thema hier als echte Links:
1731760850226-png.661508

 
Zuletzt bearbeitet:
Meine Meinung zu ein paar der Diskussionspunkte:
  • Wohl aber eine Botschaft (2D5h), in der der Status der Heizung selbst transportiert wird.

CAN_ID_DEZCAN_ID_HEXCAN_ID_NAMEDIAG_ID_DEZDIAG_ID_HEXSG_NAME
7250x2D5Status Heizung Heckscheibe [1]1200x78IHKA

Eine weitere interessante CAN-Quelle:



Einstieg in LIN-Bus Sniffing:

 
Zuletzt bearbeitet:
Wie ich schon mehrfach schrieb ... LIN oder CAN bus zu monitoren ist kein Ding. Wahlweise mit dem Scope, oder "Sniffer"-Tools. An der Stelle ist dann meistens Ende Gelände im I-Net ... :poop:

... denn das Ergebnis ist im ersten Schritt nichts als Rohdaten, also Bits und Bytes (und breitere Datentypen als Combo von Bytes oder gar Teilen davon) mit völlig! unbekannter! Bedeutung :( .

Da kommt dann die "Datenbasis" (sofern man sie hat) ins Spiel, die entweder von Profitools direkt genutzt wird, oder wenigstens in Textform dekodiert, wofür welches Bit oder Byte oder, oder, oder steht. Der Status der Heckscheibenheizung wird in genannter Botschaft z.B. in den Bits 0/1 des Bytes0 transportiert :D . Kann man mit einem Sniffer sogar relativ einfach rausfinden :D durch Ein- und Ausschalten/Beobachten. BTW: interessant ist der dort definierte Status "Überlast", der zu Taktung führt :D - na sowas.

Bei komplexeren Dingen ist man aber ganz! schnell ganz! schön "lost" beim reverse-engineeren :rolleyes:.
 
Vermutlich werde ich im kommenden, schneereichen Winter spaßeshalber einen Kompaktaufbau mit diesem Chip für obige Spiegelheizung realisieren.
Ich habe mal ein paar Exemplare bestellt... :) :-)
Die Tinys aus Fernost sind bereits angekommen. :1angelz: Das ging überraschend schnell. :thumbsup:

Bin gespannt, ob die schon irgendwas onBoard haben oder ob ich denen erst mal einen Bootlader verpassen muss.
 
Nö, kein plug'n play. Die müssen erst mal angelernt und mit Firmware/Bootlader versehen werden.
Dazu bin ich heute erst gekommen:

20250213_221639_cpr.jpg

Oben rechts der kleine ATTiny85, links unten der Programmieradapter.
Das ist etwas umständlicher als beim bisher verwendeten Arduino nano, dafür benötigt dieser kleine "Kerl" nur etwa 25% der Fläche und kann somit in ein wesentlich kleineres Gehäuse integriert werden.

Aus meiner Sicht ist der größte Vorteil, daß dieser Chip direkt an der Spannungsversorgung des Autos betrieben werden kann und keinen zusätzlichen Spannungsregler benötigt. Damit reduziert sich der Platzbedarf der Spiegelsteuerung auf etwa 1/3.
 
Zuletzt bearbeitet:
Die rote, orangene und grüne Drahtbrücke sind noch von einem anderen Projekt übriggeblieben, oder soll das die Chinesen verwirren ;) ?

Wirklich winzig, das Ding. Wobei es einen da ja schon fast reizen würde, den Chip mit dem Spannungswandler und dem... Diodenarray(?) abzulöten und direkt im Schrumpfschlauch ans Kabel einzulöten ;) . Da ist ja wirklich nicht mehr viel drauf. Faszinierend, was heute so alles geht.

Aus meiner Sicht ist der größte Vorteil, daß dieser Chip direkt an der Spannungsversorgung des Autos betrieben werden kann und keinen zusätzlichen Spannungsregler benötigt. Damit reduziert sich der Platzbedarf der Spiegelsteuerung auf etwa 1/3.
Das ist wirklich spitze!

Wie ist das Programmieren nun in der Praxis? Mit dem Arduino zu vergleichen, oder hast du viel geflucht?
 
Wie ist das Programmieren nun in der Praxis? Mit dem Arduino zu vergleichen, oder hast du viel geflucht?
Der Code lässt sich 1:1 übertragen, er muss nur gegen eine andere Codebasis compiliert werden. Lediglich die logische Portnummer für den Anschluss des Spiegelssignals (Pin 2 statt 6) muss angepast werden.
 
Zuletzt bearbeitet:
Zurück
Oben Unten