Also ich hätte Interesse an der D-Version. Wichtig dabei wäre dass der Offset am Empfänger nicht sichtbar ist. Bekommst du das hin, dass das Signal auf die Versorgungsspannung aufmoduliert wird?
Für mich wäre die D-Version auch ausreichend für normale Auflieger und für einen Kipper kann man die Leitung zum Fahrregler für den Kippantrieb extra ziehen.
_________________ Grüße aus dem Norden Andreas ************************
bisher war das nicht vorgesehen... ich nehme an, Du denkst dabei an Deinen PKW-Anhänger?
Hmm... kein animiertes Zahnrad-Smiley...
Also ganz ehrlich... das könnte sogar eine richtig gute Idee sein, die Du da eben ins Rollen gebracht hast. Anstelle der IR-Übertragung mit Akku im Slave einfach die Versorgungsspannung samt codierter Daten über eine zweipolige Kupplung übertragen? Liege ich da Richtig?
Mal kurz überlegen... dazu brauche ich ein paar zusätzliche Bauteile auf den PCBs, aber das sollte gehen!
Zum Offset: Der liegt systembedingt bei max. 14,7ms wegen der relativ lahmen IR-Telegramme mit 300µs Bitzeit, also 3333 Bit / Sekunde. Für eine rein elektrische Lösung ist eine höhere Bitrate mit entsprechend geringerer Latenzzeit möglich.
Ja, da liegst du genau richtig . Ich dachte daran, das Signal auf der Senderseite auf einen FET zu geben und damit die Versorgungsspannung zu zerhacken. Empfängerseitig muss dann das zerhackte Signal als externer Interrupt auf den Microcontroller gegeben und danach mittels Diode gleichgerichtet und Tantalkondensator geglättet (ob das für eine Motorlast ausreicht, weiß ich nicht, für Lichtfunktionen reicht das sicher) und als Versorgungsspannung für den Microcontroller und Verbraucher bereitgestellt werden. Eventuell ist es ja möglich das Signal auch zur Versorgungsspannung zu addieren, dann wäre mehr Last möglich.
14,7ms Offset ist denke ich noch im Rahmen, das dürfte nicht groß auffallen. Du hast jetzt alles mit ATMega konstruiert, richtig? Würden sich die Funktionen auch in einen größeren ATTiny drücken lassen (dann eventuell ohne Servo-Funktionen, sondern nur Licht-/Schaltkanäle)? Da wäre die Stromaufnahme noch deutlich geringer.
in den letzten Tagen habe ich mir Mal ein paar Gedanken bezüglich der Energie- und Datenübertragung, aber auch zur Erkennung von Kurzschlüssen an der Kupplung gemacht. Im Rahmen einer kleinen Testschaltung entstanden dabei folgende Hardwareanforderungen:
Master: - 1 PIN mit P-Kanal FET mit Pull-Up Widerstand zur Leistungs- und Datenübertragung. - 1 IO-PIN mit 1 kΩ Widerstand für Low-Power Übertragung und Kurzschlussüberwachung - 1 AN-PIN mit 1 kΩ Widerstand zum Erfassen der Spannung an der Kupplung
Slave: - Schottky-Diode zum Einspeisen der Versorgungsspannung - 1 IO-PIN mit 1kΩ Widerstand für Datenübertragung
Der Schaltplan der Schnittstelle würde damit so aussehen: Kupplung-Aufbau.jpg - Bild entfernt (keine Rechte)
Nebeneffekte dieser Schaltung: 1. Es besteht ist die Möglichkeit, Daten vom Slave zurück zu senden. 2. Mit einer modifizierten Software, IR-LED und einem IR-Empfänger können die Daten auch per IR übertragen werden.
Ein mögliches Problem besteht noch in Verbindung von weißen LEDs und fast leerem Akku im Zugfahrzeug: Durch die Schottky-Diode ist die Spannung im Anhänger nochmals um ca. 0,25V geringer, so dass eine weiße LED am Anhänger bei unter 3.2V Akkuspannung nicht mehr richtig funktionieren wird. Abhilfe: Diese LED kann direkt über den Kupplungsanschluss versorgt werden.
Im nächsten Schritt stand nun etwas CAD-Klickarbeit mit Eagle an. Als Basis diente mein alter Entwurf C, wobei der bisherige Microcontroller durch den Microchip PIC18F25K42-MV* ersetzt wurde. Denn dieser Microcontroller braucht noch etwas weniger Strom als der bisherige PIC18F14K22-MV - und hat 8 PINs mehr. Davon abgesehen hat Microchip nun endlich Function Mapping auch in die PIC18 Serie integriert. Da ich diese Elektroniken zum Steuern des kompletten Fahrzeugs verwende, habe ich sowohl Platinen ohne Motortreiber als auch mit dem Motortreiber A3901 zum Steuern von 2 Motoren erstellt. Eine mir wichtige Randbedingung ist die Ausführung der Schaltungen mit einseitiger Bauteilbestückung. Der Anschluss erfolgt über die Lötpads auf der Oberseite - oder an den 0,6mm kleinen Durchkontaktierungen auf der Rückseite.
Master Elektronik (Zugmaschine)
KFZ-S-Control-2M: 2 Motoren, 17 Pads für LEDs oder Lenkpoti, KEINE Kupplungstreiber! Die Daten vom Empfänger werden per Sum-PPM oder Serial Input erfasst. (Eigentlich für meine eigenen, kupplungslosen Projekte gedacht.) KFZ-S-Control-2M-Web.jpg - Bild entfernt (keine Rechte)
KFZ-S-Master-2M-Web: 2 Motoren, 14 Pads für LEDs oder Lenkpoti, Kupplungstreiber. Die Daten vom Empfänger werden per Sum-PPM oder Serial Input erfasst. (Wird meine Standardelektronik für KFZ mit Kupplung) KFZ-S-Master-2M-Web.jpg - Bild entfernt (keine Rechte)
KFZ-S-Master: KEINE Motoren, 10 Pads für Lichtfunktionen und 3+1 Pads mit Interrupt on Change für Servokanäle. Dies entspricht der hier gewünschten Nachrüstlösung zum Erfassen der Licht- und Servodaten. KFZ-S-Master-1_27-Web.jpg - Bild entfernt (keine Rechte)
Slave Elektronik (Anhänger)
KFZ-XS-Slave: Nur 5 Ausgangs-Pads? Muss wohl für PKW-Anhänger gedacht sein... KFZ-XS-Slave-Web.jpg - Bild entfernt (keine Rechte)
KFZ-S-Slave: Das Gegenstück zum KFZ-S-Master mit 10 normalen und 3+1 Servo-Ausgängen. KFZ-S-Slave-1_27-Web.jpg - Bild entfernt (keine Rechte)
KFZ-S-Slave-2M: 10 LED-Ausgänge und nur 2 Servo-Ausgänge, dafür zwei Motortreiber. Wegen der Stromaufnahme der Motoren sollte hier ein drittes Kabel von der Zugmaschine oder ein Akku im Anhänger** eingeplant werden. KFZ-S-Slave-2M-1_27-Web.jpg - Bild entfernt (keine Rechte)
Falls einer von Euch sich die Leiterplatten zum Maß nehmen auf Papier ausdrucken möchte, findet sich ein Übersichtsbild im Spoiler.
Dieses JPG muss mit 600dpi ausgedruckt werden: Mikromodellplatinen-05-2019-web.jpg - Bild entfernt (keine Rechte)
Soweit erstmal zum aktuellen Projektstand. Für mich steht nun zunächst etwas Wartezeit an - bis meine Studierenden ihre Leiterplatten fertig layoutet haben - und die PCBs gefertigt und geliefert sind. Nun, die Zeit werde ich nutzen um schon Mal die bestehende Software auf die neue Hardwareplattform anzupassen und die Übertragungsroutinen hinzuzufügen.
Viele Grüße Michael
* @Selbstfeiermeister: Ja, ich bevorzuge die 8 Bit PIC Serie von Microchip. Die Stromaufnahme von ATtiny und PIC18 liegt auf ähnlichem Niveau.
** Wenn im Anhänger ein zweiter Akku verbaut wird, so muss die Schottky-Diode entfernt werden. Sonst lädt die Zugmaschine noch den Anhänger-Akku... ohne LiPo-Lader!
Na, da warst du ja schon richtig fleißig und nutzt nebenbei noch die dir zur Verfügung stehenden Ressourcen an Studenten Mir persönlich ist es Wurst, ob da nun ein PIC oder ein ATtiny werkelt. Ich habe bisher lieber die AVRs genutzt, weil es (damals, als ich mit Mikrocontrollern angefangen habe) dafür ordentliche C/C++-Compiler gab (Assembler nutze ich eigentlich nur für zeitkritische Routinen, für den Rest bin ich einfach zu faul) und die AVRs im Vergleich zu PICs die Takte besser nutzen (die meisten Instruktionen benötigen beim AVR nur 1 Takt). Die Platinenabmessungen sehen ja schon sehr gut aus. Aber, lassen sich die "L"-Formen denn günstig produzieren? Vor einigen Jahren war das noch so, dass alles, was nicht rechteckig war, gleich mit Extrakosten beaufschlagt wurde. Wenn das immernoch so sein sollte, könnte man die leeren Ecken ja noch selbst heraustrennen. Wie dick sind die PICs auf den KFZ-XS-Slave? Wie dünn können denn die Platinen werden? Geht das noch unter 0,5mm, also 0,3mm (zumindest bei den KFZ-XS-Slave, da sind die Überstände um den Prozessor nicht so groß)? Dann lassen sich die Platinen auch bei offenen Anhängern besser verstecken. Bin gespannt, wie die ersten Testläufe aussehen. Wenn du noch Versuchskaninchen benötigst, stelle ich mich gern zur Verfügung
Das sieht richtig gut aus. Vielleicht ersetzt das sogar meine Varianten. Wie wird das Protokoll aussehen? Wie wird man die Platinen programmieren können?
irgendwie kommt mir das mit den C-Compilern bekannt vor... als ich mit Microcontrollern angefangen hatte machte die Steuerung der Vereins-Modellbahnanlage richtig schön Ärger. Zickende Weichenantriebe, keine Servo-Decoder... daher hatte ich mir einen ESU LokSound 2 Decoder etwas näher angesehen... PIC16F876, was ist das denn? Ah ja, programmierbar... Assembler... C war für mich damals nicht relevant, und am Ende lief die Modellbahn mit Kommunikation übers LocoNet zu meiner vollsten Zufriedenheit. Zumindest bis meine Vereinskollegen eine Märklin CS2 als Fahrgerät kauften. Danach kam wieder etwas Entwicklungsarbeit mit dem PIC18F46K80, CAN-Bus und C-Compilern.
Dicke der Platinen: Der für die Microcontroller-Vorlesung zuständige Professor wollte, dass wir bei JLCPCB bestellen. Aber dort sind 0,4mm die geringste Dicke. Gestern habe ich mit PCBWay einen anderen Anbieter gefunden, der auch 0,2mm PCBs im Angebot hat. Leider etwas teurer, aber 0,2mm weniger... das ist bei manchen Projekten schon gut.
Die Microcontroller im UQFN-28 und UDFN-8 Gehäuse sind laut Datenblatt 0,5mm Dick... Die 0402er Kondensatoren... ebenfalls 0,5mm... Also, mit +0,1mm Toleranz wäre der KFZ-XS-Slave ungefähr 0,8mm Dick. Die Varianten mit Motorcontroller werden dagegen mit ca. 1mm etwas dicker werden, denn der A3901 ist 0,75mm hoch. Ach ja, die eigenen Lötstellen kommen evtl. auch noch dazu!
Spaß beiseite, wenn Du schon fragst können wir auch gleich Nägel mit Köpfen machen: Für die Datenübertragung hatte ich vor, 20µs als Basiszeit anzusetzen. Zum Codieren der Logikzustände würden dann vielfache dieser Zeit verwendet, für eine Logische 1 also z.B. 2 x 20µs = 40µs. Zur Trennung würde zum Start jedes Bits für max. 5µs ein 0-Pegel ausgegeben... ohje... ein Bild, bitte!
Also, wegen der Energieübertragung steht an der Kupplung ständig ein High-Pegel an, der zur Codierung in festen Zeitintervallen für 5µs vom Master auf Low gezogen wird. Zum Abgrenzen der Nachrichten würde ich 4 Zustände verwenden:
Eine Nachricht würde dann aus einem Startzeichen, 4 Bits als Identifier, n Bits Daten, 1 oder 2 Parity-Bits und dem Endzeichen bestehen. Für den Servokanal 1 also beispielsweise:
S-0001-1234567890-00-E (16 Bit Nachrichtenlänge.)
An Nachrichten würden mir momentan nur folgende einfallen: 0000: Lichtzustände (Blinker, Bremslicht...) - Sowohl 2 als auch 10 Bit Daten 0001: Servokanal 1 0010: Servokanal 2 0011: Servokanal 3 0100: Servokanal 4 ... 1111: Anfrage vom Master an Slave.
Ins Detail würde ich nach Abschluss der Tests gehen.
Programmieren der Platinen: Ursprünglich ging es in diesem Thread um einen Baustein, "der auf der Zugmaschine die interessanten Signale abgreift" und diese dann gebündelt an den Anhänger weiter leitet. Programmiermöglichkeiten... wären für diese Aufgabe erstmal nicht erforderlich.
Andererseits wird es erst damit wirklich interessant, denn auch ich habe meistens wenig Lust jedes Drähtchen an ein bestimmtes Lötpad anzulöten. Stattdessen kommen einfach die LEDs nach Funktion (z.B. Blinker Links) gebündelt an ein Lötpad, und danach wird dieser PIN per Software dem linken Blinker zugewiesen. Das Ganze läuft derzeit über eine im RAM hinterlegte Tabelle ab, aber statt die Daten aus dem EEPROM zu laden, sind diese fest im Programmcode hinterlegt und werden beim Start ins RAM geladen. Was hier fehlt sind zwei Dinge: 1. Schnittstelle zur Datenübertragung. 2. Ein Grund das Thema anzugehen.
Bis hier eine Lösung gefunden wurde kann ich nur anbieten, die Controller auf Wunsch mit einer passenden Software zu programmieren. Äh, ja... das klingt nach Arbeit...
Alternativ kann man die Platinen natürlich auch mit einem passenden Programmer / Debugger umprogrammieren. Wie ich eben sehe unterstützt der PICkit 4 neben PICs auch AVR-Microcontroller?
Jetzt bin ich Mal auf Eure Anmerkungen und Verbesserungsvorschläge gespannt.
Nein, das erwarte ich nicht. Das hatte ich damals im Studium (Telekommunikationstechnik) auch schon zur Genüge durchgekaut
Ein Programmieren der Platinen erachte ich nur soweit als nötig, als dass für die Servos eine Reverse-Funktion als Option bereit steht, falls mal eine Servofunktion der Zugmaschine dupliziert werden soll. Da wäre dann die Ausschlagrichtung relevant. Andernfalls müsste man das Servo (Poti und Motor) in der Polung vertauschen. Für simple Schaltfunktionen finde ich es fast einfacher, die Drähte auf fixe Pads zu legen, als nachher alles in der Programmierung zu tauschen. Schaltfunktionen werden ja nur 1zu1 durchgereicht. Da ist es ja egal, auf welchem Ausgangs-Pin der Blinker sitzt, er muss nur auf dem Master am entsprechenden Eingang aufgelegt werden. Wenn die zugehörigen Ein-/Ausgänge bekannt (durchnummeriert) sind, ist da ja schnell richtig angelötet. Interessant wäre vielleicht noch die Option, z.B. für den XS-Slave an einem der Ausgänge eine Schalt- oder eine Servo-Funktion zu wählen. Das wäre schon durch einfaches Umschalten vom z.B. dem 5. Schaltkanal auf den ersten Servokanal am Master möglich. Dann muss noch nicht mal was am Master umgestellt werden.
Zur Initialisierung der Programmierung könnte man ja einen oder mehrere bestimmte/n Ausgänge an der Empfängerplatine vor dem Einschalten an Ground oder VCC legen und als Eingänge abfragen (aber nur so kurz, dass die Verzögerung beim Einschalten unbemerkt bleibt, falls im regulären Betrieb der Kontakt zur Zugmaschine und damit zur Versorgungsspannung kurz abreißen sollte). Im Programmiermodus könnte man dann nach einer festgelegten Reihenfolge die Funktionen auf die Ausgänge verteilen, in dem man die Ausgänge alternierend als Eingänge abfragt und mit einer Drahtbrücke nach Ground oder VCC die gerade am Ausgang angebotene Funktion (Schalt- oder Servoausgang, Servo normal oder reverse) an einem separaten PIN bestätigt.
Da steckt bestimmt bis jetzt schon viel Arbeit drin, Hut ab.
Macht es bitte nicht zu kompliziert für uns Normalanwender. Eine Lichtübertragung in den Anhänger und vielleicht noch ein Motorkanal für den Kippantrieb reicht schon.
Trotzdem schon mal danke für die viele Arbeit, die ihr da reinsteckt.
_________________ Grüße aus dem Norden Andreas ************************
nur keine Sorge wegen der komplizierten Programmier-Überlegungen von Sebastian - die Bausteine werden mit einer einfachen 1:1 Übertragung als Basis-Software programmiert. Die individuelle Programmierung ist nur für jene Anwender gedacht, denen die Standardbelegung nicht weit genug geht.
Wobei mir Sebastians Überlegungen zum Programmierablauf etwas zu kompliziert sind - und gleichzeitig nicht weit genug gehen .
Aber zum Glück ist mit der Kupplungs-Schnittstelle ja auch eine mögliche Programmier-Schnittstelle schon mit eingebaut. Wie wäre es denn so: Ich kombiniere einen FT232RL USB-Seriell-Wandler mit einem Microcontroller, der dann die vom PC kommenden Kommandos über das Kupplungsinterface an die KFZ-Elektroniken weiter leitet.
Damit ließe sich die Programmierung entweder mit einem Terminalprogramm (z.B. HTerm) mittels Textkommandos erledigen, oder viel komfortabler mit einer PC-Software. Und ganz nebenbei könnten die KFZ-Elektroniken auch die aktuelle Programmierung zurückgeben. Nun... außer beim XS-Slave... hier wird der Reset-PIN als Eingang verwendet, und da dieser PIN keine Ausgangstreiber hat, kann der XS-Slave auch seine Programmierung nicht senden.
Bleibt nur die Frage nach der Versorgungsspannung... USB hat ja ~5V, aber unsere lieben kleinen Modelle nur max. 4,2V. Soll ich noch einen Spannungsregler verplanen?
Ich bin beim stöbern auf euern Beitrag gestoßen. Bei mir steht auch eine, "Licht"-Übertragung an. Ich hoffe dass ihr eine brauchbare zuverlässige Lösung findet. Den Anhänger irgendwo abstellen und das Licht geht automatisch aus und beim ankoppeln wieder an. Das wäre SUPER!
ich hatte mir auch schon vor einiger Zeit Gedanken über die Übertragung von Daten und Strom über zwei Drähte gemacht, um damit eine einfachere Kupplung zu ermöglichen. Leider bin ich kein Elektroniker und mir fehlt nach wie vor die Bastelzeit. Aber wie sieht es, um den Spannungsverlust zu umgehen, mit Step-Up-Boostern aus? Also, angeschlossen am Slave, nachdem das Datensignal abgegriffen wurde.
Hallo alle! Wenn ich das Forum studiere, entdecke ich viel neues. Und jetzt habe ich diese Technologie getroffen. Wo kann ich die verbindungsdokumentation sehen? Detaillierte Beispiele? Welche Hersteller gibt es auf dem Markt? Wo ist es billiger? :)