I2C Slave Schnittstelle

sarah_gru:
.....
ich hoffe das beantwortet deine Frage mit den Pullups)

Nur, dass du def. auf dem Holzweg bist. :wink:

Die Pullups sind WiderstÀnde, die den Bus auf einen definierten Wert setzen.
Der Arduino hat keine, ob dein Stellantrieb welche hat, musst du im Datenblatt nachlesen.
Bei der KabellÀnge brauchst du die ganz sicher.

HotSystems:
Nur, dass du def. auf dem Holzweg bist. :wink:

Die Pullups sind WiderstÀnde, die den Bus auf einen definierten Wert setzen.
Der Arduino hat keine, ob dein Stellantrieb welche hat, musst du im Datenblatt nachlesen.
Bei der KabellÀnge brauchst du die ganz sicher.

Also dann probier ichs nochmal :slight_smile:

Mein I2C Bus hat eigentlich Pullups. Die sind aber eigentlich indem Sensor enthalten.
Im Datenblatt ist das so erklÀrt:
Ein 4k7 Pull-Up Widerstand wird in die SDA / SCL (Spannungspegel 3,0 V) Leitungen gesteckt, um elektrische SchÀden bei falscher Verdrahtung zu vermeiden. Die Pull Up werden sensorseitig montiert und dienen auch zur Erkennung von nicht angeschlossenen Kabeln.

Folglich muss ich dann ja irgendwie dem Arduino einen 4k7 Pullup zuteilen. Kann man das Softwaretechnisch machen?

HotSystems:
Der Arduino hat keine, ob dein Stellantrieb welche hat, musst du im Datenblatt nachlesen.
Bei der KabellÀnge brauchst du die ganz sicher.

Falsch. Der Arduino aktiviert die internen PullupwiderstĂ€nde. Nur sind diese fĂŒr lĂ€ngere Verbindungen (mehr als einige cm) zu hochomig. Es mĂŒssen (fast) immer externe Pullups verwendet werden.
GrĂŒĂŸe Uwe

sarah_gru:
Ein 4k7 Pull-Up Widerstand wird in die SDA / SCL (Spannungspegel 3,0 V) Leitungen gesteckt, um elektrische SchÀden bei falscher Verdrahtung zu vermeiden. Die Pull Up werden sensorseitig montiert und dienen auch zur Erkennung von nicht angeschlossenen Kabeln.

Das ist Quatsch mit Soße :frowning:

Die Pullups vermeiden keine elektrischen SchÀden, und können auch nicht zur Erkennung von nicht angeschlossenen Kabeln dienen.
Pullups können nicht durch Software ersetzt werden, da muß man schon WiderstĂ€nde hinzufĂŒgen.

Bei kurzen Leitungen und/oder geringer Übertragungsrate kann ein Pullup fĂŒr den gesamten Bus ausreichen. Besser ist es, beide Enden (und nur die Enden!) der SCL/SDA Leitungen mit Pullups zu versehen.

sarah_gru:
Also dann probier ichs nochmal :slight_smile:

Mein I2C Bus hat eigentlich Pullups. Die sind aber eigentlich indem Sensor enthalten.
Im Datenblatt ist das so erklÀrt:
Ein 4k7 Pull-Up Widerstand wird in die SDA / SCL (Spannungspegel 3,0 V) Leitungen gesteckt, um elektrische SchÀden bei falscher Verdrahtung zu vermeiden. Die Pull Up werden sensorseitig montiert und dienen auch zur Erkennung von nicht angeschlossenen Kabeln.

Folglich muss ich dann ja irgendwie dem Arduino einen 4k7 Pullup zuteilen. Kann man das Softwaretechnisch machen?

HÀÀ?
PullupwiderstĂ€nde werden zwischen SDA bzw SCL und Versorgungsspannung geschaltet und nicht in die SDA bzw SCL Leitungen. Die Aufgabe der Pullups ist es einen HIGH Pegel bereitzustellen und nicht irgendetwas zu schĂŒtzen. Wie schalteest Du die WiderstĂ€nde?

Der I2C Bus auf einem 5V Arduino funktioniert nicht mit Pullups an 3V. Die Spannung ist zu klein um als High erkannt zu werden.

Du willst also mittels LabVIEW Daten an den Arduino schicken und dieser soll dann anhand der Daten verschiedene Meßwerte des Sensors simulieren und ĂŒber I2C an den Stellantrieb schicken?

Hast Du den Sketch bzw LabVIEW Skript geschrieben? Kennst Du das Protokoll mit dem der Stellantrieb den Sensor anfragt und wie der Sensor darauf reagiert?

GrĂŒĂŸe Uwe

sarah_gru:
Also dann probier ichs nochmal :slight_smile:

Mein I2C Bus hat eigentlich Pullups. Die sind aber eigentlich indem Sensor enthalten.
Im Datenblatt ist das so erklÀrt:
Ein 4k7 Pull-Up Widerstand wird in die SDA / SCL (Spannungspegel 3,0 V) Leitungen gesteckt, um elektrische SchÀden bei falscher Verdrahtung zu vermeiden. Die Pull Up werden sensorseitig montiert und dienen auch zur Erkennung von nicht angeschlossenen Kabeln.

