Amplifying Analog Voltages with the LM358
05.03.2025
Elektronik | Funk | Software
Der Technik-Blog
Sample code from the PT100 temperature measurement project with the Arduino. This sample code prints the measured temperature values in the serial monitor.
//More information about this project can be find here: https://www.aeq-web.com/pt100-temperature-sensor-arduino-r-u-converter/ const int pt100Pin = A0; // Define PT100 input pin const float offset = -0.00; // Offset (depending on the line resistance) // Define known points (voltage & temperature) const float voltages[] = { 0.079, 0.56, 1.04, 1.99, 2.95 }; // Voltages in Volts const float temperatures[] = { 0, 25.0, 50.0, 100.0, 150.0 }; // Temperatures in Celsius const int numPoints = sizeof(voltages) / sizeof(voltages[0]); // Linear interpolation float interpolate(float x, float x0, float x1, float y0, float y1) { return y0 + (y1 - y0) * (x - x0) / (x1 - x0); } // Calculate temperature from voltage float calculateTemperature(float voltage) { // Set to 0°C if voltage is higher than max. known point if (voltage > voltages[numPoints - 1]) { return 0; } // Find limits for interpolation int i = 0; while (voltage > voltages[i + 1] && i < numPoints - 1) { i++; } // Interpolate between limits return interpolate(voltage, voltages[i], voltages[i + 1], temperatures[i], temperatures[i + 1]); } void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(pt100Pin); float voltage = sensorValue * (5.0 / 1023.0); float temperature = calculateTemperature(voltage)+offset; Serial.print("Voltage: "); Serial.print(voltage, 3); Serial.print("V, Temperature: "); Serial.print(temperature, 1); Serial.println("°C"); delay(1000); }
The packet forwarder in a LoRaWAN gateway sends the uplink & status packets as JSON to the network server after the 12 hexadecimal bytes
read more
The last part of the LoRaWAN GPS Tracker is about forwarding data records from TTS to your own web server and visualizing it on a map.
read moreAEQ-WEB © 2015-2026 All Right Reserved