Forum: Mikrocontroller und Digitale Elektronik ELV USB-I2C Interface und H Therm


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peer (Gast)


Lesenswert?

Hallo
habe diesen Bausatz von ELV fertig aufgebaut zu liegen. Wollte mal damit 
was am I2C Bus machen. Leider ist mir die Nutzung ein Rätzel dazu. Es 
soll mit dem Programm Htrem laufen. Siftware installieren und so. Hat 
auch alles geklappt, nur ist die Nutzung bzw. Befehlsübergabe pder 
Empfang total unklar.
Hat jemand damit Erfahrung gemacht oder gibt es Beispiele dazu oder ein 
bessees Programm dazu?
LG Peer

von Jim M. (turboj)


Lesenswert?

Was ist im Handbuch Kapitel 3.1ff unklar?
Haste das überhaupt mal gelesen?

von Egonwalter M. (heiner1234)


Lesenswert?

@Peer

Was ist das denn das?

Wenn Du nicht fähig bist
- einen korrekten und verwendbaren link zu posten
- Deine Anfrage ohne Rechtsschreibfehler zu posten (=> lies erst mal, 
was Du zu posten gedenkst und korrigier die Fehler)
- anhand von Beispielen Dein Problem zu schildern

wirst Du auch keine brauchbare Hilfe erhalten.

Glaskugel gucken kann jeder, aber es kommt nichts verwendbares dabei 
heraus

: Bearbeitet durch User
von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Das ist eigentlich relativ simpel. Via UART sendest du Kommandos an die 
ELV Box und diese uebersetzt das dann auf I2C. Ich finde leider gerade 
kein Beispiel, das ist aber wirklich super simpel und du kannst jedes 
UART Terminal Programm nehmen (ich hab unter Linux z.B. Minicom 
verwendet oder Python Skripte geschrieben wenn ich eine feste 
Befehlsfolge absetzen wollte).

Am besten du wirfst mal ein Blick ins Handbuch: 
https://files.elv.com/Assets/Produkte/8/841/84123/Downloads/84123_usb_i2c_handbuch_v1_7.pdf

Auf Seite 12 in Kapitel 4.1.1 sind Beispiele. Z.B. sendest du
1
S 40 FF P

Das S erzeugt die Start Condition, gefolgt von der I2C Device Adresse 
0x40 (da Bit 0 von 0x40 0 ist, ist es ein I2C Write Request). Da Write 
Request werden die Daten 0xFF gesendet und mit einer Stop Condition 
beendet.

Falls du nicht sicher bist, ob die UART Verbindung zur Box richtig 
konfiguriert ist, einfach mal ein ? senden. Wenn das schon nicht klappt, 
dann ist irgendwas falsch konfiguriert.

von OS (Gast)


Angehängte Dateien:

Lesenswert?

Peer schrieb:
> Hat jemand damit Erfahrung gemacht oder gibt es Beispiele dazu oder ein
> bessees Programm dazu?

Ein Beispiel von mir um den PCF8574 zu testen.
Wenn Du auf Sequence Overview gehst kannst das hts File öffnen.
Durch klicken auf einen Eintrag wird der Befehl ausgeführt.
Das hts File kannst mit einem Editor bearbeiten.

Ein besseres Programm dafür, ich habe noch keines gefunden, brauche ich 
auch nicht, sonst eventl. selber eins schreiben, oder die Scripte 
ausführen.

von Stefan ⛄ F. (stefanus)


Lesenswert?

OS schrieb:
> Ein Beispiel von mir um den PCF8574 zu testen.

Das kann keiner lesen.

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Stefanus F. schrieb:
> OS schrieb:
>> Ein Beispiel von mir um den PCF8574 zu testen.
>
> Das kann keiner lesen.

Die Eingangsfrage bezog sich auf Hterm.
Dieses Programm kann diese Datei möglicherweise lesen.
Menschenlesbar scheint sie auch, nach kurzem Drüberschauen, plausibel.

von OS (Gast)


Lesenswert?

Stefanus F. schrieb:
> Das kann keiner lesen.

Was kannst Du nicht lesen?
Die hts Datei kannst mit eine Texteditor öffnen, wo ist das Problem?

von Peer (Gast)


Lesenswert?

