Forum: Mikrocontroller und Digitale Elektronik Ein-Kabel Kommunikaton - Signal unklar


von Mister M. (user20233)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe da leider eine "dumme" Frage.

Ich habe ein Ladegerät und einen Akku. Das Ladegerät "spricht" via einer 
"1-Draht" Verbindung mit dem Akku um festzustellen wie es dem Akku geht. 
Jetzt wollte ich schauen was die genau sprechen und verstehe das 
Protokoll nicht so ganz.

Fakt ist, das Ladegerät sendet einen TTL Pegel von 5 Volt aus. Wird der 
Akku eingesteckt, wird der Pegel kurz auf 0 gesenkt und der "Master" 
also das Ladegerät beginnt mit dem Senden von Informationen (Bild 
anbei). Jetzt werde ich aber genau nicht schlau aus diesem Header. Es 
sieht nicht aus wie One-Wire noch wie LIN Bus...

Daher die Frage, kann sich das Signal einer erklären? Schon mal gesehen? 
Ich glaube nicht an eine "Eigenentwicklung" daher die Frage, ob das 
jemand kennt oder zumindest eine Idee wie man das decodieren kann?

kleinster Peak = 200 us
Mittlerer Peak = 1,4 ms
großer Peak = 5 ms

Vermutung: großer Peak = Break/Pause
Mittlerer Peak = Adresse ??
kleiner Peak = Break ?

Danke für jede Unterstützung!

von c-hater (Gast)


Lesenswert?

Andreas Z. schrieb:

> Ich glaube nicht an eine "Eigenentwicklung"

Warum nicht?

von Mister M. (user20233)


Lesenswert?

c-hater schrieb:
> Andreas Z. schrieb:
>
>> Ich glaube nicht an eine "Eigenentwicklung"
>
> Warum nicht?

Ich denke das ist viel zu teuer - nur für die Abfrage wie es einer 
Batterie geht. Aber ich weis es natürlich nicht - war nur ne Vermutung.

von c-hater (Gast)


Lesenswert?

Mister M. schrieb:

> Ich denke das ist viel zu teuer

Ach watt, ein simples serielles Protokoll für ein paar Bits oder Bytes 
Payload schreibt jeder gelernte Programmierer in ein paar Minuten im 
Halbschlaf runter.

Was wirklich teuer wäre, ist hingegen: ein Standardprotokoll zu 
verwenden und das dann durch Verschlüsselung gegen Mitlauscher zu 
sichern.

von Mister M. (user20233)


Lesenswert?

c-hater schrieb:
> Mister M. schrieb:
>
>> Ich denke das ist viel zu teuer
>
> Ach watt, ein simples serielles Protokoll für ein paar Bits oder Bytes
> Payload schreibt jeder gelernte Programmierer in ein paar Minuten im
> Halbschlaf runter.
>
> Was wirklich teuer wäre, ist hingegen: ein Standardprotokoll zu
> verwenden und das dann durch Verschlüsselung gegen Mitlauscher zu
> sichern.

Die Frage ist ja eigentlich, welche Ansätze es gibt das Signal zu 
verstehen? Was kann man ggf. ausschließen um die Daten zu verstehen?

von Helge (Gast)


Lesenswert?

low-impuls: start telegramm
danach kommt irgendwas mit entweder kurzem oder langem impuls pro bit 
entsprechend 0 oder 1 (oder andersrum). jedenfalls sieht das nach der 
übertragung von 2 byte aus.

von blabla (Gast)


Lesenswert?

Moin,
das schaut für mich nach einem LIN Bus aus. Vielleicht hilft dir die 
Info.

von Mister M. (user20233)


Angehängte Dateien:

Lesenswert?

blabla schrieb:
> Moin,
> das schaut für mich nach einem LIN Bus aus. Vielleicht hilft dir die
> Info.

Dachte ich auch erst aber normalerweise werden am Anfang die Baud Raten 
ausgetauscht aber wir haben hier nur ein High Signal mit 25 Bits. Das 
passt irgendwie für mich nicht oder ich sehe das komplett falsch.

Anbei ein neues Bild - umgestaltet in Bits in Excel, basierend auf den 
Zeitwerten des kleinsten Signals (200 us).

von Ant Wort (Gast)


Lesenswert?

