← Kursens material Motståndsgivare · område 4 Område 4

Område 4 · lektion 19

Motståndsgivare

De enklaste givarna som finns gör en enda sak: de ändrar sitt motstånd när omvärlden ändrar sig. En LDR gör det när ljuset ändras, en NTC när temperaturen gör det. De har inga anslutningar för matning, inget protokoll och inget datablad du måste förstå för att komma igång. Priset är att de inte lämnar någonting kortet kan läsa förrän du satt dem i spänningsdelaren från förra guiden.

Mål

Genomgång

LDR: motståndet faller när ljuset stiger

En LDR – light dependent resistor, ljusberoende motstånd – är en platta av ett halvledande material med två anslutningar. Ljus som träffar plattan slår loss laddningsbärare i materialet, och fler laddningsbärare betyder att strömmen går lättare fram. Mer ljus ger lägre resistans.

Siffrorna varierar enormt mellan exemplar En LDR i mörker ligger någonstans mellan ett par hundra kΩ och långt över en MΩ. I ett upplyst rum ligger den i storleksordningen några kΩ, och i direkt solljus kan den gå ned mot ett par hundra Ω. Det här är riktvärden och ingenting annat. Två LDR:er ur samma påse kan skilja sig med en faktor två, och två olika typnummer med mycket mer. Skriv aldrig in ett tal ur den här guiden i din kod. Mät din egen givare – det tar en minut och det är ändå det första steget i kalibreringen.

NTC: motståndet faller när temperaturen stiger

En NTC – negativ temperaturkoefficient – är en termistor vars resistans sjunker när den blir varmare. Mekanismen liknar LDR:ns: värme är rörelse, rörelsen frigör laddningsbärare i halvledaren, och fler laddningsbärare ger lägre resistans. Skillnaden mot ett vanligt metallmotstånd är riktningen. I en metall stiger resistansen med temperaturen; i en halvledare faller den, och den faller mycket mer.

Termistorer märks med sin resistans vid 25 °C. Den vanligaste i skolkit är 10 kΩ vid 25 °C. Här är en tabell för en sådan, räknad ur ett datablad för en typ med B-värde omkring 3950. Din egen kan skilja sig med några procent – tabellen är till för att visa formen, inte för att skrivas av.

TemperaturResistansÄndring per föregående 10 °C
0 °C33,6 kΩ–
10 °C20,2 kΩ−13,4 kΩ
20 °C12,5 kΩ−7,7 kΩ
25 °C10,0 kΩ–
30 °C8,04 kΩ−4,5 kΩ
40 °C5,30 kΩ−2,7 kΩ
50 °C3,59 kΩ−1,7 kΩ

Titta i den sista kolumnen. Tio grader kostar

12,5 − 8,04 = 4,5 kΩ mellan 20 och 30 °C

men bara

5,30 − 3,59 = 1,71 kΩ mellan 40 och 50 °C

alltså

4,5 / 1,71 = 2,6 gånger mindre

för samma tio grader. Det är vad det betyder att kurvan inte är en rät linje. En rät linje hade gett samma ändring överallt. Orsaken är att antalet laddningsbärare i en halvledare växer ungefär exponentiellt med temperaturen, inte proportionellt mot den.

Den fullständiga beskrivningen av en termistor heter Steinhart–Harts ekvation och ligger utanför den här kursen. Du behöver den inte. Två hanterbara vägar finns i stället, och båda används på riktigt:

Att koppla givaren som spänningsdelare

Givaren är hälften av delaren; den andra hälften är ett fast motstånd du väljer. Vilken av de två halvorna som sitter överst avgör åt vilket håll råvärdet går.

Två kopplingsscheman bredvid varandra, märkta A och B. I båda går en lodrät ledning från en anslutning märkt 5 V, genom två stående motstånd, ned till en jordsymbol, med en avgrening till en anslutning märkt A0 mellan motstånden. I schema A sitter det fasta motståndet Rf överst och givaren Rg, som är ritad med en diagonal pil genom sig, underst. I schema B är de två omkastade. A B 5 V 5 V Rf Rg Rg Rf A0 A0

