LabVIEWForum.de - Auslesen von Sensoren über i2c mit USB-8451

LabVIEWForum.de

Normale Version: Auslesen von Sensoren über i2c mit USB-8451
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo!
Ich stelle mich erst mal vor! Ich bin Freddy, 28 Jahre alt und bin gerade an meiner Bachelorarbeit. Dadurch bin ich auch af dieses Forum gestoßen!
Ich studiere Mechatronik und bin ganz neu hier! ;-) 2hands

Für meine Bachelorarbeit soll ich zwei Gase definiert zueinander Mischen. Die Mischung erfolgt über Proportionalventile (angesteuert über PWM).
Die Messung des Gasflusses soll über zwei Differenzdrucksensoren erfolgen. Die Differenzdrucksensoren sind Aktive sensoren die mit I²C ausgelesen werden können!
Ich habe nun von meinem Betreuer aufgetragen bekommen die Ansteuerung vorerst über LabVIEW zu realisieren.
Leider habe ich bis jetzt noch keinerlei erfahrungen weder mit LabVIEW, noch mit I²C...!BlushBlink
Mit LabVIEW hab ich jetzt schonmal eine kleine PWM-Steuerung hinbekommen. Mit dieser kann ichdas Prop-Ventil schonmal ansteuern! Schonmal GEIL!2hands
Hier in der Firma ist zum einen eine USB-6259, & eine USB-8451- Schnittstelle vorhanden!
Leider kenne ich mich wie gesagt, überhaupt nicht aus mit I²C... Ich habe den Treiber für das I²C-Modul schonmal installiert und bekomme damit auch schonmal einige Beispiele geliefert.

Jetzt meine Fragen:
Wie liest man denn Daten von einem Sensor!? Welche Spannungen muss ich einstellen!? Wie sieht das mit dem PullUp-Widerstand aus!? Wie bekomme ich wenigstens schonmal ein Beispielprogramm zum Laufen!? Was gibt mir der Sensor denn eigentlich zurrück!? Muß ich da irgend welche Protokolle schreiben!?
Ich würde mich riesig freuen wenn mir hier jemand weiter helfen könnte!
Mir ist bewust daß dieses Tool für einsteiger auch ziemlich Mächtig ist, und vieleicht klingt das jetzt für einen einsteiger auch lächerlich mit sowas an zu fangen!
Aber ichmuß hier halt jetzt durch... ;-)
Danke schonmal und viele Grüße,

Freddy
Hallo Freddy,

herzlich Willkommen hier im Forum und Danke für die nette Vorstellung. Top2

Hast Du das auch schon mal angeschaut:
http://www.ni.com/white-paper/5767/en/
Da geht es auch um Deine Hardware (8451) mit I2C.

Gruß Markus
Nachtrag zu Markus' Hinweis:
- Im ExampleFinder sollten sich passende Beispiele finden lassen, sobald der Treiber für die USB8451 korrekt installiert wurde.
- Alles, was den Sensor betrifft, solltest du in dessen Manual/SpecSheet nachlesen können.
Hi!
Danke schonmal für die Basic-Infos!2hands
Ich hab mittlerweile den Treiber installiert und hab verschiedene Beispiele gefunden.
Das Manual zum Sensor hänge ich mal an. Auf Seite 7/11 geht es um die Bus-Ankopplung. Da steht, dass die Adresse des Sensors die 78 Hex ist (oder versteh ich das falsch?).
Das hab ich mal ins Beispiel eingegeben. Daraufhin kommt der Fehler: "NI-845x: Der Slave hat ein Datenbyte des I2C-Masters nicht anerkannt.".
Also scheint der Slave schon richtig angesprochen zu sein. Sind denn die anderen Werte alle richtig eingestellt!? Oder mache ich etwas grundsätzlich falsch!?
Was wird mir denn dann überhaupt zurückgelifert? (wenn alles klappen würde...?).
Würde mich über paar hilfreiche Tips sehr freuen! ;-)Blush