Interpretation auf den ersten Blick:
- langer Attention Puls
- Wert
- Wert wiederholt als Fehlercheck

1000011: 67  (geraten: 67 -> 6,7 -> Hälfte von 13,4 -> beliebte 
Akkuspannung im Auto)
0111100: 60

Passen die Zahlen irgendwie zur Applikation?

von ACDC (Gast)


Lesenswert?


von Mister M. (user20233)


Angehängte Dateien:

Lesenswert?

Ant Wort schrieb:
> Interpretation auf den ersten Blick:
> - langer Attention Puls
> - Wert
> - Wert wiederholt als Fehlercheck
>
> 1000011: 67  (geraten: 67 -> 6,7 -> Hälfte von 13,4 -> beliebte
> Akkuspannung im Auto)
> 0111100: 60
>
> Passen die Zahlen irgendwie zur Applikation?

Nein, das ist nur die Anfrage des Ladegerätes an den Akku - der Akku hat 
noch nicht geantwortet.

Anbei einmal ein neues Bild mit meiner "Interpretation". Kennt das 
einer? Stimmt das?

Aktuell gehe ich von einer 6-Bit seriellen Übertragung mit einem Start 
und einem Stop Bit aus - sowie jeweils dem langen Warteimpulsen. Der 
ganze Spaß bei 9600 Baud.

von Mister M. (user20233)


Lesenswert?

ACDC schrieb:
> 1 wire Fuel Gauge?
>
> 
https://www.maximintegrated.com/en/products/parametric/search.html?fam=batt_stat&374=1-Wire

Leider kenne ich den Chip nicht - vergossen mit Epoxy ... ist aber ein 
Deutscher Hersteller aus Süddeutschland. Recht bekannt - scheint darauf 
bedacht zu sein Sachen zu bauen die keiner Reparieren kann.

von ACDC (Gast)


Lesenswert?

Mister M. schrieb:
> Leider kenne ich den Chip nicht - vergossen mit Epoxy ... ist aber ein
> Deutscher Hersteller aus Süddeutschland. Recht bekannt - scheint darauf
> bedacht zu sein Sachen zu bauen die keiner Reparieren kann.

Du kannst aber das 1-wire Protokoll von Maxim mit deinem vergleichen.

Ein deutscher Hersteller?
Um welche Summen geht es?
1 mio pro Gerät?
oder Consumer 30€ Gerät?

von Mister M. (user20233)


Lesenswert?

ACDC schrieb:
> Mister M. schrieb:
>> Leider kenne ich den Chip nicht - vergossen mit Epoxy ... ist aber ein
>> Deutscher Hersteller aus Süddeutschland. Recht bekannt - scheint darauf
>> bedacht zu sein Sachen zu bauen die keiner Reparieren kann.
>
> Du kannst aber das 1-wire Protokoll von Maxim mit deinem vergleichen.
>
> Ein deutscher Hersteller?
> Um welche Summen geht es?
> 1 mio pro Gerät?
> oder Consumer 30€ Gerät?

Klassische Consumer Akkus, eigentlich nichts besonderes. Problem ist, 
wenn die Tiefenentladen sind, wird der tiefste Stand gespeichert und an 
das Ladegerät übermittelt - was dann nicht mehr lädt und man den Akku 
entsorgen kann. Das ist auf Dauer sinnfrei und nicht unbedingt gut für 
die Umwelt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mister M. schrieb:
> Problem ist, wenn die Tiefenentladen sind, wird der tiefste Stand
> gespeichert und an das Ladegerät übermittelt - was dann nicht mehr lädt
> und man den Akku entsorgen kann
Ich würde mal probieren herauszufinden, wer was macht. Mit einem 
Widerstand (Wert ausprobieren) in der Leitung kann man erkennen, wer 
wann die Leitung "runterzieht".

Und dann könnte man evtl. einfach einen hoheren Mindestfüllstand 
aufzeichnen und wieder "abspielen".

> an das Ladegerät übermittelt - was dann nicht mehr lädt
> und man den Akku entsorgen kann
Und wenn du es schaffst, das Ladegerät zu aktivieren, lädt der Akku 
dann? Könntest du also einfach die passende Spannung am Akku anlegen?

: Bearbeitet durch Moderator
von Mister M. (user20233)


Lesenswert?

Lothar M. schrieb:
> Mister M. schrieb:
>> Problem ist, wenn die Tiefenentladen sind, wird der tiefste Stand
>> gespeichert und an das Ladegerät übermittelt - was dann nicht mehr lädt
>> und man den Akku entsorgen kann
> Ich würde mal probieren herauszufinden, wer was macht. Mit einem
> Widerstand (Wert ausprobieren) in der Leitung kann man etkennen, wer
> wann die Leitung "runterzieht".
>
> Und dann könnte man evtl. einfach einen hoheren Mindestfüllstand
> aufzichnen und wieder "abspielen".
>
>> an das Ladegerät übermittelt - was dann nicht mehr lädt
>> und man den Akku entsorgen kann
> Und wenn du es schaffst, das Ladegerät zu aktivieten, lädt der Akku
> dann? Könntest du also einfach die passende Spannung am Akku anlegen?

Den "defekten" Akku habe ich bereits wieder voll geladen an einem 
normalen Labornetzteil. D.h. er verfügt über die volle Spannung. Das 
Ladegerät geht aber dennoch nicht an - sondern auf ROT. Lege ich einen 
anderen Akku ein - geht alles. Mein Plan ist, ich will schauen was das 
Ladegerät zwischen dem "ganzen" Akku spricht um dann mit einem 
Microcontroller ESP32 den Spaß zu "replayen".

Nein, ich kann das nicht einfach so stecken das der ganze Akku die 
Signale liefert weil das LAdegerät scheinbar intelligent ist. Es muss 
schon wissen welche Temperatur und Spannung oder was auch immer der Akku 
beim laden hat. Daher möchte ich gerne das Protokoll verstehen um mich 
vernünftig damit unterhalten zu können. So ganz schlau werde ich nicht 
draus - wenn immer nur 3F übertragen wird und 0. So richtige Daten sind 
das nicht.

von Mister M. (user20233)


Lesenswert?

Helge schrieb:
> low-impuls: start telegramm
> danach kommt irgendwas mit entweder kurzem oder langem impuls pro bit
> entsprechend 0 oder 1 (oder andersrum). jedenfalls sieht das nach der
> übertragung von 2 byte aus.

Ich habs noch mal neu erstellt, ich würde sagen Du hast recht. Die 
kurzen Impulse a 200us sind jeweils start/stop und die mittellangen 
Impulse sind dann die eigentlichen Bits, wobei jeder lange Impuls für 1 
Bit steht. Wenn man das so macht, kommt man auf 8 Bits in Summe, also 2x 
1 Byte.

Mal schauen ob das so passt. Warum man das so macht verstehe ich aber 
nicht. Berechnet sich jetzt die Baud Rate nach der Länge der Stop/Start 
Bits oder der eigentlichen Bits?

von Andreas (Gast)


Lesenswert?

Mister M. schrieb:
> ACDC schrieb:
>> 1 wire Fuel Gauge?
>>
>>
> 
https://www.maximintegrated.com/en/products/parametric/search.html?fam=batt_stat&374=1-Wire
>
> Leider kenne ich den Chip nicht - vergossen mit Epoxy ... ist aber ein
> Deutscher Hersteller aus Süddeutschland. Recht bekannt - scheint darauf
> bedacht zu sein Sachen zu bauen die keiner Reparieren kann.

Warum nennst du nicht den Namen des Hersteller? Ich habe z.B. von Bosch 
und VRI einige Unterlagen da

von Achim M. (minifloat)


Angehängte Dateien:

Lesenswert?

Diese Beiträge...
Mister M. schrieb:
> Mal schauen ob das so passt. Warum man das so macht verstehe ich aber
> nicht. Berechnet sich jetzt die Baud Rate nach der Länge der Stop/Start
> Bits oder der eigentlichen Bits?

ACDC schrieb:
> Du kannst aber das 1-wire Protokoll von Maxim mit deinem vergleichen.

... beinhalten bereits alles nötige.

- Die Leitung hat Ruhepegel High
- Ein Low-Puls länger als eine Bitzeit zur Synchronisation
- ein Bit besteht aus einer High-Low-Flanke und einer Low-High-Flanke.
- Der Abstand der Flanken = Länge der Low-Phase bestimmt den Wert des 
Bits.
- Die Bits sind zeitlich an der High-Low-Flanke ausgerichtet

Im Anhang eine Interpretation

