Iow24 und BMP180 von Bosch

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
Fabio95
Posts: 2
Joined: Tue May 02, 2017 10:31 pm

Iow24 und BMP180 von Bosch

Post by Fabio95 »

Hallo,

in der Fachschule für Technik (BK Kleve) haben wir das Projekt den Temperatur und Drucksensor BMP180 von Bosch mit dem Iow24 über den I2C Bus auszulesen.
Dazu haben wir in C# ein Testprogramm geschrieben welches die Adressen von den Geräten die am I2C Bus angeschlossen sind anzeigen.
Der Sensor wird erkannt, wenn man aber Daten von diesem lesen möchte bekommt man keine zurück gesendet.
Hat jemand schon mal diesen oder einen ähnlichen Baustein benutzt und kann mir da weiter helfen oder ein Testprogramm parat ?

Datenblatt des Sensor: https://ae-bst.resource.bosch.com/media ... 00-121.pdf

Danke und Gruß
Fabio
User avatar
Christoph Jung
Posts: 631
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Iow24 und BMP180 von Bosch

Post by Christoph Jung »

Hallo,

für den Bosh BMP180 habe ich leider nichts zur Hand.
Wie genau wird denn versucht die Daten vom Sensor abzurufen? Es wäre nett, wenn ich ein wenig Code sehen könnte.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Fabio95
Posts: 2
Joined: Tue May 02, 2017 10:31 pm

Re: Iow24 und BMP180 von Bosch

Post by Fabio95 »

Hallo,

dies ist der Code mit dem ich erstmal nur ein Register auslesen möchte um zu gucken ob der Sensor Daten herausgibt.


namespace Temp_Abfrage_Konsole
{
class Program
{
static void Main(string[] args)
{
IntPtr handle;
handle = IowKit.Method.IowKitOpenDevice();

byte[] senden = new byte[8];
byte[] empfangen = new byte[8];


//I2C Mode aktivieren
senden[0] = 1;
senden[1] = 1;
IowKit.Method.IowKitWrite(handle, 1, senden, 8);
IowKit.Method.IowKitRead(handle,1 , empfangen, 8);


{
senden[0] = 0x02; //Lesen
senden[1] = 0x82; // Start & Stop
senden[2] = 0xEE; // Adresse Schreiben
senden[3] = 0xAA; // Register
IowKit.Method.IowKitWrite(handle, 1, senden, 8);
IowKit.Method.IowKitRead(handle, 1, empfangen, 8);


senden[0] = 0x03; //Lesen
senden[1] = 0x02; //Zwei Bytes empfangen
senden[2] = 0xEF; //Adresse Lesen
IowKit.Method.IowKitWrite(handle, 1, senden, 8);
IowKit.Method.IowKitRead(handle, 1, empfangen, 8);

Console.WriteLine(empfangen);

}

//I²CMode deaktivieren
senden[0] = 1;
senden[1] = 0;
senden[2] = 0;
senden[3] = 0;
senden[4] = 0;
IowKit.Method.IowKitWrite(handle, 1, senden, 8);

IowKit.Method.IowKitCloseDevice();

Console.ReadKey();


}
}
}
User avatar
Christoph Jung
Posts: 631
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Iow24 und BMP180 von Bosch

Post by Christoph Jung »

Das IowKitRead() nach dem Initialisieren sollte weg genommen werden, beim IowKitCloseDevice fehlt der Paramater des HANDLES und bei Scheiben sollte der Wert vom senden[1] 0xC2 sein. Sonst wird kein Stop durchgeführt.

Sonst sieht das Code soweit richtig aus. Laut Datenblatt vom BMP180 müsste beim Auslesen dort eine "408" stehen.

Ich würde beide Write und Read noch auswerten, ob auch alles soweit geklappt hat:

Code: Select all

if (IowKit.Method.IowKitWrite(handle, 1, senden, 8) == 8)
{
	if(IowKit.Method.IowKitRead(handle, 1, empfangen, 8) == 8)
	{
		//Lesen erfogreich
	}
	else
	{
		//Fehler beim Lesen
	}
}
else
{
	//Fehler beim Schreiben
}
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Post Reply