Sisukord:
- 1. samm: demonstratsioon
- 2. samm: kasutatud ressursid
- Samm: plokkskeem
- 4. samm: skeem
- 5. samm: LM386 - kinnitamine
- 6. samm: AmpOp - diferentsiaal (lahutaja)
- 7. samm: AmpOp - muunduri lisaja
- 8. samm: Maple Mini - Pinage
- 9. samm: Maple Mini - kinnitus - a / D, mida kasutatakse jäädvustamisel
- Samm: kokkupanek
- Samm 11: Graafik saadud andmetega
- 12. samm: RMS -väärtuse arvutamine
- Samm 13: lähtekood
- 14. samm: failid
Video: True-RMS vahelduvpinge mõõtmine: 14 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Täna kasutame vahelduvvoolu lugemiseks STM32 Maple Mini. Meie näites saame elektrivõrgu RMS väärtuse. See on väga kasulik neile, kes soovivad jälgida asjade interneti elektrivõrku. Seejärel loome rakenduse, kasutades Maple Mini arvutusvõimsust, rakendame elektroonilist vooluahelat, mis võimaldab hankida 127 Vac signaali, ning rakendame proovidele ka ruutkeskmise (RMS) arvutuse.
1. samm: demonstratsioon
Täna koosolekul on meil lisaks analoogskeemile sisendiks 110 ka STM32. Löökide vältimiseks eraldage sisenev takisti 110 võrra.
Ahel on üsna tundlik. Ma saan 110 -ga, kuid vähendan seda pingejaguri abil 168 korda ja panen selle operatsioonivõimendisse, millel on mitu funktsiooni.
Meil on ka mõned valikulised kondensaatorid allikate filtreerimiseks. Kui teie allikas on kvaliteetne, ei pea te neid kasutama.
AD sisend arvutatakse ostsilloskoobi kaudu, milles näete sinusoidi, mis ei ole 110 (kuid see on hästi vormitud). Teine asi on see, et meie elektrivõrgu pinge ei ole 110 (see on tegelikult 127 volti). Kuid stabilisaatorit kohandades reguleerib see 115 V.
Seeriamonitoril kuvatav väärtus on see, mis arvutatakse RMS -is, see tähendab Fluke Meter'i poolt määratud väärtus.
2. samm: kasutatud ressursid
• Džemprid
• Vaher Mini
• Protoboard
• LM386 võimendi
• Sümmeetriline allikas (+ 5V ja -5V)
• 10k mitme pöördega trimpot (või potentsiomeeter)
• Neli kondensaatorit 100nF polüestrist
• Kolm 10k takistit
• Neli 470k takistit
• Üks 5k6 takisti
• Üks 1n4728A zeneri diood
Samm: plokkskeem
4. samm: skeem
See on vooluahel, mille töötasin välja spetsifikatsioonide põhjal, mis minu arvates on selle mõõtmise jaoks parimad, kuid Internetis on veel mitmeid näiteid.
5. samm: LM386 - kinnitamine
LM386 -l on kaks võimendit konditsioneerimiseks või signaali võimendamiseks.
6. samm: AmpOp - diferentsiaal (lahutaja)
7. samm: AmpOp - muunduri lisaja
8. samm: Maple Mini - Pinage
Nööpnõelad on märgitud:
Punane >> 3V3 salliv
Roheline >> 5V tolerantne
9. samm: Maple Mini - kinnitus - a / D, mida kasutatakse jäädvustamisel
Rõhutan siinkohal, et minu kasutatav tihvt on D11, mis (STMicroelectronics nomenklatuuris) on PA0.
Samm: kokkupanek
Meie vooluringi jaoks vajate sümmeetrilist allikat, nagu see, mille me selle projekti jaoks lõime. Vastasel juhul vajate kahte allikat.
Samm 11: Graafik saadud andmetega
12. samm: RMS -väärtuse arvutamine
Samm 13: lähtekood
Lähtekood - definitsioonid ja konstandid
Alguses määratlesime tihvtide lugemise D11 -na, samuti arvutustes kasutatud erinevate konstanditega.
#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
Lähtekood - globaalsed muutujad
Nüüd määratleme mõned globaalsed muutujad.
ujuk 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
Lähtekood - seadistamine ()
Käivitage jadaport kiirusega 1 Mbps. Reguleerisime AD -porti sisendiks ja ootasime 5 sekundit, enne kui hakkasime andmeid koguma. Ooteaeg on valikuline.
void setup () {Serial.begin (1000000); // initsialiseeri portaali em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (valikuline)}
Lähtekood - tsükkel () - käivitab andmete kogumise muutujad
Loopis on meil iteratsiooni muutuja. Siin salvestame ka AD näidud 0.0 -sse ja taaskäivitame muutuja VRMS ka 0.0 -s.
void loop () {int i = 0; // variável para iteração float leitura = 0.0; // armazena as leituras do AD Vrms = 0.0; // reinicia a variável Vrms
Lähtekood - kogub ja täidab iga proovi jaoks individuaalsed arvutused
Selles etapis, kui i on proovist väiksem, alustame proovivõtutsüklit, kuni i jõuab proovide arvuni. Käivitame analogRead, et lugeda analoogpordi ja arvutada lugemispingete ruutude summa. Lõpuks suurendame iteraatorit.
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 ++; // iteradori suurendamine}
Lähtekood - proovide üldised arvutused ja maksimaalse, minimaalse ja keskmise määramine
Pingete tegeliku väärtuse määramiseks rakendame korrutamise fakti. Me tuvastame, kas väärtus on maksimaalne või minimaalne, ja arvutame praeguste maksimum- ja miinimumväärtuste keskmise.
// Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // detekteerib se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // tuvastada 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;
Lähtekood - väljundvalikud
Väljundväärtuse "joonistamiseks" on meil kolm võimalust. Meil on väljund vormindatud Arduino IDE jadaplotterile, näiteks CSV või Jason.
// saidad formatada para plotter seeria IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Seeriatrükk (Vmax, 3); Serial.print (","); Seeriatrükk (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // saidavorming como json Serial.print ("{" instante (ms) ":"); Seeriaprint (millis ()); Serial.print (","); Serial.print ("\" Vrms (V) ":"); Seeriatrükk (Vrms, 3); Serial.print (","); Serial.print ("\" Vmax (V) ":"); Seeriatrükk (Vmax, 3); Serial.print (","); Serial.print ("\" Vmin (V) ":"); Seeriatrükk (Vmin, 3); Serial.print (","); Serial.print ("\" Vmed (V) ":"); Seeriatrükk (Vmed, 3); Serial.println ("}"); * / /* // saidi formaat CSO Serial.print (millis ()); Serial.print (","); Seeriatrükk (Vrms, 3); Serial.print (","); Seeriatrükk (Vmax, 3); Serial.print (","); Seeriatrükk (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); */}
14. samm: failid
Laadige failid alla:
INO
Soovitan:
Mootori kiiruse mõõtmine Arduino abil: 6 sammu
Mootori kiiruse mõõtmine Arduino abil: kas mootori pöörete arvu on raske mõõta ??? Ma ei usu. Siin on üks lihtne lahendus. Ainult üks IR -andur ja teie komplektis olev Arduino saavad seda teha. Selles postituses annan lihtsa õpetuse, mis selgitab, kuidas mõõta mis tahes mootori pöörlemissagedust IR -anduri ja A -ga
Aja mõõtmine (mõõdulint): 5 sammu (piltidega)
Aja mõõtmine (mõõdulõik): Selle projekti jaoks võtsime (Alex Fiel ja Anna Lynton) igapäevase mõõtmisvahendi ja muutsime selle kellaks! Esialgne plaan oli motoriseerida olemasolev mõõdulint. Seda tehes otsustasime, et oleks lihtsam luua oma kest, millega kaasas käia
Temperatuuri mõõtmine: 7 sammu
Temperatuuri mõõtmine: هو قياس درجه الحراره باستخدام الكاميرا االحراريه
Temperatuuri mõõtmine XinaBoxi ja termistori abil: 8 sammu
Temperatuuri mõõtmine XinaBoxi ja termistori abil: mõõtke vedeliku temperatuuri, kasutades XinaBoxi analoogsisendit xChip ja termistorisondi
Kiirenduse mõõtmine ADXL345 ja osakeste footoni abil: 4 sammu
Kiirenduse mõõtmine ADXL345 ja osakeste footonite abil: ADXL345 on väike, õhuke ülivõimsusega 3-teljeline kiirendusmõõtur, millel on kõrge eraldusvõimega (13-bitine) mõõtmine kuni ± 16 g. Digitaalsed väljundandmed on vormindatud 16-bitiste kaheosaliste täienditena ja neile on juurdepääs digitaalse liidese I2 C kaudu. See mõõdab