Πίνακας περιεχομένων:

Μέτρηση True-RMS Τάση AC: 14 βήματα
Μέτρηση True-RMS Τάση AC: 14 βήματα

Βίντεο: Μέτρηση True-RMS Τάση AC: 14 βήματα

Βίντεο: Μέτρηση True-RMS Τάση AC: 14 βήματα
Βίντεο: Effektivwert, TRUE RMS Gleichrichtwert und Formfaktor / Wechselspannung / Elektrotechnik 2024, Σεπτέμβριος
Anonim
Image
Image
Επίδειξη
Επίδειξη

Σήμερα, θα χρησιμοποιήσουμε το STM32 Maple Mini για να κάνουμε ανάγνωση AC. Στο παράδειγμά μας, θα λάβουμε την τιμή RMS του δικτύου ισχύος. Αυτό είναι πολύ χρήσιμο για όσους θέλουν να παρακολουθούν το ηλεκτρικό δίκτυο για το Διαδίκτυο των Πραγμάτων. Στη συνέχεια, θα δημιουργήσουμε μια εφαρμογή χρησιμοποιώντας την υπολογιστική ισχύ του Maple Mini, θα εφαρμόσουμε ένα ηλεκτρονικό κύκλωμα ικανό να επιτρέψει την απόκτηση σήματος 127Vac, καθώς και να εφαρμόσουμε τον υπολογισμό του τελικού τετραγώνου (RMS) στα δείγματα.

Βήμα 1: Επίδειξη

Στη συναρμολόγησή μας σήμερα, έχουμε το STM32, εκτός από το αναλογικό μας κύκλωμα για να κάνουμε την είσοδο 110. Για να αποφύγετε τους κραδασμούς, απομονώστε την αντίσταση που εισέρχεται κατά 110.

Το κύκλωμα είναι αρκετά ευαίσθητο. Μπαίνω με 110, αλλά το μειώνω 168 φορές χρησιμοποιώντας το διαχωριστή τάσης και το βάζω στον λειτουργικό ενισχυτή, ο οποίος έχει αρκετές λειτουργίες.

Έχουμε επίσης μερικούς προαιρετικούς πυκνωτές για φιλτράρισμα πηγής. Εάν η πηγή σας είναι καλής ποιότητας, δεν χρειάζεται να τις χρησιμοποιήσετε.

Η είσοδος AD υπολογίζεται μέσω του παλμογράφου, στο οποίο βλέπετε ένα ημιτονοειδές, το οποίο δεν είναι 110 (αλλά είναι καλά σχηματισμένο). Ένα άλλο πράγμα είναι ότι η τάση στο ηλεκτρικό μας δίκτυο δεν είναι 110 (είναι στην πραγματικότητα 127 βολτ). Αλλά καθώς βρισκόμαστε σε έναν σταθεροποιητή, θα προσαρμοστεί στα 115V.

Η τιμή που εμφανίζεται στη σειριακή οθόνη είναι αυτή που υπολογίζεται σε RMS, δηλαδή αυτή που προσδιορίζεται από τον μετρητή Fluke.

Βήμα 2: Χρησιμοποιημένοι πόροι

Πόροι που χρησιμοποιήθηκαν
Πόροι που χρησιμοποιήθηκαν

• Μπέρτες

• A Maple Mini

• Protoboard

• Ενισχυτής LM386

• Μια συμμετρική πηγή (+ 5V και -5V)

• Τρίποτ πολλαπλής στροφής 10k (ή ποτενσιόμετρο)

• Τέσσερις πυκνωτές πολυεστέρα 100nF

• Τρεις αντιστάσεις 10k

• Τέσσερις αντιστάσεις 470k

• Μία αντίσταση 5k6

• Μία δίοδος zener 1n4728A

Βήμα 3: Διάγραμμα αποκλεισμού

Αποκλεισμός διαγράμματος
Αποκλεισμός διαγράμματος

Βήμα 4: Σχέδιο

Σχέδιο
Σχέδιο

Αυτό είναι ένα κύκλωμα που ανέπτυξα με βάση τις προδιαγραφές που πιστεύω ότι είναι οι καλύτερες για αυτή τη μέτρηση, αλλά υπάρχουν πολλά άλλα παραδείγματα που μπορούν να βρεθούν στο διαδίκτυο.

Βήμα 5: LM386 - Καρφίτσωμα

LM386 - Καρφίτσωμα
LM386 - Καρφίτσωμα

Το LM386 διαθέτει δύο ενισχυτές για κλιματισμό ή ενίσχυση σήματος.

Βήμα 6: AmpOp - Διαφορικό (αφαιρετής)

AmpOp - Διαφορικό (αφαιρετής)
AmpOp - Διαφορικό (αφαιρετής)

Βήμα 7: AmpOp - Inverter Adder

