| Panoramic affiche la température ambiante. | |
|
+3Jean Claude Jicehel loulou08 7 participants |
Auteur | Message |
---|
loulou08
Nombre de messages : 63 Age : 81 Localisation : Champagne-Ardenne Date d'inscription : 16/05/2010
| Sujet: Panoramic affiche la température ambiante. Sam 19 Oct 2013 - 19:53 | |
| Bonjour a tous Avec la carte Arduino Uno et un Module Capteur de température analogique linéaire LM35. Le programme Panoramic ce décompose en trois parties Température_ambiante.bas et en #include "Afficheur.bas" et "com_serie.bas" la DLL_Panoramic\IO_Acces_COM.dll : paramétrage du port série suivant configuration Le programme Arduino a été trouvé sur le web. Sur le site [url= http://www.matbra.com/en/2012/09/23/sensor-de-temperatura-com-arduino-e-lm35-arduino-lm35/ ] - Code:
-
' Température ambiante avec include
error_french label err on_error_goto err width 0,1000:height 0,600:color 0,160,120,60 top 0,(screen_y-height(0))/2 left 0,(screen_x-width(0))/2 dim temp_cel$ temp_cel$ ="00.00" label Afficheur,sp_com,sp_fin gosub Afficheur gosub sp_com button 5:top 5,510:left 5,850:caption 5,"F I N" on_click 5,sp_fin on_close 0,sp_fin ' ====== end ' ====== #include "Afficheur.bas" #include "com_serie.bas" ' =====FIN======== sp_fin: timer_off 15:pause 40 dll_off:pause 100 terminate:return
' ======Error======= err: message "erreur "+str$(error_number)+" "+error_type$+" error_line "+str$( error_line) terminate :return ' =============
- Code:
-
' Afficheur.bas
' ====== Afficheur: container 9 :top 9,30:left 9,60: width 9,850:height 9,420:color 9,50,50,50 alpha 11:parent 11,9:top 11,1:left 11,10 caption 11,temp_cel$:font_color 11,0,255,0 font_bold 11:font_italic 11 :font_size 11,242 alpha 42:parent 42,9:top 42,310:left 42,220 caption 42,"Température ambiante":font_color 42,255,0,0 font_size 42,30 progress_bar 50:parent 50,9:top 50,370:left 50,20: width 50,800:height 50,30 min 50,0: max 50,40: position 50,val(temp_cel$) return ' ==================
- Code:
-
' com_serie.bas
sp_com: label sp_15,db_15 dim res%,dat%,donner$,memdonner$,r,rr timer 15:timer_interval 15,300: timer_on 15 dll_on "C:\DLL_Panoramic\IO_Acces_COM.dll" rem suivant configuration r= dll_call1("ComUsePort",8) rr= dll_call4("ComConfig",115200,8,1,0) pause 20 if r=1 and rr=1 on_timer 15,sp_15:' Réception else message "Défaut du port série" end_if return ' ========== sp_15:
timer_off 15 : pause 2 db_15: res% = dll_call1("ComGetDataIn",adr(dat%)):pause 10 if res%>0 donner$=donner$+chr$(dat%):goto db_15 end_if if memdonner$ <> donner$ temp_cel$=donner$ caption 11,temp_cel$ temp_cel$=left$(temp_cel$, 2) position 50,val(temp_cel$)
end_if donner$="":timer_on 15:retur
code arduino - Code:
-
/* http://www.matbra.com/en/2012/09/23/sensor-de-temperatura-com-arduino-e-lm35-arduino-lm35/ Nom: Matheus Bratfisch Date de naissance: 08/12/1989 Sexe: Masculin
Capteur_température_Arduino_LM35 Le capteur LM35 est un capteur de température , il sera variable aléatoire 10mV/Celsius . Il broches peut être vu sur l'image (attention , c'est un regard en bas)
LM35 Pins
Donc, pour le connecter à Arduino, vous devez vous connecter VCC pour Arduino 5V , GND à GND Arduino , et l'axe du milieu, vous devez vous connecter à une broche analogique , dans mon cas, j'ai utilisé A0.
Ce projet ne nécessite aucune résistance ou un condensateur entre l'Arduino et le capteur , donc suffit de le connecter . L'Arduino ADC a une précision de 10 bits , alors dans ce 5V / 2 cas ^ 10 = 5V / 1024 , de sorte que 0,0049 est notre facteur . Pour obtenir la température en degrés Celsius , nous obtenons la valeur et calcule comme suit:
Température = (broche * 0,0049 ) * 100
Mais pourquoi multiplier par 100 ? PIN * 0,0049 donnera les volts sur le port , si l'on multiplie par 1000 nous aurons millivolts sur le port , le capteur varie 10mV / C nous avons donc besoin de le diviser par 10 pour obtenir la température . En mathématiques multiplier par 1000 et diviser par 10 est le même que celui en multipliant par 100 . Comprendre ? [Ajouter le 12 /12]
Et pour l'avoir sur Fahrenheit , nous avons besoin de faire une conversion
TemperatureF = ( température * 1.8) + 32 .
Le code Arduino que j'ai utilisé est le suivant: */ // pour panoramic //' n° 201310191640
int analogPin = 0; int readValue = 0; float temperature = 0; float temperatureF = 0;
void setup() { Serial.begin(115200); }
void loop() { readValue = analogRead(analogPin); //Serial.println(readValue); temperature = (readValue * 0.0049); temperature = temperature * 100; // temperatureF = (temperature * 1.8) + 32; // Serial.print("Temperature: "); Serial.println(temperature); // Serial.println("C "); // Serial.print(temperatureF); // Serial.println("F"); delay(2000); }
| |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic affiche la température ambiante. Sam 19 Oct 2013 - 20:43 | |
| Merci Loulou08
Veux-tu essayer d'en faire un article avec des photos, explications détaillées et tout ? | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Panoramic affiche la température ambiante. Sam 19 Oct 2013 - 20:54 | |
| Merci loulou08,
je ne peut pas tester tes codes car je n'ai pas encore pris de décisions concernant la carte. Je me renseigne de partout, je teste mes maigres connaissances en électronique et en programmation et je pense que je vais craquer et faire le saut.
C'est super sympa de nous donner tes connaissances (et apparemment elles sont multiples).
Je conserve tout çà au frais pour un futur proche.
A+ | |
|
| |
loulou08
Nombre de messages : 63 Age : 81 Localisation : Champagne-Ardenne Date d'inscription : 16/05/2010
| Sujet: Re: Panoramic affiche la température ambiante. Dim 20 Oct 2013 - 10:06 | |
| Jicehel
J'ai bien des fichiers "jpg" il faut que je vois comment les mettre sur le forum (copie d'écran du logiciel " FRITZING"et photos )
Jean Claude
J'ai débuté arduino avec un logiciel de simulation de la carte uno. Il était limité dans le temps.Cela permet de voir. @+ | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic affiche la température ambiante. Dim 20 Oct 2013 - 11:07 | |
| Si tu ne souhaites pas faire d'article pour le mag, si tu veux, je m'en chargerais à partir de tes photos, tes sources et de tes explications et je me mettrais en co-auteur, histoire de voler un peu de ta gloire | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Panoramic affiche la température ambiante. Dim 20 Oct 2013 - 14:20 | |
| Pour faire plus simple, on peut remplacer la partie PANORAMIC par ces quelques lignes : - Code:
-
HEIGHT 0,180 : WIDTH 0,500 : FONT_NAME 0,"Arial Black" : FONT_SIZE 0,100 : FONT_COLOR 0,0,200,0 DIM a% , in% , txt$ , port%, vitesse% port%=1 : vitesse%=9600
DLL_ON "D:\ARDUINO UNO\Panoramic\IO_Acces_COM.dll" a%=DLL_CALL1("ComUsePort",port%) a%=DLL_CALL4("ComConfig", vitesse%, 8, 1, 0)
WHILE INKEY$="" a%=DLL_CALL1("ComGetDataIn",adr(in%)) IF a%=0 txt$=LEFT$(LTRIM$(txt$),5) PRINT_LOCATE 20,-25 : PRINT txt$ PRINT_LOCATE 420,-25 : PRINT "°" txt$="" ELSE txt$=txt$+chr$(in%) END_IF END_WHILE
TERMINATE
J'avoue qu'il est moins élaboré que celui de Loulou8, il n'y a pas de vérification erreur, pas d'interruption, etc... Mais l'intérêt c'est la simplicité, pour permettre de mieux comprendre le fonctionnement. | |
|
| |
loulou08
Nombre de messages : 63 Age : 81 Localisation : Champagne-Ardenne Date d'inscription : 16/05/2010
| Sujet: Re: Panoramic affiche la température ambiante. Lun 21 Oct 2013 - 19:41 | |
| Température_ambiante Le programme Panoramic Avec la carte Arduino Uno et un Module Capteur de température analogique linéaire LM35. @+ | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 21 Oct 2013 - 20:56 | |
| Voilà un exemple parlant... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic affiche la température ambiante. Lun 21 Oct 2013 - 21:39 | |
| Super Loulou. Tu essayes de faire l'article ou je m'en occupe ? | |
|
| |
loulou08
Nombre de messages : 63 Age : 81 Localisation : Champagne-Ardenne Date d'inscription : 16/05/2010
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 9:19 | |
| Jicehel tu peux commenter le programme et les programmes à venir. Pour moi il y a des choses qui semblent naturelles (déformation professionnelle oblige) (remarques de Minibug). je ne veux pas mettre la barre haute mais montrer ce que l'ont fait + | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 9:54 | |
| Ok loulou08, je m'occupe de la partie "pédagogique" et je te soumets l'article avant de le donner à Ygeronimi | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 22 Oct 2013 - 12:17 | |
| Si c'est pas beau çà ... Je suis sûr que l' on va avoir un superbe article. | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 12:52 | |
| Ce sera effectivement un bon article,
Perso je souhaite bien comprendre l'implication de Panoramic dans le déroulement car plus haut je vois trois codes pour gérer tout çà.
A+
PS: je viens de voir qu'il y a un #include, donc ma question ne tiens plus (Quoique) | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 13:04 | |
| OK Jean-Claude, pas de problème, on va bosser en équipe pour essayer de faire quelque chose de simple et clair Perso, j'ai compris le montage et les codes de loulou08. Il n'y a plus qu'à ... avoir du temps ... Normalement à partir de dimanche, j'en aurais un peu. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 14:22 | |
| si ca vous interesse j'ai posté un code le plus simple possible pour que tous le monde puisse comprendre...
Je dis ca, je dis rien !!! | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 15:27 | |
| J'ai vu Minibug et il fera parti du tuto De toute façon, je pense qu'il faut faire bosser Ygeronimi et rien n’empêchera à un tutorial d'être enrichi à partir des expériences, problèmes, commentaires, variantes, etc... que chaque personne souhaitera partager.... J'ai prêté mon petit pupitre de test à mon père, je le récupère samedi soir. Je commencerais donc à tester à partir de dimanche. Reste à me trouver un YM35... Je pense que je ferais bientôt une commande de matériel avec quelques composants (détecteur de lumière, LM35, ....) mais ça attendra un peu sauf si mon père m'en trouve un dans son matériel... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 15:55 | |
| tu peux aussi utilisé une thermistance qui fera tout aussi bien l'affaire. en pensant a rajouter une résistance sur le GND.
De mémoire la thermistance doit être de 4,7Ko et la résistance doit être de 10K.
Bon Amusement. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 17:32 | |
| Bon du coup, je rajoute quelques infos pour ceux comme moi qui ne maitrisent pas les thermistances. Je décortiquerais plus tard... Thermistance: Les principaux capteurs de température utilisés en électronique sont basés sur la loi de variation de la résistance électrique en fonction de la température. On distingue deux types de thermistances : les CTN et les CTP mais il existe aussi les CCTPN. Caractéristiques typiques d'une CTN et d'une CTP Symbole: Il est basé sur celui d’une résistance : CTN: Les CTN (Coefficient de Température Négatif, en anglais NTC, Negative Temperature Coefficient) sont des thermistances dont la résistance diminue de façon uniforme avec la température. CTP : Les CTP (Coefficient de Température Positif, en anglais PTC, Positive Temperature Coefficient) sont des thermistances dont la résistance augmente avec la température. On distingue les thermo-résistances (augmentation continue et régulière de la résistance avec la température, voir ci-dessus) des CTP dont la valeur augmente fortement avec la température dans une plage de température limitée (typiquement entre 0 °C et 100 °C). Schéma: Source: http://bildr.org/2012/11/thermistor-arduino/Code fonctionnel pour donner une température grâce à une thermistance de 4.7kOhms : - Code:
-
#include <math.h>
double Thermistor(int RawADC) { // Inputs ADC Value from Thermistor and outputs Temperature in Celsius // requires: include <math.h> // Utilizes the Steinhart-Hart Thermistor Equation: // Temperature in Kelvin = 1 / {A + B[ln(R)] + C[ln(R)]^3} long Resistance; double Temp; // Dual-Purpose variable to save space. Resistance=((10240000/RawADC) - 10000); // Calculation is actually: Resistance = (1024 * BalanceResistor/ADC) - BalanceResistor Temp = log(Resistance); // Saving the Log(resistance) so not to calculate it 4 times later. // "Temp" means "Temporary" on this line. Temp = 1 / (0.0012954816 + (0.00023539242 * Temp) + (0.00000011285038 * Temp * Temp * Temp)); // Now it means both "Temporary" and "Temperature" Temp = Temp - 273.15; // Convert Kelvin to Celsius // Now it only means "Temperature"
// BEGIN- Remove these lines for the function not to display anything Serial.print("ADC: "); Serial.print(RawADC); Serial.print("/1024"); // Print out RAW ADC Number Serial.print(", Volts: "); printDouble(((RawADC*5)/1024.0),3); // 5 volts is what my USB Port outputs. Serial.print(", Resistance: "); Serial.print(Resistance); Serial.print("ohms"); // END- Remove these lines for the function not to display anything
// Uncomment this line for the function to return Fahrenheit instead. //Temp = (Temp * 9.0)/ 5.0 + 32.0; // Convert to Fahrenheit return Temp; // Return the Temperature }
void printDouble(double val, byte precision) { // prints val with number of decimal places determine by precision // precision is a number from 0 to 6 indicating the desired decimal places // example: printDouble(3.1415, 2); // prints 3.14 (two decimal places) Serial.print (int(val)); //prints the int part if( precision > 0) { Serial.print("."); // print the decimal point unsigned long frac, mult = 1; byte padding = precision -1; while(precision--) mult *=10; if(val >= 0) frac = (val - int(val)) * mult; else frac = (int(val) - val) * mult; unsigned long frac1 = frac; while(frac1 /= 10) padding--; while(padding--) Serial.print("0"); Serial.print(frac,DEC) ; } }
void setup() { Serial.begin(115200); }
#define ThermistorPIN 0 // Analog Pin 0 double temp; void loop() { temp=Thermistor(analogRead(ThermistorPIN)); // read ADC and convert it to Celsius Serial.print(", Celsius: "); printDouble(temp,3); // display Celsius Serial.println(""); // End of Line delay(100); // Delay a bit... for fun, and to not Serial.print faster than the serial connection can output } | |
|
| |
Mumu
Nombre de messages : 176 Localisation : 45 Date d'inscription : 20/12/2012
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 17:56 | |
| Oui c'est bien, mais une thermistance c'est pas linéaire. D' où un tas de calculs pas forcément sympas (appel à la librairie math.h des logs etc.. ). le lm35 est linéaire lui (10 mV/°C). et pour l'approvisionnement Voir ici. Vu le prix... J'ai commandé ça hier je vous tiens au courant pour la fiabilité du fournisseur. (Oui je sais c'est en chine, c'est pas bien...) | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 18:03 | |
| +1 pour toi Mumu. Il est vrai que le LM a un meilleur résultat et une mise en oeuvre plus facile. Mais encore une fois, cela permet au novice d’appréhender différentes possibilités. Tout en voyant les avantages et les contraintes... Il faut de tout pour faire un monde ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 18:34 | |
| Tous ces composants : thermistance, résistance, diode, transistor, capteur, microcontrôleur, etc. Ça commence à me chatouiller ! J’avais poursuivis, fin des années 70 du dernier siècle du millénaire dernier, un cours d’ingénieur électronicien. Malheureusement, pour des circonstances particulières, j’ai abandonné à mi-chemin. Cela ne m’empêche pas d’avoir parfois des bribes de souvenirs ! | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 22 Oct 2013 - 18:44 | |
| De qui, de quoi, de qu' est ce ?...on parle de moi ?... Si vous voulez que je vous transforme le truc en machine à laver... ...mais c'est à vos risques et périls . Plus sérieusement, si il y a bien un domaine où je nage, que dis je ?... je coule , c'est bien l' électronique...J' essaye déjà désespérément de comprendre ce que vous dites... Pour la partie mag ( publication ), là, je me débrouillerai... Edit : Vos illustrations sont très parlantes et vont dans le bon sens pour moi même si il faudra peut être en réduire un peu la taille pour que le texte explicatif soit pas trop loin. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panoramic affiche la température ambiante. Mar 22 Oct 2013 - 20:06 | |
| Tu as raison Ygeronimi, là, j'ai fais un copier / coller rapide pour savoir de quoi il en retournait. Perso, j'ai vu un peu tout ça il y a une vingtaine d'années, alors je ne me souviens plus de grand chose ... Pour le mag, je ferais une version plus simple, mais là, pas le temps de faire dans la finesse ... | |
|
| |
Contenu sponsorisé
| Sujet: Re: Panoramic affiche la température ambiante. | |
| |
|
| |
| Panoramic affiche la température ambiante. | |
|