Viele Grüße,
Freddy
Achso!
Das Blockdiagram sieht im Beispiel so aus!
Siehe Anhang...
Ich hoffe es gibt jemanden der das versteht... Big Grin
Grüßerle
Servus!
Also mittlerweile hab ich es geschafft den Sensor auszulesen... ! ;-)
Die Lösung werde ich nachher noch hier Online stellen!
Ich hab aber jetzt ein neues Problem!
Der Sensor liefert mir einen 2 Byte langen Differenzdruckwert zurück.
Ich muss jetzt das erste Byte um 8Bit nach links schieben und das zweite Byte dann Addieren...
Weiß zufällig jemand wie ich das am besten machen kann??
Vielen Dank schonmal,

Freddy
Hallo Fredy,

Zitat:Ich muss jetzt das erste Byte um 8Bit nach links schieben und das zweite Byte dann Addieren...
Warum so kompliziert? Du benutzt LabVIEW und nicht "alles zu Fuß"-C:
[attachment=48356]
Wenn die Bytes in der richtigen Reihenfolge im Array stehen, funktioniert auch ein simpler TypeCast!

P.S.: Die Umkehrfunktion SplitNumber zum gezeigten JoinNumbers hast du doch in deinem Blockdiagramm oben schon gezeigt. Kennen solltest du damit schon beide Funktionen…
Moin GerdW!
Vielen lieben Dank!
Die Sache läuft bravorös! Blush
P.S.:
" P.S.: Die Umkehrfunktion SplitNumber zum gezeigten JoinNumbers hast du doch in deinem Blockdiagramm oben schon gezeigt. Kennen solltest du damit schon beide Funktionen… "

Joa, hab die schon verstanden... Aber ich stehe halt gerade noch am Anfang... So langsam komme ich aber ganz gut rein in die sache!

Viele Grüße,

Freddy
Servus!
Ich hab mal wieder ne Frage... ;-)
Ich muss die ganze Sache jetzt geregelt realisieren.
Momentan hab ich es hin bekommen zwei Programme zu schreiben die auch funktionieren! Cool Das eine ist für die Erzeugung eines PWM-Signals zum ansteuern des Proportionalventils! Das andere zum auslesen des Differenzdrucksensors! Diese beiden VI´s kann ich jetzt parallel laufen lassen. So kann ich das Ventil öffnen und gleichzeitig schauen wie sich der Differenzdruck verhält.

Die nächste Aufgabe ist nun beide Programme zu vereinen und eine kleine Regelung aufzubauen!
Einen Algorithmus für eine Regelung existiert schon. Dieser ist in 'C' programmiert!

Mein betreuer meinte es besteht die Möglichkeit diesen Code in Labview einzubinden!?!?!?
Ist das korrekt? Stimmt das?? Der weiß nämlich selbst nicht wie das geht... nur dass es geht...

Könnte mir jemand erklären wie ich das mache!?
Nach was muß ich denn suchen!?
Geht das mit einem Formelknoten oder so??

Für nen kleinen Tip wäre ich sehr dankbar! Blush

Viele Grüße,

Freddy
Hallo Fredy,

Zitat:Geht das mit einem Formelknoten oder so??
Die Hilfe zum Formelknoten sagt als erstes:
Zitat:Berechnet mathematische Formeln und Ausdrücke in einer C-ähnlichen Syntax im Blockdiagramm
Ergo kannst du es damit versuchen - evtl. musst du den C-Code etwas anpassen.
Die andere Standard-Methode sieht vor, den C-Code in eine DLL zu kompilieren und deren Funktionen dann aus LabVIEW heraus aufzurufen. Du darfst entscheiden, was dir einfacher aussieht! Smile

Oder du programmierst den Code mit LabVIEW-Mitteln nach. Ist meist nicht so schwierig…
Seiten: 1 2
Referenz-URLs