RaspFR :: Forum

Version complète : Problème d'identification de sonde de température DS18B20 [Résolu]
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour,

Sur mon raspberry, sont branchées 3 sondes de température DS18B20 en 1Wire.

Voici un bout de code python qui récupère la valeur de la température sur les 3 sondes. Il fonctionne mais le répertoire "/sys/bus/w1/devices/28-800000038a0d/w1_slave" dont le nom est l’identifiant de la sonde se transforme en "28-380000000000" et on ne peut plus rien lire puisque ça ne correspond plus à rien.(même chose pour les deux autres répertoire relatif au deux autres sondes)

Si je reboote le RPi, ça fonctionne pendant quelques lectures et le changement de nom intervient intempestivement.

Le 1Wire mesure un bonne vingtaine de mètre : Faut-il revoir la valeur de la résistance (4,7k) ?
J'ai lu sur un forum que "ça arrive...." sans explication.....
Si quelqu'un à des info, je suis preneur !!!!!

Merci

Code :
[== C++ ==]
def lireFichierTemperature(Fichier):            # lecture
    f = open(Fichier, 'r')
    lignes = f.readlines()
    f.close()
    return lignes

def LireTemperature(Capteur):               # extraction de la temperature
    lignes = lireFichierTemperature(Capteur)
    while lignes[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lignes = lireFichierTemperature(Capteur)
    equals_pos = lignes[1].find('t=')
    if equals_pos != -1:
        temp_string = lignes[1][equals_pos+2:]
        temp_c = float(temp_string) / 1000.0
    return temp_c  

lcd.set_cursor(0,3)
lcd.message("In")
temp = str(LireTemperature("/sys/bus/w1/devices/28-0415915c80ff/w1_slave"))
lcd.message(temp[0:-2])

lcd.set_cursor(7,3)
temp = str(LireTemperature("/sys/bus/w1/devices/28-800000038a0d/w1_slave"))
lcd.message("Ex")
lcd.message(temp[0:-2])

lcd.set_cursor(14,3)
temp = str(LireTemperature("/sys/bus/w1/devices/28-0415916583ff/w1_slave"))
lcd.message("Pi")
lcd.message(temp[0:-2])
les répertoires sont créés sous un autre nom ?
J'ai avancé. en ne branchant qu'un capteur, ça fonctionne. deux aussi.
le 3eme capteur fait chuter la tension du 1Wire et fait planter le RPi qui n'identifie plus les sondes.
Donc un problème matériel.
Reste à changer le 3eme capteur.
Pour l'instant le temps me manque....
salut,

tu devrais faire un test croisé avec tes sondes pour voir si ce n'est pas une d'elle qui pose probleme.

ensuite,si c'est pas deja fait, fais le test sans les 20m de cable
Merci pour ces conseils.
J'ai lu qu'il est possible d'alimenter les sondes indépendamment, mais avec une masse commune..... je vais essayer ça aussi....
j'en suis la aussi avec mes relais ssr, j'ai commandé diodes et transistor pour faire le montage

si ca peut aider voici le schema que je suis : http://electronics.stackexchange.com/que...th-arduino
j'utilise une carte relais avec optocoupleur tout fait pour un prix dérisoire !

http://www.ebay.fr/sch/sis.html?_nkw=5V+...2749.l2658
Bonsoir,

@passemoilaclede12: Peux-tu fournir le câblage exact entre le RPi et les 3 sondes car, sauf erreur de ma part, 2 alternatives se présentent; à savoir:
  • le mode "normal" (pour le DS1820)
  • le mode "parasite" (pour le DS18B20)
Cf. Le bus 1-WIRE
Bonjour Clauduis,

Les trois capteurs sont en mode Normal.
la broche 4 du gpio correspond au bus 1wire des capteurs. j'alimente les capteurs en 5V.
Entre la broche 4 du gpio et le bus de données 1wire j'ai interposé un adaptateur de tension 5V <--> 3,3V .
salut,

pourquoi changer la tension?

sur le 1 wire, sauf erreur de ma part, tu utilises 3 broches, GND, data et vcc

vcc sur le +5, data sur ton gpio 1 wire et gnd sur le gnd

à moins que j'ai loupé un truc...?
Bonjour,
wared a écrit :pourquoi changer la tension ?
Entièrement d'accord, c'est aller au devant des problèmes; toujours rejoindre une solution qui à priori fonctionne...
(cf. DS18B20: Connexion au Raspberry Pi qui utilise en plus le GPIO #4 ;-)

Si toujours pas ok, je réduirais fortement la longueur des 20 mètres, brasserais les 3 sondes comme cela a été suggéré pour éventuellement isoler la coupable, enfin tout le bon sens habituel avant de se lancer dans des réalisations "très" personnelles

NB: Après, il est possible qu'il y ait un problème logiciel...
Bonjour,
Pour répondre à Wared : 3 broches, GND, data et vcc : le GPIO fonctionne en 3,3V, j'ai lu qu'en 5V les sonde répondaient mieux (moins de parasite)
je me sers d'un convertisseur 3.3v 5v à 4 voies, deux pour le bus i2c, il m'en restait pour le 1Wire.... de plus ça protège le Rpi.
Pour répondre à Claudius : le Rpi est dans la maison et pour mesurer la température de la piscine il me faut 20m
J'ai résolu mon problème :
1 - j'avais une chute de tension au bout de 20m, de plus je me servais de ces 5V pour alimenter différent truc qui consommaient et peut être, faisaient chuter la tension : j'ai installé une alim 5V à l'autre bout des 20 m
2 - la sonde piscine trempait depuis 1 an dans le skimmer, je pense que malgré la gaine thermo, l'eau a pénétré.... j'ai changé la sonde en la faisant passer par un presse-étoupe. la partie inox est en contact avec l'eau, pas le fil.
Suite à ces modifications je retrouve un fonctionnement normal.
Merci pour vos interventions.
J'aurais du être plus précis dans ma demande : ces sondes fonctionnaient depuis une bonne année. Mon problème de répertoire était une panne.
La cause : une sonde défectueuse mais qui s'est mise à dysfonctionner par intermittence.... d"où mon PB.
Bonsoir,

On est content pour toi, mais effectivement, si tu avais commencé au 1st post par "... ces sondes fonctionnaient depuis une bonne année ...", et après nous présenter des points très techniques cela aurait facilité les choses ... il faut attendre le post #12 pour savoir que c'est une installation qui a déjà fonctionné ...

NB: Je vais reprendre ma formule de 10 ans de support et qui peut parfois déplaire; à savoir: Cela a-t'il déjà fonctionné ?