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)

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

/********************************************************************/

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 // Send the commandrequest to getall temperaturedevices readings

on the bus /********************************************************************/

sensors.requestTemperatures(); // Send the command to get temperature readings /********************************************************************/ Serial.print(sensors.getTempCByIndex(getTempCByIndex(0)); // renvoie la premiere temperaturetemperature 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 temperaturetemperature sur le port

val = fscanf(s);

t(i) = toc;

for j = 1:n_capts

ind_beg = 1+(j-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)