SEN0496 capteur I2C

spheris

Senior Member
Bonjour,
J'utilise le capteur oxygene gotronic :
avec un picaxe 20M2 branché sur B.7 et B.5.
En interrogeant le capteur I2 à l'adresse 0x70, il me renvoit deux valeurs à 255,
Dans la doc il est précisé que deux valeurs de 255 sont ou un mauvais cablage, ou un mauvais logiciel.

1) pour le cablage doit on obligatoirement mettre deux résistance de 4,7K sur les reseau SDA, SDI?
2) pour le logiciel, doit on utiliser hi2in ou readi2c?

Merci pour vos réponses.

Voici mon code pour le capteur:

hi2csetup i2cmaster, 0x70, i2cslow, i2cbyte
pause 200
main:
hi2cin (b15,b16)
sertxd(#b15,#b16,";",10)'envoi des donnees au pc
pause 2000
goto main


resultat dans la console terminal : 255255;

je sèche. pourquoi cela ne fonctionne-t-il pas?




----------------------
Edition :
J'avance un peu.
Dans la doc de la lib pour raspberry, il est écrit :
## Oxygen data register
OXYGEN_DATA = 0x10
## calbration state
CALIBRATION_STATE = 0x13
## calbration sensor
CALIBRATION_SENSOR = 0x18
## I2C address
E_OXYGEN_ADDRESS_0 = 0x70
E_OXYGEN_ADDRESS_1 = 0x71
E_OXYGEN_ADDRESS_2 = 0x72
E_OXYGEN_ADDRESS_3 = 0x73

CALIBRATION_20_9 = 0x01
CALIBRATION_99_5 = 0x02
CALIBRATION_CLEAR = 0x03


Il me faut donc lire le registre 0x10 et non 0.

Ensuite il faut lire 3 octets et non 2 car j'interprète ce code :

def read_oxygen_concentration(self):
'''!
@brief Get oxygen concentration in the air unit VOL
@return concentration
'''
rslt = self.read_reg(OXYGEN_DATA, 3)
vol = float(rslt[0]) + float(rslt[1]) / 10.0 + float(rslt[2]) / 100.0
return vol


mon terminal me retourne maintenant 255255255;
cela ne fonctionne toujours pas. Pourquoi ?
 
Last edited:

PieM

Senior Member
Bonjour,
Il faut toujours deux résistance de 4,7K sur les reseau SDA, SDI mais vu les schémas de connexion sur ardui, je pense qu'elles sont déjà sur la platine.
l'Adresse 0x70 est visiblement sur 7 bits. Il faut donc décaler par un shift gauche l'adresse pour le Picaxe ce qui donne %1110 0000 soit E0
 

spheris

Senior Member
Effectivement c'était bien cela et cela fonctionne très bien maintenant.
Excusez ma curiosité mais je suis vraiment curieux de connaitre votre raisonnement pour arriver à la conclusion qu'il faille déplacer un bit vers la gauche, pouvez vous m'expliquer quelles sont les étapes pour arriver à cette solution?
Vous remerciant par avance et un grand merci.
 

PieM

Senior Member
Bonjour,
Selon les produits, les adresses peuvent être données sur 7 ou 8 bits; en 8 bits, le bit le plus faible definit si on est en écriture ou en lecture.
Pas trouvé de doc précise sur ce capteur. Mais comme plusieurs adresses sont données avec le premier bit à 0 ou 1, c'est donc que l'adresse esr sur 7 bits. Donc on décale de 1 bit à gauche pour laisser la place du bit0, la gestion se faisant par le picaxe.
 

spheris

Senior Member
Merci pour cette explication claire.
J'ai compris l'effet du décalage à gauche.
J'ai appelé gotronic qui n'a pas su me donner l'info.
 
Top