Gut, so weit klar. Habe mich da wohl nicht präzise ausgedrückt. Habe mir 
die Anleitung noch mal genauer angesehen. Die Ein- bzw. Ausgabe erfolgt 
in HEX. Dabei werden ja nur die Werte dargestellt die übertragen werden. 
Kenne das von anderen Teilen als Sniffer.
Gibt es ein Programm um z.B. über das Interfache von ELV mir bestimmte 
Abläufe oder Daten anzeigen lassen kann ohne das es in HEX erfolgt oder 
durch einfaches anklicken Ausgänge schalten kann. Möglichkeit über LAN 
oder WLAN. Es gibt einige ICs die so was machen, Programme die dann 
alles auf dem Handy anzeigen und damit z.B. eine Heizungssteuerung oder 
Lichtsteuerung machen. Das Problem bei mir sind dann die APP und die 
Einbindung in den Bus, z.B. ESP32 - zu kompliziert?
LG Peer

von OS (Gast)


Lesenswert?

Peer schrieb:
> Programme die dann
> alles auf dem Handy anzeigen und damit z.B. eine Heizungssteuerung oder
> Lichtsteuerung machen. Das Problem bei mir sind dann die APP und die
> Einbindung in den Bus, z.B. ESP32 - zu kompliziert?

Mal eine Frage, was wolltest Du mit den USB/I2C Wandler machen, der 
Wandler ist in erster Linie dazu da um mit einem I2C Bauteil zu 
kommunizieren.
Deshalb das einfache Beispiel mit den 8Bit I/O PCF8574.
Womit willst Du den ELV Wandler verbinden, welches I2C Bauteil?

Das was Du hier beschreibst, mit LAN, WLAN, Heizungssteuerung, APP usw. 
das hat alles nichts damit zu tun.

Dafür wäre das hier eher geeignet.
https://www.pollin.de/p/bausatz-avr-net-io-810058
Gibt es auch als Fertiggerät.
Da kannst Du mit LAN dran gehen, mit dem Browser die Ein/Ausgänge 
bedienen.

von Stefan ⛄ F. (stefanus)


Lesenswert?

OS schrieb:
>> Das kann keiner lesen.
> Was kannst Du nicht lesen?

Ich meinte das Bild. Ich konnte nur die zu stark verkleinerte Voransicht 
sehen. Jetzt geht der Download/PDF Ansicht aber.

: Bearbeitet durch User
von Peer (Gast)


Lesenswert?

Ich kenne das Teil und habe es auch aufgebaut. Technisch für mich ist 
das Steinkohle und voller Fehler, z.B. falsche Aufschrift, Netzteil wird 
heiss, RS232 ??? wozu noch im Zeitalter von USB.
Auch ein PCF8574 kann man per Handy schalten durch einfaches antippen 
auf dem Display.

von Stefan ⛄ F. (stefanus)


Lesenswert?

Schau Dir mal das ESPEasy Projekt an. Da wird es ESP8266 Modul 
verwendet, um  diverse gängige I/O Schnittstellen und Sensoren über ein 
WLAN Web Interface anzusteuern.

https://www.letscontrolit.com/wiki/index.php/ESPEasy

von Peer (Gast)


Lesenswert?

Sieht interessant, mal genauer anschauen. Danke für die Info

von Max der zweite (Gast)


Lesenswert?

Peer schrieb:
> Auch ein PCF8574 kann man per Handy schalten durch einfaches antippen
> auf dem Display.

Interessant, kannst Du das bitte mal genauer beschreiben, welche Hard 
und Software (App) verwendest Du dafür.
Mich würde die Verbindung Handy PCF8574 interessieren.

von micha (Gast)


Lesenswert?

Hallo

Ich habe mir ebenfalls das USB 2 I2C Interface von ELV geholt.

Leider Funktioniert es überhaupt nicht wie beschrieben.

Wenn ich z.B auf Adr. 0x27 schreiben will, dann bekomme ich kein 
Acknowledge

Ich habe mir dann eine Arduino als I2C Monitor gebastelt, der auf Adr. 
0x27 hört und es kommt ebenfalls nichts an. Dann habe ich mir alles mit 
dem Oszi angeschaut und festgestellt, dass die Bits der Zieladresse um 1 
Bit nach links verschoben sind. Also schreibe ich dann z.B  S4E AA p 
dann regiert der Slave mit Adr. 0x27 und AA wird angezeigt. Das gleiche 
habe ich auch mit dem IO Expander Chip.

Na ja, jetzt könnte man sagen, mit dem Adressproblem kann man leben  
Jedoch kann ich nur ein Byte korrekt übertragen. Beim Kommando S4E AA FF 
AA FF p kommt nur das letze Byte korrekt an.

Hat jemand die gleiche Erfahrung gemacht? Hat jemand eine Lösung

Grüße Micha

von Holger (Gast)


Lesenswert?

