I dette prosjektet skal vi lage et lavt rekkevidde amperemeter ved hjelp av ATMEGA8 mikrokontroller. I ATMEGA8 skal vi bruke 10bit ADC (Analog til Digital Conversion) -funksjon for å gjøre dette. Selv om vi har få andre måter å få den nåværende parameteren fra en krets, skal vi bruke resistiv slippmetode, fordi det er den enkleste og enkleste måten å få gjeldende parameter på.
I denne metoden skal vi overføre strømmen som måtte måles inn til en liten motstand, ved dette får vi en dråpe over den motstanden som er relatert til strømmen som strømmer gjennom den. Denne spenningen over motstand blir matet til ATMEGA8 for ADC-konvertering. Med det vil vi ha strømmen i digital verdi som vises på en 16x2 LCD.
For det skal vi bruke en spenningsdelerkrets. Vi skal mate strømmen gjennom hele motstandsgrenen. Grensens midtpunkt blir tatt til måling. Når nåværende endringer vil det være fallendring i motstanden som er lineær mot den. Så med dette har vi en spenning som endres med linearitet.
Nå er det viktig å merke seg at inngangen som er tatt av kontrolleren for ADC-konvertering er så lav som 50 µAmp. Denne belastningseffekten av motstandsbasert spenningsdeler er viktig da strømmen hentet fra Vout av spenningsdeleren øker feilprosentandelen, for nå trenger vi ikke bekymre oss for belastningseffekt.
Komponenter kreves
Maskinvare: ATMEGA8, strømforsyning (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF kondensator, 100nF kondensator (4 stk), 100Ω motstand (7 stk) eller 2,5Ω (2 stk), 100KΩ motstand.
Programvare: Atmel studio 6.1, progisp eller flash magi.
Kretsdiagram og arbeidsforklaring
Spenningen over R2 og R4 er ikke helt lineær; det vil være bråkete. For å filtrere ut støyen, plasseres kondensatorer over hver motstand i delerkretsen som vist på figuren.
I ATMEGA8 kan vi gi analoge innganger til noen av de fire PORTC-kanalene, det spiller ingen rolle hvilken kanal vi velger, ettersom alle er like. Vi skal velge kanal 0 eller PIN0 for PORTC. I ATMEGA8 har ADC 10-biters oppløsning, slik at kontrolleren kan oppdage en minimumsendring av Vref / 2 ^ 10, så hvis referansespenningen er 5V får vi en digital utgangsøkning for hver 5/2 ^ 10 = 5mV. Så for hver 5mV økning i inngangen vil vi ha en økning på en på digital utgang.
Nå må vi sette registeret over ADC basert på følgende vilkår:
1. Først og fremst trenger vi å aktivere ADC-funksjonen i ADC.
2. Her kommer til å få en maksimal inngangsspenning for ADC-konvertering er + 5V. Så vi kan sette opp maksimumsverdi eller referanse for ADC til 5V.
3. Kontrolleren har en utløserkonverteringsfunksjon som betyr at ADC-konvertering bare finner sted etter en ekstern utløser, siden vi ikke vil at vi trenger å sette registrene for at ADC skal kjøre i kontinuerlig friløpsmodus.
4. For enhver ADC er konverteringsfrekvensen (analog verdi til digital verdi) og nøyaktigheten av digital utgang omvendt proporsjonal. Så for bedre nøyaktighet av digital utgang må vi velge mindre frekvens. For normal ADC-klokke setter vi forhåndssalget til ADC til maksimumsverdien (2). Siden vi bruker den interne klokken på 1MHZ, vil klokken til ADC være (1000000/2).
Dette er de eneste fire tingene vi trenger å vite for å komme i gang med ADC.
Alle de ovennevnte fire funksjonene er satt av to registre,
RØD (ADEN): Denne biten må stilles inn for å aktivere ADC-funksjonen til ATMEGA.
BLÅ (REFS1, REFS0): Disse to bitene brukes til å stille inn referansespenningen (eller maks inngangsspenning vi skal gi). Siden vi ønsker å ha referansespenning 5V, bør REFS0 settes ved tabellen.
GUL (ADFR): Denne biten må være satt for at ADC skal kjøre kontinuerlig (friløpsmodus).
PINK (MUX0-MUX3): Disse fire bitene er for å fortelle inngangskanalen. Siden vi skal bruke ADC0 eller PIN0, trenger vi ikke å sette noen biter som ved tabellen.
BRUN (ADPS0-ADPS2): disse tre bitene er for å sette prescalar for ADC. Siden vi bruker en prescalar på 2, må vi sette en bit.
MØRK GRØNN (ADSC): denne biten er satt for at ADC skal starte konvertering. Denne biten kan deaktiveres i programmet når vi trenger å stoppe konverteringen.