Go Down

Topic: latence lecture de température dans loop (Read 705 times) previous topic - next topic

inryjo

Bonjour à tous,
Je suis un petit nouveau sur le forum et sur l'utilisation d'arduino donc la réponse à mon problème peut sembler évidente, ne m'en tenez pas rigueur...
Mon projet est de faire un tableau de bord type moto, c'est encore pas 100% fonctionnel mais j'ai quand même bien avancé dessus malgré mon petit niveau.
Là ou je bloque c'est que je voudrais un meilleur rafraichissement de mes données, or, c'est conditionné par la lecture de température dans mon loop (bibliothèques onewire et dallastemperature).
D'après mes lectures, c'est normal car il faut environ 700ms pour le traitement de la température.
Sachant que je peux me permettre une mise à jour toutes les secondes de la température, existe-t-il la possibilité de faire un appel de la lecture dans ma boucle principale sans attendre la réception de ma variable ?
J'espère avoir été assez clair...

infobarquee

bonjour,
quel type de dallas?
quelle résolution?
AUCUNE AIDE PAR MP

B83s

Je suppute une Ds18b20 ...

Il y a la fonction .waitforconversion(booléen) dans la librairie DallasTemperature ... Si tu lui passes false en argument, le programme ne s'arrête pas quand tu demande une mesure de la température (request)... Mais avant de venir lire la mesure (gettemperature) il faudra s'assurer qu'un temps suffisant se soit écoulé sinon ça ne marchera pas

inryjo

Oui DS18B20, pour la résolution j'imagine que c'est quelque part dans une de librairies ?
Toujours est-il que sa latence de refresh ne me pose un pb que parce que ma boucle en dépend c'est pour ça que s'il existe une solution pour ne plus faire dépendre ma boucle de cette latence, ça me va.
Je peux conditionner mes autres opérations à 25ms pour laisser le temps à la lecture, est-ce suffisant ?
Merci

Artouste

#4
Feb 14, 2016, 09:06 pm Last Edit: Feb 14, 2016, 09:06 pm by Artouste
bonsoir
ce qui prend vraiment du temps , c'est le temps entre une demande de conversion et mise à disposition de la valeur (jusqu'à 750 ms en 12 bits)
ce qu'il faut faire c'est lire la valeur et lancer une demande de conversion
et ne revenir lire le resultat qu'au bout d'une tempo > à 750 ms.

regarde ce post

infobarquee

AUCUNE AIDE PAR MP

B83s

#6
Feb 14, 2016, 09:14 pm Last Edit: Feb 14, 2016, 09:15 pm by B83s
Oui la résolution peut se fixer par la fonction setResolution de la librairie DallasTemperature (c'est le plus pratique)

Par contre il faut vérifier dans les datasheet mais 25 ms entre le request et le gettemp me semble trop court ... A 9bits de résolution il doit falloir au moins 100ms, a 12 bits c'est 750ms

 EDIT ... Me suis fait griller 2 fois!

infobarquee

question comme ca, tu veux faire un tableau de bord style moto, ok.
mais pour quel usage?
tu pourrait prendre une thermistance, si pas besoin des négatifs.
en plus elle encaisse plus de 400C je crois et toute petite.
pas de latence de lecture.
AUCUNE AIDE PAR MP

inryjo

oups j'ai dit 25ms mais en fait c'était 0.25s
moto, pour un usage sur circuit, assez ponctuel pour plus tard faire une acquisition de données
et si je m'étais basé sur une sonde numérique c'est car à la base j'avais commencé le projet sur raspberry avant de me rendre compte que finalement la partie gestion des capteurs serait plus simple à mettre en œuvre sur arduino
et effectivement passer sur une sonde analogique pourrait aussi contourner le problème
merci en tout cas pour votre réactivité

BrUnO14200

C'est pour les tr/min et la vitesse que c'est chiant ?
Gimball home made  :https://forum.arduino.cc/index.php?topic=644439.0

inryjo

C'est pour les tr/min et la vitesse que c'est chiant ?
Oui, j'ai changé la résolution de ma sonde à 9 bits, c'est déjà beaucoup mieux à part que ma température a un peu perdu en précision (environ un degré de plus) mais ce n'est pas bien grave, ça me sert juste à voir si mon moteur ne surchauffe pas.

BrUnO14200

Ton capteur de vitesse et de régime moteur fonctionne ou tu les "simules" pour l'instant ?
Gimball home made  :https://forum.arduino.cc/index.php?topic=644439.0

Go Up