Att välja det fasta motståndet

Här finns ett riktigt val att göra, och det finns ett rätt svar. Anta att du mätt din LDR med multimetern och fått

LägeUppmätt resistans
Skrivbordslampan rakt på1,2 kΩ
Handen över givaren90 kΩ

Tumregeln är att välja det fasta motståndet som geometriska medelvärdet av givarens två ytterlägen, alltså roten ur produkten:

Rf = √(1 200 · 90 000) = √108 000 000 = 10 392 Ω ≈ 10 kΩ

Varför just det? Räkna igenom tre val i schema A och jämför hur stor del av skalan givaren hinner utnyttja. Med Rf = 10 kΩ:

ljust: Uut = 5 · 1 200 / 11 200 = 0,54 V → rå = 0,54 · 1023 / 5 = 110

mörkt: Uut = 5 · 90 000 / 100 000 = 4,50 V → rå = 4,50 · 1023 / 5 = 921

spann = 921 − 110 = 811 steg av 1023, alltså 79 %

Med ett för litet fast motstånd, Rf = 1 kΩ:

ljust: 5 · 1 200 / 2 200 = 2,73 V → rå = 558

mörkt: 5 · 90 000 / 91 000 = 4,95 V → rå = 1 012

spann = 1 012 − 558 = 454 steg, alltså 44 %

Med ett för stort, Rf = 100 kΩ:

ljust: 5 · 1 200 / 101 200 = 0,059 V → rå = 12

mörkt: 5 · 90 000 / 190 000 = 2,37 V → rå = 485

spann = 485 − 12 = 473 steg, alltså 46 %

Det geometriska medelvärdet ger nästan dubbelt så stort spann som de båda andra. Ett större spann betyder att varje grad, eller varje steg i ljus, motsvarar fler råvärdessteg – alltså finare upplösning i den storhet du faktiskt bryr dig om. Att just roten ur produkten är det bästa valet går att visa med derivering; de tre räknade fallen ovan räcker som skäl att lita på regeln.

Marginalen på 10 kΩ igen Kontrollera också att valet inte gör källan för trög för omvandlaren, som i förra guiden. I det mörka läget är Rf och Rg parallellt 10 000 · 90 000 / 100 000 = 9 000 Ω, alltså precis på databladets rekommenderade gräns. Det går bra, men gå inte högre. Ett par tiondels sekunders väntan mellan avläsningarna hjälper också, och den har du gratis om du ändå läser fyra gånger i sekunden.

Mäta och tolka råvärdet

Ordningen som gör att du slipper felsöka i blindo:

  1. Mät givaren ensam med multimetern, i minst två lägen, innan den sitter i en krets. Skriv ned båda talen med enhet. Det är givarens datablad, framtaget av dig, och det är giltigt för just din givare.
  2. Välj Rf ur de två talen och räkna ut det väntade råvärdet i båda lägena, som ovan.
  3. Bygg kretsen och läs råvärdet i samma två lägen. Jämför med det du räknade fram.
  4. Tolka avvikelsen. Några tiotal steg fel är normalt – motståndets tolerans är kanske 1 %, givarens mycket mer, och matningen är inte 5,000 V. Hundratals steg fel, eller ett råvärde som står stilla, är däremot ett kopplingsfel.

Ett litet program som räcker för hela det här steget:

const int GIVARE_PIN = A0;
const unsigned long UTSKRIFTSINTERVALL = 250;   // ms mellan raderna

unsigned long forraUtskriften = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  unsigned long nu = millis();

  if (nu - forraUtskriften >= UTSKRIFTSINTERVALL) {
    forraUtskriften = nu;

    int ravarde = analogRead(GIVARE_PIN);
    float spanning = ravarde * 5.0 / 1023.0;

    Serial.print(ravarde);
    Serial.print("  ");
    Serial.print(spanning, 2);        // tva decimaler racker
    Serial.println(" V");
  }
}

