TI-S2

logo

NTC temperatuur-weerstand curve

LDR-NTC: analoog naar digitaal met passieve sensoren

Inhoud


Basis principe

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.

LDR-R measuring schematic

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 potmeter kunnen gebruiken. Het principe blijft gelijk.)

LDR

Light Dependent Resistor 4mm

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 ca. 2 MegaOhm (donker) tot circa 600 Ohm (erg helder). Waarschijnlijk is de aanwezige sensor een 5528 type (LDR03/LDR04).

NTC

Temperature Dependent Resistor - NTC thermistor

Een thermistor is een weerstand die zijn waarde met de temperatuur van de omgeving verandert.

Er zijn twee types van deze weerstanden:

De schakeling

We tonen in dit voorbeeld een LDR, maar in plaats ervan kan je ook een NTC gebruiken.

LDR-NTC breadboard schakeling

Arduino voorbeeld code

De voorbeeld code meet alleen een spanning en geeft deze via het serial interface uit.

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

Arduino bestand

Referenties

LDR Datasheets

NTC Datasheets