Turinys:
- Prekės
- 1 žingsnis: Surinkite reikiamus komponentus
- 2 žingsnis: darbo principas
- 3 žingsnis: surinkite dalis
- 4 žingsnis: įtampos jutimo tinklo dalių pridėjimas
- 5 veiksmas: dabartinio jutimo tinklo dalių pridėjimas
- 6 veiksmas: likusių jungčių užbaigimas ir statybos užbaigimas
- 7 žingsnis: modulio prijungimas prie „Arduino“
- 8 žingsnis: projekto kodas ir grandinės schema
- 9 žingsnis: mokomasis vaizdo įrašas
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Sveiki visi, tikiuosi, kad jums puikiai sekasi! Šioje pamokoje aš jums parodysiu, kaip sukūriau šį galios matuoklio/ vatmetro modulį, skirtą naudoti su „Arduino“plokšte. Šis galios matuoklis gali apskaičiuoti suvartotą galią ir nuolatinę apkrovą. Kartu su galia šis modulis taip pat gali mums pateikti tikslius įtampos ir srovės rodmenis. Jis gali lengvai išmatuoti žemą įtampą (apie 2 V) ir mažą srovę, iki 50 mA, o paklaida ne didesnė kaip 20 mA. Tikslumas priklauso nuo jūsų pasirinktų komponentų pasirinkimo.
Prekės
- IC LM358 dvigubas OP-AMP
- 8 kontaktų IC pagrindas
- Šuntavimo rezistorius (mano atveju 8,6 mlnOhms)
- Rezistoriai: 100K, 10K, 2.2K, 1K (1/2 vatai)
- Kondensatoriai: 3 * 0,1uF keraminiai kondensatoriai
- Veroboard arba nulinė lenta
- Sraigtiniai gnybtai
- Lituoklis ir lituoklis
- „Arduino Uno“ar bet kuri kita suderinama plokštė
- OLED ekranas
- Duonos laidų prijungimas
1 žingsnis: Surinkite reikiamus komponentus
Šiame projekte naudojami labai paprasti ir lengvai gaunami komponentai: į juos įeina rezistoriai, keraminiai kondensatoriai, operacinis stiprintuvas ir prototipų kūrimo plokštė.
Komponentų pasirinkimas ir vertė priklauso nuo taikymo tipo ir galios diapazono, kurį norite išmatuoti.
2 žingsnis: darbo principas
Maitinimo modulio veikimas grindžiamas dviem grandinės teorijos ir pagrindinės elektros koncepcijomis: įtampos daliklio koncepcija, skirta įėjimo įtampai matuoti, ir Omo dėsnis, skirtas apskaičiuoti srovę, tekančią per grandinę. Mes naudojame šunto rezistorių, kad sukeltume labai mažą įtampos kritimą. Šis įtampos kritimas yra proporcingas srovės, tekančios per šuntą, kiekiui. Ši maža įtampa, kai ją sustiprina operacinis stiprintuvas, gali būti naudojama kaip įvestis į mikrovaldiklį, kuris gali būti užprogramuotas taip, kad suteiktų mums dabartinę vertę. Operacinis stiprintuvas naudojamas kaip neinvertuojantis stiprintuvas, kai padidėjimą lemia grįžtamojo ryšio vertės rezistorius R2 ir R1. Naudojant neinversinę konfigūraciją, matavimo atskaitos taškas yra bendras. Šiuo tikslu srovė matuojama žemoje grandinės pusėje. Savo programai aš pasirinkau 46 padidėjimą, naudodamas 100K ir 2,2K rezistorių kaip grįžtamojo ryšio tinklą. Įtampos matavimas atliekamas naudojant įtampos daliklio grandinę, kuri padalija įėjimo įtampą proporcingai naudojamam rezistorių tinklui.
Tiek srovės vertė iš OP-Amp, tiek įtampos vertė iš daliklio tinklo gali būti tiekiama į du analoginius „arduino“įėjimus, kad galėtume apskaičiuoti apkrovos sunaudotą galią.
3 žingsnis: surinkite dalis
Pradėkime savo maitinimo modulio konstrukciją, nuspręsdami įėjimo ir išvesties jungčių varžtų gnybtų padėtį. Pažymėję atitinkamas pozicijas, lituojame varžtų gnybtus ir šunto rezistorių.
4 žingsnis: įtampos jutimo tinklo dalių pridėjimas
Įvesties įtampos jutimui naudoju 10K ir 1K įtampos skirstytuvo tinklą. Aš taip pat pridėjau 0,1 uF kondensatorių per 1K rezistorių, kad išlygintų įtampą. Įtampos jutimo tinklas yra lituojamas šalia įvesties gnybto
5 veiksmas: dabartinio jutimo tinklo dalių pridėjimas
Srovė matuojama apskaičiuojant ir stiprinant įtampos kritimą per šuntavimo rezistorių su iš anksto nustatytu stiprinimu, kurį nustato rezistorių tinklas. Naudojamas neinvertuojantis stiprinimo režimas. Pageidautina, kad lydmetalio pėdsakai būtų nedideli, kad būtų išvengta nepageidaujamo įtampos kritimo.
6 veiksmas: likusių jungčių užbaigimas ir statybos užbaigimas
Kai įtampos ir srovės jutimo tinklai yra prijungti ir lituojami, atėjo laikas lituoti antgalio kaiščius ir atlikti reikiamus maitinimo ir signalo išėjimų sujungimus. Modulis bus maitinamas standartine 5 voltų darbine įtampa, kurią galime lengvai gauti iš arduino plokštės. Du įtampos jutimo išėjimai bus prijungti prie analoginių arduino įėjimų.
7 žingsnis: modulio prijungimas prie „Arduino“
Kai modulis yra baigtas, dabar pagaliau atėjo laikas jį prijungti prie „Arduino“ir paleisti. Norėdami pamatyti vertes, aš naudoju OLED ekraną, kuris naudojo I2C protokolą bendravimui su arduino. Ekrane rodomi parametrai yra įtampa, srovė ir galia.
8 žingsnis: projekto kodas ir grandinės schema
Šiame žingsnyje pridėjau maitinimo modulio grandinės schemą ir kodą (anksčiau prijungiau.ino ir.txt failus, kuriuose yra kodas, tačiau dėl serverio klaidos vartotojams kodas buvo neprieinamas arba neįskaitomas, todėl parašiau visą kodą šiame žingsnyje. Žinau, kad tai nėra geras būdas bendrinti kodą:(). Nesivaržykite keisti šio kodo pagal savo reikalavimus. Tikiuosi, kad šis projektas jums buvo naudingas. Pasidalykite savo atsiliepimais komentaruose. Sveikiname!
#įtraukti
#įtraukti
#įtraukti
#įtraukti
#define OLED_RESET 4 „Adafruit_SSD1306“ekranas (OLED_RESET);
plūdė val = 0;
plūdės srovė = 0;
plūdės įtampa = 0;
plūdės galia = 0;
void setup () {
pinMode (A0, INPUT);
pinMode (A1, INPUT);
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // inicijuoti naudojant I2C addr 0x3C (128x32) display.display ();
vėlavimas (2000 m.);
// Išvalykite buferį.
display.clearDisplay ();
display.setTextSize (1);
display.setCursor (0, 0);
display.setTextColor (BALTA);
Serial.begin (9600); // Norėdami pamatyti vertes serijiniame monitoriuje
}
void loop () {
// atsižvelgiant į stabilių rodmenų vidurkį
už (int i = 0; i <20; i ++) {
srovė = srovė + analoginis skaitymas (A0);
įtampa = įtampa + analogRead (A1); }
srovė = (srovė/20); srovė = srovė * 0,0123 * 5,0; // kalibravimo vertė, turi būti keičiama atsižvelgiant į naudojamus komponentus
įtampa = (įtampa/20); įtampa = įtampa * 0,0508 * 5,0; // kalibravimo vertė, turi būti keičiama atsižvelgiant į naudojamus komponentus
galia = įtampa*srovė;
// verčių spausdinimas nuosekliajame monitoriuje
Serijinis atspaudas (įtampa);
Serial.print ("");
Serial.print (dabartinis);
Serial.print ("");
Serial.println (galia);
// verčių spausdinimas OLED ekrane
display.setCursor (0, 0);
display.print ("Įtampa:");
ekranas.spaudas (įtampa);
display.println ("V");
display.setCursor (0, 10);
display.print ("Dabartinis:");
display.print (dabartinis);
display.println ("A");
display.setCursor (0, 20);
display.print („Maitinimas:“);
ekranas.spaudas (galia);
display.println ("W");
display.display ();
vėlavimas (500); // atnaujinimo dažnis, nustatytas vėlavimo
display.clearDisplay ();
}