Enregistreur de temperature à base de DS18B20

Conseils et outils pour réguler votre installation...

Modérateurs : ramses, Balajol, monteric, ametpierre, j2c

LICHTENBERGER
Newbie
Newbie
Messages : 44
Enregistré le : jeu. août 13, 2009 22:15 pm
Localisation : 69 Francheville
Contact :

Message par LICHTENBERGER »

Avec un compilateur C, ou d'autres compilateurs basic, on a peut-être une meilleure optimisation. Mais avec le Proton+ que j'ai, d'abord il charge tout un tas de librairies dont une petite partie seulement est utilisée et ensuite, on constate des redondances et des bouts de code complètement inutiles.
Il est probable que le ratio ASM/BAS soit moins désavantageux quand la taille du code s’accroit. Mais au début où j'avais commencé par utiliser le Proton pour faire la gestion d'écran, le code produit était 4 fois celui produit avec ma bibliothèque habituelle.
Il est vrai que quand on a la place, ça importe peu.
Mais de toute façons pour le debug, je suis nettement plus à l'aise avec mon asm qu'avec celui produit par le compilateur.

Avatar du membre
richardel
Maitre Solaire
Maitre Solaire
Messages : 824
Enregistré le : dim. juin 29, 2008 23:02 pm
Localisation : Verviers Belgique

Message par richardel »

je te rejoins tout a fait, Lichtenberger.

