Sisällysluettelo:
- Vaihe 1: Esittely
- Vaihe 2: Käytetyt resurssit
- Vaihe 3: Lohkokaavio
- Vaihe 4: Kaavio
- Vaihe 5: LM386 - Kiinnitys
- Vaihe 6: AmpOp - differentiaali (vähennyslasku)
- Vaihe 7: AmpOp - invertterin lisäys
- Vaihe 8: Maple Mini - Pinage
- Vaihe 9: Vaahtera Mini - Kiinnitys - a / D Käytetään sieppauksessa
- Vaihe 10: Kokoonpano
- Vaihe 11: Kaavio saatujen tietojen kanssa
- Vaihe 12: RMS -arvon laskeminen
- Vaihe 13: Lähdekoodi
- Vaihe 14: Tiedostot
Video: True-RMS-AC-jännitteen mittaus: 14 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tänään käytämme STM32 Maple Miniä AC -lukeman tekemiseen. Esimerkissämme saamme sähköverkon RMS -arvon. Tämä on erittäin hyödyllistä niille, jotka haluavat seurata esineiden internetin sähköverkkoa. Luomme sitten sovelluksen Maple Minin laskentatehoa käyttäen, käytämme elektronista piiriä, joka kykenee antamaan 127 VAC -signaalin, sekä sovellamme näytteisiin keskimääräisen neliön (RMS) laskentaa.
Vaihe 1: Esittely
Kokoonpanossamme tänään on analogisen piirimme lisäksi STM32, jonka tulo on 110. Vältä iskuja, eristä 110: llä saapuva vastus.
Piiri on melko herkkä. Saan 110, mutta pienennän sitä 168 kertaa käyttämällä jännitteenjakajaa ja laitan sen operaatiovahvistimeen, jolla on useita toimintoja.
Meillä on myös joitakin valinnaisia kondensaattoreita lähdesuodatukseen. Jos lähteesi on hyvälaatuista, sinun ei tarvitse käyttää niitä.
AD -tulo lasketaan oskilloskoopin kautta, jossa näet sinimuotoisen, joka ei ole 110 (mutta se on hyvin muodostettu). Toinen asia on, että sähköverkon jännite ei ole 110 (se on itse asiassa 127 volttia). Mutta kun käymme vakaajaa, se sopeutuu 115 V.
Sarjamonitorissa näkyvä arvo on sama kuin RMS, eli Fluke -mittarin tunnistama arvo.
Vaihe 2: Käytetyt resurssit
• Neulepuserot
• Vaahtera Mini
• Protoboard
• LM386 -vahvistin
• Symmetrinen lähde (+ 5V ja -5V)
• 10k monikierroksinen trimpot (tai potentiometri)
• Neljä kondensaattoria 100nF polyesteriä
• Kolme 10k vastusta
• Neljä 470k vastusta
• Yksi 5k6 -vastus
• Yksi 1n4728A zener -diodi
Vaihe 3: Lohkokaavio
Vaihe 4: Kaavio
Tämä on piiri, jonka olen kehittänyt tietojen perusteella, jotka mielestäni ovat parhaita tätä mittausta varten, mutta Internetissä on useita muita esimerkkejä.
Vaihe 5: LM386 - Kiinnitys
LM386: ssa on kaksi vahvistinta ilmastointi- tai signaalivahvistusta varten.
Vaihe 6: AmpOp - differentiaali (vähennyslasku)
Vaihe 7: AmpOp - invertterin lisäys
Vaihe 8: Maple Mini - Pinage
Nastat merkitty:
Punainen >> 3V3 suvaitsevainen
Vihreä >> 5V suvaitsevainen
Vaihe 9: Vaahtera Mini - Kiinnitys - a / D Käytetään sieppauksessa
Korostan tässä, että käyttämäni tappi on D11, joka (STMicroelectronics -nimikkeistössä) on PA0.
Vaihe 10: Kokoonpano
Piirillemme tarvitset symmetrisen lähteen, kuten tämän projektin. Muuten tarvitset kaksi lähdettä.
Vaihe 11: Kaavio saatujen tietojen kanssa
Vaihe 12: RMS -arvon laskeminen
Vaihe 13: Lähdekoodi
Lähdekoodi - Määritelmät ja vakiot
Aluksi määritimme nastan lukeman D11: ksi sekä laskelmissa käytetyt eri vakiot.
#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ähdekoodi - Globaalimuuttujat
Nyt määritellään joitain globaaleja muuttujia.
kelluva 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ähdekoodi - asennus ()
Käynnistä sarjaportti nopeudella 1 Mbps. Säätimme AD -portin tuloksi ja odotimme 5 sekuntia ennen kuin aloitimme tietojen keräämisen. Valmiusaika on valinnainen.
void setup () {Serial.begin (1000000); // aloita portaalisarja 1 Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (valinnainen)}
Lähdekoodi - Loop () - Käynnistää tiedonkeruumuuttujat
Silmukassa on iteraation muuttuja. Täällä tallennamme myös AD: n lukemat arvoon 0.0 ja käynnistämme muuttujan VRMS myös 0.0: ssa.
tyhjä silmukka () {int i = 0; // variável para iteração float leitura = 0.0; // armazena kuin leituras do AD Vrms = 0.0; // reinicia a variável Vrms
Lähdekoodi - Kaappaa ja suorittaa yksittäiset laskelmat jokaiselle näytteelle
Jos tässä vaiheessa i on pienempi kuin näyte, aloitamme näytteenottosyklin, kunnes saavutan näytteiden määrän. Suoritamme analogReadin lukemaan analogisen portin ja laskemaan lukujännitteiden neliöiden summan. Lopuksi lisäämme iteraattoria.
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 ++; // lisäys iteradoriin}
Lähdekoodi - Näytteiden yleiset laskelmat ja maksimin, minimin ja keskiarvon tunnistaminen
Käytämme kertolaskua faktojen määrittämiseksi. Tunnistamme, onko arvo maksimi vai minimi, ja laskemme nykyisten enimmäis- ja minimiarvojen keskiarvon.
// Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // havaita se ä um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // havaita 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ähdekoodi - Tulostusvaihtoehdot
Meillä on kolme vaihtoehtoa lähtöarvon "piirtämiseen". Meillä on tulostus, joka on muotoiltu Arduino IDE -sarjan plotterille, kuten CSV tai Jason.
// salattu formaatti plotterin sarja IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Sarjanjälki (Vmax, 3); Serial.print (","); Sarjanjälki (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // saada formatada como json Serial.print ("{" instante (ms) ":"); Sarjajälki (millis ()); Serial.print (","); Serial.print ("\" Vrms (V) ":"); Sarjanjälki (Vrms, 3); Serial.print (","); Serial.print ("\" Vmax (V) ":"); Sarjanjälki (Vmax, 3); Serial.print (","); Serial.print ("\" Vmin (V) ":"); Sarjanjälki (Vmin, 3); Serial.print (","); Serial.print ("\" Vmed (V) ":"); Sarjanjälki (Vmed, 3); Serial.println ("}"); * / /* // CSA Serial.print (millis ()); Serial.print (","); Sarjanjälki (Vrms, 3); Serial.print (","); Sarjanjälki (Vmax, 3); Serial.print (","); Sarjanjälki (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); */}
Vaihe 14: Tiedostot
Lataa tiedostot:
INO
Suositeltava:
Moottorin nopeuden mittaus Arduinolla: 6 vaihetta
Moottorin nopeuden mittaus Arduinon avulla: Onko moottorin kierrosluvun mittaaminen vaikeaa? En usko. Tässä on yksi yksinkertainen ratkaisu: Vain yksi infrapuna -anturi ja Arduino sarjassasi voivat tehdä niin. Tässä viestissä annan yksinkertaisen opetusohjelman, jossa selitetään kuinka mitata minkä tahansa moottorin kierrosluku IR -anturia ja A
Lämpötilan mittaus: 7 vaihetta
Lämpötilan mittaus: هو قياس درجه الحراره باستخدام الكاميرا االحراريه
Lämpötilan mittaus XinaBoxin ja termistorin avulla: 8 vaihetta
Lämpötilan mittaus XinaBoxin ja termistorin avulla: Mittaa nesteen lämpötila käyttämällä XinaBoxin analogista tuloa xChip ja termistorianturia
Kiihtyvyyden mittaus käyttämällä ADXL345: tä ja hiukkasfotonia: 4 vaihetta
Kiihtyvyyden mittaus käyttämällä ADXL345: tä ja hiukkasfotonia: ADXL345 on pieni, ohut, erittäin pienitehoinen, 3-akselinen kiihtyvyysanturi, jonka tarkkuus (13-bittinen) mitataan jopa ± 16 g. Digitaalinen lähtötieto on muotoiltu 16-bittiseksi kaksoiskappaleeksi, ja se on saatavana digitaalisen I2 C-liitännän kautta. Se mittaa
Lämpötilan mittaus AD7416ARZ: n ja Raspberry Pi: n avulla: 4 vaihetta
Lämpötilan mittaus AD7416ARZ: n ja Raspberry Pi: n avulla: AD7416ARZ on 10-bittinen lämpötila-anturi, jossa on neljä yksikanavaista analogista digitaaliseen muunninta ja sisäänrakennettu lämpötila-anturi. Osien lämpötila -anturiin pääsee käsiksi multiplekserikanavien kautta. Tämä korkean tarkkuuden lämpötila