Commit 9704e0fc authored by hichbra's avatar hichbra

Ajout moules + sonde PT100

parent 7fbe6d30
/*
GaussPlot 27/12/2011 Arduining.com
Showing Gauss measured by the SS495B in the serial monitor.
(Miniature Radiometric Linear Hall Efect Sensor)
Sensor connected to Analog channel 0.
#include <Adafruit_MAX31865.h>
Translated and commented by Meurisse D. for the tutorial
http://wiki.mchobby.be/index.php?title=Senseur-Hall-SS495A
*/
#define XRANGE 50
#define PORT_HALL A0
#define PORT_HALL0 A0
#define PORT_HALL1 A1
#define PORT_HALL2 A4
#define PORT_HALL3 A5
#define PORT_HALL4 A6
#define PORT_HALL5 A7
#define PORT_FSR A2
#define INTERVALLE 100
#define RREF 430.0 // Valeur de la resistance Rref. 430 pour PT100, 4300 pour PT1000
#define RNOMINAL 100.0 // Resistance nominal 0-degrees-C du capteur, 100 pour PT100, 1000 pour PT1000
int x,gss ;
unsigned long temps_precedent ;
unsigned long temps_precedent_temperature ;
int x,gss0, gss1, gss2, gss3, gss4, gss5 ;
int fsrAnalogique ; // La lecture analogique depuis le pont diviseur FSR+Resistance.
int fsrVoltage; // La lecture analogique convertie en tension
......@@ -20,25 +25,59 @@ unsigned long fsrResistance; // La tension convertie en resistance
unsigned long fsrConductance;
long fsrForce; // La resistance convertie en force (Newton)
Adafruit_MAX31865 max = Adafruit_MAX31865(10, 11, 12, 13); // Amplificateur pour sonde PT100
float temperature;
void setup(){
Serial.begin(9600);
temps_precedent = millis();
max.begin(MAX31865_2WIRE);
temperature = max.temperature(RNOMINAL, RREF);
}
void loop(){
// lecture de la valeur analogique du Gaussmètre (entre 0 et 1024) pour une tension entre 0 et 5V
int aValue = analogRead(PORT_HALL);
// lecture de la valeur analogique du Gaussmètre (entre 0 et 1024) pour une tension entre 0 et 5V
int aValue0 = analogRead(PORT_HALL0);
int aValue1 = analogRead(PORT_HALL1);
int aValue2 = analogRead(PORT_HALL2);
int aValue3 = analogRead(PORT_HALL3);
int aValue4 = analogRead(PORT_HALL4);
int aValue5 = analogRead(PORT_HALL5);
//Serial.print(aValue);
// lecture de la valeur analogique du capteur de force (entre 0 et 1024) pour une tension entre 0 et 5V
int fsrAnalogique = analogRead(PORT_FSR);
//int fsrAnalogique = analogRead(PORT_FSR);
// transforme la valeur de 0 à 1024 vers 0 à 50
x = map(aValue, 0, 1024, 0, XRANGE);
// transforme la valeur de 0 à 1024 vers 0 à 50
//x = map(aValue, 0, 1024, 0, XRANGE);
//x2 = map(aValue2, 0, 1024, 0, XRANGE);
// transforme la valeur lue en Gauss
gss = map(aValue, 102, 922, -640, 640);
gss0 = map(aValue0, 102, 922, -640, 640);
gss1 = map(aValue1, 102, 922, -640, 640);
gss2 = map(aValue2, 102, 922, -640, 640);
gss3 = map(aValue3, 102, 922, -640, 640);
gss4 = map(aValue4, 102, 922, -640, 640);
gss5 = map(aValue5, 102, 922, -640, 640);
//uint16_t rtd = max.readRTD(); // Lecture de l'amplificateur
//Serial.print("RTD value: "); Serial.println(rtd);
//float ratio = rtd;
//ratio /= 32768;
/* La récuperation de la température étant plus longue, on ne le fait qu'une fois toutes les secondes.
* Ainsi la mise à jour des valeurs de gauss au lieu une fois toutes les 1/10 de seconde
* et au bout de 10 valeurs, il y aura un gap de 200 millisecondes
*/
if(millis()-temps_precedent_temperature >= INTERVALLE*10) {
temperature = max.temperature(RNOMINAL, RREF); // Temperature de la sonde PT100
temps_precedent_temperature = millis();
}
//Serial.print("Ratio = "); Serial.println(ratio,8);
//Serial.print("Resistance = "); Serial.println(RREF*ratio,8);
//Serial.print("Temperature = "); Serial.println(max.temperature(RNOMINAL, RREF));
// ------ Affichage d'un bargraph sur le moniteur série ----
// ------ Affichage d'un bargraph sur le moniteur série ----
/*Serial.print("|");
for (int i=0;i<x;i++){
if(i==XRANGE/2-1)Serial.print("|");
......@@ -53,7 +92,11 @@ void loop(){
// ----------------------------------------------------------
// affiche la valeur en Gauss
Serial.println(gss);
if(millis()-temps_precedent >= INTERVALLE) {
Serial.print(gss0);Serial.print(";");Serial.print(gss1);Serial.print(";");Serial.print(gss2);Serial.print(";");Serial.print(gss3);Serial.print(";");Serial.print(gss4);Serial.print(";");Serial.print(gss5);Serial.print(";");Serial.println(temperature);
//Serial.println(millis()-temps_precedent);
temps_precedent = millis();
}
//Serial.println(" Gauss");
// lecture de la valeur analogique (entre 0 et 1023) pour une tension entre 0 et 5V (= 5000mV)
......@@ -64,8 +107,8 @@ void loop(){
if (fsrVoltage == 0) {
Serial.println("Aucune pression");
} else {
// La tension = Vcc * R / (R + FSR) où R = 10K et Vcc = 5V
// d'où FSR = ((Vcc - V) * R) / V
// La tension = Vcc * R / (R + FSR) où R = 10K et Vcc = 5V
// d'où FSR = ((Vcc - V) * R) / V
fsrResistance = 5000 - fsrVoltage; // fsrVoltage est en millivolts donc 5V = 5000mV
fsrResistance *= 10000; // 10K resistance
fsrResistance /= fsrVoltage;
......@@ -87,6 +130,5 @@ void loop(){
}*/
// attendre 1/10 de seconde
delay(200);
//delay(1);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment