Innehållsförteckning:
- Steg 1: Demonstration
- Steg 2: Resurser som används
- Steg 3: Blockdiagram
- Steg 4: Schema
- Steg 5: LM386 - Fästning
- Steg 6: AmpOp - Differential (subtraktor)
- Steg 7: AmpOp - Inverteradderare
- Steg 8: Maple Mini - Pinage
- Steg 9: Maple Mini - Pinning - a / D Används för att fånga
- Steg 10: Montering
- Steg 11: Diagram med erhållna data
- Steg 12: Beräkning av RMS -värdet
- Steg 13: Källkod
- Steg 14: Filer
Video: Mätning av True-RMS AC-spänning: 14 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Idag kommer vi att använda STM32 Maple Mini för att göra en AC -avläsning. I vårt exempel får vi RMS -värdet för elnätet. Detta är mycket användbart för dem som vill övervaka det elektriska nätverket för Internet of Things. Vi kommer sedan att skapa en applikation med hjälp av Maple Mini: s beräkningseffekt, tillämpa en elektronisk krets som kan tillåta inhämtning av en 127Vac -signal, samt tillämpa root -medelkvadratberäkningen (RMS) på proverna.
Steg 1: Demonstration
I vår samling idag har vi STM32, utöver vår analoga krets för att göra ingången till 110. För att undvika stötar, isolera motståndet som går in med 110.
Kretsen är ganska känslig. Jag kommer in med 110, men jag reducerar det 168 gånger med hjälp av spänningsdelaren och lägger den i operationsförstärkaren, som har flera funktioner.
Vi har också några valfria kondensatorer för källfiltrering. Om din källa är av god kvalitet behöver du inte använda dem.
AD -ingången beräknas genom oscilloskopet, där du ser en sinusoid, som inte är 110 (men den är välformad). En annan sak är att spänningen i vårt elektriska nät inte är 110 (det är faktiskt 127 volt). Men eftersom vi genomgår en stabilisator justeras den till 115V.
Värdet som visas på den seriella monitorn är det som beräknas i RMS, det vill säga det som identifieras av Fluke -mätaren.
Steg 2: Resurser som används
• Hoppare
• En Maple Mini
• Protoboard
• En LM386 -förstärkare
• En symmetrisk källa (+ 5V och -5V)
• En 10k multi-turn trimpot (eller potentiometer)
• Fyra kondensatorer av 100nF polyester
• Tre 10k motstånd
• Fyra 470k motstånd
• Ett 5k6 -motstånd
• En 1n4728A zenerdiod
Steg 3: Blockdiagram
Steg 4: Schema
Detta är en krets jag utvecklat baserat på specifikationerna som jag tror är bäst för denna mätning, men det finns flera andra exempel som finns på internet.
Steg 5: LM386 - Fästning
LM386 har två förstärkare för konditionering eller signalförstärkning.
Steg 6: AmpOp - Differential (subtraktor)
Steg 7: AmpOp - Inverteradderare
Steg 8: Maple Mini - Pinage
Pins markerade på:
Röd >> 3V3 Tolerant
Grön >> 5V Tolerant
Steg 9: Maple Mini - Pinning - a / D Används för att fånga
Jag betonar här att stiftet som jag använde är D11 som (i STMicroelectronics nomenklatur) är PA0.
Steg 10: Montering
För vår krets behöver du en symmetrisk källa, som den vi skapade för detta projekt. Annars behöver du två källor.
Steg 11: Diagram med erhållna data
Steg 12: Beräkning av RMS -värdet
Steg 13: Källkod
Källkod - Definitioner och konstanter
Först definierade vi stiftavläsningen som D11, liksom de olika konstanterna som används i beräkningarna.
#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
Källkod - Globala variabler
Nu definierar vi några globala variabler.
float 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
Källkod - Setup ()
Starta serieporten med 1 Mbps. Vi justerade AD -porten som ingång och väntade 5 sekunder innan vi började samla in data. Standbytid är valfri.
void setup () {Serial.begin (1000000); // inicia a porta serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (valfritt)}
Källkod - Loop () - Startar datainsamlingsvariablerna
I Loop har vi variabeln för iteration. Här lagrar vi också avläsningarna av AD i 0.0 och startar om variabeln VRMS också i 0.0.
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
Källkod - Fångar och utför de individuella beräkningarna för varje prov
I detta skede, om i är mindre än provet, startar vi en provtagningscykel tills jag når antalet prover. Vi kör analogRead för att läsa den analoga porten och beräkna summan av kvadraterna för avlästa spänningar. Slutligen ökar vi iteratorn.
medan (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 o iterador}
Källkod - Allmänna beräkningar av proverna och identifiering av högsta, lägsta och genomsnittliga
Vi tillämpar multiplikationsfaktumet för att bestämma det verkliga värdet av spänningarna. Vi upptäcker om värdet är maximalt eller minimum, och vi beräknar genomsnittet av de aktuella max- och minimivärdena.
// Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // detecta se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // detecta se é um valor mínimo if (Vrms <Vmin) {Vmin = Vrms; } // calcula a média dos valores máximo e minimo atuais Vmed = (Vmax + Vmin) /2.0;
Källkod - Utmatningsalternativ
Vi har tre alternativ för att "plotta" utgångsvärdet. Vi har utdata formaterade till Arduino IDE -seriell plotter, som CSV eller Jason.
// saída formatada para plotter serial IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // saída formatada como json Serial.print ("{" instante (ms) ":"); Serial.print (millis ()); Serial.print (","); Serial.print ("\" Vrms (V) ":"); Serial.print (Vrms, 3); Serial.print (","); Serial.print ("\" Vmax (V) ":"); Serial.print (Vmax, 3); Serial.print (","); Serial.print ("\" Vmin (V) ":"); Serial.print (Vmin, 3); Serial.print (","); Serial.print ("\" Vmed (V) ":"); Serial.print (Vmed, 3); Serial.println ("}"); * / /* // saída formatada como CSV Serial.print (millis ()); Serial.print (","); Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); */}
Steg 14: Filer
Ladda ner filerna:
INO
Rekommenderad:
Mätning av temperaturen: 7 steg
Mätning av temperaturen: هو قياس درجه الحراره باستخدام الكاميرا االحراريه
Mätning av acceleration med hjälp av ADXL345 och Particle Photon: 4 steg
Mätning av acceleration med hjälp av ADXL345 och Particle Photon: ADXL345 är en liten, tunn, ultralåg effekt, 3-axlig accelerometer med hög upplösning (13-bitars) mätning på upp till ± 16 g. Digital utdata formateras som 16-bitars tvåkomplement och är tillgängliga via I2 C digitalt gränssnitt. Den mäter
Mätning av temperatur med hjälp av AD7416ARZ och Raspberry Pi: 4 steg
Mätning av temperatur med hjälp av AD7416ARZ och Raspberry Pi: AD7416ARZ är en 10-bitars temperatursensor med fyra enkanaliga analoga till digitala omvandlare och en inbyggd temperatursensor som ingår i den. Temperatursensorn på delarna kan nås via multiplexerkanaler. Denna högprecisionstemperatur
Bärbar finkornig mätning (förlängning): 3 steg
Bärbar finkornig mätning (förlängning): Mål: Tillägg av en CO2 -sensor Förbättrad läsbarhet för programmet Öppning av programmet för andra typer av sensorer. Detta projekt följer ett annat som redan publicerats. Den svarar på frågor som ställs av läsarna. En extra sensor har varit
WetRuler-Mätning av havshöjd: 8 steg (med bilder)
WetRuler-Mäter havshöjd: Meddelandet kom tidigt i somras att området i Alaska som heter Prince William Sound oväntat skulle drabbas av en global uppvärmning initierad tsunami. Forskarna som gjorde upptäckten pekade på ett område med snabbt reträttande is som