mercredi 30 octobre 2013

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

Code: Panoramic
'  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
 ' =============


 ' 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
' ==================

'  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
http://' 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);
}

 


Aucun commentaire:

Enregistrer un commentaire