micha schrieb:
> Ich habe mir dann eine Arduino als I2C Monitor gebastelt, der auf Adr.
> 0x27 hört und es kommt ebenfalls nichts an. Dann habe ich mir alles mit
> dem Oszi angeschaut und festgestellt, dass die Bits der Zieladresse um 1
> Bit nach links verschoben sind. Also schreibe ich dann z.B  S4E AA p
> dann regiert der Slave mit Adr. 0x27 und AA wird angezeigt. Das gleiche
> habe ich auch mit dem IO Expander Chip.

Dann schau dir an wie die Adressierung von I2C definiert ist. Das 
niederwertigste Bit-0 ist das Read/Write Bit, und die Adresse steckt in 
Bit-1 bis Bit-7. Also kein Problem, sondern so definiert. Wenn 0x27 
adressiert werden soll, dann muss 0x4E herausgeschickt werden.

> Na ja, jetzt könnte man sagen, mit dem Adressproblem kann man leben 
> Jedoch kann ich nur ein Byte korrekt übertragen. Beim Kommando S4E AA FF
> AA FF p kommt nur das letze Byte korrekt an.

Mit dem Oszi angeschaut?

von Patrick C. (pcrom)


Lesenswert?

micha schrieb:
> Na ja, jetzt könnte man sagen, mit dem Adressproblem kann man leben 
> Jedoch kann ich nur ein Byte korrekt übertragen. Beim Kommando S4E AA FF
> AA FF p kommt nur das letze Byte korrekt an.

1) Es gibt 2 definitions um die I2C adresse an zu geben ; 7-bit oder 
8-bit. 50% der Komponenten-Datasheets und Tools der ich benutzt habe 
benutzt 7-bits und die andere 50% benutzt 8-bits. Das format "S 40 FF p" 
habe ich bei mehrere tools geseheb, zB I2CChip und Cypress Bridge 
Control Panel. Bei diesem format wird immer 8-bit adressiert. Mit ELV 
habe ich keine erfahrung.

2) Ich nehme an du sendest das Kommand "S4E AA FF AA FF p" zu einer 
PCF8574 mit adressierung "111" ? Laut paragraph 8.3.1 von datasheet 
:"The data byte is followed by an acknowledge sent from this device. If 
other data bytes are sent from the master, following the acknowledge, 
they are ignored by this device" - Also pro WRITE kan mann nur 1 byte 
geben.

Grusz Patrick aus die Niederlaende

von Micha (Gast)


Lesenswert?

Hallo Patrick,
Hallo Holger,
vielen Dank für die Info. Das macht mir Mut das ganz doch nochmal 
anzufassen.
Ich habe auf die Schnelle nur das I2C Display angesprochen, wie hier 
beschrieben.
https://rn-wissen.de/wiki/index.php/I2C_USB_PC_Adapter

Als Display habe ich
https://www.amazon.de/SunFounder-Serial-Arduino-Mega2560-MEHRWEG/dp/B07P7SCF4Y

Wenn ich S4E AA FF AA FF p an mein Arduino sende, dann wird mir nur ??? 
FF ausgegeben. OK, das muss ich dann nochmal mit dem Oszi anschauen.
Grüße und Danke nochmals

Micha

von Stefan ⛄ F. (stefanus)


Lesenswert?

Micha schrieb:
> Ich habe auf die Schnelle nur das I2C Display angesprochen, wie hier
> beschrieben.

Wie gesagt kann dieser Chip nur einzelne Bytes empfangen. Und wenn du 
ihn ausliest bekommst du 0xFF weil tatsächlich alle Leitungen HIGH sind 
(hast du ja vorher so gesendet).

von Christoph db1uq K. (christoph_kessler)


Lesenswert?


von Wolfgang (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Das kann keiner lesen.

Es gibt genug Programme, die XML-Dateien lesen können. Womit hast du es 
denn versucht?

von Stefan ⛄ F. (stefanus)


Lesenswert?

Wolfgang schrieb:
> Es gibt genug Programme, die XML-Dateien lesen können. Womit hast du es
> denn versucht?

Das weiß ich jetzt 2 Jahre später doch nicht mehr.

Ich vermute, dass ich damals nur auf die mir unbekannte Dateiendung 
geachtet hatte, nicht den Inhalt.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ich sehe gerade, der Original-Post ist schon zwei Jahre her.

Für den Raspberry gibt es das praktische Programm i2cdetect, das scannt 
den Bus und listet alle gefundenen Adressen auf.

von Schlaumaier (Gast)


Lesenswert?

Wieso baust du dir das Teil nicht selbst nach mit einen Arduino und ein 
paar PFC8574.

Ist doch viel einfacher. Dazu eine kleine Software auf den Arudino der 
die Steuerbefehle umsetzt und das war's.

Ist wirklich kein Hexenwerk wenn man Programmieren kann.

Ich hab so was sogar mal Spasseshalber mit 433-Mhz Modulen aus China 
gemacht. Da hab ich an den Arduino am USB-Port via Com-Schnittstelle 
Befehle geschickt und der hat sie an Arduino 2 via Funk weiter 
geschickt.

Der Rest in nur Pharsen : Also erkennen was er für Befehle bekommt, und 
umsetzen.

von Wolfgang (Gast)


Lesenswert?

Christoph db1uq K. schrieb:
> Für den Raspberry gibt es das praktische Programm i2cdetect, das scannt
> den Bus und listet alle gefundenen Adressen auf.

Dafür reicht ein ATmega328 z.B. mit Arduino I2C-Scanner.

von Schlaumaier (Gast)


Lesenswert?

Christoph db1uq K. schrieb:
> Für den Raspberry gibt es das praktische Programm i2cdetect, das scannt
> den Bus und listet alle gefundenen Adressen auf.

Gibt es auch für den Arduino. Bloß wenn die da keine Hardware-Schaltung 
eingebaut haben, oder die Adressen in die Anleitung geschrieben haben, 
gibt  es nur eine Möglichkeit. Aufmachen // Nachschauen // und im 
Datenblatt die Adresse ablesen.

Das mit den 2 Jahren habe ich auch übersehen.

von Peter D. (peda)


Lesenswert?

Patrick C. schrieb:
> Laut paragraph 8.3.1 von datasheet
> :"The data byte is followed by an acknowledge sent from this device. If
> other data bytes are sent from the master, following the acknowledge,
> they are ignored by this device" - Also pro WRITE kan mann nur 1 byte
> geben.

Wo hast Du das her?

Man kann natürlich mehrere Bytes hintereinander schreiben oder lesen. 
Z.B. werden an ein LCD am PCF8574 beide Nibble und das E Takten in einem 
Rutsch ausgegeben.
In Fig 8. ist das auch schön zu sehen, wie P5 erst auf 1 und beim 
nächsten Byte auf 0 geht.
Genauso beim Lesen (Fig 9.), erst wird DATA1 eingelesen, dann DATA4.
DATA2, DATA3 werden ignoriert, da sie nicht bis zum ACK anliegen.
Probiers aus.

https://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf

: Bearbeitet durch User
von Micha (Gast)


Lesenswert?

Danke für die Infos.

Das mit der 7 und 8 Bit Adressierung muss man erst mal wissen. Im ELV 
Handbuch hatte ich zumindest nichts darüber gelesen. Aber Suchmaschinen 
machen schlau.
Das mit mehreren Bytes schreiben habe ich jetzt mit
z.B S4e AA w FF x 01 p gelöst.

Ich hatte mich einfach zu sehr auf das Beispiel konzentriert.
 https://rn-wissen.de/wiki/index.php/I2C_USB_PC_Adapter augeruht.
Warum auch immer das nicht geht. Es sollte auch nur ein Prinziptest sein

Vielen Dank nochmal.

von Patrick C. (pcrom)


Lesenswert?

Peter D. schrieb:
> Patrick C. schrieb:
>> Laut paragraph 8.3.1 von datasheet
>> :"The data byte is followed by an acknowledge sent from this device. If
>> other data bytes are sent from the master, following the acknowledge,
>> they are ignored by this device" - Also pro WRITE kan mann nur 1 byte
>> geben.
>
> Wo hast Du das her?

Sorry das habe ich aus PCF8574 datasheet von ti
https://www.ti.com/lit/ds/symlink/pcf8574.pdf?ts=1626926352710&ref_url=https%253A%252F%252Fwww.google.com%252F

.. Aber ich könnte falsch liegen

Patrick aus die Niederlaende

von A. H. (pluto25)


Lesenswert?

Ich hätte das auch so verstanden. Entweder wir sprechen zu schlecht 
English oder das Datenblatt hats schlecht beschrieben. Mit dem Ack wird 
der Wert ausgegeben und es ist bereit für einen Neuen. Ob das endlos 
geht weiß ich nicht aber 28 Werte hintereinander geht problemlos. (Test 
mit 16x2 Lcd an einem Pcf)
Bild 8.4 (Figur 16) sagt auch was anderes - da ist wohl das Datenblatt 
falsch - nicht unser englisch :-)
Im Datenblatt von Philips steht es richtig.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.