Raspberry pico: anomalie 1ère lecture température

Envie d'ajouter des fonctions à votre Raspberry Pi ? Faites un tour sur ce forum...

Modérateur : Francois

Répondre
VincentLeboulou
Messages : 35
Enregistré le : jeu. 19 oct. 2017 10:11

Raspberry pico: anomalie 1ère lecture température

Message par VincentLeboulou » mer. 17 févr. 2021 16:10

Bonjour.
je teste le capteur de température du raspberry pico en assembleur. Mais j'ai toujours une première mesure totalement aberrante.
J'ai mis une temporisation de 100ms après l'initialisation de la mesure puis j'ai testé le bit ready du registre CS mais rien à faire.
Quelqu'un aurait-il déjà testé ce capteur ?
Exemple :
debutADC
resultat
Valeur du registre : 0000004B
retourFinal2
Valeur du registre : 00000FB5
Température (en dizième de degrés) = 4021
Entrez une commande :
temp
debutADC
resultat
Valeur du registre : 00000372
retourFinal2
Valeur du registre : 000000F3
Température (en dizième de degrés) = 243
Entrez une commande :

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Raspberry pico: anomalie 1ère lecture température

Message par Artemus24 » mer. 17 févr. 2021 22:10

Salut Vincent.

Je ne possède pas encore ce Raspberry Pi Pico.

Il y a deux choses à savoir :
1) tu dois avoir un étalonnage à faire avant de mesurer la température.
2) tu dois faire conversion car ce que tu mesures n'est pas la température mais plutôt un voltage.

Dans la documentation du RP2040 Datasheet, au paragraphe 4.9.4 Temperature sensor, il st dit :
4.9.4. Capteur de température
Le capteur de température mesure la tension Vbe d'une diode bipolaire polarisée, connectée au cinquième canal ADC (AINSEL = 4). En règle générale, Vbe = 0,706 V à 27 degrés C, avec une pente de -1,721 mV par degré. Par conséquent, la température peut être approximée comme suit:
T = 27 - (tension_ADC - 0,706) / 0,001721
Comme la pente Vbe et Vbe peut varier sur la plage de température et d'un appareil à l'autre, certains étalonnages utilisateur peuvent être nécessaire si des mesures précises sont nécessaires.
La source de polarisation du capteur de température doit être activée avant utilisation, via CS.TS_EN. Cela augmente la consommation de courant sur ADC_AVDD d'environ 40 μA.
Tu trouveras la documentation à ce lien.

Voici un programme que j'ai trouvé sur google :

Code : Tout sélectionner

from machine import Pin
from utime   import sleep
from machine import UART

led         = Pin(,Pin.OUT)
uart        = UART(0, 9600)
sensor_temp = machine.ADC(4)

while true;
	read_value = Sensor_Temp.read_u16() * (3.3 / (65535))
	temperature = round(27 - (read_value - 0.706) / 0.001721), 2)
	print (temperature)
	uart.write('Temperature : ' + str(temperature) + ' degrees C /r/n')
	led(1)
	sleep(0.5)
	led(0)
	sleep(3)
Je pense que cela pourra t'aider à résoudre ton problème.

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

VincentLeboulou
Messages : 35
Enregistré le : jeu. 19 oct. 2017 10:11

Re: Raspberry pico: anomalie 1ère lecture température

Message par VincentLeboulou » jeu. 18 févr. 2021 15:05

Bonjour Arthemus.
Merci de ta réponse mais pour programmer le pico en assembleur j'ai déjà du éplucher toute la documentation de la datasheet du rp2040.
Le programme exemple que tu indiques concerne-t-il bien le pico car un des facteurs de la conversion indiqué est bien différent des exemples donnés avec le pico.
Mais après de nombreux tests, je pense que j'ai oublié une étape lors de la première mesure (soit un mauvais bit positionné soit un mauvais registre).
Pour l'instant, je ne tiens pas compte de la 1ère mesure et ça me va.
Tu devrais investir dans le pico pour 5 € car tu peux gérer sans interdiction tous les registres du Gpio et cela résoudrait ton problème d'accès pour ta bibliothèque !!!
Bon il y aurait peut être d'autres soucis !!
Cordialement.

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Raspberry pico: anomalie 1ère lecture température

Message par Artemus24 » jeu. 18 févr. 2021 21:08

Salut Vincent.
VincentLeboulou a écrit :Tu devrais investir dans le pico pour 5 €
Le RPi Pico est en rupture de stocke pour une durée de quinze semaines chez Kubii.
Je vais certainement investir dans un RPi Pico quand ils seront disponible à nouveau.

Le programme concerne bien la Raspberry Pi Pico.
Il s'agit du capteur de température qui est inclus dans le Pico, et non d'un capteur comme le DS18B20.

Je suppose que c'est "3.3 / (65535)" qui te pose problème.
Quand tu lis la mesure faite par le RPi Pico, cela te retourne une valeur comprise entre 0x0000 et 0xFFFF.
Cette valeur est la transcription numérique de la mesure analogique du capteur de température.
Cela correspond à la mesure d'un voltage (en transcription numérique), qui normalement est comprise entre 0Vcc (0x0000) et à 3.3Vcc (0xFFFF).
D'où la conversion pour l'exploiter par la suite en volt.

On peut se poser un question, pourquoi transcrire cela sous 16 bits alors que le ADC fait la mesure sous 12 bits ? Mystère de micro python !

Par la suite, tu as un correctif à faire pour obtenir la température à partir des volts :

Code : Tout sélectionner

temperature = round(27 - (read_value - 0.706) / 0.001721), 2)
que tu retrouves dans la documentation officielle.

--> https://www.twilio.com/blog/programming ... icropython

J'espère que mes explications sont claires. :D
VincentLeboulou a écrit :tu peux gérer sans interdiction tous les registres du Gpio et cela résoudrait ton problème d'accès pour ta bibliothèque !!!
C'est dans les raspberry pi que je désire accéder aux registres et non dans la RPi Pico.

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Répondre

Retourner vers « Les cartes d'extension pour les Raspberry Pi »