sync und lang kurz kurz kurz kurz lang lang lang

* 0x78 (MSB zuerst, lang low = 0)
* 0x87 (MSB zuerst, lang low = 1)
* 0xE1 (LSB zuerst, lang low = 0)
* 0x1E (LSB zuerst, lang low = 1)

mfg mf

: Bearbeitet durch User
von Mister M. (user20233)


Angehängte Dateien:

Lesenswert?

Achim M. schrieb:
> Diese Beiträge...
> Mister M. schrieb:
>> Mal schauen ob das so passt. Warum man das so macht verstehe ich aber
>> nicht. Berechnet sich jetzt die Baud Rate nach der Länge der Stop/Start
>> Bits oder der eigentlichen Bits?
>
> ACDC schrieb:
>> Du kannst aber das 1-wire Protokoll von Maxim mit deinem vergleichen.
>
> ... beinhalten bereits alles nötige.
>
> - Die Leitung hat Ruhepegel High
> - Ein Low-Puls länger als eine Bitzeit zur Synchronisation
> - ein Bit besteht aus einer High-Low-Flanke und einer Low-High-Flanke.
> - Der Abstand der Flanken = Länge der Low-Phase bestimmt den Wert des
> Bits.
> - Die Bits sind zeitlich an der High-Low-Flanke ausgerichtet
>
> Im Anhang eine Interpretation
>
> sync und lang kurz kurz kurz kurz lang lang lang
>
> * 0x78 (MSB zuerst, lang low = 0)
> * 0x87 (MSB zuerst, lang low = 1)
> * 0xE1 (LSB zuerst, lang low = 0)
> * 0x1E (LSB zuerst, lang low = 1)
>
> mfg mf

Ja, "fast" genauso hab ich das auch interpretiert (siehe Screenshot, 
meine Interpretation in Excel). Wie bist Du darauf gekommen wann das LSB 
und MSB zuerst gesendet wird? Ich hätte jetzt gedacht es wird immer erst 
das LSB gesendet in allen Bytes.

Noch mal eine rein technische Frage - wir wird jetzt die Baudrate 
bestimmt? An der Länge der LOW-Pulse oder des eigentlichen Signales?

Hersteller siehe PN.

von Mister M. (user20233)


Lesenswert?


von Achim M. (minifloat)


Lesenswert?

Mister M. schrieb:
> Noch mal eine rein technische Frage - wir wird jetzt die Baudrate
> bestimmt? An der Länge der LOW-Pulse oder des eigentlichen Signales?

Die Baudrate wird bestimmt durch den Abstand High-Low-Flanke zur 
nächsten High-Low-Flanke.

Besser gesagt, jedes Bit bringt seine eigene Synchronisation mit.

Der Lange Sync-Puls ist zur Synchronisation der ganzen Unterhaltung.

Mister M. schrieb:
> Wie bist Du darauf gekommen wann das LSB und MSB zuerst gesendet wird?

Wie bist du drauf gekommen, dass das LSB immer zuerst kommt?

Ich denke, du beißt dich an der Idee, das mit UART zu dekodieren, zu 
sehr fest. Ich sehe keine Startbits und keine Stoppbits. Ich sehe eine 
Flanken-Synchronisation und eine Pulslängen-Kodierung. Nix UART.

mfg mf

von Mister M. (user20233)


Angehängte Dateien:

Lesenswert?

Achim M. schrieb:
> Mister M. schrieb:
>> Noch mal eine rein technische Frage - wir wird jetzt die Baudrate
>> bestimmt? An der Länge der LOW-Pulse oder des eigentlichen Signales?
>
> Die Baudrate wird bestimmt durch den Abstand High-Low-Flanke zur
> nächsten High-Low-Flanke.
>
> Besser gesagt, jedes Bit bringt seine eigene Synchronisation mit.
>
> Der Lange Sync-Puls ist zur Synchronisation der ganzen Unterhaltung.
>
> Mister M. schrieb:
>> Wie bist Du darauf gekommen wann das LSB und MSB zuerst gesendet wird?
>
> Wie bist du drauf gekommen, dass das LSB immer zuerst kommt?
>
> Ich denke, du beißt dich an der Idee, das mit UART zu dekodieren, zu
> sehr fest. Ich sehe keine Startbits und keine Stoppbits. Ich sehe eine
> Flanken-Synchronisation und eine Pulslängen-Kodierung. Nix UART.
>
> mfg mf

