Skip to main content

Températures et graphiques

Nous cherchons à mesurer deux températures et de les comparer sur un graphique

Pour cela nous nous appuyons sur la documentation sur la convection

"https://wiki.fablab.sorbonne-universite.fr/wiki/doku.php?id=wiki:projets:convection_geosciences"

Voici les branchements à effectuer ainsi que le code Arduino pour l'acquisition des données

multiple_external.png

Script capteur_T_dallas

// First we include the libraries
#include <OneWire.h>
#include <DallasTemperature.h>
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
/********************************************************************/
void setup(void)
{
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
/********************************************************************/
sensors.requestTemperatures(); // Send the command to get temperature readings
/********************************************************************/
Serial.print(sensors.getTempCByIndex(0)); // renvoie la premiere temperature lue
Serial.print(" , "); // met une virgule entre les 2 valeurs
Serial.print(sensors.getTempCByIndex(1)); // renvoie la 2e temperature
Serial.print(" , ");
Serial.println(sensors.getTempCByIndex(2)); // renvoie la 3e temperature
delay(200);
}

Ensuite le programme Matlab pour la lecture des données dans un graphique


Script recupT.m

% pour lire des donnees de temperature de plusieurs capteurs DS18B20
% attention au format de sortie des données ici : XX.XX , YY.YY ... c'est
% dans le sketch Arduino.
clear all
close all
baud_rate = 9600;
n_capts = 3 % nombre de capteurs de temperature
instrreset % pour remettre a zero la liste des instruments connectes

s = serial('COM3', 'BaudRate', baud_rate); % crée un objet "port"
fopen(s)
i = 0;
T_C = zeros(1e4,n_capts);
t = zeros(1e4,1);
t_rec = 2000; % temps d'enregistrement en s
hf = figure(1)
hold on
axis([0 t_rec 20 120])
couleurs =[1 0 0; 0 1 0; 0 0 1];
for j = 1:n_capts % créer les courbes pour les capteurs
an(j) =
animatedline('MarkerEdgeColor',couleurs(:,j),'LineStyle','none','Marker','+'
);
end
tic
while toc < t_rec
i = i + 1;
% lire la temperature sur le port
val = fscanf(s);
t(i) = toc;
for j = 1:n_capts
ind_beg = 1+(j-1)*8; % pour lire la bonne section de la reponse
T_C(i,j) = str2num(val(ind_beg:ind_beg + 5)); % lit les 5 digits de
la temperature
addpoints(an(j), t(i), T_C(i,j))
drawnow
disp(['time ',num2str(t(i))])
end
end
hold off
T_C = T_C(1:i,:);
t = t(1:i);
fclose(s)