Analog indgang

Fra HTX Arduino
Spring til navigation Spring til søgning

En analog indgang på en mikrocontroller er lavet for at kunne registrere og arbejde med analoge værdier i mikrocontrollerens program, selvom den i naturen er digital.

AD-konvertering

For at en mikrocontroller kan arbejde med analoge værdier skal der ske en analog til digital konvertering (#AD-konvertering), der konverterer den analoge indgangsspænding til en digital værdi med en eller anden opløsning.

Man kan i princippet arbejde med en ekstern AD-konverter som en Mcp3201 eller en Mcp3208, der begge er 12 bits AD-konvertere som altså giver tal fra 0 til 4095 over det analoge referenceområde som er angivet ved en analog reference.

I dag har mange mikrocontrollere indbyggede AD-konvertere som typisk har 10 bit opløsning, hvilket give et talområde fra 0 til 1023. Se mere om #Bit-opløsningsens betydning.

På engelsk betegnes AD-konvertering ADC.

Hvis de spændinger man skal måle på, er højere end hvad AD-konverteren kan håndtere, man man anvende en Spændingsdeler der neddeler spændingen.

Hvis de spændinger man skal måle på er meget små, kan man vælge at forstærke signalet op inden det AD-konverteres. Det kan f.eks. ske med en Mikrofonforstærker.


Bit-opløsningens betydning

En AD-konverter arbejder i f.eks. 10 bit. Det betyder, at der er 10 bit til rådighed til at repræsentere den spænding der bliver målt. Med 10 bit kan vi repræsentere værdier eller step.

Hvis spændingen som AD-konverteren måler er 0 V, konverteres dette til en heltalsværdi på 0 (step 0). Hvis spændingen som AD-konverteren måler er 5 V (dvs. den maksimale spænding som AD-konverteren i en Arduino kan måle), giver det en værdi på 1023 (step 1023). Der er altså 1024 steps til at repræsentere spændingerne mellem 0 V og 5 V.

Man kan beregne hvor stor en spænding hvert step dækker over:


Hvis AD-konverteren giver heltallet 688 som output (dvs. step 688), kan man beregne, hvor stor en spænding der var på det analoge input:


Arduino Analoge indgange

I arduinoen er det ganske enkelt at anvende analoge indgange[1], da man kan gøre det med en enkelt kommando:

  int ADtal;
  ADtal = analogRead(kanal);

Her er ADtal blot en variabel der gemmer det tal fra 0 til 1023 som den analoge indgangs AD-konverter svarer med, når analogRead() kaldes.

Parameteren kanal angiver hvilken analog indgang man vil læse, og er på arduino UNO blot et tal fra 0 til 5, hvilket svarer til A0 - A5 som det er angivet ved stikforbindelserne på boardet.

Arduino UNO Rev. 3 med analoge indgange
Arduino UNO rev. 3 med analoge indgange A0 til A5


Eksempler på anvendelser er angivet i Arduino Serial og Arduino AnalogInput.

PIC Analoge indgange

Det er ikke alle de PIC-typer vi har ved Holstebro HTX der har AD-konvertere indbygget, men følgende typer har, og anvender til AD-konvertering det angivne bibliotek

PIC-type Bibliotek
PIC12F675 ADC_holst
PIC16F684 ADC_holst
PIC16F690 ADC_holst
PIC16F877 ADC

Referencer

PIC
PIC-Typer PIC16F84 - PIC12F675 - PIC16F628 - PIC16F684 - PIC16F690 - PIC16F877 - PIC18F2550
Programmeringsbegreber Maskinkode - Mikrocontroller
Programmeringsmiljø PIC-brænder - UsbPicProg - Analog indgang - ICSP


Arduino Elektrisk
Arduino Input Input - Input Høj-Lav - Input Strøm-Spænding - Input med intern Pull Up - Analogt - Analogt Input - Analog indgang - Arduino Reference Input - Input Tidsforhold - Specielle Input
Arduino Output Output - Output Høj-Lav - Output Strøm-Spænding - Analogt Output - Output Tidsforhold
Arduino Tidsforhold Arduino Reset Tid - Arduino setup() Tid - Arduino loop() Tid - Arduino Interrupt Tid - Arduino Tidsforhold Variabeltyper - Arduino Tidsforhold Sprogstrukturer - Input Tidsforhold - Output Tidsforhold - Serielle Tidsforhold