sondes 18B20 erreurs de lecture
Posté : ven. 24 janv. 2025 10:49
Bonjour,
J’utilise depuis longtemps une installation de mesure de température avec un réseau assez long en étoile et je rencontre depuis longtemps des erreurs de lecture des sondes 18B20 .
Qui font planter mon programme.
J’ai essayer les fonction de gestion d’erreur sans succès.
Une donnée erroné provoque dans les fonction d’affichage un plantage en règle.
Bref après des modif du câblage ( placement de condensateurs sur les alimentation des branches de l’étoile et de résistances en série)
Essais avec une interface usb dédié (c est encore pire qu’en direct ce raspi est vraiment robuste)
Bref impossible d’éviter une erreur de temps à autre ….
et je viens d’essayer une autre méthode simplement en testant la longueur de trame envoyé par la sonde et surprise plus de plantage j’avoue ne pas comprendre pourquoi mais en tout cas ça fonctionne…. Aussi je me permet de la diffuser.
Je suis en python 3 sur un raspi 2
def RecupTemp (fic):
fich=open(fic)
temp = fich.read()
time.sleep(0.5)
fich.close
while len(temp)<60: #74
fich=open (fic)
temp = fich.read()
fich.close
print("erreur",fic)
temp = temp.split("\n")[1]
temp =temp.split(" ")[9]
temp =float(temp[2:])
temp = round(temp/1000,1)
return temp
fic est l’adresse de la sonde que l’on trouve ici
sys/bus/w1/devices/28-xxxxxxxxxxx/w1_slave
et donc a chaque erreur il affiche la sonde incriminé mais le temp retourné est toujours valable .
Voila ce n est pas très élégant mais j espère que cela pourra servir à quelqu’un
cordialement
Jacques B
J’utilise depuis longtemps une installation de mesure de température avec un réseau assez long en étoile et je rencontre depuis longtemps des erreurs de lecture des sondes 18B20 .
Qui font planter mon programme.
J’ai essayer les fonction de gestion d’erreur sans succès.
Une donnée erroné provoque dans les fonction d’affichage un plantage en règle.
Bref après des modif du câblage ( placement de condensateurs sur les alimentation des branches de l’étoile et de résistances en série)
Essais avec une interface usb dédié (c est encore pire qu’en direct ce raspi est vraiment robuste)
Bref impossible d’éviter une erreur de temps à autre ….
et je viens d’essayer une autre méthode simplement en testant la longueur de trame envoyé par la sonde et surprise plus de plantage j’avoue ne pas comprendre pourquoi mais en tout cas ça fonctionne…. Aussi je me permet de la diffuser.
Je suis en python 3 sur un raspi 2
def RecupTemp (fic):
fich=open(fic)
temp = fich.read()
time.sleep(0.5)
fich.close
while len(temp)<60: #74
fich=open (fic)
temp = fich.read()
fich.close
print("erreur",fic)
temp = temp.split("\n")[1]
temp =temp.split(" ")[9]
temp =float(temp[2:])
temp = round(temp/1000,1)
return temp
fic est l’adresse de la sonde que l’on trouve ici
sys/bus/w1/devices/28-xxxxxxxxxxx/w1_slave
et donc a chaque erreur il affiche la sonde incriminé mais le temp retourné est toujours valable .
Voila ce n est pas très élégant mais j espère que cela pourra servir à quelqu’un
cordialement
Jacques B