AmpOp - Inverter Adder
AmpOp - Inverter Adder

Βήμα 8: Maple Mini - Pinage

Maple Mini - Pinage
Maple Mini - Pinage

Καρφίτσες σημειωμένες σε:

Κόκκινο >> 3V3 Ανεκτικό

Πράσινο >> 5V ανεκτικό

Βήμα 9: Maple Mini - Καρφίτσωμα - a / D Χρησιμοποιείται στη λήψη

Maple Mini - Καρφίτσωμα - a / D Χρησιμοποιείται στη λήψη
Maple Mini - Καρφίτσωμα - a / D Χρησιμοποιείται στη λήψη

Τονίζω εδώ ότι η καρφίτσα που χρησιμοποίησα είναι η D11 που (στην ονοματολογία της STMicroelectronics) είναι η PA0.

Βήμα 10: Συναρμολόγηση

Συνέλευση
Συνέλευση

Για το κύκλωμά μας, θα χρειαστείτε μια συμμετρική πηγή, όπως αυτή που δημιουργήσαμε για αυτό το έργο. Διαφορετικά, θα χρειαστείτε δύο πηγές.

Βήμα 11: Γράφημα με τα δεδομένα που λαμβάνονται

Γράφημα με τα δεδομένα που λαμβάνονται
Γράφημα με τα δεδομένα που λαμβάνονται

Βήμα 12: Υπολογισμός της τιμής RMS

Υπολογισμός της τιμής RMS
Υπολογισμός της τιμής RMS

Βήμα 13: Πηγαίος κώδικας

Πηγαίος κώδικας - Ορισμοί και σταθερές

Αρχικά, ορίσαμε την ανάγνωση του πείρου ως D11, καθώς και τις διάφορες σταθερές που χρησιμοποιούνται στους υπολογισμούς.

#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

Πηγαίος κώδικας - Καθολικές μεταβλητές

Τώρα, ορίζουμε ορισμένες γενικές μεταβλητές.

float Vrms = 0,0; // armazena o valor rms da tensãofloat Vmax = 0,0; // armazena o valor máximo deteado float Vmin = 10000.0; // armazena o valor mínimo deteado float Vmed = 0,0; // armazena o valor médio entre Vmáx e Vmín

Πηγαίος κώδικας - Ρύθμιση ()

Ξεκινήστε τη σειριακή θύρα στα 1Mbps. Προσαρμόσαμε τη θύρα AD ως είσοδο και περιμέναμε 5 δευτερόλεπτα πριν ξεκινήσουμε τη συλλογή δεδομένων. Ο χρόνος αναμονής είναι προαιρετικός.

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. (προαιρετικά)}

Πηγαίος κώδικας - Loop () - Ξεκινά τις μεταβλητές συλλογής δεδομένων

Στο βρόχο, έχουμε τη μεταβλητή για επανάληψη. Εδώ, αποθηκεύουμε επίσης τις ενδείξεις του AD σε 0,0 και κάνουμε επανεκκίνηση της μεταβλητής VRMS επίσης σε 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

Πηγαίος κώδικας - Καταγράφει και εκτελεί τους μεμονωμένους υπολογισμούς για κάθε δείγμα

Σε αυτό το στάδιο, εάν το i είναι μικρότερο από το δείγμα, ξεκινάμε έναν κύκλο δειγματοληψίας μέχρι να φτάσω τον αριθμό των δειγμάτων. Τρέχουμε το analogRead για να διαβάσουμε την αναλογική θύρα και να υπολογίσουμε το άθροισμα των τετραγώνων των τάσεων ανάγνωσης. Τέλος, αυξάνουμε τον επαναληπτή.

ενώ (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}

Πηγαίος κώδικας - Γενικοί υπολογισμοί των δειγμάτων και προσδιορισμός μέγιστου, ελάχιστου και μέσου όρου

Εφαρμόζουμε το γεγονός του πολλαπλασιασμού για να καθορίσουμε την πραγματική τιμή των τάσεων. Ανιχνεύουμε αν η τιμή είναι μέγιστη ή ελάχιστη και υπολογίζουμε τον μέσο όρο των τρέχουσας μέγιστης και ελάχιστης τιμής.

// Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // detea se é um um um méximo if (Vrms> Vmax) {Vmax = Vrms; } // detea se é um 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;

Πηγαίος κώδικας - Επιλογές εξόδου

Έχουμε τρεις επιλογές για τη «σχεδίαση» της τιμής εξόδου. Έχουμε εξόδου μορφοποιημένο στο σειριακό plotter του Arduino IDE, όπως CSV ή 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); */}

Βήμα 14: Αρχεία

Κατεβάστε τα αρχεία:

PDF

ΕΓΩ ΔΕΝ

Συνιστάται: