- Szükséges anyagok
- Kördiagramm
- Mérőegység
- Számítási és megjelenítési egység
- Az Arduino programozása
- Hogyan lehet nagyobb pontossággal mérni?
- Munka és tesztelés
Elektronikai mérnökként mindig függünk a mérőktől / műszerektől az áramkör működésének mérésében és elemzésében. Kezdve egy egyszerű multimétertől a komplex teljesítményminőség-elemzőkig vagy DSO-kig, mindennek megvan a maga egyedi alkalmazása. E mérők többsége könnyen elérhető, és megvásárolható a mérendő paraméterek és pontosságuk alapján. De néha olyan helyzetbe kerülhetünk, hogy saját mérőórákat kell építenünk. Tegyük fel például, hogy napelemes projekten dolgozik, és szeretné kiszámolni a terhelés energiafogyasztását. Ilyen esetekben saját Wattmérőt készíthetünk egy olyan egyszerű mikrovezérlő platform segítségével, mint az Arduino.
A saját mérőeszközök megépítése nemcsak a tesztelés költségeit csökkenti, hanem teret is ad számunkra, hogy megkönnyítsük a tesztelés folyamatát. Hasonlóan az Arduino segítségével épített wattmérő is egyszerűen módosítható, hogy figyelemmel kísérje az eredményeket a soros monitoron, és ábrázoljon egy grafikont a soros plotteren, vagy SD-kártyát adjon hozzá, hogy automatikusan rögzítse a feszültség, az áram és a teljesítmény értékét előre meghatározott időközönként. Érdekesen hangzik !? Tehát kezdjük…
Szükséges anyagok
- Arduino Nano
- LM358 Op-Amp
- 7805 Feszültségszabályozó
- 16 * 2 LCD kijelző
- 0,22 ohmos 2 Wattos söntellenállás
- 10k Trimmer edény
- 10k, 20k, 2.2k, 1k ellenállások
- 0,1uF kondenzátorok
- Teszt terhelés
- Tökéletes tábla vagy kenyérlap
- Forrasztókészlet (opcionális)
Kördiagramm
Az arduino wattmérő projekt teljes kapcsolási rajza alább látható.
Az érthetőség megkönnyítése érdekében az arduino wattmérő áramköre két egységre oszlik. Az áramkör felső része a mérőegység, az áramkör alsó része pedig a számítási és megjelenítési egység. Azok számára, akik újak az ilyen típusú áramkörökben, követték a címkéket. Az + 5V példa címke, ami azt jelenti, hogy az összes csapot, amelyhez a címke csatlakozik, figyelembe kell venni, mivel össze vannak kapcsolva. A címkéket általában arra használják, hogy a kapcsolási rajz szép legyen.
Az áramkört úgy tervezték, hogy illeszkedjen a 0–24 V közötti, 0–1 A áramerősséggel működő rendszerekhez, szem előtt tartva a Solar PV specifikációját. De könnyen kiterjesztheti a hatótávolságot, ha megértette az áramkör működését. Az áramkör mögött az az elv áll, hogy megmérjük a terhelés és az azon átmenő áram feszültségét, hogy kiszámítsuk az általa fogyasztott energiát. Az összes mért érték megjelenik egy 16 * 2-es alfanumerikus LCD-n.
Az alábbiakban osztjuk fel az áramkört kis szegmensekre, hogy tiszta képet kapjunk arról, hogy az áramkör hogyan van behúzva.
Mérőegység
A mérőegység egy potenciálosztóról áll, amely segít a feszültség mérésében, és egy nem invertáló Op-erősítővel ellátott záró ellenállást használunk az áramkörön keresztüli áram mérésére. A fenti áramkör potenciálelosztó része az alábbiakban látható
Itt a bemeneti feszültséget Vcc képviseli, amint azt korábban elmondtuk, az áramkört 0 V és 24 V közötti feszültségtartományra tervezzük. De az Arduino-hoz hasonló mikrovezérlő nem képes ilyen magas feszültségértékeket mérni; csak 0-5V feszültséget tud mérni. Tehát fel kell térképeznünk (átalakítanunk) a 0-24V és 0-5V közötti feszültségtartományt. Ez könnyen megtehető az alább látható potenciálosztó áramkör használatával. A 10k és a 2.2k ellenállás együttesen alkotja a potenciálelosztó áramkört. A potenciálosztó kimeneti feszültségét az alábbi képletekkel lehet kiszámítani. Ugyanezt kell használni az ellenállások értékének eldöntésére. Használhatja online kalkulátorunkat az ellenállás értékének kiszámításához, ha újratervezi az áramkört.
Vout = (Vin × R2) / (R1 + R2)
A feltérképezett 0–5 V a középső részből nyerhető, amelyet feszültségként jelölünk. Ezt a leképezett feszültséget később az Arduino Analog csapra lehet táplálni.
Ezután meg kell mérni az áramot a LOAD-on keresztül. Mint tudjuk, a mikrovezérlők csak analóg feszültséget tudnak olvasni, ezért az áram értékét valahogyan feszültséggé kell átalakítanunk. Megtehető úgy, hogy egyszerűen hozzá kell adni egy ellenállást (söntellenállást) az útba, amely Ohm törvénye szerint a feszültség értékét csökkenti rajta, amely arányos a rajta keresztül áramló árammal. Ennek a feszültségesésnek az értéke nagyon alacsony lesz, ezért egy erősítőt használunk annak erősítésére. Az áramkör az alábbiakban látható
Itt a söntellenállás (SR1) értéke 0,22 Ohm. Mint korábban említettük, az áramkört 0-1A-ra tervezzük, így az Ohm-törvény alapján kiszámíthatjuk az ellenállás feszültségesését, amely 0,2 V körül lesz, amikor a terhelésen legfeljebb 1A áram halad át. Ez a feszültség nagyon kicsi ahhoz, hogy a mikrovezérlő leolvashassa, nem invertáló erősítő üzemmódban Op-Amp-ot használunk, hogy a feszültséget 0,2 V-ról magasabb szintre emeljük az Arduino olvasásához.
Az Op-Amp nem invertáló módban fent látható. Az erősítőt úgy tervezték, hogy erősítése 21 legyen, így 0,2 * 21 = 4,2 V. Az Op-amp erősítésének kiszámítására szolgáló képletek az alábbiakban találhatók. Ezt az online erősítési számológépet használhatja az ellenállás értékének megszerzéséhez is, ha újratervezi az áramkört.
Nyereség = Vout / Vin = 1 + (Rf / Rin)
Itt a mi esetünkben az Rf értéke 20k, a Rin értéke 1k, aminek eredményeként 21 óriási értéket kapunk. Az Op-amp erősített feszültségét ezután 1k ellenállású RC-szűrőhöz és 0,1uF kondenzátorhoz juttatjuk. szűrje le a csatolt zajokat. Végül a feszültséget az Arduino analóg csapjába táplálják.
A mérőegységben maradt utolsó rész a feszültségszabályozó rész. Mivel változó bemeneti feszültséget adunk, szabályozott + 5 V feszültségre van szükségünk az Arduino és az Op-amp működéséhez. Ezt a szabályozott feszültséget a 7805 feszültségszabályozó biztosítja. A kimenethez kondenzátort adnak a zaj szűrésére.
Számítási és megjelenítési egység
A mérőegységben úgy alakítottuk ki az áramkört, hogy a feszültség és az áram paramétereit 0-5V-ra alakítsuk át, amelyek betáplálhatók az Arduino Analog csapokba. Az áramkör ezen részén ezeket a feszültségjeleket összekapcsoljuk az Arduino-val, és egy 16 × 2-es alfanumerikus kijelzőt is összekapcsolunk az Arduino-val, hogy megtekinthessük az eredményeket. Az áramkör az alábbiakban látható
Amint láthatja, a feszültségcsatlakozó csatlakozik az A3 analóg tűhöz és az aktuális tű az A4 analóg tűhöz. Az LCD tápfeszültsége a 7805 + 5 V-ja, és az Arduino digitális csatlakozóihoz csatlakozik, hogy 4 bites módban működjön. Az LCD kontrasztjának megváltoztatásához a Con pin-hez csatlakoztatott potenciométert (10k) is használtunk.
Az Arduino programozása
Most, hogy jól megértettük a hardvert, nyissuk meg az Arduino-t és kezdjük el a programozást. A kód célja az analóg feszültség leolvasása az A3 és A4 tűkön, és a feszültség, áram és teljesítmény érték kiszámítása, végül az LCD képernyőn való megjelenítése. Az ehhez hasonló teljes program az oldal végén található, amelyet a fent tárgyalt hardverhez felhasználhatunk. Ezenkívül a kódot apró részletekre osztják és elmagyarázzák.
Mint minden programnál kezdjük, meghatározva az általunk használt csapokat. Kimeneti projektben az A3 és az A4 tűt használjuk a feszültség és az áram mérésére, a 3,4,8,9,10 és 11 digitális érintkezőket pedig az LCD és az Arduino összekapcsolására
int Olvasási_feszültség = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Meg kell említeni a LiquidCrystal lcd LCD-csatlakozás PIN-kódját (rs, en, d4, d5, d6, d7);
A folyadékkristály nevű fejlécfájlt is mellékeltük az LCD és az Arduino összekapcsolására. Ezután a beállítási funkción belül inicializáljuk az LCD-kijelzőt, és egy bevezető szöveget megjelenítünk „Arduino Wattmeter” néven, és várunk két másodpercet, mielőtt törölnénk. Ugyanennek a kódja az alábbiakban látható.
void setup () { lcd.begin (16, 2); // 16 * 2 LCD lcd.print inicializálása ("Arduino Wattmeter"); // Intro Message line 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Intro Message line delay (2000); lcd.clear (); }
A fő hurok funkción belül az analóg olvasási funkcióval leolvassuk a feszültség értékét az A3 és A4 tűkről. Mint tudjuk, az Arduino ADC kimeneti értéke 0-1203, mivel 10 bites ADC-je van. Ezt az értéket ezután 0-5V-ra kell konvertálni, amelyet meg lehet szorozni a (5/1023) értékkel. Aztán a hardver korábbi részében ismét feltérképeztük a feszültség tényleges értékét 0-24V és 0-5V között, valamint a jelenlegi formában a 0-1A és 0-5V közötti tényleges értéket. Tehát most szorzót kell használnunk, hogy ezeket az értékeket visszaállítsuk a tényleges értékre. Ezt úgy tehetjük meg, hogy megszorozzuk szorzó értékkel. A szorzó értéke elméletileg kiszámítható a hardver szakaszban megadott képletek segítségével, vagy ha ismert feszültség- és áramerősség-halmaza van, akkor gyakorlatilag kiszámíthatja.Az utóbbi lehetőséget követtem, mert ez általában valós időben pontosabb. Tehát itt a szorzók értéke 6,46 és 0,239. Ezért a kód az alábbiak szerint néz ki
float Voltage_Value = analogRead (Read_Feszültség); úszó Current_Value = analogRead (Read_Current); Feszültség_érték = Feszültség_érték * (5,0 / 1023,0) * 6,46; Current_Value = Current_Value * (5,0 / 1023,0) * 0,239;
Hogyan lehet nagyobb pontossággal mérni?
A tényleges feszültség és áram értékének kiszámításának fenti módja remekül működik. De egy hátránya van, vagyis a mért ADC feszültség és a tényleges feszültség kapcsolata nem lesz lineáris, ezért egyetlen szorzó nem fog nagyon pontos eredményt adni, ugyanez érvényes az áramra is.
Tehát a pontosság javítása érdekében egy ismert értékkészlet felhasználásával ábrázolhatjuk a mért ADC-értékeket a tényleges szelepekkel, majd felhasználhatjuk ezeket az adatokat egy grafikon ábrázolására és a lineáris regressziós módszerrel levezethetjük a szorzóegyenletet. Hivatkozhat az Arduino dB mérőre, amelyben hasonló módszert használtam.
Végül, miután kiszámoltuk a tényleges feszültség és a terhelésen keresztüli tényleges áram értékét, kiszámíthatjuk a teljesítményt a képletek segítségével (P = V * I). Ezután mindhárom értéket megjelenítjük az LCD kijelzőn az alábbi kód felhasználásával.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Feszültség_érték); lcd.print (""); lcd.print ("I ="); lcd.print (Current_Value); float Teljesítmény_érték = Feszültség_érték * Jelenlegi_érték; lcd.setCursor (0, 1); lcd.print ("Teljesítmény ="); lcd.print (Teljesítmény_érték);
Munka és tesztelés
Az oktatóanyag kedvéért egy perf táblát használtam az összes alkatrész forrasztásához, amint az áramkörben látható. Phoenix csavaros sorkapcsot használtam a terhelés csatlakoztatásához, és a normál DC csöves csatlakozót az áramforrás csatlakoztatásához. Az Arduino Nano tábla és az LCD egy női Bergstikre van felszerelve, hogy később szükség esetén újra felhasználhatók legyenek.
Miután elkészítette a hardvert, töltse fel az Arduino kódot a Nano táblára. Állítsa be a trimmer potot az LCD kontrasztszintjének szabályozásához, amíg tiszta bevezető szöveget nem lát. A kártya teszteléséhez kösse be a terhelést a csavaros csatlakozó csatlakozójába, és a forrást a Barrel csatlakozóba. A projekt működéséhez a forrásfeszültségnek 6V-nál nagyobbnak kell lennie, mivel az Arduino működéséhez + 5V szükséges. Ha minden rendben működik, akkor az LCD első sorában meg kell látnia a terhelés és a rajta keresztüli áram értékét, valamint az LCD második sorában az alább látható számított teljesítményt.
A valami építésének szórakoztató része abban rejlik, hogy tesztelje annak megfelelő működését. Ehhez 12 V-os autójelző buborékokat használtam terhelésként, és az RPS-t forrásként. Mivel az RPS maga képes mérni és megjeleníteni az áram és a feszültség értékét, könnyen ellenőrizhetjük áramkörünk pontosságát és teljesítményét. És igen, az RPS-t is használtam a szorzó értékem kalibrálásához, hogy a pontos érték közelébe érjek.
A teljes munka megtalálható az oldal végén található videóban. Remélem megértette az áramkört és a programot, és megtanult valami hasznosat. Ha bármilyen problémája van, hogy ez működjön, tegye közzé az alábbi megjegyzés részben, vagy írjon fórumunkba további technikai segítségért.
Ez az Arduino alapú Wattmeter projekt számos további frissítést tartalmaz, amelyek hozzáadhatók a teljesítmény növeléséhez az automatikus adatnaplózáshoz, a grafikon ábrázolásához, a feszültségről vagy a jelenlegi helyzetekről való értesítéshez stb.