Två detaljer är värda att stanna vid. 5.0 och 1023.0 skrivs med decimalpunkt, annars räknar C++ hela uttrycket i heltal och du får 2 där du väntade 2,50 – samma fälla som kommer tillbaka med full kraft i nästa guide. Och utskriften sker fyra gånger i sekunden med tidsstämpelmönstret, inte varje varv: en rad per loopvarv skulle vara tusentals rader i sekunden, och serieporten hinner inte med.

Givaren mäter sig själv, inte världen En NTC visar sin egen temperatur, inte rummets. Sitter den intryckt mot ditt finger mäter den fingret. Går det ström genom den värmer den upp sig själv – med 10 kΩ över 5 V blir strömmen genom delaren ungefär 0,25 mA och effekten i givaren under en milliwatt, vilket är försumbart, men med hundra gånger mindre motstånd hade det inte varit det. Samma sak gäller LDR:n: den mäter ljuset som träffar just den, inklusive skrivbordslampans reflex i ditt kopplingsdäck.

I industrin och i vardagen

I industrin: temperaturen i en processanläggning mäts nästan alltid med ett Pt100 – en tunn platinatråd med resistansen 100,00 Ω vid 0 °C. Platina är en metall, så resistansen stiger med temperaturen, tvärtemot din NTC, och den gör det nästan rakt: vid 100 °C är motståndet 138,51 Ω, alltså i medeltal

(138,51 − 100) / 100 = 0,385 Ω per grad

Jämför känsligheten relativt givarens eget värde. Pt100:

0,385 / 100 = 0,385 % per grad

NTC:n ur tabellen ovan går från 10,00 kΩ vid 25 °C till 9,57 kΩ vid 26 °C:

(10 000 − 9 570) / 10 000 = 4,3 % per grad

alltså

4,3 / 0,385 = 11 gånger känsligare

Ändå väljer industrin platinan. Skälet är att en Pt100 är utbytbar: alla Pt100 följer samma standardkurva, så en trasig givare kan bytas mot en ny utan att någonting kalibreras om, och mätningen är spårbar till en internationell temperaturskala. En NTC är känsligare och mycket billigare, men två exemplar är inte utbytbara mot varandra utan ny kalibrering. Det är exakt den avvägningen du gör i ditt eget bygge, med den skillnaden att du bara har ett exemplar.

I vardagen: mobilen dimmar sin skärm efter ljuset i rummet. Belysningsstyrkan den ska klara sträcker sig från månsken, ungefär 0,1 lux, till direkt solljus, uppemot 100 000 lux – ett område på

100 000 / 0,1 = 1 000 000 gånger

En miljon till ett. Det finns ingen linjär skala med 1024 steg som rymmer det: ett steg hade behövt vara en tiondels lux i mörker, och då tar talen slut redan vid hundra lux. En LDR löser det av sig själv, eftersom dess resistans faller hopträngt med ljuset – en tiodubbling av belysningen ger ungefär samma faktor i resistansändring var på skalan man än befinner sig. Ett enormt område ryms därmed i få steg, precis som ögat klarar både skymning och solsken.

Mobilens givare är däremot ingen LDR utan en fotodiod, och en fotodiod svarar rakt proportionellt mot ljuset. Hopträngningen måste därför byggas in någon annanstans: kretsen skiftar mellan flera förstärkningslägen, ungefär som att byta mätområde på en multimeter. Anledningen att LDR:n inte används är dessutom en helt annan – den vanliga typen innehåller kadmium och får inte sitta i konsumentprodukter inom EU. I skolkit och i äldre utrustning lever den vidare.