Le plus gros programme que j'ai fait en assembleur tournait autour des 3000 octets. Un projet d'une complexité équivalente tenait tout juste dans les 8k d'un AT89S8252 (a l'époque) avec le compilateur bascom (qui, il faut le dire, n'est pas un compilateur "optimisé").

Très bien ton article (et je vois que le surgélateur fonctionne bien :lol: )
Dommage que je ne suis pas un amateur de PIC sinon ton programme assembleur m'aurait intéressé.
mais je ne suis pas habitué a ces mnémoniques.
En lisant ton listing, tu me donne vraiment envie d'en refaire, de l'assembleur.
:roll:

Amitiés
L'important n'est pas la température de l'eau solaire, c'est le nombre de KWh engrangé.

LICHTENBERGER
Newbie
Newbie
Messages : 44
Enregistré le : jeu. août 13, 2009 22:15 pm
Localisation : 69 Francheville
Contact :

Message par LICHTENBERGER »

J'ai un peu avancé dans le programme en ajoutant le traitement de 2 sondes sur le bus.
Le source ( http://sylvain.lichtenberger.perso.sfr.fr/Thermo.ASM ) contient ce traitement.

Amicalement

SL
Modifié en dernier par LICHTENBERGER le mer. juin 15, 2011 11:08 am, modifié 1 fois.

Forhorse
Etudiant Solaire
Etudiant Solaire
Messages : 278
Enregistré le : lun. févr. 08, 2010 14:42 pm
Localisation : 61 - Perche

Message par Forhorse »

C'est quand même dommage d'acheter un compilateur à plus de 200€ et de ne pas l'utiliser en continuant à écrire ses programmes en assembleur non ?

EDIT :

Bon alors j'ai perdu un peu de temps ce matin à essayer de faire la même chose en BASIC sous Proton+
Le résultat est normalement très proche, j'ai testé sous simulateur ça fonctionne (sauf qu'il me trouve toujours un DS18B20 même s'il est pas branché, mais c'est sans doute un bug du simulateur)
J'ai pas reussit à compiler ton ASM sous MPLAB pour comparer, il me sort une liste d'erreur de 3 pages...
Donc voilà ce que ça donne de mon côté :
http://www.stable-boy.net/uploads/Lichtenberger.bas
http://www.stable-boy.net/uploads/LICHTENBERGER.hex
Une fois compilé il utilise 762 mots de ROM et 38 de RAM (on peut sans doute faire mieux, mais j'ai pas le temps d'optimiser)
Quelle place occupe le tiens en assembleur ?

EDIT2 :
En simplifiant un peu l'affichage du code, je descend à 747 en ROM et 35 en RAM
Modifié en dernier par Forhorse le jeu. juin 02, 2011 12:00 pm, modifié 2 fois.

LICHTENBERGER
Newbie
Newbie
Messages : 44
Enregistré le : jeu. août 13, 2009 22:15 pm
Localisation : 69 Francheville
Contact :

Message par LICHTENBERGER »

Oui, mais c'est un achat qui remonte à 2003, à une époque ou je faisais du développement sur des programmes ne nécessitant pas de se plonger dans l'assembleur et qui étaient vite réalisés avec ce compilateur.

Je l'utilise encore parfois quand j'ai besoin de calculs un peu complexes ou avec fonctions mathématiques.

Pour assembler avec MPLAB, il faut cocher "disable case sensitivity"

Sinon, comme je ne mets pas toujours les majuscules aux mêmes endroits, ça génère plein d'erreurs.

De plus, il faut n’afficher que les erreurs car si on laisse les warnings, il y en a un par ligne à cause de la tabulation que je ne respecte pas.
Modifié en dernier par LICHTENBERGER le mar. juin 14, 2011 14:50 pm, modifié 1 fois.

gaby
Etudiant Solaire
Etudiant Solaire
Messages : 222
Enregistré le : lun. mai 01, 2006 21:21 pm
Localisation : gardanne (13)

Message par gaby »

Bonjour
j'utilise un M3 pour réguler mon chauffage, mais les PIC et le 1 wire m’intéresse pour la régulation du solaire

moriss
Etudiant Solaire
Etudiant Solaire
Messages : 291
Enregistré le : mar. juil. 13, 2010 17:48 pm
Localisation : lyon

Message par moriss »

je suis aussi ce sujet avec interet

M3 et sonde à la maison

LICHTENBERGER
Newbie
Newbie
Messages : 44
Enregistré le : jeu. août 13, 2009 22:15 pm
Localisation : 69 Francheville
Contact :

Message par LICHTENBERGER »

[quote="Forhorse"]
J'ai pas reussit à compiler ton ASM sous MPLAB pour comparer, il me sort une liste d'erreur de 3 pages...
Donc voilà ce que ça donne de mon côté :
http://www.stable-boy.net/uploads/Lichtenberger.bas
http://www.stable-boy.net/uploads/LICHTENBERGER.hex
Une fois compilé il utilise 762 mots de ROM et 38 de RAM (on peut sans doute faire mieux, mais j'ai pas le temps d'optimiser)
Quelle place occupe le tiens en assembleur ?

[/quote]

Pour les erreurs, voir le "case sensitive". Ca se compile sans problème.
L'ordre des commandes pour les deux sondes n'était pas le bon, c'est pour ça que je ne voyais plus de sondes après la commande 55h.

En rajoutant la gestion de deux sondes en parallèle, mon .hex fait 640 mots et utilise un peu plus de 40 mots de RAM.
Mais je n'ai optimisé ni le code, ni les variables. Tant que j'ai la place, à chaque nouvelle variable introduite, je ne me pose pas la question de la mettre public ou local.
En recompilant ton code (remplacé BOREN par BODEN et HS par XT car ma maquette a un quartz) avec ajout du traitement des deux sondes, j'arrive à 977 mots de programme et 38 variables.
C'est vrai que ça ne fait pas grande différence ici. Mais bon, je suis plus habitué à récupérer mes routines en ASM qu'en Basic.

Et puis, quand je mets à disposition mes programmes, les utilisateurs peuvent les modifier sans avoir besoin d'un compilateur.

Avatar du membre
richardel
Maitre Solaire
Maitre Solaire
Messages : 824
Enregistré le : dim. juin 29, 2008 23:02 pm
Localisation : Verviers Belgique

Message par richardel »

Bonjour a tous,

C'est tout a fait normal qu'un programme compilé prenne plus de place qu'en assembleur. Il faut bien une "zône" d'échange d'information commune entre deux instructions.
Par exemple, si une instruction donne le résultat dans l'accumulateur (c'est pas une batterie :razz: ) et que l'instruction suivante traite ce qu'il y a dans un registre, il faut bien un "move accumulateur vers registre" même si l'instruction suivante remet la donnée dans l'accumulateur un peu après.
Par contre, en assembleur...

Il existe, aussi, des compilateurs qui, a la fin du traitement, recherche des lots d'instructions communes et en font une sous-routine (ca fait un fameux cafarnaüm au sein de la mémoire :mad: mais ca peut économiser quelques octets tout en gardant un code source parfaitement lisible).

mais rien ne donnera autant de plaisir pour un électronicien que la programmation assembleur (on a l'impression de contrôler le coeur même du composant) :cool:

Heureux que ton problème soit résolu et que tes ds18b20 t'obéissent au doigt et a l'oeil. :cool:

Amitiés
L'important n'est pas la température de l'eau solaire, c'est le nombre de KWh engrangé.

LICHTENBERGER
Newbie
Newbie
Messages : 44
Enregistré le : jeu. août 13, 2009 22:15 pm
Localisation : 69 Francheville
Contact :

Message par LICHTENBERGER »

Après quelques jours passés à l'étranger, je reviens sur le sujet.

L'étude préliminaire du 18B20 montre un composant précis et peu couteux qui en tant que "One wire" simplifie grandement le câblage puisqu'on peut mettre autant de ces sondes qu'on veut sur un seul fil (en respectant toutefois les recommandations du constructeur).

Séduisant donc pour par exemple analyser la stratification des températures dans un ballon qui peut nécessiter une quinzaine de sondes.

Reste la mise en œuvre.

En théorie, un simple port d' E/S suffit.
Je ne connais pas les possibilités du M3 mais on peut imaginer qu'il sache gérer un bus One_wire.
Si ce n'est pas le cas, il peut utiliser une pinuche en entrée TOR une autre en sortie TOR, une éventuelle en aiguillage du bus E ou S.

Mais il faut gérer les timings de fonctionnement de ce bus à quasi la microseconde près.

Une autre solution serait une interface faisant l'acquisition des sondes et ressortissant les infos sous forme analogique, 0/4,096V avec un DAC7611 (dont le coût est selon la quantité de 10 à moins de 1€).

Le seul inconvénient du bus One_wire est que chaque sonde est identifiée par un numéro de série unique (il faut bien un moyen de reconnaître chaque composant placé en parallèle sur le bus).

Il faut donc un moyen de lire ce N° de série et de l'intégrer dans la logique de traitement. C'est assez simple à faire, mais à recommencer si on change une sonde qui deviendrait défectueuse.

S'il y a des utilisateurs du M3 qui veulent se lancer dans l'aventure, je suis près à entamer une discussion, voir développer une interface Sondes/M3; caractéristiques à définir (comme certain l'on peut-être constatés, tous mes travaux sont mis à disposition, libres de droits).

Rappel du projet test : http://sylvain.lichtenberger.perso.sfr.fr/DS18B20.htm

A suivre...

andre44
Newbie
Newbie
Messages : 14
Enregistré le : lun. nov. 15, 2010 11:24 am
Localisation : Yvoi (18)

Message par andre44 »

Bonjour,

Je ne pense pas qu'il soit possible de lire le One wire sur le M3. Le seul moyen
serait de transformer le résultat des 18B20 en tension 0/*10V puis de lire cette tension avec une entrée M3.
Sachant que l'on n'a pas besoin de l'ensemble des T° pour faire fonctionner l'installation solaire, je pense que l'on devrait balancer les infos de T° sur une base de données type Mysql et transformer uniquement les T° capitales pour le M3.
J'ai un ballon équipé de doigts de gants sur toute la hauteur et un M3.

A vous lire

Avatar du membre
richardel
Maitre Solaire
Maitre Solaire
Messages : 824
Enregistré le : dim. juin 29, 2008 23:02 pm
Localisation : Verviers Belgique

Message par richardel »

L'étude préliminaire du 18B20 montre un composant précis et peu couteux qui en tant que "One wire" simplifie grandement le câblage puisqu'on peut mettre autant de ces sondes qu'on veut sur un seul fil (en respectant toutefois les recommandations du constructeur).

Séduisant donc pour par exemple analyser la stratification des températures dans un ballon qui peut nécessiter une quinzaine de sondes.
très bon résumé qui regroupe tous les avantages de ces sondes.
Moi j'en ai mis 9 sur la hauteur des cuves pour l'analyse de la stratification.

Pour le M3, (et sans connaitre cette machine) je suis d'accord avec andré44, le bus 1W n'est pas suffisamment "universel" pour le retrouver sur ce genre de machine.
L'entrée 0-10V est connue et a été mainte fois utilisée par patrick07. J'ai même souvenance d'un convertisseur prévu pour une dizaine de pt1000 avec une sortie 0-10V avec un multiplexage.
Il a aussi une interface RS232 mais j'ignore si elle peut servir dans un programme.
Peut-être que patrick07 (qui connait bien le M3) pourra donner quelques précisions sur ses possibilités.

Amitiés
L'important n'est pas la température de l'eau solaire, c'est le nombre de KWh engrangé.

Avatar du membre
patrick07
Maitre Solaire
Maitre Solaire
Messages : 1869
Enregistré le : lun. avr. 03, 2006 11:07 am
Localisation : Sud Ardèche -07- St Germain
Contact :

Message par patrick07 »

Bonsoir,

On avait déjà parlé quelque part de l'intérêt de brancher des sondes 1Wire sur un automate, pour arriver à la conclusion que c'était une idée complètement farfelue.

Transformer un signal analogique (la température) en un signal numérique (par le convertisseur intégré au 18b20), l'envoyer sur le bus 1Wire, le lire avec un petit microcontroleur et enfin le retransformer en 0/10V (pas forcément facile à faire sans un minimum de composants autour du micro)... et on repart pour un tour: conversion analogique/digitale par le convertisseur du M3, traitement et enfin...etc... Pas très logique tout ça !!! :-x
Patrick

[url=https://ard-tek.com/index.php/forum/sujets-recents]Le forum du MaxiSun[/url]

LICHTENBERGER
Newbie
Newbie
Messages : 44
Enregistré le : jeu. août 13, 2009 22:15 pm
Localisation : 69 Francheville
Contact :

Message par LICHTENBERGER »

Oui, un automate qui intègre le One_wire serait préférable.

Mais malgré les multiples conversions AD/DA le dispositif peut garder quelques avantages.

- La précision (calibrée en usine) des sondes permet au départ une mesure à 0,125° près. Le DAC7611 est un convertisseur DA 12 bits (8 broches DIL, entrée série), on conserve la précision.
- le bus (3 fils seulement) étant numérique, pas de perturbations en ligne (à condition de respecter les consignes d'installation ce qui ne pose pas de problème).
- On peut mettre le nombre de sondes dont on a besoin sur ce bus sans limite autre que le temps de d'acquisition (une seconde pour lancer la conversion, au plus quelques millisecondes pour lire chacune des sondes).
- le coût d'une sonde (1 à 2€ pour un achat unitaire) est plus que supportable.
- La platine de traitement comportera un contrôleur, un convertisseur NA quelques composants annexes le tout pour moins de 20€. Même en en ajoutant autant pour l'alimentation, le circuit imprimé et le bornier, le coût n'est pas en faveur des PT1000.
- Par ailleurs, on peut imaginer que le M3 utilise par exemple 4 sorties TOR et une entrée analogique pour lire 16 sondes (avec 5 sorties on en lit 32 etc...) ce qui au final réduit pas mal le coût.

Bref, au final, l'ensemble n'est pas l'usine à gaz que l'on peut imaginer.
Une seule platine, un bornier d'une douzaine de connections (3 pour le bus, 5 ou 6 vers l'automate, 2 pour l'alimentation) et le tour est joué.

Je dirai pour résumer que si pour une petite installation (moins de 8 à 10 sondes) les PT1000 se justifient, pour une plus importante ou pour un pilotage plus fin nécessitant plus de sondes, la question du bus 1_wire n'est peut-être pas aujourd'hui si farfelue que ça.

Annexe pour les automaticiens
Malgré l'arrivée les bus Fipway, Modbus et autres, beaucoup d'appareils restent pilotés en boucle de courant 4-20mA.
A fins d'études, j'avais réalisé un générateur de courant (continu, échelon ou rampe) qui utilise le DAC7611.
Ce dispositif est décrit ici :
http://lichtenberger.s.free.fr/GeneCourant.htm
Il y a le schéma, la réalisation et le programme qui montre entre autres comment gérer le DAC7611.

A suivre...

Forhorse
Etudiant Solaire
Etudiant Solaire
Messages : 278
Enregistré le : lun. févr. 08, 2010 14:42 pm
Localisation : 61 - Perche

Message par Forhorse »

A mon avis on a autant avantage à utiliser des PT100/1000 avec une liaison en 4/20mA

Après si on a effectivement besoin de plus de sonde qui justifie un bus genre 1Wire, autant se faire soit même son automate et oublier le M3, exactement comme l'a fait richardel.
Parce que je suis d'accord avec patrick07, ces multiples conversions et l'usine à gaz qui en résulte ne rime à rien. (surtout que de toutes façon le M3 n'a pas la capacité de traiter un nombre important de sondes, quelque soit la nature du signal d'origine)

Répondre

Retourner vers « Régulation »