Skip to content
Snippets Groups Projects
Commit 229b4bd4 authored by hichbra's avatar hichbra
Browse files

remove pt100 from arduino1

parent aafeb5ac
Branches
No related merge requests found
#include <Adafruit_MAX31865.h>
#define XRANGE 50
#define PORT_HALL0 A0
#define PORT_HALL1 A1
#define PORT_HALL2 A2
#define PORT_HALL3 A3
#define PORT_HALL4 A4
#define PORT_HALL5 A5
#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
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
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 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);
// 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
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 ----
/*Serial.print("|");
for (int i=0;i<x;i++){
if(i==XRANGE/2-1)Serial.print("|");
else Serial.print("-");
}
Serial.print("O");
for (int i=x+1;i<XRANGE;i++){
if(i==XRANGE/2-1)Serial.print("|");
else Serial.print("-");
}
Serial.print("|");*/
// ----------------------------------------------------------
// affiche la valeur en Gauss
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.println(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)
/*fsrVoltage = map(fsrAnalogique, 0, 1023, 0, 5000);
Serial.print("Lecture de la tension en mV = ");
Serial.println(fsrVoltage);
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
fsrResistance = 5000 - fsrVoltage; // fsrVoltage est en millivolts donc 5V = 5000mV
fsrResistance *= 10000; // 10K resistance
fsrResistance /= fsrVoltage;
Serial.print("FSR resistance en ohms = "); Serial.println(fsrResistance);
fsrConductance = 1000000; // on mesure en micro-ohm
fsrConductance /= fsrResistance;
Serial.print("Conductance en micro-ohm : "); Serial.println(fsrConductance);
// Use the two FSR guide graphs to approximate the force
if (fsrConductance <= 1000) {
fsrForce = fsrConductance / 80;
Serial.print("Force en Newtons: "); Serial.println(fsrForce);
} else {
fsrForce = fsrConductance - 1000;
fsrForce /= 30;
Serial.print("Force en Newtons: "); Serial.println(fsrForce);
}
}*/
// attendre 1/10 de seconde
//delay(1);
}
#include <Adafruit_MAX31865.h>
#include "Adafruit_BME680.h"
// port capteur BME680
#define BME_SCK 7
#define BME_MISO 6
#define BME_MOSI 5
#define BME_CS 4
// Pour calculer l'altitude, il est necessaire d'avoir la pression au niveau de la mer du jour et de notre localisation
#define SEALEVELPRESSURE_HPA (1000)
#define INTERVALLE 1000 //30000 // mise a jour toutes les 30 secondes
#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
unsigned long temps_precedent ;
Adafruit_MAX31865 max = Adafruit_MAX31865(10, 11, 12, 13); // Amplificateur pour sonde PT100
Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);
float temperature;
float temperature_bme;
float pression;
float humidite;
float gaz_resistance;
float altitude;
void setup(){
Serial.begin(9600);
while (!Serial);
temps_precedent = millis();
max.begin(MAX31865_2WIRE);
temperature = max.temperature(RNOMINAL, RREF);
if (!bme.begin()) {
Serial.println(F("erreur capteur bme680!"));
while (1);
}
// Set up oversampling and filter initialization
bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
// Detecte la concentration de VOC : Composee Organique Volatile
// Plus la resistance est basse, plus la concentration est forte
// capteurs électro-catalytiques tres sujet a variation. Configuration avec la chaleur emise par la combustion du gaz recherchee
bme.setGasHeater(320, 150); // 320*C pour 150 ms
}
void loop(){
if(millis()-temps_precedent >= INTERVALLE) {
// Mise a jour des valeur des capteurs du BME680
unsigned long endTime = bme.beginReading();
// Mise a jour des valeurs de la sonde PT100 (MAX31865)
temperature = max.temperature(RNOMINAL, RREF); // Temperature de la sonde PT100
if (endTime == 0) {
//Serial.println(F("Failed to begin reading :("));
temperature_bme = -1;
pression = -1;
humidite = -1;
gaz_resistance = -1;
altitude = -1;
}
// There's no need to delay() until millis() >= endTime: bme.endReading()
// takes care of that. It's okay for parallel work to take longer than
// BME680's measurement time.
// Obtain measurement results from BME680. Note that this operation isn't
// instantaneous even if milli() >= endTime due to I2C/SPI latency
if (!bme.endReading()) {
//Serial.println(F("Failed to complete reading :("));
temperature_bme = -1;
pression = -1;
humidite = -1;
gaz_resistance = -1;
altitude = -1;
}
else {
temperature_bme = bme.temperature;
pression = bme.pressure / 100.0;
humidite = bme.humidity;
gaz_resistance = (bme.gas_resistance / 1000.0);
altitude = bme.readAltitude(SEALEVELPRESSURE_HPA);
}
/*
Serial.print(F("Reading completed at "));
Serial.println(millis());
Serial.print(F("Temperature = "));
Serial.print(bme.temperature);
Serial.println(F(" *C"));
Serial.print(F("Pressure = "));
Serial.print(bme.pressure / 100.0);
Serial.println(F(" hPa"));
Serial.print(F("Humidity = "));
Serial.print(bme.humidity);
Serial.println(F(" %"));
Serial.print(F("Gas = "));
Serial.print(bme.gas_resistance / 1000.0);
Serial.println(F(" KOhms"));
Serial.print(F("Approx. Altitude = "));
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(F(" m"));
*/
// Envoie les valeurs au port serie
Serial.print(temperature);Serial.print(";");Serial.print(temperature_bme);Serial.print(";");Serial.print(pression);Serial.print(";");Serial.print(humidite);Serial.print(";");Serial.print(gaz_resistance);Serial.print(";");Serial.println(altitude);
temps_precedent = millis();
}
delay(10);
}
......@@ -3,17 +3,16 @@
#define XRANGE 50
#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_HALL2 A2
#define PORT_HALL3 A3
#define PORT_HALL4 A4
#define PORT_HALL5 A5
#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
unsigned long temps_precedent ;
unsigned long temps_precedent_temperature ;
......@@ -37,7 +36,7 @@ void setup(){
}
void loop(){
// lecture de la valeur analogique du Gaussmètre (entre 0 et 1024) pour une tension entre 0 et 5V
// 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);
......@@ -49,7 +48,7 @@ void loop(){
// 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);
// transforme la valeur de 0 à 1024 vers 0 à 50
// transforme la valeur de 0 � 1024 vers 0 � 50
//x = map(aValue, 0, 1024, 0, XRANGE);
//x2 = map(aValue2, 0, 1024, 0, XRANGE);
......@@ -65,8 +64,8 @@ void loop(){
//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
/* 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) {
......@@ -77,7 +76,7 @@ void loop(){
//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("|");
......@@ -107,8 +106,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;
......
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