My proposal is to insert in the analog readings sample / average option.
Reason:
Nearly all analog sensors suffer from low immunity to RFI / EMI noise and other interference, especially if our devices get out from the experimental phase.
In the industrial electronics is unavoidable for more precise readings.
Part two (if it can not be in collection list)
Somewhere in the forum I found that lists of wishes does do not extend to sensors that already exist in several forms, for example, thermal sensors ...So I need help with code.
An example of working with NTC Thermistor is described on pages Adafruit and with the Arduino gave a very good and accurate results.
https://learn.adafruit.com/thermistor/u ... thermistor
Final code:
Code: Select all
// which analog pin to connect
#define THERMISTORPIN A0
// resistance at 25 degrees C
#define THERMISTORNOMINAL 10000
// temp. for nominal resistance (almost always 25 C)
#define TEMPERATURENOMINAL 25
// how many samples to take and average, more takes longer
// but is more 'smooth'
#define NUMSAMPLES 5
// The beta coefficient of the thermistor (usually 3000-4000)
#define BCOEFFICIENT 3950
// the value of the 'other' resistor
#define SERIESRESISTOR 10000
int samples[NUMSAMPLES];
void setup(void) {
Serial.begin(9600);
analogReference(EXTERNAL);
}
void loop(void) {
uint8_t i;
float average;
// take N samples in a row, with a slight delay
for (i=0; i< NUMSAMPLES; i++) {
samples[i] = analogRead(THERMISTORPIN);
delay(10);
}
// average all the samples out
average = 0;
for (i=0; i< NUMSAMPLES; i++) {
average += samples[i];
}
average /= NUMSAMPLES;
Serial.print("Average analog reading ");
Serial.println(average);
// convert the value to resistance
average = 1023 / average - 1;
average = SERIESRESISTOR / average;
Serial.print("Thermistor resistance ");
Serial.println(average);
float steinhart;
steinhart = average / THERMISTORNOMINAL; // (R/Ro)
steinhart = log(steinhart); // ln(R/Ro)
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
steinhart = 1.0 / steinhart; // Invert
steinhart -= 273.15; // convert to C
Serial.print("Temperature ");
Serial.print(steinhart);
Serial.println(" *C");
delay(1000);
}
The reason:
Even though we are in the era of digital sensors, many branded manufacturers still do not give up from analog NTC Thermistors and still produce serious machines / controllers with this type of sensor. What is the worst sometimes they are mechanically mounted or glued/molded so that the replacing them almost unfeasible.
Your help is appreciated