ADC holst

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Modulet ADC_holst er lavet som en tilpasning til de AD-konvertere der sidder i de mest anvendte PIC-kredse på Holstebro HTX.

ADC_holst virker kun for PIC16F684 og PIC16F690 for andre pic typer brug ADC bibloteket

Modulet består kun af Software til modulet.

I softwaren ligger der et eksempel på hvordan det kan anvendes.

En AD-konverter har den funktion, at man kan levere en analog spænding til AD-konverteren (her et ben på PIC'en), og aflæse hvilken spænding der ligger på benet, udtrykt som en digital værdi (et tal fra 0 - 1023).

Princip-diagram for ADC_Holst

Der er ikke noget egentligt diagram til AD-konverteren, og slet ikke til det software-interface der ligger i ADC_Holst, men det kan alligevel bidrage med noget forståelse af AD-konverteringens funktion, at gennemgå principskitsen for AD-konverteren i PIC'en. Princip-skitsen der er vist her er for en PIC16F684, men den generelle funktion er den samme i alle PIC-typer

Centralt på princip-skitsen sidder selve AD-konverteren (ikke markeret), der laver den aktuelle konvertering fra en analog spænding til et digitalt tal på 10 bit.

Den røde markering angiver det antal indgange der kan håndtere Analoge signaler (her 8 forskellige), og komponententen der sidder på vej ind til AD'en er en multiplexer, der kan vælge hvilken indgang der skal have forbindelse ind til AD-konverteren. Der kan altså kun konverteres på en indgang ad gangen. I softwaren ADC_Holst kan man vælge hvilken kanal man ønsker at aflæse.

Den grønne markering er de to styre-signaler der tænder for AD-konverteren, og sætter konverteringen i gang. Dette bliver styret af ADC_Holst, når man læser en værdi.

Den blå markering angiver at man kan indstille referencen til 2 forskellige ting. Dels kan den sættes til VDD (forsyningsspændingen, eller den kan kobles på et andet ben, der har en ekstern referencespænding tilsluttet, som skal ligge mellem 2,2V og VDD).
Referencespændingen angiver ved hvilken indgangs-spænding AD-konverteren skal give det maksimale tal (1023) ud. Ved en indgangs-spænding på 0V i forhold til VSS giver AD-konverteren tallet 0 ud. Det indstilles ved hjælp af konstanten ADC_NVREF:

  • ADC_NVREF = 0 -- Giver VDD som reference
  • ADC_NVREF = 1 -- Giver Vref benet som reference

Den brune markering angiver tilslutningen ind til den indre del af PIC'en, at resultatet lander i 2 registre ADRESH og ADRESL, men dette håndteres også af ADC_holst, så man blot kan aflæse et tal.

Adc detail.png

Software modulet ADC_holst.jal

Som nævnt ovenfor kan man vælge referencen med ADC_NVREF, men for at sætte den til VDD skrives blot:

const byte ADC_NVREF = 0

Dette skal gøres inden man includer modulet med biblioteket i, med følgende linje:

include ADC_Holst

Efter dette er ADC-modulet klar til brug, så det eneste man skal gøre for at læse en AD-værdi er at kalde en funktion, der returnerer den konverterede værdi. Det er to forskellige rutine man kan anvende:

adc_read(kanal)
adc_read_byte(kanal)

Funktionen adc_read(kanal) returnerer et word, hvor værdien kan ligge fra 0 til 1023
Funktionen adc_read_byte(kanal) returnerer en byte, hvor værdien kan ligge fra 0 til 255.

Den kanal der skal med som parameter er AD-kanalnummeret som man vil læse på. Der er senere beskrevet sammenhængen med pin-numre.

Alt softwaren kan hentes i denne ZIP-fil sammen med eksempler på hvordan modulet kan anvendes.

Interface til ADC_holst

Som beskrevet skal man sætte ADC_NVREF inden man includer ADC_holst. Herefter skal man blot kalde en af funktionerne med et kanal-nummer angivet, som beskrevet i følgende tabel:

kanal-nr PIC12F675 PIC16F684 PIC16F690
port-pin ben port-pin ben port-pin ben
0 RA0 7 RA0 12 RA0 19
1 RA1 6 RA1 11 RA1 18
2 RA2 5 RA2 10 RA2 17
3 RA3 3 RA4 2 RA4 3
4 RC0 9 RC0 16
5 RC1 8 RC1 15
6 RC2 7 RC2 14
7 RC3 6 RC3 7
8 RC6 8
9 RC7 9
10 RB4 13
11 RB5 12

Anvendelsen af ADC_holst modulet

Som beskrevet, så er ADC_Holst (speciel tilføjelse i Holstebro) skrevet til PIC-typerne PIC12F675, PIC16F684 og PIC16F690. Det er 3 af de typer PIC vi har som har indbygget AD-konverter. PIC'en PIC16F877 har også indbygge AD-konvertere (8 kanaler), men til dette skal man anvende ADC modulet (standard i JAL).

En simpel demonstration af ADC_Holst modulets funktion kan laves som følger inde i forever-loopet:

  if pin_a3 then            -- Hvis RA3 er aktiveret
    if ! last_a3 then       -- Og den ikke var det sidste gennemløb
      kanal = kanal + 1     -- skift til næste kanal på AD-kenverteren
      kanal = kanal & 0x03  -- hold kanalnummeret i området 0 - 3
                            -- fordi vi bruger hele port C (4-7) som output
    end if
    last_a3 = true          -- husk RA3 til næste gang
  else
    last_a3 = false         -- husk RA3 til næste gang
  end if

  PortC = adc_read_byte(kanal)   -- Udlæs 8 bits aflæsning på portc
  delay_100ms(1)
Moduler på Holstebro HTX
Tastaturer Displays AD-konvertering I/O-ekspander Serielt Interface Færdige Andre
RC-tast - AD-tast - M_tast ALCD - LCD ADC_holst - ADC
mcp3201 - mcp3208
input - output Seriel_holst - Serial hardware
Serial hw int cts - Serial software
Stepmotor - RFID
RGB - RF-link - Afstand
Humidity - Analog temp - Dig temp
Accelerometer
Rotary Encoder

Oversigt over Hardware Moduler på Holstebro HTX