Folglich muss ich dann ja irgendwie dem Arduino einen 4k7 Pullup zuteilen. Kann man das Softwaretechnisch machen?

Wenn die Pullups im Sensor vorhanden und gegen 3 Volt beschaltet sind, dann solltest du prĂŒfen, ob der Sensor ĂŒberhaupt an 5 Volt arbeitet.
Hier gibt es ein Konflikt. Der Arduino liefert 5 Volt an den Pins und das macht dann sicher Probleme.

uwefed:
Falsch. Der Arduino aktiviert die internen PullupwiderstĂ€nde. Nur sind diese fĂŒr lĂ€ngere Verbindungen (mehr als einige cm) zu hochomig. Es mĂŒssen (fast) immer externe Pullups verwendet werden.
GrĂŒĂŸe Uwe

Du hast natĂŒrlich Recht....nur ich wollte es fĂŒr den TO nicht zu kompliziert machen.
Er hat so schon Probleme uns zu verstehen.

HotSystems:
Wenn die Pullups im Sensor vorhanden und gegen 3 Volt beschaltet sind, dann solltest du prĂŒfen, ob der Sensor ĂŒberhaupt an 5 Volt arbeitet.
Hier gibt es ein Konflikt. Der Arduino liefert 5 Volt an den Pins und das macht dann sicher Probleme.

Den Sensor gibt es ja nicht - der wird mittels LabVIEW simuliert.

HotSystems:
Du hast natĂŒrlich Recht....nur ich wollte es fĂŒr den TO nicht zu kompliziert machen.
Er hat so schon Probleme uns zu verstehen.

hahaha ja das stimmt xD

uwefed:
HÀÀ?
PullupwiderstĂ€nde werden zwischen SDA bzw SCL und Versorgungsspannung geschaltet und nicht in die SDA bzw SCL Leitungen. Die Aufgabe der Pullups ist es einen HIGH Pegel bereitzustellen und nicht irgendetwas zu schĂŒtzen. Wie schalteest Du die WiderstĂ€nde?

Der I2C Bus auf einem 5V Arduino funktioniert nicht mit Pullups an 3V. Die Spannung ist zu klein um als High erkannt zu werden.

Du willst also mittels LabVIEW Daten an den Arduino schicken und dieser soll dann anhand der Daten verschiedene Meßwerte des Sensors simulieren und ĂŒber I2C an den Stellantrieb schicken?

Hast Du den Sketch bzw LabVIEW Skript geschrieben? Kennst Du das Protokoll mit dem der Stellantrieb den Sensor anfragt und wie der Sensor darauf reagiert?

GrĂŒĂŸe Uwe

Genau also die Daten eines Registers, dass geschickt werden soll (das ist mithilfe von Adressen simuliert) wird mittels Arduino an den Stellantrieb geschickt.
Ich bin gerade noch dabei ein Programm in LabVIEW zu erstellen, wenn ich ein Grundkonzept habe kann ich dass einmal reinstellen :slight_smile:

es ist so, dass er Stellantrieb eine innere Kontrollschleife hat (ca 200ms) und nach diesen 200ms werden immer neue Werte von dem Sensor an den Stellantrieb ĂŒbergeben. Also der Stellantrieb verlangt die Werte von den Sensor.

sarah_gru:
Den Sensor gibt es ja nicht - der wird mittels LabVIEW simuliert.

Ok, da ich LabVIEW nicht kenne, werde ich hier passen.

HotSystems:
Du hast natĂŒrlich Recht....nur ich wollte es fĂŒr den TO nicht zu kompliziert machen.
Er hat so schon Probleme uns zu verstehen.

Da hast Du auch wieder Recht.

Ich habe gerade zwei Programme geschrieben, jedoch lÀsst sich hier weder ein Bild noch das Programm selbst anhÀngen. Wenn ich ein Bild anhÀngen möchte kommt immer eine Fehlermeldung - gibt es da irgendetwas zu beachten wenn ich hier ein Bild bzw ein Programm teilen möchte?

sarah_gru:
Ich habe gerade zwei Programme geschrieben, jedoch lÀsst sich hier weder ein Bild noch das Programm selbst anhÀngen. Wenn ich ein Bild anhÀngen möchte kommt immer eine Fehlermeldung - gibt es da irgendetwas zu beachten wenn ich hier ein Bild bzw ein Programm teilen möchte?

FĂŒge einen Sketch mit den </> Ikone im Editorfenster ein.
Die Bilder dĂŒrfen nicht zu groß sein.
GrĂŒĂŸe Uwe

So jetzt hoff ich klappt es - den einen Link in dem Bild hab ich hier auch nochmal mit angehÀngt. Das zweite ist die komplette Aufgabe eben mit Fragestellung. Ich hab mich daran orientiert, versteh eben nur ein paar ZusammenhÀnge nicht - ich habe das alles in dem Bild vermerkt.
https://www.labviewforum.de/attachment.php?aid=57661
https://www.labviewforum.de/Thread-I2c-mit-Labview-auslesen?pid=187604#pid187604

