NTC temperatuur-weerstand curve
v0.1.2 Start document voor analoog naar digitaal door HU IICT.
LDR en NTC zijn beiden weerstanden. De ene verandert zijn waarde onder invloed van licht, de andere met de temperatuur. Met hulp van een vaste weerstand kunnen we deze verandering van weerstand omzetten in de verandering van een spanning. Deze spanning kan de ADC meten en in een getal omzetten. De meeste microcontrollers kunnen alleen spanning meten en geen weerstand. Dat komt door de manier waarop ADC’s zijn ontworpen.
Om een analoge waarde te meten en een verandering te zien als de omgeving verandert zijn zowel LDR als NTC geschikt. We hadden ook een potentiometer kunnen gebruiken. Door aan de knop te draaien kan je de weerstand veranderen. Het principe blijft gelijk.
Een Light Dependent Resistor
(LDR) verandert zijn weerstand afhankelijk van de hoeveelheid licht die erop valt.
De LDR’s in de Turing Lab Hardware Shop veranderen hun weerstand tussen circa 2 MegaOhm (donker) tot circa 600 Ohm (erg licht). Waarschijnlijk is de aanwezige sensor een 5528 type (LDR03/LDR04).
Een thermistor is een weerstand die zijn waarde met de temperatuur van de omgeving verandert.
Er zijn twee types van deze weerstanden:
Negative Temperature Coefficient
(NTC) weerstanden. Deze verlaagd zijn weerstand als de temperatuur van de omgeving hoger wordt.Positive Temperature Coefficient
(PTC) weerstanden. Deze verhoogd zijn weerstand als de temperatuur van de omgeving hoger wordt.We tonen in dit voorbeeld een LDR, maar in plaats ervan kan je ook een NTC gebruiken. De variabele weerstand is in serie geschakeld met een vaste weerstand van 10kOhm. Deze schakeling noemen we een voltage divider. Daar gaan we later nog meer aan rekenen met behulp van de Wet van Ohm.
De voorbeeld code meet alleen een spanning en laat deze waarde via de serial interface zien. Upload je voor het eerst een sketch
via de Arduino IDE vink dan onder Preferences -> Settings ‘Show verbose output during’ compile en upload aan. Dan kan je beter zien wat er gebeurt tijdens deze processen.
Het voorbeeld gebruikt Analog Pin ‘A0’, maar je kan het programma makkelijk aanpassen om een andere Analog Pin te kiezen. Dat is handig bijvoorbeeld als je een Arduino Nano gebruikt.
// LDR-NTC.ino - Analog Input example - 2024-02-04-hp
// Tested on Arduino Nano
// [+5V]---[=LDR or NTC_10K=]---[A0]---[=10k=]---[GND]
const long baudrate = 9600;
const int delaytime_ms = 1000; // delay 1000ms = 1s
const int pinAnalogIn = A0;
int dataAnalogIn = 0;
// The Arduino Analog-to-Digital Converter (ADC) has 10 bit resolution.
// Each measurement results in a number from 0 to 1023.
// Arduino Uno and Arduino Nano map this to a range from 0 Volts to 5 Volts.
const float analogDataToVolt = 5.0 / 1024;
void setup() {
pinMode(pinAnalogIn, INPUT);
// Initialize serial interface and wait for port to open:
Serial.begin(baudrate);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("LDR-NTC.ino - Analog Input example");
}
void loop() {
dataAnalogIn = analogRead(pinAnalogIn);
Serial.print("Analog input value: ");
Serial.print(dataAnalogIn);
Serial.print(" - Voltage: ");
Serial.println(dataAnalogIn * analogDataToVolt);
delay(delaytime_ms);
}
//EOF
Door eerst de variable weerstand te plaatsen en dan de vaste weerstand in serie heb je een pull up configuratie. Je meet Vout tussen de twee weerstanden. Wanneer de temperatuur toeneemt neemt de weerstand van de NTC af waardoor Vout toe neemt (dichter in de buurt komt van Vsupply). De gemeten spanning is gegeven door Vout = Vsupply x Rfixed / RNTC + Rfixed. Deze configuratie is dus handig als je een hoger voltage wil bij meer oplopende temperatuur (of bij meer licht in het geval van een LDR).
LDR Datasheets
NTC Datasheets