Pages: [1]   Go Down
Author Topic: Sensor an der I2C Schnittstelle  (Read 1078 times)
0 Members and 1 Guest are viewing this topic.
Switzerland
Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen

Wollte die ID aus einem Sensor auslesen habe dafür ein Datasheet gekriegt wo drin steht wie es gehen soll
doch irgendwie begreiffe ich das nicht...
Kann mir jemand helfen wie ich die Command richtig an den Sensor sende damit der auch mir antwortet.

Danke das wäre super,
Andi

* CommandMode.pdf (105.85 KB - downloaded 29 times.)
Logged

WW
Offline Offline
Jr. Member
**
Karma: 0
Posts: 59
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo GekoCH,

zu wenig Input, wie bitte soll Dir jemand helfen können? Wie wäre es wenigstens einmal mit der Bezeichnung des Sensors und/oder dem Datenblatt?
Logged

Heidelberg
Offline Offline
Full Member
***
Karma: 1
Posts: 207
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nimm dir einfach das Beispiel eines ähnlichen Sensors mit Acknoledgements und ändere das Programm nach den Reihen des Datenblattes ab. Das mit den ein- und auslesen der Daten ist nicht ganz trivial.
Logged

 

Switzerland
Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo GekoCH,

zu wenig Input, wie bitte soll Dir jemand helfen können? Wie wäre es wenigstens einmal mit der Bezeichnung des Sensors und/oder dem Datenblatt?


Habe das Dokument doch angefügt, es sit wohl nur sichtbar wenn ihr eingeloggt seit.

Gruss
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20196
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bei bestimmten Gelegenheiten gefällt mir minimalismus aber beim Antworten-wollen auf minimalistische Fragen definitiv nicht.

Du kannst den Sensor mittels Arduino resettieren? Ansonsten hast Du keine Möglichkeit ihn in den Command Mode zu versetzen.

Grüße Uwe
Logged

Switzerland
Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hmm naja ich weiss im Moment nicht wie ich den Snesor reseten kann um dann direkt in den Command mode zu gelangen....
Kann ein Reset auch per Command genügen denn anders kann ich es mir nich vorstellen....
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20196
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich weiß es nicht und die anderen wissen es auch sicher nicht, da niemend von uns weiß welchen Sensor Du benutzt.
Grüße Uwe
Logged

Switzerland
Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

oops habe das Falsche Dokument hochgeladen dort steht es nicht drinn... sorry

Es ist ein HYT 271 (DIGITALER FEUCHTESENSOR)

Logged

WW
Offline Offline
Jr. Member
**
Karma: 0
Posts: 59
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sorry GekoCH, ich habe wirklich kein Datenblatt gesehen.
Den Sensor habe ich auch, der ist wirklich gut.
Resetten kannst Du den nicht wirklich, aber im Datenblatt heisst es ja auch "Power-On Reset" - leg seinen Vdd-Pin auf einen Digitalen I/O, dann kannst Du ihn über diesen Pin an- und ausschalten.
Dann muss innerhalb von 10ms nach power-up "Start Command-Mode" (0xA0 0x00 0x00) gesendet werden um in den Kommando-Modus zu kommen, danach kannst Du die ID lesen oder z.B. eine neue I2C-Adresse schreiben.
Logged

Switzerland
Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist eine gute Idee, hat irgendwie auch funktioniert denn im Command Mode kann man ja keine Feuchte und Temp auslesen was mir zeigt dass ich im Command Mode drinn bin aber das Auslesen klappt nicht sprich ich verstehe nicht wie ich nun an die Adresse komme.
Hier wäre der Code den ich verwende...

Code:
//Sensor starten
  digitalWrite(13, HIGH);
  delay(2);

  //in Command Mode
  Wire.beginTransmission(adress);
  Wire.send(0xA0);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.endTransmission();
  delay(100);

  //Adress anfragen
  Wire.beginTransmission(adress);
  Wire.send(0x1C);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.endTransmission();
  delay(100);

  //Adresse auslesen
  Wire.requestFrom(adress, 3);
  if(Wire.available() > 2){
    int b1 = Wire.receive();
    int b2 = Wire.receive();
    int b3 = Wire.receive();
    Serial.println((b1));
    Serial.println((b2));
    Serial.println((b3));

    int i2cAdress = b2 << 8 | b3;
    Serial.println((i2cAdress));
  }
 
Logged

Switzerland
Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

uuppps Ich *!*?# ok so ich habs smiley

Code:
byte decToBcd(byte val){
  return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val){
  return ( (val/16*10) + (val%16) );
}


void adresseAendern(){
  //Sensor starten
  digitalWrite(13, HIGH);
  delay(2);

  //in Command Mode
  Wire.beginTransmission(adress);
  Wire.send(0xA0);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.endTransmission();
  delay(100);

  //Adress anfragen
  Wire.beginTransmission(adress);
  Wire.send(0x1C);
  Wire.send(0x00);
  Wire.send(0x00);
  Wire.endTransmission();
  delay(100);

  //Adresse auslesen
  Wire.requestFrom(adress, 3);
  if(Wire.available() > 2){
    byte b1 = bcdToDec(Wire.receive());
    byte b2 = bcdToDec(Wire.receive());
    byte b3 = bcdToDec(Wire.receive());
    /*
    Serial.println((b1), DEC);
     Serial.println((b2), DEC);
     Serial.println((b3), DEC);
     */
    int i2cAdress = b2 << 8 | b3;
    Serial.println((i2cAdress));
  }
  

  //Adress neu setzten
  Wire.beginTransmission(adress);
  Wire.send(0x5C);
  Wire.send(0x00);
  Wire.send(adressNew);
  Wire.endTransmission();
  delay(100);


  //normal Mode
  digitalWrite(13, LOW);
  delay(100);

}
« Last Edit: March 22, 2012, 03:06:27 am by GekoCH » Logged

Pages: [1]   Go Up
Jump to: