Inhoudsopgave:
- Stap 1: Demonstratie
- Stap 2: Gebruikte bronnen
- Stap 3: Blokdiagram
- Stap 4: Schema
- Stap 5: LM386 - Vastzetten
- Stap 6: AmpOp - Differentieel (aftrekker)
- Stap 7: AmpOp - Inverter Adder
- Stap 8: Esdoorn Mini - Pinage
- Stap 9: Maple Mini - Pinning - a / D gebruikt bij het vastleggen
- Stap 10: Montage
- Stap 11: Grafiek met de verkregen gegevens
- Stap 12: De RMS-waarde berekenen
- Stap 13: Broncode
- Stap 14: Bestanden
Video: True-RMS AC-spanning meten: 14 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Vandaag zullen we de STM32 Maple Mini gebruiken om een AC-meting uit te voeren. In ons voorbeeld krijgen we de RMS-waarde van het elektriciteitsnet. Dit is erg handig voor degenen die het elektrische netwerk willen controleren op het internet der dingen. We zullen dan een applicatie maken met behulp van de rekenkracht van de Maple Mini, een elektronische schakeling toepassen die de acquisitie van een 127Vac-signaal mogelijk maakt, evenals de RMS-berekening (root mean square) op de monsters.
Stap 1: Demonstratie
In onze huidige montage hebben we de STM32, naast ons analoge circuit om de ingang van 110 te maken. Om schokken te voorkomen, isoleer je de weerstand die binnenkomt met 110.
De schakeling is behoorlijk gevoelig. Ik kom binnen met 110, maar ik verlaag het 168 keer met behulp van de spanningsdeler en stop het in de operationele versterker, die verschillende functies heeft.
We hebben ook enkele optionele condensatoren voor bronfiltering. Als uw bron van goede kwaliteit is, hoeft u deze niet te gebruiken.
De AD-ingang wordt berekend via de oscilloscoop, waarin je een sinusoïde ziet, die niet 110 is (maar wel goed gevormd). Een ander ding is dat de spanning in ons elektrische netwerk niet 110 is (het is eigenlijk 127 volt). Maar aangezien we een stabilisator ondergaan, zal deze zich aanpassen aan 115V.
De waarde die op de seriële monitor wordt weergegeven, wordt berekend in RMS, dat wil zeggen de waarde die wordt geïdentificeerd door de Fluke Meter.
Stap 2: Gebruikte bronnen
• Truien
• Een esdoorn Mini
• Protobord
• Een LM386-versterker
• Een symmetrische bron (+ 5V en -5V)
• Een 10k multi-turn trimpot (of potentiometer)
• Vier condensatoren van 100nF polyester
• Drie 10k-weerstanden
• Vier weerstanden van 470k
• Eén weerstand van 5k6
• Eén 1n4728A zenerdiode
Stap 3: Blokdiagram
Stap 4: Schema
Dit is een circuit dat ik heb ontwikkeld op basis van de specificaties die volgens mij het beste zijn voor deze meting, maar er zijn verschillende andere voorbeelden die op internet te vinden zijn.
Stap 5: LM386 - Vastzetten
De LM386 heeft twee versterkers voor conditionering of signaalversterking.
Stap 6: AmpOp - Differentieel (aftrekker)
Stap 7: AmpOp - Inverter Adder
Stap 8: Esdoorn Mini - Pinage
Pinnen gemarkeerd op:
Rood >> 3V3 tolerant
Groen >> 5V tolerant
Stap 9: Maple Mini - Pinning - a / D gebruikt bij het vastleggen
Ik benadruk hier dat de pin die ik heb gebruikt de D11 is die (in de nomenclatuur van de STMicroelectronics) de PA0 is.
Stap 10: Montage
Voor ons circuit heb je een symmetrische bron nodig, zoals die we voor dit project hebben gemaakt. Anders heb je twee bronnen nodig.
Stap 11: Grafiek met de verkregen gegevens
Stap 12: De RMS-waarde berekenen
Stap 13: Broncode
Broncode - Definities en constanten
In eerste instantie hebben we de pin-uitlezing gedefinieerd als D11, evenals de verschillende constanten die in de berekeningen zijn gebruikt.
#define leituraTensao D11 //AD CH0 no pino PA0 //valor teórico deler van 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; //resultaat op 1, 027 segundos para cada atualização //const int amostras = 35715; // resultaten op 0, 514 segundos para cada atualização
Broncode - Globale variabelen
Nu definiëren we enkele globale variabelen.
vlotter 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 minimo detectado float Vmed = 0.0; //armazena of valor médio entre Vmáx en Vmin
Broncode - Instellingen ()
Start de seriële poort op 1 Mbps. We hebben de AD-poort als invoer aangepast en 5 seconden gewacht voordat we begonnen met het verzamelen van gegevens. Standby-tijd is optioneel.
void setup() { Serial.begin(1000000); //inicia een porta seriële em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); //aguarda 5s antes de iniciar a coleta. (optioneel) }
Broncode - Loop () - Start de gegevensverzamelingsvariabelen
In de Loop hebben we de variabele voor iteratie. Hier slaan we ook de waarden van AD op in 0.0 en herstarten we de variabele VRMS ook in 0.0.
void loop() { int i = 0; //variável para iteração float leitura = 0.0; //armazena als leituras AD Vrms = 0.0; //reinicia a variável Vrms
Broncode - Legt de individuele berekeningen voor elk monster vast en voert deze uit
In dit stadium, als i kleiner is dan het monster, starten we een bemonsteringscyclus totdat i het aantal monsters heeft bereikt. We gebruiken analogRead om de analoge poort te lezen en de som van de kwadraten van de leesspanningen te berekenen. Ten slotte verhogen we de iterator.
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++; //incrementa of iterador}
Broncode - Algemene berekeningen van de monsters en identificatie van maximum, minimum en gemiddelde
We passen het vermenigvuldigingsfeit toe om de werkelijke waarde van de spanningen te bepalen. We detecteren of de waarde maximum of minimum is en berekenen het gemiddelde van de huidige maximum- en minimumwaarden.
//Toepassing van de multiplicação determinar of real das tensões Vrms = (sqrt(Vrms / amostras)) * fatorMultiplicacao; //detecta se é um valor é máximo if (Vrms > Vmax) { Vmax = Vrms; } //detecta se é um valor minimo if (Vrms <Vmin) { Vmin = Vrms; } //calcula a média dos valores máximo en minimo atuais Vmed = (Vmax + Vmin) / 2.0;
Broncode - Uitvoeropties
We hebben drie opties voor het "plotten" van de uitvoerwaarde. We hebben uitvoer geformatteerd naar de Arduino IDE seriële plotter, zoals CSV of Jason.
//saída formatada para plotter seriële IDE Arduino Serial.print (Vrms, 3); Serieel.print(", "); Serial.print (Vmax, 3); Serieel.print(", "); Serial.print (Vmin, 3); Serieel.print(", "); Serial.println(Vmed, 3); /* //saída formatada como json Serial.print("{"instante(ms)\":"); Serial.print(millis()); Serieel.print(", "); Serial.print("\"Vrms(V)\":"); Serial.print (Vrms, 3); Serieel.print(", "); Serial.print("\"Vmax(V)\":"); Serial.print (Vmax, 3); Serieel.print(", "); Serial.print("\"Vmin(V)\":"); Serial.print (Vmin, 3); Serieel.print(", "); Serial.print("\"Vmed(V)\":"); Serial.print (Vmed, 3); Serieel.println("}"); */ /* //saída formatada como CSV Serial.print(millis()); Serieel.print(", "); Serial.print (Vrms, 3); Serieel.print(", "); Serial.print (Vmax, 3); Serieel.print(", "); Serial.print (Vmin, 3); Serieel.print(", "); Serial.println(Vmed, 3); */ }
Stap 14: Bestanden
Download de bestanden:
INO
Aanbevolen:
De temperatuur meten: 7 stappen
De temperatuur meten: هو قياس درجه الحراره باستخدام الكاميرا االحراريه
Bodemvocht meten met Raspberry Pi 4: 4 stappen
Bodemvocht meten met Raspberry Pi 4: Weet jij hoe vaak je planten water moet geven? Of planten uitgestort en verloren. Om dit op te lossen, dacht ik dat het meer indirect zou zijn als we de waarde van het watergehalte in de grond kunnen krijgen om een beslissing te nemen over het water geven van de planten op de juiste manier
Een condensator of een inductor meten met een mp3-speler: 9 stappen
Een condensator of een inductor meten met een mp3-speler: Hier is een eenvoudige techniek die kan worden gebruikt om de capaciteit en inductantie van een condensator en inductor nauwkeurig te meten zonder dure apparatuur. De meettechniek is gebaseerd op een gebalanceerde brug en kan eenvoudig worden geconstrueerd uit onde
Meten Aan Water: Regenintensiteitsmeter: 6 stappen
Meten Aan Water: Regenintensiteitsmeter: IntroDit apparaat is gemaakt om de regenvalintensiteit te meten. Er zijn veel manieren om de hoeveelheid neerslag te meten. Als de regenintensiteit echter de gewenste informatie is, zijn de meeste meetapparatuur erg duur. Dit apparaat is een goedkoop en gemakkelijk te
4 stappen om de interne weerstand van de batterij te meten: 4 stappen
4 stappen om de interne weerstand van de batterij te meten: Hier zijn de 4 eenvoudige stappen die u kunnen helpen de interne weerstand van het beslag te meten