Ja also ich komme deshalb auf UART weil ich die Zeiten durchgerechnet 
habe und weil ich das so aufgeschrieben habe das es passt. Das heißt ja 
nicht das ich  richtig liege. Darum frage ich ja nach.

Das von Dir kommentierte Bild hat Bit 1 und dann Bit zwei. Dazwischen 
ist aber ein kleines High und ein kleines Low. Hier hätte ich nach 
Deiner Aussage nur eines von beidem aber nicht beides erwartet. Darum 
hab ich geschlußfolgert, nach dem ersten Bit folgt ein Stop-Bit - ein 
High und dann ein Start-Bit ein Low. Diese "Wechsel" kommen öfters vor. 
Darum habe ich die Signale eben um ein Bit nach links verschoben - siehe 
mein Excel.

Anbei ein weiterer Ausschnitt mit Analog Signal und weiteren wechseln - 
so bezeichne ich die kurzen High-Low-Flanken. Sowie ein weiteres Bild 
mit meinen Fragezeichen. Irgendwie habe ich hier leider noch nicht den 
AHA-Effekt.

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

Mister M. schrieb:
> Irgendwie habe ich hier leider noch nicht den AHA-Effekt.

Jedes Bit besteht aus einer High-Low-Flanke und einer Low-High-Flanke.

Die High-Low-Flanken kommen in festen Abständen.

Die High-Low-Flanken markieren den Anfang eines Bits.

Der Abstand der High-Low-Flanke zur folgenden Low-High-Flanke 
signalisiert den Wert des Bits.

Ist das Kurze Low oder das Lange Low eine logische 1?

Wird das MSB oder das LSB zuerst übermittelt?

Und was ist ein kleines Low?

mfg mf

: Bearbeitet durch User
von Achim M. (minifloat)


Angehängte Dateien:

Lesenswert?

Hier mal mit Trennung der Bits eingezeichnet und kurzem Low = Logisch 1 
...

: Bearbeitet durch User
von Mister M. (user20233)


Lesenswert?

Achim M. schrieb:
> Mister M. schrieb:
>> Irgendwie habe ich hier leider noch nicht den AHA-Effekt.
>
> Jedes Bit besteht aus einer High-Low-Flanke und einer Low-High-Flanke.
>
> Die High-Low-Flanken kommen in festen Abständen.
>
> Die High-Low-Flanken markieren den Anfang eines Bits.
>
> Der Abstand der High-Low-Flanke zur folgenden Low-High-Flanke
> signalisiert den Wert des Bits.
>
> Ist das Kurze Low oder das Lange Low eine logische 1?
>
> Wird das MSB oder das LSB zuerst übermittelt?
>
> Und was ist ein kleines Low?
>
> mfg mf

Das kleine Low kommt scheinbar immer nach einem langen Low. Vielleicht 
weil der Ruhestrom bei High liegt folgt eben ein Low damit wieder die 
High Low flanke kommen kann - quasi als Unterscheidung. "aktuell" würde 
ich das ignorieren. Es sei denn Ihr habt noch eine bessere Idee?!

Generell ein großes Dankeschön für die vielen wertvollen Hinweise!

von Achim M. (minifloat)


Lesenswert?

Mister M. schrieb:
> Das kleine Low kommt scheinbar immer nach einem langen Low

In dem Beispiel hier 
Beitrag "Re: Ein-Kabel Kommunikaton - Signal unklar" war 
das nicht so.

Du hast es immer noch nicht verstanden.
Lies doch Mal was ich schreibe:

* Jedes Bit wird durch eine High-Low-Flanke begonnen.

* Diese High-Low-Flanken kommen offenbar in festen Abständen

* Der Abstand zwischen dieser High-Low-Flanke und der folgenden 
Low-High-Flanke bestimmt den Wert des Bits.

Mister M. schrieb:
> Es sei denn Ihr habt noch eine bessere Idee?!

Wiederholt geäußert.
Du hast die Dekodierung im Post
Beitrag "Re: Ein-Kabel Kommunikaton - Signal unklar" bereits korrekt 
hinbekommen, aber die Bits an falscher Stelle vermutet.

mfg mf

: Bearbeitet durch User
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.