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

Μέτρηση συχνότητας και τάσης τροφοδοσίας με χρήση Arduino: 6 βήματα
Μέτρηση συχνότητας και τάσης τροφοδοσίας με χρήση Arduino: 6 βήματα

Βίντεο: Μέτρηση συχνότητας και τάσης τροφοδοσίας με χρήση Arduino: 6 βήματα

Βίντεο: Μέτρηση συχνότητας και τάσης τροφοδοσίας με χρήση Arduino: 6 βήματα
Βίντεο: Концепция EP19 - Измерение ВЧ-мощности своими руками 2024, Νοέμβριος
Anonim
Μέτρηση συχνότητας και τάσης τροφοδοσίας χρησιμοποιώντας το Arduino
Μέτρηση συχνότητας και τάσης τροφοδοσίας χρησιμοποιώντας το Arduino

Εισαγωγή:

Ο στόχος αυτού του έργου είναι να μετρήσει τη συχνότητα και την τάση τροφοδοσίας, η οποία κυμαίνεται μεταξύ 220 έως 240 Volts και 50Hz εδώ στην Ινδία. Χρησιμοποίησα ένα Arduino για τη λήψη σήματος και τον υπολογισμό της συχνότητας και της τάσης, μπορείτε να χρησιμοποιήσετε οποιοδήποτε άλλο μικροελεγκτή ή πλακέτα που έχετε. Το κύκλωμα απαιτεί μια χούφτα εξαρτημάτων και είναι αρκετά ακριβές για όλους τους πρακτικούς σκοπούς.

Βήμα 1: Απαιτούνται εξαρτήματα

  • Arduino Uno
  • IC LM358
  • Μετασχηματιστής από τα κάτω (220V έως 12V)
  • Πυκνωτές:

    • 0.1uF
    • 2 x 1uF
  • Αντιστάσεις:

    • 3 x 1kOhm
    • 2 x 100kOhm
    • 1,5kOhm
    • 3,3kOhm
    • 6,8kOhm
  • 3 x 1N4148 δίοδος
  • Πίνακας ψωμιού και καλώδιο άλτης (προαιρετικά)

Βήμα 2: Σχηματικό διάγραμμα

Σχηματικό διάγραμμα
Σχηματικό διάγραμμα
Σχηματικό διάγραμμα
Σχηματικό διάγραμμα

Στο παραπάνω κύκλωμα, ο πρωτεύων του μετασχηματιστή συνδέεται με το δίκτυο τροφοδοσίας και ο κύριος συνδέεται με το κύκλωμα μέτρησης

Βήμα 3: Κατανόηση του κυκλώματος

Κατανόηση του κυκλώματος
Κατανόηση του κυκλώματος
Κατανόηση του κυκλώματος
Κατανόηση του κυκλώματος
Κατανόηση του κυκλώματος
Κατανόηση του κυκλώματος

Σύμφωνα με τη λειτουργικότητα, αυτό το κύκλωμα μπορεί να χωριστεί σε τέσσερα μέρη:

Α: Το κύκλωμα ανιχνευτή μηδενικής διασταύρωσης

Αυτό το κύκλωμα παράγει έναν τετραγωνικό παλμό 5V κάθε φορά που το κύμα ηλίου μεταβαίνει από θετικό σε αρνητικό. Η αντίσταση R1 σε συνδυασμό με τα D1 και D2 περιορίζει την ταλάντωση της τάσης εισόδου στη διασταύρωση διόδου σε -0,6V έως +5,6V (με την προϋπόθεση ότι η τάση προς τα εμπρός διόδου είναι 0,6V). Επιπλέον, μπορείτε να αυξήσετε το εύρος τάσης εισόδου του κυκλώματος αυξάνοντας την τιμή του R1.

Η αντίσταση R2 και R3 σχηματίζουν ένα διαχωριστή τάσης για να περιορίσει την αρνητική ταλάντευση τάσης στα -0,24Volts καθώς η τάση κοινού τρόπου εισόδου του LM358 περιορίζεται στα -0,3Volts.

Ο αντιστάτης R4, R5, ο πυκνωτής C1 και το op-amp (εδώ χρησιμοποιείται ως συγκριτής) σχηματίζουν το κύκλωμα Schmitt Trigger όπου ο αντιστάτης R4 και R5 θέτουν την υστέρηση στην είσοδο +49.5mV πάνω από το έδαφος. Η έξοδος του Schmitt Trigger τροφοδοτείται στο Arduino PIN2 για περαιτέρω επεξεργασία.

Β: Απομόνωση και τάση υποχώρηση

Όπως υποδηλώνει το όνομα, αυτό το μέρος απομονώνει και μειώνει την τάση στα περίπου 12Vrms. Η μειωμένη τάση τροφοδοτείται περαιτέρω στο κύκλωμα οργάνων.

Γ: Κύκλωμα ανιχνευτή αιχμής

Αυτό το κύκλωμα καθορίζει τη μέγιστη τάση αιχμής του σήματος εισόδου. Ο διαιρέτης αντίστασης R6 και R7 μειώνει την τάση εισόδου κατά 0,23 (τα 12Vrms μειώνονται σε 2,76Vrms). Η δίοδος D3 διεξάγει μόνο τον θετικό μισό κύκλο του σήματος. Η τάση στο C2 αυξάνεται μέχρι την τιμή αιχμής του διορθωμένου σήματος, το οποίο τροφοδοτείται με τον αναλογικό πείρο A0 Arduino για περαιτέρω υπολογισμό της τάσης.

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

Δ: Arduino

Σε αυτό το μέρος, το Arduino συλλαμβάνει τους τετραγωνικούς παλμούς που δημιουργούνται από το κύκλωμα Schmitt Trigger και διαβάζει την αναλογική τάση από το κύκλωμα ανιχνευτή αιχμής. Τα δεδομένα υποβάλλονται σε περαιτέρω επεξεργασία για τον προσδιορισμό της χρονικής περιόδου (άρα συχνότητας) του τετραγωνικού παλμού (που είναι ίσος με το άτομο χρόνου παροχής εναλλασσόμενου ρεύματος) και της τάσης της παροχής.

Βήμα 4: Υπολογισμός συχνότητας και τάσης

Υπολογισμός συχνότητας:

Με τη βοήθεια του Arduino, μπορούμε να μετρήσουμε τη χρονική περίοδο Τ του σήματος. Οι τετράγωνοι παλμοί κύματος από τον ανιχνευτή μηδενικής διασταύρωσης τροφοδοτούνται στην ακίδα 2, από εκεί μπορούμε να μετρήσουμε τη χρονική περίοδο κάθε παλμού. Μπορούμε να χρησιμοποιήσουμε τον εσωτερικό χρονοδιακόπτη του Arduino (συγκεκριμένα το χρονόμετρο 1) για να υπολογίσουμε το χρονικό διάστημα μεταξύ δύο ανερχόμενων άκρων του τετράγωνου παλμού με τη βοήθεια διακοπών. Ο χρονοδιακόπτης αυξάνεται κατά 1 ανά κύκλο ρολογιού (χωρίς προκαθοριστή = 1) και η τιμή αποθηκεύεται στον καταχωρητή TCNT1. Ως εκ τούτου, το ρολόι 16Mhz αυξάνει τον μετρητή κατά 16 κάθε μικροδευτερόλεπτο. Παρομοίως για το prescaler = 8 το χρονόμετρο αυξάνεται κατά 2 κάθε μικροδευτερόλεπτο. Εξ ου και το χρονικό διάστημα μεταξύ δύο ανερχόμενων ακμών

T = (τιμή TCNT1) / χρόνος που απαιτείται για κάθε μέτρηση

