#include <math.h>
const int SENSOR_PIN = PA5;
// Constants for your connections
const float V_SUPPLY = 5.0f; // Sensor powered by 5V
const float V_REF = 3.3f; // STM32 ADC reference
const float ADC_STEPS = 4095.0f; // 12-bit ADC
const float BETA = 3950.0f; // NTC Beta coefficient
const float ROOM_TEMP_K = 298.15f; // 25 °C in Kelvin
void setup() {
Serial.begin(115200);
pinMode(SENSOR_PIN, INPUT_ANALOG);
}
void loop() {
int adc_val = analogRead(SENSOR_PIN);
// Convert ADC reading to voltage
float v_out = ((float)adc_val * V_REF) / ADC_STEPS;
// Prevent invalid resistance calculation
if (v_out > 0.05f && v_out < V_SUPPLY) {
// Calculate thermistor resistance
float r_ntc = 10000.0f * ((V_SUPPLY / v_out) - 1.0f);
// Calculate temperature in Celsius
float tempC = 1.0f /
(log(r_ntc / 10000.0f) / BETA +
(1.0f / ROOM_TEMP_K))
- 273.15f;
// Convert Celsius to Fahrenheit
float tempF = (tempC * 9.0f / 5.0f) + 32.0f;
// Display temperature
Serial.print("Temperature: ");
Serial.print(tempC, 1);
Serial.print(" C | ");
Serial.print(tempF, 1);
Serial.println(" F");
}
delay(1000);
}Loading
stm32-bluepill
stm32-bluepill