Bin ich mit dem Programm schon auf dem richtigen weg?
Mein Stellantrieb meldet mir stÀndig, dass ein Kommunikationsfehler zwischen Master und Slave existiert - liegt das daran, dass ich dem Arduino noch nicht zugeteilt habe, dass er ein Slave sein soll?

Vielen Dank im Voraus! :slight_smile:

Hier ist das andere Programm. Das habe ich jetzt mit einem anderen Zusatzpaket realisiert.

Habe das Problem jetzt unter einer anderen Themenangabe reingestellt, da es ja jetzt nicht mehr um die Schnittstelle geht, sondern um die Programmierung selbst, sodass ich das als Slave nutzen kann. Hoffe das dadurch jemand der Arduino Uno auch schon als Slave genutzt hat darauf aufmerksam wird :slight_smile:

Also falls mir jemand noch helfen könnte oder ihn das Thema interessiert einfach suchen nach:
Thema:
I2C - Arduino als Slave

Schon mal danke an alle die sich das Problem anschauen!

IMO solltest Du Dich entscheiden, ob Du mit Labview weiterspielen möchtest oder auf die Arduino IDE als Programmierumgebung umsteigst. Da hilft es auch nicht, die gleichen unbrauchbaren Bildchen in einem neuen Thread zu zeigen, mit dieser Programmiermethode kommst Du bei Arduinos nicht weiter, und bist hier eigentlich ziemlich off-topic :-]

Wie schon der Name sagt, dient LabView der Verarbeitung und Anzeige von Meßwerten - Dein Problem ist aber die Erfassung der Daten, mit einem Arduino. Mit den Beispielen aus der Arduino IDE erĂŒbrigen sich die meisten Deiner Fragen.

DrDiettrich:
IMO solltest Du Dich entscheiden, ob Du mit Labview weiterspielen möchtest oder auf die Arduino IDE als Programmierumgebung umsteigst. Da hilft es auch nicht, die gleichen unbrauchbaren Bildchen in einem neuen Thread zu zeigen, mit dieser Programmiermethode kommst Du bei Arduinos nicht weiter, und bist hier eigentlich ziemlich off-topic :-]

Ich muss den Programmcode in LabVIEW realisieren - es muss doch möglich ein einfach Daten aus einem Register per Arduino an den Stellantrieb zu ĂŒbergeben :o

DrDiettrich:
Mit den Beispielen aus der Arduino IDE erĂŒbrigen sich die meisten Deiner Fragen.

Meinst du damit das allgemeine Softwareprogramm von Arduino selbst? Das darf ich in meinem Fall nicht verwenden :confused:

NatĂŒrlich ist das möglich, aber da LabView nicht auf dem Arduino lĂ€uft, muß das dort etwas anders programmiert werden. TatsĂ€chlich möchtest Du keine LabView-KĂ€stchen zum Programmieren des Arduino benutzen, sondern so ein KĂ€stchen selbst programmieren.

Wenn Du aber mit LabView einen Arduino simulieren möchtest, dann stelle Deine Fragen in einem LabView Forum.

DrDiettrich:
NatĂŒrlich ist das möglich, aber da LabView nicht auf dem Arduino lĂ€uft, muß das dort etwas anders programmiert werden. TatsĂ€chlich möchtest Du keine LabView-KĂ€stchen zum Programmieren des Arduino benutzen, sondern so ein KĂ€stchen selbst programmieren.

Wenn Du aber mit LabView einen Arduino simulieren möchtest, dann stelle Deine Fragen in einem LabView Forum.

Ich möchte ja keinen Arduino simulieren. Der Arduino dient mir ja als I2C Schnittstelle, dass ich die Daten aus einem LabVIEW Programm an meinen Stellantrieb weitergeben kann. Somit wird praktisch der Sensor simuliert aber ja nicht der Arduino.

Hi

Die LabView-Bildchen sagen mir Mal gar Nichts :o

Aber ich habe folgendes verstanden:
Du hast einen virtuellen Sensor, dessen virtuelle Daten werden von LabView zum Arduino geschickt.
Der Arduino ist hier quasi Aktor.
Der Arduino selber soll mit den Daten nun was machen?

  • einen Antrieb ansteuern - da kann LabView völlig egal sein, was der Antrieb treibt
  • einen virtuellen Antrieb in LabView ansteuern - dann mĂŒssen die Steuerbefehle vom Arduino wieder retour.

Letzteres wÀre aber - sorry - schön blöd, oder?
LabView sollte mit den eigenen Werten selber den eigenen Aktor ansteuern können - oder Das zumindest simulieren.

Wir sind jetzt hier bei #41, ich habe das Thema zwar nur nebenher, aber komplett gelesen und mir ist akut nicht bekannt, was Du wirklich willst.

MfG