I dette projekt vil vi lave et lavt rækkevidde amperemeter ved hjælp af ATMEGA8 mikrokontroller. I ATMEGA8 skal vi bruge 10bit ADC (analog til digital konvertering) -funktion til at gøre dette. Selvom vi har få andre måder at få den aktuelle parameter fra et kredsløb, skal vi bruge resistiv drop-metode, fordi det er den nemmeste og enkleste måde at få den aktuelle parameter på.
I denne metode vil vi overføre strømmen, der skulle måles ind, til en lille modstand, ved dette får vi et fald over den modstand, der er relateret til strøm, der strømmer gennem den. Denne spænding på tværs af modstand føres til ATMEGA8 til ADC-konvertering. Med det har vi strømmen i digital værdi, der vises på en 16x2 LCD.
Til det skal vi bruge et spændingsdelerkredsløb. Vi vil give strømmen gennem den komplette modstandsgren. Grænsens midtpunkt føres til måling. Når aktuelle ændringer sker, vil der være faldændring i modstanden, som er lineær for den. Så med dette har vi en spænding, der ændres med linearitet.
Nu er det vigtigt at bemærke her, at inputet fra controlleren til ADC-konvertering er så lavt som 50 µAmp. Denne belastningseffekt af modstandsbaseret spændingsdeler er vigtig, da strømmen trukket fra Vout af spændingsdeler øger fejlprocenten, for nu behøver vi ikke bekymre os om belastningseffekt.
Komponenter, der kræves
Hardware: ATMEGA8, strømforsyning (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF kondensator, 100nF kondensator (4 stykker), 100Ω modstand (7 stykker) eller 2,5Ω (2 stk), 100KΩ modstand.
Software: Atmel studio 6.1, progisp eller flash-magi.
Kredsløbsdiagram og arbejdsforklaring
Spændingen over R2 og R4 er ikke helt lineær; det vil være støjende. For at filtrere støjen placeres kondensatorer på tværs af hver modstand i delerkredsløbet som vist i figuren.
I ATMEGA8 kan vi give analogt input til en af de fire PORTC-kanaler, det betyder ikke noget, hvilken kanal vi vælger, da alle er ens. Vi vælger kanal 0 eller PIN0 for PORTC. I ATMEGA8 har ADC 10 bit opløsning, så controlleren kan registrere en minimumændring af Vref / 2 ^ 10, så hvis referencespændingen er 5V, får vi en digital udgangsstigning for hver 5/2 ^ 10 = 5mV. Så for hver 5 mV forøgelse i indgangen vil vi have en forøgelse på en ved digital udgang.
Nu skal vi indstille registeret over ADC baseret på følgende vilkår:
1. Først og fremmest skal vi aktivere ADC-funktionen i ADC.
2. Her får du en maksimal indgangsspænding til ADC-konvertering er + 5V. Så vi kan indstille maksimal værdi eller reference for ADC til 5V.
3. Controlleren har en triggerkonverteringsfunktion, der betyder, at ADC-konvertering kun finder sted efter en ekstern trigger, da vi ikke ønsker, at vi skal indstille registre for, at ADC skal køre i kontinuerlig fri kørselstilstand.
4. For enhver ADC er konverteringsfrekvensen (analog værdi til digital værdi) og nøjagtigheden af det digitale output omvendt proportional. Så for bedre nøjagtighed af digital output skal vi vælge mindre frekvens. For normalt ADC-ur indstiller vi forsalget på ADC til maksimumsværdien (2). Da vi bruger det interne ur på 1MHZ, vil uret til ADC være (1000000/2).
Dette er de eneste fire ting, vi har brug for at vide for at komme i gang med ADC.
Alle de ovennævnte fire funktioner er indstillet af to registre,
RØD (ADEN): Denne bit skal indstilles for at aktivere ADC-funktionen i ATMEGA.
BLÅ (REFS1, REFS0): Disse to bits bruges til at indstille referencespændingen (eller den maksimale indgangsspænding, vi skal give). Da vi ønsker at have referencespænding 5V, skal REFS0 indstilles ved bordet.
GUL (ADFR): Denne bit skal indstilles for at ADC'en skal køre kontinuerligt (frit kørselstilstand).
PINK (MUX0-MUX3): Disse fire bits er til at fortælle inputkanalen. Da vi skal bruge ADC0 eller PIN0, behøver vi ikke indstille bits som ved bordet.
BRUN (ADPS0-ADPS2): disse tre bits er til indstilling af prescalar for ADC. Da vi bruger en prescalar på 2, skal vi indstille en bit.
MØRK GRØN (ADSC): dette bit sæt til ADC'en til at starte konvertering. Denne bit kan deaktiveres i programmet, når vi skal stoppe konverteringen.