CanSat som termometer

Analog til digital konvertering (ADC)

Alle digitale komponenter arbeider med diskrete signaler. I motsetning til et analogt signal er et signal som bare kan anta bestemte, adskilte verdier, et digitalt signal. På figuren til høyre er disse to signalkategoriene illustrert. Den øverste grafen viser et analogt (kontinuerlig) signal, mens den nederste grafen viser et digitalt (diskret) signal.

Datamaskiner og mikrokontroller) kan bare behandle digitale signaler. For å omforme det analoge signalet fra sensoren til et digitalt signal bruker vi en analog-til-digital-omformer (ADC). Som navnet tilsier, konverterer denne et analogt signal til et digitalt signal.

På Arduino Teensy er ADC-en integrert i mikrokontrolleren. Det er en 12-bits ADC, noe som betyr at den konverterer et analogt signal til et digitalt signal representert ved et 12-bits binært tall. Én bit representerer ett binært siffer og kan ha verdien 0 eller 1. Dette kan også representeres som høy eller lav spenning, eller av og på. I programmering representeres 0 og 1 ofte som False (0) og True (1).

Hvert siffer i et binært tall kan ha to verdier, 0 eller 1. Et 12-bits binært tall kan derfor ha \(2^{12} = 4096\) ulike verdier, og kan representere heltall fra 0 til 4095. Mikrokontrolleren kan forstå disse digitale tallene og bruke dem i beregninger som er programmert inn ved hjelp av programkode.

NTC-sensoren i CanSat-en avleses av en ADC, som gjør hver analog verdi om til et 12-bits tall.

0 volt konverteres til det binære tallet:

\[000000000000_\text{to} = 0 \cdot 2^{11} + 0 \cdot 2^{10} + 0 \cdot 2^9 + 0 \cdot 2^8 + 0 \cdot 2^7 + 0 \cdot 2^6 + 0 \cdot 2^5 + 0 \cdot 2^4 + 0 \cdot 2^3 + 0 \cdot 2^2 + 0 \cdot 2^1 + 0 \cdot 2^0 = 0_\text{ti}\]

og 3,3 volt konverteres til det binære tallet:

\[111111111111_\text{to} = 1 \cdot 2^{11} + 1 \cdot 2^{10} + 1 \cdot 2^9 + 1 \cdot 2^8 + 1 \cdot 2^7 + 1 \cdot 2^6 + 1 \cdot 2^5 + 1 \cdot 2^4 + 1 \cdot 2^3 + 1 \cdot 2^2 + 1 \cdot 2^1 + 1 \cdot 2^0 = 4095_\text{ti}\]

Ved å representere et spenningsområde på (0–3,3) V med 4096 nivåer (inkludert 0), får vi en oppløsning på:

\[\frac{ 3,3 \unit{V} }{ 4095 } ≈ 8,058 \cdot 10^{-4} \unit{V}= 0,8058 \unit{mV}\]

Dette viser at med en 12-bits ADC er den minste spenningsendringen vi kan måle omtrent \(0,81 \unit{mV}\). Dette er viktig å være klar over når vi arbeider med sensorenes følsomhet.

Lineær regresjonsanalyse

I denne oppgaven antar vi en lineær sammenheng mellom målt spenning og faktisk temperatur. Generell form for lineær likning skrives som \(y = a \cdot x + C\).
Vi trenger minst to punkter for å finne stigningstall og konstantledd Du må derfor gjøre minst 2 målinger ved ulik temperatur, hvor du måler både temperatur

Steg for steg regresjonsanalyse ved hjelp av Geogebra

Gjør minst 2 målinger og før inn i regneark i Geogebra

Screenshot from Arduino IDE Photo: Andøya Space

Velg Regresjonsanalyse

Screenshot from Arduino IDE Photo: Andøya Space

Velg lineær

Screenshot from Arduino IDE Photo: Andøya Space

Hent ut lineær likning

Screenshot from Arduino IDE Photo: Andøya Space

y er temperatur i celsius, x er målt spenningsverdi oppgitt som et binært 12-bits tall.

Utvide programkode med omregning fra spenning i NTC til celsius

  • Opprette variabel

    • Hvilken type variabel bør du bruke?
    • Hvilket navn skal du gi variabelen?

    Tips: Husk korrekt syntaks, ny kodelinje må avsluttes med «;»!

  • Skriv ut overskrift i setup

    • Velg en plassering
  • Legg til omregning i loop

    • variabel = a * ntc + C
  • Skriv ut variabel i loop

    • Velg plassering som samsvarer med plasseringen i overskrift

Grafisk fremstilling av NTC i spenningsdeler

Spesielt interesserte kan bruke vedlagt Geogebra-skript til å undersøke hvordan sammenhengen mellom målt spenning og temperatur endrer seg med ulik fast-motstand i spenningsdeleren:

NTC-designverktøy