Πού, χρόνος που απαιτείται για κάθε μέτρηση = prescaler / (ταχύτητα ρολογιού Arduino (16MHz)

Ως εκ τούτου, συχνότητα f = 1 / T = (ταχύτητα ρολογιού Arduino (16MHz) / (Prescaler * TCNT! Τιμή)

Ως εκ τούτου, η ταχύτητα του χρονοδιακόπτη (Hz) δίνεται από = (ταχύτητα ρολογιού Arduino (16MHz)) / prescaler

και η συχνότητα του σήματος δίνεται από = (ταχύτητα ρολογιού Arduino

Αντίστοιχα, μπορούμε να υπολογίσουμε τη συχνότητα f από τη σχέση f = 1/T.

Υπολογισμός τάσης:

Το ενσωματωμένο ADC του Arduino έχει ανάλυση 10 bits (πιθανές τιμές = 2^10 = 1024), επιστρέφοντας τιμές στο εύρος 0-1023. Για να υπολογίσουμε την αντίστοιχη αναλογική τάση V πρέπει να χρησιμοποιήσουμε την ακόλουθη σχέση

V = (ADC Reading) * 5/1023

Για να υπολογίσουμε την τάση τροφοδοσίας Vs (rms) πρέπει να λάβουμε υπόψη την αναλογία μετασχηματιστή, το διαχωριστή αντίστασης R6R7 και το κύκλωμα ανιχνευτή αιχμής. Μπορούμε απλά να συγκεντρώσουμε τους διάφορους παράγοντες/αναλογία ως:

Αναλογία μετασχηματιστή = 12/230 = 0,052

Διαχωριστής αντίστασης = R7/(R6 + R7) = 0,23

Κύκλωμα ανιχνευτή αιχμής = 1,414

Vs (rms) = V/(1.414*0.052*0.23) = (ανάγνωση ADC)*0.289

Πρέπει να σημειωθεί ότι αυτή η τιμή απέχει πολύ από την πραγματική τιμή, κυρίως λόγω σφάλματος στην πραγματική αναλογία μετασχηματιστή και πτώσης τάσης διόδου προς τα εμπρός. Ένας τρόπος για να παρακάμψετε αυτό είναι να προσδιορίσετε τον συντελεστή μετά τη συναρμολόγηση του κυκλώματος. Δηλαδή μετρώντας την τάση τροφοδοσίας και την τάση στον πυκνωτή C2 ξεχωριστά με ένα πολύμετρο, και στη συνέχεια υπολογίζοντας τα Vs (rms) ως εξής:

Vs (rms) = ((Τάση τροφοδοσίας *5)/(Τάση σε C2 *1023)) *(Ανάγνωση ADC)

στην περίπτωσή μου, Vs (rms) = 0,33*(ADC Reading)

Βήμα 5: Κωδικός Arduino

#define volt_in A0 // ακίδα ανάγνωσης αναλογικής τάσης

πτητικό uint16_t t_period? uint16_t ADC_value = 0; float volt, συχνότητα? void isr () {t_period = TCNT1; // αποθηκεύστε την τιμή TCNT1 σε t_period TCNT1 = 0; // επαναφορά χρονοδιακόπτη ADC_value = analogRead (volt_in); // διαβάστε αναλογική τάση} float get_freq () {uint16_t timer = t_period; εάν (χρονοδιακόπτης == 0) επιστρέφει 0 // για να αποφύγετε τη διαίρεση με το μηδέν else επιστροφή 16000000.0/(χρονοδιακόπτης 8UL*). // η συχνότητα δίνεται από f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // ορίστε τον προκατασκευαστή σε 8 TCNT1 = 0; // επαναφορά της τιμής του χρονοδιακόπτη TIMSK1 = bit (TOIE1); // ενεργοποίηση διακοπή υπερχείλισης Timer1 EIFR | = bit (INTF0); // διαγραφή σημαίας διακοπής INT0 Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // ενεργοποίηση καθυστέρησης εξωτερικής διακοπής (INT0) (1000). detachInterrupt (0); freq = get_freq (); volt = ADC_value*0,33; String buf? buf += String (συχνότητα, 3); buf += F ("Hz / t"); buf += String (volt); buf += F ("Volts"); Serial.println (buf); }

Βήμα 6: Συμπέρασμα

συμπέρασμα
συμπέρασμα
συμπέρασμα
συμπέρασμα

Μπορείτε να συναρμολογήσετε το κύκλωμα σε ένα breadboard και να τροποποιήσετε τον κώδικα και να προσθέσετε μια κάρτα SD για να αποθηκεύσετε τα δεδομένα, τα οποία μπορούν αργότερα να αναλυθούν. Ένα τέτοιο παράδειγμα είναι ότι μπορείτε να αναλύσετε την τάση και τη συχνότητα στις ώρες αιχμής.

Το κύκλωμα που συγκέντρωσα στο breadboard χρησιμοποίησε το LM324 (quad opamp) αντί του LM358 (διπλό opamp) καθώς δεν είχα αυτό το IC εκείνη τη στιγμή και ο αποκλεισμός σε εθνικό επίπεδο λόγω της πανδημίας COVID-19 με δυσκόλεψε να αποκτήσω νέο IC Το Ωστόσο, δεν θα επηρεάσει τη λειτουργία του κυκλώματος.

Μη διστάσετε να σχολιάσετε παρακάτω για τυχόν προτάσεις και απορίες.

Συνιστάται: