- Nødvendige materialer:
- Arbejde med ACS712 nuværende sensor:
- Kredsløbsdiagram:
- Simulation:
- Programmering af PIC Microcontroller:
- Arbejder:
Måling af spænding og strøm vil altid være nyttigt under oprettelse eller fejlretning af ethvert elektrisk system. I dette projekt skal vi lave vores eget digitale amperemeter ved hjælp af PIC16F877A mikrokontroller og strømføler ACS712-5A. Dette projekt kan måle både vekselstrøm og jævnstrøm med et interval på 0-30A med en nøjagtighed på 0,3A. Med få ændringer på koden kan du også bruge dette kredsløb til at måle op til 30A. Så lad os komme i gang !!!
Nødvendige materialer:
- PIC16F877A
- 7805 Spændingsregulator
- ACS712 strømføler
- 16 * 2 LCD-skærm
- En samledåse og belastning (kun til test)
- Tilslutning af ledninger
- Kondensatorer
- Brødbræt.
- Strømforsyning - 12V
Arbejde med ACS712 nuværende sensor:
Før vi begynder at opbygge projektet, er det meget vigtigt for os at forstå funktionen af ACS712 Current sensor, da den er nøglekomponenten i projektet. Måling af strøm, især vekselstrøm, er altid en hård opgave på grund af støj kombineret med forkert isoleringsproblem osv. Men ved hjælp af dette ACS712-modul, der blev konstrueret af Allegro, er det blevet meget lettere.
Dette modul fungerer på princippet om Hall-effekt, som blev opdaget af Dr. Edwin Hall. Ifølge hans princip genereres en spænding på tværs af kanterne vinkelret på retningerne for både strømmen og magnetfeltet, når en strømførende leder placeres i et magnetfelt. Lad os ikke komme for dybt ind i konceptet, men simpelthen bruger vi en hallsensor til at måle magnetfeltet omkring en strømførende leder. Denne måling vil være i form af millivolt, som vi kaldte som hall-spænding. Denne målte hall-spænding er proportional med strømmen, der strømmer gennem lederen.
Den største fordel ved at bruge ACS712 strømføler er, at den kan måle både vekselstrøm og jævnstrøm, og det giver også isolation mellem belastningen (vekselstrøm / jævnstrøm) og måleenheden (del af mikrocontroller). Som vist på billedet har vi tre ben på modulet, som er henholdsvis Vcc, Vout og Ground.
2-polet klemme er, hvor den strømførende ledning skal føres igennem. Modulet fungerer på + 5V, så Vcc'en skal drives af 5V, og jorden skal være forbundet til systemets jord. Vout-stiften har en offset spænding på 2500mV, hvilket betyder, at når der ikke strømmer strøm gennem ledningen, vil udgangsspændingen være 2500mV, og når strømmen er positiv, vil spændingen være større end 2500mV, og når strømmen er negativ, er spændingen vil være mindre end 2500mV.
Vi bruger ADC-modulet på PIC-mikrocontrolleren til at læse modulets udgangsspænding (Vout), som vil være 512 (2500mV), når der ikke strømmer strøm gennem ledningen. Denne værdi reduceres, når strømmen strømmer i negativ retning og vil stige, når strømmen strømmer i positiv retning. Nedenstående tabel hjælper dig med at forstå, hvordan udgangsspændingen og ADC-værdien varierer afhængigt af strømmen, der strømmer gennem ledningen.
Disse værdier blev beregnet på baggrund af oplysningerne i databladet for ACS712. Du kan også beregne dem ved hjælp af nedenstående formler:
Vout-spænding (mV) = (ADC-værdi / 1023) * 5000 Strøm gennem ledningen (A) = (Vout (mv) -2500) / 185
Nu ved vi, hvordan ACS712-sensoren fungerer, og hvad vi kunne forvente af den. Lad os gå videre til kredsløbsdiagrammet.
Kredsløbsdiagram:
Det komplette kredsløbsdiagram for dette digitale amperemeterprojekt er vist på billedet nedenfor.
Det komplette digitale strømmålerkredsløb fungerer på + 5V, som reguleres af en 7805 spændingsregulator. Vi har brugt et 16X2 LCD til at vise strømens værdi. Output pin af den nuværende Sensor (Vout) er forbundet med den 7 th pin af PIC, som er den AN4 at læse Analog spænding.
Yderligere er pin-forbindelsen til PIC vist i nedenstående tabel
S. nej: |
Pinkode |
Pin-navn |
Forbundet til |
1 |
21 |
RD2 |
RS på LCD |
2 |
22 |
RD3 |
E af LCD |
3 |
27 |
RD4 |
D4 af LCD |
4 |
28 |
RD5 |
D5 af LCD |
5 |
29 |
RD6 |
D6 af LCD |
6 |
30 |
RD7 |
D7 af LCD |
7 |
7 |
AN4 |
Vout of Current Sesnor |
Du kan bygge dette digitale amperemeter kredsløb på et brødbræt eller bruge et perf-kort. Hvis du har fulgt PIC-vejledningerne, kan du også genbruge den hardware, som vi brugte til at lære PIC-mikrocontrollere. Her har vi brugt det samme perf Board, som vi har bygget til LED Blinking med PIC Microcontroller, som vist nedenfor:
Bemærk: Det er ikke obligatorisk for dig at opbygge dette kort, du kan simpelthen følge kredsløbsdiagrammet og bygge dig kredsløb på et brødkort og bruge ethvert dumper-sæt til at dumpe dit program i PIC Microcontroller.
Simulation:
Dette aktuelle målerkredsløb kan også simuleres ved hjælp af Proteus, før du rent faktisk fortsætter med din hardware. Tildel hex-filen af koden, der er angivet i slutningen af denne tutorial, og klik på play-knappen. Du skal være i stand til at bemærke strømmen på LCD-skærmen. Jeg har brugt en lampe som en AC-belastning, du kan variere lampens interne modstand ved at klikke på den for at variere strømmen, der strømmer gennem den.
Som du kan se på ovenstående billede viser amperestyreren den aktuelle strøm, der strømmer gennem lampen, som er omkring 3,52 A, og LCD'et viser, at strømmen er omkring 3,6 A. Men i praktisk tilfælde får vi muligvis Fejl op til 0.2A. ADC-værdien og spændingen i (mV) vises også på LCD'et for din forståelse.
Programmering af PIC Microcontroller:
Som fortalt tidligere kan den komplette kode findes i slutningen af denne artikel. Koden forklares selv med kommentarlinjer og involverer bare begrebet grænseflade mellem en LCD og PIC Microcontroller og brug af ADC-modul i PIC Microcontroller, som vi allerede har dækket i vores tidligere tutorials om PIC Microcontrollers.
Værdien, der læses fra sensoren, vil ikke være nøjagtig, da strømmen skifter og også udsættes for støj. Derfor læser vi ADC-værdien i 20 gange og gennemsnitsværdien for at få den aktuelle aktuelle værdi som vist i koden nedenfor.
Vi har brugt de samme formler, som blev forklaret ovenfor til at beregne spændingen og strømværdien.
for (int i = 0; i <20; i ++) // Læsværdi i 20 gange {adc = 0; adc = ADC_Read (4); // Læs ADC-spænding = adc * 4.8828; // Beregn spændingen, hvis (Spænding> = 2500) // Hvis strømmen er positiv Ampere + = ((Spænding-2500) /18,5); ellers hvis (Spænding <= 2500) // Hvis strømmen er negativ Ampere + = ((2500-spænding) /18,5); } Forstærkere / = 20; // Gennemsnitlig den værdi, der blev læst 20 gange
Da dette projekt også kan læse vekselstrøm, vil strømmen også være negativ og positiv. Det er værdien af udgangsspændingen vil være over og under 2500mV. Derfor ændres som vist nedenfor formlerne for negativ og positiv strøm, så vi ikke får negativ værdi.
hvis (Spænding> = 2500) // Hvis strømmen er positiv Ampere + = ((Spænding-2500) /18,5); ellers hvis (Spænding <= 2500) // Hvis strømmen er negativ Ampere + = ((2500-spænding) /18,5);
Brug af en 30A strømføler:
Hvis du har brug for at måle strøm mere end 5A, kan du simpelthen købe et ACS712-30A-modul og interface det på samme måde og ændre nedenstående kodelinje ved at erstatte 18.5 med 0.66 som vist nedenfor:
hvis (Spænding> = 2500) // Hvis strømmen er positiv Ampere + = ((Spænding-2500) /0,66); ellers hvis (Spænding <= 2500) // Hvis strømmen er negativ Amps + = ((2500-Voltage) /0.66);
Kontroller også 100mA amperemeter ved hjælp af AVR Microcontroller, hvis du vil måle lav strøm.
Arbejder:
Når du har programmeret PIC Microcontroller og gjort din hardware klar. Tænd blot belastningen og din PIC-mikrocontroller, du skal kunne se strømmen, der passerer gennem ledningen, der vises på din LCD-skærm.
BEMÆRK: HVIS du bruger et ASC7125A-modul, skal du sørge for, at din belastning ikke forbruger mere end 5A, og brug også ledere med højere gauge til strømførende ledere.
Den komplette bearbejdning af det PIC-mikrocontrollerbaserede amperemeterprojekt er vist i videoen nedenfor. Håber du fik projektet til at fungere og nød at gøre det. Hvis du er i tvivl, kan du skrive dem i kommentarfeltet nedenfor eller sende dem på vores fora.