Analoge input (potmeter)

Leerdoelen

  • analoge input

Functies en libraries

  • analogRead
  • map
  • Serial (output)

Elektrische componenten

  • potmeter 10KOhm
  • LED + weerstand

Voorkennis

  • analoge output (PWM)

Inleiding

In deze opdracht maak je kennis met een potmeter die je gebruikt voor een analoge dimmer.

Met een potmeter kun je een spanning instellen. Deze spanning lezen we in via de analoge input van de Arduino. Het resultaat gebruiken we om de lichtsterkte van een LED te regelen.

Opbouwen van de schakeling

De schakeling bestaat uit een LED-schakeling, en een potmeter-schakeling.

De LED met serieweerstand verbind je aan pin 9 (een PWM-pin).

De buitenste aansluitingen van de potmeter verbind je met 5V en 0V (GND). De middelste aansluiting verbind je met pin A0 van de Arduino.

De 0V en 5V van de Arduino verbind je met het breadboard.

analoge-dimmer_bb.png

Uitleg van het schema

De middenaftakking van de potmeter is verbonden met de analoge input van de Arduino. Deze middenaftakking vormt een "spanningsdeler" van de weerstand onder en boven de aftakking. Het resultaat is een spanning die varieert tussen 0 en 5V.

analoge-dimmer-schema.png

Uitleg programma

De potmeter is verbonden met A0.

De LED is verbonden met  pin 9.

In setup initialiseren we de led-pin als output. Een analoge input hoef je niet te initialiseren.

We gebruiken in dit programma ook de seriële output: in de Serial Monitor in de Arduino IDE kun je dan volgen wat er gebeurt. De baudrate moet in de Arduino en in de Serial Monitor gelijk ingesteld zijn.

De waarde die je leest van de sensor is een getal 0..1023; dit komt overeen met een spanning 0..5V.

We passen deze waarde aan voor de analoge output: die verwacht een waarde tussen 0..255. Voor deze aanpassing gebruiken we de functie map.

Een versie van dit programma vind je ook in de Arduino IDE, via Voorbeelden->Analog->AnalogInOutSerial

const int sensor = A0;

const int led = 9;

int sensorValue = 0;

int outputValue = 0;

void setup() {

  pinMode(led, OUTPUT);

  Serial.begin(9600);

}

void loop() {

  sensorValue = analogRead(sensor);

  outputValue = map(sensorValue,

      0, 1023, 0, 255);

  analogWrite(led, outputValue);

  Serial.print("sensor = ");

  Serial.print(sensorValue);

  Serial.print("\t output = ");

  Serial.println(outputValue);

  delay(2);

}

Vragen en opdrachten

LM35DZ-fig.png

  1. vervang de potmeter door een analoge temperatuursensor, zoals de LM35DZ. Let op de aansluitingen! (Deze zijn eigenlijk gelijk aan die van de potmeter.)
    In dit geval is het handig om de delay-tijd te vergroten.
  2. hoe moet je in dit geval de "map" voor de outputValue aanpassen zodat je de temperatuur in 'C te zien krijgt in de Seriële Monitor?
  3. gebruik de Seriële Plotter voor het weergeven van de analoge input-waarden.

Antwoorden: