Turinys:
- 1 žingsnis: demonstracija
- 2 žingsnis: naudojami ištekliai
- 3 žingsnis: blokinė diagrama
- 4 žingsnis: schema
- 5 žingsnis: LM386 - prisegimas
- 6 žingsnis: „AmpOp“- diferencialas (atimamasis)
- 7 žingsnis: „AmpOp“- keitiklio papildymas
- 8 žingsnis: „Maple Mini“- šulinys
- 9 veiksmas: „Maple Mini“- prisegimas - a / D, naudojamas fiksuojant
- 10 žingsnis: Surinkimas
- 11 veiksmas: grafikas su gautais duomenimis
- 12 žingsnis: RMS vertės apskaičiavimas
- 13 žingsnis: šaltinio kodas
- 14 žingsnis: failai
Video: Tikrosios RMS kintamosios įtampos matavimas: 14 žingsnių
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Šiandien mes naudosime „STM32 Maple Mini“kintamosios srovės skaitymui. Mūsų pavyzdyje gausime elektros tinklo RMS vertę. Tai labai naudinga tiems, kurie nori stebėti daiktų interneto elektros tinklą. Tada mes sukursime programą, naudodamiesi „Maple Mini“skaičiavimo galia, pritaikysime elektroninę grandinę, galinčią įgyti 127 Vac signalą, taip pat taikysime mėginių vidutinio kvadrato (RMS) skaičiavimą.
1 žingsnis: demonstracija
Šiandien mūsų surinkime, be analoginės grandinės, turime įvesti 110 STM32. Kad išvengtumėte smūgių, izoliuokite įeinantį rezistorių 110.
Grandinė yra gana jautri. Aš gaunu 110, bet sumažinu jį 168 kartus, naudodamas įtampos skirstytuvą, ir įdedu jį į operacinį stiprintuvą, kuris turi keletą funkcijų.
Mes taip pat turime papildomus šaltinio filtravimo kondensatorius. Jei jūsų šaltinis yra geros kokybės, jums nereikia jų naudoti.
AD įvestis apskaičiuojama naudojant osciloskopą, kuriame matote sinusoidą, kuris nėra 110 (bet jis yra gerai suformuotas). Kitas dalykas yra tai, kad mūsų elektros tinklo įtampa nėra 110 (tai iš tikrųjų yra 127 voltai). Bet kai mes atliekame stabilizatorių, jis prisitaikys prie 115 V.
Serijiniame monitoriuje rodoma vertė yra tokia, kokia apskaičiuota RMS, ty ta, kurią nustato „Fluke Meter“.
2 žingsnis: naudojami ištekliai
• Džemperiai
• „Maple Mini“
• Protoboard
• LM386 stiprintuvas
• Simetriškas šaltinis (+ 5V ir -5V)
• 10k kelių posūkių trimpot (arba potenciometras)
• Keturi 100nF poliesterio kondensatoriai
• Trys 10k rezistoriai
• Keturi 470k rezistoriai
• Vienas 5k6 rezistorius
• Vienas 1n4728A „Zener“diodas
3 žingsnis: blokinė diagrama
4 žingsnis: schema
Tai grandinė, kurią sukūriau pagal specifikacijas, kurios, mano manymu, yra geriausios šiam matavimui, tačiau yra keletas kitų pavyzdžių, kuriuos galima rasti internete.
5 žingsnis: LM386 - prisegimas
LM386 turi du stiprintuvus kondicionavimui arba signalo stiprinimui.
6 žingsnis: „AmpOp“- diferencialas (atimamasis)
7 žingsnis: „AmpOp“- keitiklio papildymas
8 žingsnis: „Maple Mini“- šulinys
Smeigtukai pažymėti:
Raudona >> 3V3 Tolerantiška
Žalia >> 5V Tolerantiška
9 veiksmas: „Maple Mini“- prisegimas - a / D, naudojamas fiksuojant
Čia pabrėžiu, kad mano naudojamas kaištis yra D11, kuris (STMicroelectronics nomenklatūroje) yra PA0.
10 žingsnis: Surinkimas
Mūsų grandinei jums reikės simetrinio šaltinio, tokio, kokį sukūrėme šiam projektui. Priešingu atveju jums reikės dviejų šaltinių.
11 veiksmas: grafikas su gautais duomenimis
12 žingsnis: RMS vertės apskaičiavimas
13 žingsnis: šaltinio kodas
Šaltinio kodas - Apibrėžimai ir konstantos
Iš pradžių mes nustatėme kaiščio rodmenį kaip D11, taip pat įvairias skaičiavimuose naudojamas konstantas.
#define leituraTensao D11 // AD CH0 no pino PA0 // valor teórico divisor de tensão = 168.85714285714285714286 const float fatorDivisor = 168.40166345742404792461; // valor teórico do ganho de amplificação = 1.0 const float fatorAmplificador = 1.0; // Valor usado na multiplicação da leitura const float fatorMultiplicacao = fatorDivisor * fatorAmplificador; // Valor teórico da Tensão de alimentação Vcc = 3.3V const float Vcc = 3.3; // valor teórico do offset do amplificador = Vcc /2.0; const float offSet = 1,66; // fator teórico da conversão do AD = 3.3 / 4095.0 const float fatorAD = Vcc / 4095.0; const int amostras = 71429; // resulta em 1, 027 segundos para cada atualização // const int amostras = 35715; // resulta em 0, 514 segundos para cada atualização
Šaltinio kodas - visuotiniai kintamieji
Dabar mes apibrėžiame kai kuriuos pasaulinius kintamuosius.
plūdė Vrms = 0,0; // armazena o valor rms da tensãofloat Vmax = 0.0; // armazena o valor máximo detectado float Vmin = 10000,0; // armazena o valor mínimo detectado float Vmed = 0.0; // armazena o valor médio entre Vmáx e Vmín
Šaltinio kodas - sąranka ()
Pradėkite nuoseklųjį prievadą 1Mbps greičiu. Mes sureguliavome AD prievadą kaip įvestį ir laukėme 5 sekundes, kol pradėjome rinkti duomenis. Budėjimo laikas yra neprivalomas.
void setup () {Serial.begin (1000000); // inicijuoti portinį serijinį em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (neprivaloma)}
Šaltinio kodas - ciklas () - pradeda duomenų rinkimo kintamuosius
Cikle turime iteracijos kintamąjį. Čia taip pat saugome AD rodmenis 0,0 ir iš naujo paleiskite kintamąjį VRMS taip pat 0,0.
tuštumos kilpa () {int i = 0; // variável para iteração float leitura = 0.0; // armazena as leituras do AD Vrms = 0.0; // reinicia a varável Vrms
Šaltinio kodas - fiksuoja ir atlieka individualius kiekvieno mėginio skaičiavimus
Šiame etape, jei i yra mažesnis už mėginį, pradedame mėginių ėmimo ciklą, kol i pasiekia mėginių skaičių. Paleidžiame analogRead, kad nuskaitytume analoginį prievadą ir apskaičiuotume skaitymo įtampų kvadratų sumą. Galiausiai padidiname iteratorių.
while (i <amostras) {// inicia um ciclo de amostragem até que i alcance o número de amostras leitura = analogRead (leituraTensao); // lê a porta analógica // Serial.println(leitura); // Descomente se quiser ver o sinal bruto do AD Vrms = Vrms + pow ((((leitura * fatorAD) - offSet), 2.0); // calcula a soma dos quadrados das tensões lidas i ++; // padidėjimas iterador}
Šaltinio kodas - bendri mėginių skaičiavimai ir maksimalaus, minimalaus ir vidutinio nustatymas
Mes naudojame daugybos faktą, kad nustatytume tikrąją įtampų vertę. Mes nustatome, ar vertė yra maksimali, ar minimali, ir apskaičiuojame dabartinių maksimalių ir minimalių verčių vidurkį.
// Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // aptikti se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // aptikti se é um valor mínimo if (Vrms <Vmin) {Vmin = Vrms; } // calcula a média dos valores máximo e mínimo atuais Vmed = (Vmax + Vmin) /2.0;
Šaltinio kodas - išvesties parinktys
Turime tris išvesties vertės „braižymo“galimybes. Išvestį suformatavome pagal „Arduino IDE“serijos braižytuvą, pvz., CSV ar Jason.
// saidos formatas, skirtas braižytuvo serijai IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Serijinis atspaudas (Vmax, 3); Serial.print (","); Serijinis spaudinys (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // formatu como json Serial.print ("{" instante (ms) ":"); Serijinis atspaudas (milis ()); Serial.print (","); Serial.print ("\" Vrms (V) ":"); Serijinis atspaudas (Vrms, 3); Serial.print (","); Serial.print ("\" Vmax (V) ":"); Serijinis atspaudas (Vmax, 3); Serial.print (","); Serial.print ("\" Vmin (V) ":"); Serijinis spaudinys (Vmin, 3); Serial.print (","); Serial.print ("\" Vmed (V) ":"); Serijinis spaudinys (Vmed, 3); Serial.println ("}"); * / /* // formatu į CSV Serial.print (millis ()); Serial.print (","); Serijinis atspaudas (Vrms, 3); Serial.print (","); Serijinis atspaudas (Vmax, 3); Serial.print (","); Serijinis spaudinys (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); */}
14 žingsnis: failai
Atsisiųskite failus:
AŠ NE
Rekomenduojamas:
Maitinimo dažnio ir įtampos matavimas naudojant „Arduino“: 6 žingsniai
Maitinimo dažnio ir įtampos matavimas naudojant „Arduino“: Įvadas: Šio projekto tikslas yra išmatuoti tiekimo dažnį ir įtampą, kuri yra nuo 220 iki 240 voltų ir 50 Hz Indijoje. Aš naudoju „Arduino“signalui fiksuoti ir dažniui bei įtampai apskaičiuoti, galite naudoti bet kurį kitą mikrokonfigūrą
Aukštos įtampos baterijų įtampos monitorius: 3 žingsniai (su paveikslėliais)
Aukštos įtampos akumuliatorių įtampos monitorius: Šiame vadove aš jums paaiškinsiu, kaip aš sukūriau savo akumuliatoriaus įtampos monitorių savo elektriniam longboardui. Sumontuokite jį kaip norite ir prijunkite tik du laidus prie akumuliatoriaus (Gnd ir Vcc). Šiame vadove daroma prielaida, kad jūsų akumuliatoriaus įtampa viršija 30 voltų
DC - nuolatinės srovės įtampos mažinimo jungiklio režimas Buck įtampos keitiklis (LM2576/LM2596): 4 žingsniai
DC-nuolatinės srovės įtampos perjungimo režimo „Buck“įtampos keitiklis (LM2576/LM2596): sukurti labai efektyvų „Buck“keitiklį yra sunkus darbas ir net patyrusiems inžinieriams reikia kelių dizaino variantų, kad jie būtų tinkami. yra nuolatinės srovės į nuolatinės srovės keitiklis, kuris mažina įtampą (didindamas
Nekontaktinio kintamosios srovės įtampos detektoriaus grandinės schema: 6 žingsniai
Nekontaktinio kintamosios srovės įtampos detektoriaus schema: kintamosios srovės įtampos identifikavimo grandinė yra pirminė grandinė, pagrįsta visiškai NPN tranzistoriais, tokiais kaip BC747, BC548. Grandinė priklauso nuo 3 skirtingų etapų. Po to silpnas ženklas buvo tvirtas ir ši grandinė gali važiuoti „Drove“kaip varpas. Čia aš
Reguliuojamas įtampos nuolatinės srovės maitinimas naudojant LM317 įtampos reguliatorių: 10 žingsnių
Reguliuojamos įtampos nuolatinės srovės maitinimas naudojant LM317 įtampos reguliatorių: Šiame projekte aš sukūriau paprastą reguliuojamos įtampos nuolatinės srovės maitinimo šaltinį, naudojant LM317 IC su LM317 maitinimo grandinės schema. Kadangi šioje grandinėje yra įmontuotas tilto lygintuvas, todėl prie įvesties galime tiesiogiai prijungti 220V/110V kintamosios srovės šaltinį