Prova själv

  1. Mät din LDR med multimetern i tre lägen: lampa rakt på, vanligt rumsljus, handen över. Skriv upp alla tre med enhet. Gör samma sak med NTC:n: rumstemperatur, mellan fingrarna, mot något kallt.
  2. Räkna ut det geometriska medelvärdet av dina två ytterlägen och välj det närmaste motståndet du har i sortimentet. Skriv ned vilket du valde och varför.
  3. Bygg schema A med din LDR och skriv ut råvärdet fyra gånger i sekunden med programmet ovan. Notera talet i dina tre ljuslägen.
  4. Koppla om till schema B. Förutsäg först vad som händer med talen, och kontrollera sedan. Talen ska nu gå åt motsatt håll och ligga ungefär symmetriskt kring mitten jämfört med förra mätningen.
  5. Byt Rf mot ett tio gånger större motstånd. Mät ytterlägena igen och räkna ut hur många steg spannet krympte. Jämför med räkneexemplen ovan.
  6. Håll NTC:n mellan tumme och pekfinger i en halv minut och titta på råvärdet under tiden. Släpp och titta igen. Hur lång tid tar det innan talet är tillbaka? Den tiden är givarens tröghet, och den är en egenskap hos ditt bygge som du ska kunna nämna i dokumentationen.

Kontrollfrågor

Åt vilket håll går en LDR:s resistans när det blir mörkare, och åt vilket håll går en NTC:s när det blir kallare?

Båda uppåt. Mindre ljus och lägre temperatur betyder färre fria laddningsbärare i halvledaren, alltså högre resistans. Det är samma mekanism i två förklädnader.

Din NTC sitter underst i delaren, mot jord, med ett fast motstånd överst. Rummet blir varmare. Går råvärdet upp eller ned?

Ned. Varmare ger lägre resistans i NTC:n, alltså en mindre andel av resistansen och därmed en mindre andel av spänningen över den. Det är schema A i figuren ovan.

Din givare mäter mellan 2 kΩ och 50 kΩ. Vilket fast motstånd väljer du?

√(2 000 · 50 000) = √100 000 000 = 10 000 Ω, alltså 10 kΩ. Att den kvadratroten går jämnt ut är en tillfällighet – hade ytterlägena varit 2 kΩ och 60 kΩ hade svaret blivit √120 000 000 = 10 954 Ω, och då väljer du det närmaste sortimentet har, till exempel 10 kΩ eller 12 kΩ.

Varför är NTC:ns kurva inte en rät linje, och gör det något?

Antalet fria laddningsbärare i halvledaren växer ungefär exponentiellt med temperaturen, inte proportionellt. Följden syns i tabellen: tio grader kostar 4,5 kΩ kring 25 °C men bara 1,7 kΩ kring 45 °C. Det gör inget så länge du kalibrerar inom det område du ska mäta i – en kurva är nästan rak om man bara tittar på en kort bit av den.

Du har kopplat LDR:n mellan 5 V och A0, utan något mer. Vad läser du?

Ett tal nära 1023, oavsett ljus. Utan ett motstånd ned till jord finns ingen delning – pinnen dras bara mot 5 V. Delaren behöver båda halvorna, och den halvan är den som glöms bort oftast.

Varför lämnar en motståndsgivare ingen signal i sig själv?

Därför att resistans inte är någonting som går att mäta genom att titta på en ledning. Det som finns att mäta på en pinne är en spänning, och spänning uppstår först när en ström går genom motståndet. Delaren gör precis det: den skickar en känd, liten ström genom givaren och gör resistansändringen till en spänningsändring.

Vanliga fel

Vidare

Kapitlet Typer och variabler i språkreferensen hör till den här guiden, särskilt avsnittet om varför heltalsräkning kapar decimalerna. Det felet dyker upp igen i nästa guide, i en form som är svårare att upptäcka.

Nästa guide är Kalibrering. Nu när du har ett råvärde som rör sig åt rätt håll ska det bli ett tal med en enhet – och där öppnar också loopen, arrayen och den första egna funktionen.