- Απαιτούμενα υλικά
- Διάγραμμα ηλεκτρονικού φορτίου Arduino DC
- Σχεδιασμός PCB και αρχείο Gerber
- Παραγγελία PCB από το AllPCB
- Κωδικός Arduino για ρυθμιζόμενο φορτίο DC
- Δοκιμή του ρυθμιζόμενου φορτίου DC
Εάν έχετε εργαστεί ποτέ με μπαταρίες, κυκλώματα SMPS ή άλλα κυκλώματα τροφοδοσίας, τότε συχνά θα συνέβαινε ότι πρέπει να ελέγξετε την πηγή τροφοδοσίας φορτώνοντάς την για να ελέγξετε την απόδοσή της υπό διαφορετικές συνθήκες φόρτωσης. Μια συσκευή που χρησιμοποιείται συνήθως για την εκτέλεση αυτού του τύπου δοκιμής ονομάζεται Constant Current DC Load, η οποία μας επιτρέπει να προσαρμόζουμε το ρεύμα εξόδου της πηγής τροφοδοσίας σας και στη συνέχεια τη διατηρούμε σταθερή έως ότου αλλάξει ξανά αλλάξει. Σε αυτό το σεμινάριο, θα μάθουμε πώς να φτιάχνουμε το δικό μας Ρυθμιζόμενο Ηλεκτρονικό Φορτίο χρησιμοποιώντας το Arduino, το οποίο μπορεί να πάρει μια μέγιστη τάση εισόδου 24V και να αποστραγγίσει το ρεύμα έως και 5Α. Για αυτό το έργο, χρησιμοποιήσαμε πλακέτες PCB που κατασκευάζονται από την AllPCB, έναν επαγγελματικό πάροχο PCB παραγωγής και συναρμολόγησης PCB.
Στο προηγούμενο σεμινάριο πηγής ρεύματος ελεγχόμενης τάσης, έχουμε εξηγήσει πώς να χρησιμοποιήσετε έναν λειτουργικό ενισχυτή με ένα MOSFET και να χρησιμοποιήσετε ένα κύκλωμα πηγής ρεύματος ελεγχόμενης τάσης. Αλλά σε αυτό το σεμινάριο, θα εφαρμόσουμε αυτό το κύκλωμα και θα δημιουργήσουμε μια ψηφιακά ελεγχόμενη τρέχουσα πηγή. Προφανώς, μια ψηφιακά ελεγχόμενη πηγή ρεύματος απαιτεί ένα ψηφιακό κύκλωμα και για την εξυπηρέτηση του σκοπού, χρησιμοποιείται ένα Arduino NANO. Το Arduino NANO θα παρέχει τα απαιτούμενα χειριστήρια για το φορτίο DC.
Το κύκλωμα αποτελείται από τρία μέρη. Το πρώτο μέρος είναι το τμήμα Arduino Nano, το δεύτερο μέρος είναι το ψηφιακό σε αναλογικό μετατροπέα και το τρίτο μέρος είναι ένα καθαρό αναλογικό κύκλωμα όπου χρησιμοποιείται ένας διπλός λειτουργικός ενισχυτής σε ένα μόνο πακέτο που θα ελέγχει το τμήμα φορτίου. Αυτό το έργο είναι εμπνευσμένο από μια ανάρτηση στο Arduino, ωστόσο, το κύκλωμα αλλάζει για λιγότερη πολυπλοκότητα με βασικά χαρακτηριστικά για να το κατασκευάσει ο καθένας.
Το ηλεκτρονικό μας φορτίο έχει σχεδιαστεί για να έχει τις ακόλουθες ενότητες εισόδου και εξόδου.
- Δύο διακόπτες εισόδου για αύξηση και μείωση του φορτίου.
- Μια οθόνη LCD που θα εμφανίζει το καθορισμένο φορτίο, το πραγματικό φορτίο και την τάση φορτίου.
- Το μέγιστο ρεύμα φόρτωσης περιορίζεται στα 5Α.
- Η μέγιστη τάση εισόδου είναι 24V για το φορτίο.
Απαιτούμενα υλικά
Τα εξαρτήματα που απαιτούνται για την κατασκευή ενός ηλεκτρονικού φορτίου DC παρατίθενται παρακάτω.
- Arduino nano
- LCD χαρακτήρων 16x2
- Υποδοχή δύο βαρελιών
- Mosfet irf540n
- Mcp4921
- Lm358
- 5Watt αντίσταση διακλάδωσης.1 ohms
- 1k
- 10k - 6τμχ
- Heatsink
- .1uF 50v
- 2k - 2τμχ
Διάγραμμα ηλεκτρονικού φορτίου Arduino DC
Στο παρακάτω σχήμα, ο λειτουργικός ενισχυτής έχει δύο ενότητες. Το ένα είναι να ελέγχει το MOSFET και το άλλο είναι να ενισχύει το αισθητήριο ρεύμα. Μπορείτε επίσης να ελέγξετε το βίντεο στο κάτω μέρος αυτής της σελίδας που εξηγεί την πλήρη λειτουργία του κυκλώματος. Το πρώτο τμήμα έχει R12, R13 και MOSFET. Το R12 χρησιμοποιείται για τη μείωση του φαινομένου φόρτωσης στην ενότητα ανατροφοδότησης και το R13 χρησιμοποιείται ως αντίσταση πύλης Mosfet.
Επιπλέον δύο αντιστάσεις R8 και R9 χρησιμοποιούνται για την ανίχνευση της τάσης τροφοδοσίας του τροφοδοτικού που θα τονιστεί από αυτό το πλαστό φορτίο. Σύμφωνα με τον κανόνα του διαχωριστή τάσης, αυτές οι δύο αντιστάσεις υποστηρίζουν το πολύ 24V. Περισσότερο από 24V θα παράγει τάση που δεν θα είναι κατάλληλη για τους πείρους Arduino. Προσέξτε λοιπόν να μην συνδέσετε τροφοδοτικό με τάση εξόδου άνω των 24V.
Το Resistor R7 είναι η πραγματική αντίσταση φορτίου εδώ. Είναι αντίσταση 5 Watt, 0,1 Ohm. Σύμφωνα με τον νόμο ισχύος, θα υποστηρίζει το μέγιστο 7A (P = I 2 R), αλλά για την ασφαλή πλευρά, είναι πιο σοφό να περιορίσετε το μέγιστο ρεύμα φορτίου 5Α. Επομένως, επί του παρόντος το μέγιστο φορτίο 24V, 5A μπορεί να ρυθμιστεί από αυτό το πλαστό φορτίο.
Ένα άλλο τμήμα του ενισχυτή έχει διαμορφωθεί ως ενισχυτής κέρδους. Θα παρέχει κέρδος 6 φορές. Κατά τη ροή του ρεύματος, θα εμφανιστεί πτώση τάσης. Για παράδειγμα, όταν 5Α ρεύματος ρέει μέσω της αντίστασης, η πτώση τάσης θα είναι 0,5V κατά μήκος της αντίστασης διακλάδωσης 0,1 Ohms (V = I x R) σύμφωνα με τον νόμο ohms. Ο μη αναστρέψιμος ενισχυτής θα τον ενισχύσει σε x6, επομένως το 3V θα είναι η έξοδος από το δεύτερο μέρος του ενισχυτή. Αυτή η έξοδος θα ανιχνευθεί από τον αναλογικό ακροδέκτη εισόδου Arduino και θα υπολογιστεί το ρεύμα.
Το πρώτο μέρος του ενισχυτή έχει διαμορφωθεί ως κύκλωμα παρακολούθησης τάσης που θα ελέγχει το MOSFET σύμφωνα με την τάση εισόδου και θα λαμβάνει την επιθυμητή τάση ανάδρασης λόγω του ρεύματος φορτίου που ρέει μέσω της αντίστασης διακλάδωσης.
Το MCP4921 είναι ο μετατροπέας Digital to Analog. Το DAC χρησιμοποιεί το πρωτόκολλο επικοινωνίας SPI για να πάρει τα ψηφιακά δεδομένα από οποιαδήποτε μονάδα μικροελεγκτή και να παρέχει αναλογική έξοδο τάσης ανάλογα με αυτό. Αυτή η τάση είναι η είσοδος του op-amp. Έχουμε ήδη μάθει πώς να χρησιμοποιούμε αυτό το MCP4921 DAC με PIC.
Από την άλλη πλευρά, υπάρχει ένα Arduino Nano που θα παρέχει τα ψηφιακά δεδομένα στο DAC μέσω πρωτοκόλλου SPI και θα ελέγχει το φορτίο, εμφανίζοντας επίσης τα δεδομένα στην οθόνη χαρακτήρων 16x2. Χρησιμοποιούνται δύο επιπλέον πράγματα, δηλαδή το κουμπί μείωσης και αύξησης. Αντί να συνδέεται με έναν ψηφιακό πείρο, συνδέεται στις αναλογικές ακίδες. Επομένως, μπορεί κανείς να το αλλάξει σε άλλο τύπο διακοπτών, όπως ρυθμιστικό ή αναλογικό κωδικοποιητή. Επίσης, τροποποιώντας τον κώδικα, μπορεί κανείς να παράσχει ακατέργαστα αναλογικά δεδομένα για τον έλεγχο του φορτίου. Με αυτόν τον τρόπο αποφεύγεται επίσης το πρόβλημα κατάργησης του διακόπτη.
Τέλος, αυξάνοντας το φορτίο, το Arduino nano θα παρέχει τα δεδομένα φορτίου στο DAC σε ψηφιακή μορφή, το DAC θα παρέχει αναλογικά δεδομένα στον λειτουργικό ενισχυτή και ο λειτουργικός ενισχυτής θα ελέγχει το MOSFET σύμφωνα με την τάση εισόδου του λειτουργικού ενισχυτή. Τέλος, ανάλογα με τη ροή του ρεύματος φορτίου μέσω της αντίστασης διακλάδωσης, θα εμφανιστεί πτώση τάσης η οποία θα ενισχυθεί περαιτέρω από το δεύτερο κανάλι του LM358 και θα ληφθεί από το Arduino nano. Αυτό θα εμφανιστεί στην οθόνη χαρακτήρων. Το ίδιο θα συμβεί όταν ο χρήστης πατήσει το κουμπί μείωσης.
Σχεδιασμός PCB και αρχείο Gerber
Δεδομένου ότι αυτό το κύκλωμα έχει υψηλή διαδρομή ρεύματος, είναι μια πιο σοφή επιλογή να χρησιμοποιήσετε σωστές τακτικές σχεδιασμού PCB για την αφαίρεση ανεπιθύμητων περιπτώσεων αστοχίας. Έτσι, ένα PCB έχει σχεδιαστεί για αυτό το φορτίο DC. Έχω χρησιμοποιήσει το λογισμικό σχεδίασης Eagle PCB για το σχεδιασμό του PCB μου. Μπορείτε να επιλέξετε οποιοδήποτε λογισμικό PCB Cad. Το τελικό σχεδιασμένο PCB στο λογισμικό CAD φαίνεται στην παρακάτω εικόνα,
Ένας σημαντικός παράγοντας που πρέπει να παρατηρήσετε κατά τη σχεδίαση αυτού του PCB είναι να χρησιμοποιήσετε ένα παχύ επίπεδο ισχύος για σωστή ροή ρεύματος σε όλο το κύκλωμα. Υπάρχει επίσης γείωση ραφή VIAS (τυχαία vias στο επίπεδο γείωσης) που χρησιμοποιούνται για την σωστή ροή του εδάφους και στις δύο των στρωμάτων στην κορυφή και στο κάτω μέρος.
Μπορείτε επίσης να κατεβάσετε το αρχείο Gerber αυτού του PCB από τον παρακάτω σύνδεσμο και να το χρησιμοποιήσετε για την κατασκευή.
- Κατεβάστε το ρυθμιζόμενο ηλεκτρονικό αρχείο Gerber DC
Παραγγελία PCB από το AllPCB
Μόλις είστε έτοιμοι με το αρχείο Gerber μπορείτε να το χρησιμοποιήσετε για να δημιουργήσετε το PCB σας. Μιλώντας για το οποίο φέρνει τον χορηγό αυτού του άρθρου ALLPCB, οι οποίοι είναι γνωστοί για τα υψηλής ποιότητας PCB και την εξαιρετικά γρήγορη αποστολή τους. Εκτός από την PCB Manufacturing, το AllPCB παρέχει επίσηςΣυναρμολόγηση PCB και προμήθεια συστατικών.
Για να λάβετε την παραγγελία PCB από αυτούς, επισκεφθείτε τη διεύθυνση allpcb.com και εγγραφή. Στη συνέχεια, στην αρχική σελίδα, εισαγάγετε τις διαστάσεις του PCB σας και την απαιτούμενη ποσότητα όπως φαίνεται παρακάτω. Στη συνέχεια, κάντε κλικ στο Quote τώρα.
Τώρα μπορείτε να αλλάξετε τις άλλες παραμέτρους του PCB σας, όπως τον αριθμό των επιπέδων, το χρώμα της μάσκας, το πάχος κ.λπ. Στη δεξιά πλευρά, μπορείτε να επιλέξετε τη χώρα σας και την προτιμώμενη επιλογή αποστολής. Αυτό θα σας δείξει τον χρόνο παράδοσης και το συνολικό ποσό που θα πληρωθεί. Έχω επιλέξει DHL και το συνολικό ποσό μου είναι 26 $, αλλά αν είστε πελάτης για πρώτη φορά, οι τιμές θα πέσουν στο ταμείο. Στη συνέχεια, κάντε κλικ στο Προσθήκη στο καλάθι και στη συνέχεια κάντε κλικ στο check out τώρα.
Τώρα, μπορείτε να κάνετε κλικ στη μεταφόρτωση του αρχείου Gerber κάνοντας κλικ στο "Μεταφόρτωση Gerber" και στη συνέχεια κάντε κλικ στο buy.
Στην επόμενη σελίδα, μπορείτε να εισαγάγετε τη διεύθυνση αποστολής σας και να ελέγξετε την τελική τιμή που πρέπει να πληρώσετε για το PCB σας. Στη συνέχεια, μπορείτε να ελέγξετε την παραγγελία σας και, στη συνέχεια, να κάνετε κλικ στην υποβολή για να πραγματοποιήσετε την πληρωμή.
Μόλις επιβεβαιωθεί η παραγγελία σας, μπορείτε να καθίσετε και να μεταφέρετε το PCB σας να φτάσει στο κατώφλι σας. Έλαβα την παραγγελία μου μετά από μερικές ημέρες και στη συνέχεια η συσκευασία ήταν τακτοποιημένη όπως φαίνεται παρακάτω.
Η ποιότητα του PCB ήταν καλή όπως πάντα, όπως μπορείτε να δείτε μόνοι σας στις παρακάτω εικόνες. Η επάνω πλευρά και η κάτω πλευρά του πίνακα φαίνονται παρακάτω.
Μόλις λάβετε τον πίνακα, μπορείτε να προχωρήσετε στη συναρμολόγηση όλων των στοιχείων. Ο τελικός πίνακας μου μοιάζει με αυτό που φαίνεται παρακάτω.
Στη συνέχεια, μπορείτε να ανεβάσετε τον κωδικό και να ενεργοποιήσετε τη λειτουργική μονάδα για να ελέγξετε πώς λειτουργεί. Ο πλήρης κωδικός για αυτό το έργο δίνεται στο κάτω μέρος αυτής της σελίδας. Η εξήγηση του κώδικα έχει ως εξής.
Κωδικός Arduino για ρυθμιζόμενο φορτίο DC
Ο κωδικός είναι πολύ απλός. Αρχικά, συμπεριλάβαμε αρχεία κεφαλίδας SPI και LCD, καθώς και τη μέγιστη τάση λογικής, καρφίτσες επιλογής τσιπ κλπ
#περιλαμβάνω
Αυτή η ενότητα αποτελείται από απαιτούμενες δηλώσεις σχετικά με τη ροή ακέραιων και μεταβλητών. Επίσης, ορίζουμε τους συνδέσμους περιφερειακών συνδέσμων με το Arduino Nano.
const int slaveSelectPin = 10; // Chip select pin int number = 0; int αύξηση = A2; // Αύξηση πείρου int μείωση = A3; // μείωση pin int current_sense = A0; // τρέχουσα ακίδα έντασης // πείρος έντασης τάσης int state1 = 0; int state2 = 0; int Set = 0; float volt = 0; float load_current = 0,0; float load_voltage = 0,0; ρεύμα φλοτέρ = 0,0; τάση επίπλευσης = 0,0; LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // Καρφίτσες LCD
Αυτό χρησιμοποιείται για την εγκατάσταση των LCD και SPI. Επίσης, οι κατευθύνσεις ακίδων είναι εδώ.
άκυρη ρύθμιση () { pinMode (slaveSelectPin, OUTPUT); pinMode (αύξηση, ΕΙΣΟΔΟΣ); pinMode (μείωση, ΕΙΣΟΔΟΣ); pinMode (current_sense, INPUT); pinMode (voltage_sense, INPUT); // αρχικοποίηση SPI: SPI.begin (); // ρυθμίστε τον αριθμό των στηλών και σειρών της οθόνης LCD: lcd.begin (16, 2); // Εκτυπώστε ένα μήνυμα στην οθόνη LCD. lcd.print ("Ψηφιακό φορτίο"); lcd.setCursor (0, 1); lcd.print ("Κύκλωμα Digest"); καθυστέρηση (2000); }
Χρησιμοποιείται για τη μετατροπή της τιμής DAC.
void convert_DAC (unsigned int value) { / * Μέγεθος βήματος = 2 ^ n, Επομένως 12bit 2 ^ 12 = 4096 Για αναφορά 5V, το βήμα θα είναι 5/4095 = 0,0012210012210012V ή 1mV (περίπου) * / μη υπογεγραμμένο κοντέινερ. χωρίς υπογραφή MSB; χωρίς υπογραφή int LSB; / * Βήμα: 1, αποθηκεύθηκαν τα δεδομένα 12 bit στο κοντέινερ Ας υποθέσουμε ότι τα δεδομένα είναι 4095, στο δυαδικό 1111 1111 1111 * / container = value; / * Βήμα: 2 Δημιουργία Dummy 8 bit. Έτσι, διαιρώντας το 256, τα άνω 4 bits καταγράφονται σε LSB LSB = 0000 1111 * / LSB = container / 256; / * Βήμα: 3 Αποστολή της διαμόρφωσης με διάτρηση των δεδομένων 4 bit. LSB = 0011 0000 Ή 0000 1111. Το αποτέλεσμα είναι 0011 1111 * / LSB = (0x30) - LSB; / * Βήμα: 4 Το κοντέινερ έχει ακόμα την τιμή 21bit. Εξαγωγή των κάτω 8 bit. 1111 1111 ΚΑΙ 1111 1111 1111. Το αποτέλεσμα είναι 1111 1111 που είναι MSB * / MSB = 0xFF & container; / * Βήμα: 4 Αποστολή δεδομένων 16 bit διαιρώντας σε δύο byte. * / digitalWrite (slaveSelectPin, LOW); καθυστέρηση (100); SPI. Μεταφορά (LSB); SPI. Μεταφορά (MSB); καθυστέρηση (100); // πάρτε τον ακροδέκτη SS ψηλά για να αποεπιλέξετε το chip: digitalWrite (slaveSelectPin, HIGH); }
Αυτή η ενότητα χρησιμοποιείται για τρέχουσες σχετικές λειτουργίες ανίχνευσης.
float read_current (άκυρο) { load_current = 0; για (int a = 0; a <average; a ++) { load_current = load_current + analogRead (current_sense); } load_current = load_current / μέσος όρος; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; επιστροφή load_current; }
Αυτό χρησιμοποιείται για την ανάγνωση της τάσης φορτίου.
float read_voltage (void) { load_voltage = 0; για (int a = 0; a < rata-rata ; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } load_voltage = load_voltage / μέσος όρος; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; επιστροφή load_voltage; }
Αυτός είναι ο πραγματικός βρόχος. Εδώ, μετρούνται τα βήματα μεταγωγής και τα δεδομένα αποστέλλονται στο DAC. Μετά τη μετάδοση των δεδομένων, μετράται η πραγματική ροή ρεύματος και η τάση φορτίου. Και οι δύο τιμές εκτυπώνονται τελικά στην οθόνη LCD.
void loop () { state1 = analogRead (αύξηση); εάν (κατάσταση1> 500) { καθυστέρηση (50); state1 = analogRead (αύξηση); εάν (κατάσταση1> 500) { volt = volt + 0,02; } } κατάσταση2 = analogRead (μείωση); εάν (κατάσταση2> 500) { καθυστέρηση (50); state2 = analogRead (μείωση); if (κατάσταση2> 500) { if (volt == 0) { volt = 0; } αλλιώς { volt = volt-0,02; } } } αριθμός = volt / 0,0012210012210012; convert_DAC (αριθμός); τάση = read_voltage (); current = read_current (); lcd.setCursor (0, 0); lcd.print ("Ορισμός τιμής"); lcd.print ("="); Σετ = (volt / 2) * 10000; lcd.print (Σετ); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (τρέχουσα); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (τάση); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // καθυστέρηση (1000) //lcd.clear (); }
Δοκιμή του ρυθμιζόμενου φορτίου DC
Το ψηφιακό κύκλωμα φορτίου συγκολλάται και τροφοδοτείται χρησιμοποιώντας πηγή τροφοδοσίας 12V. Χρησιμοποίησα την μπαταρία λιθίου 7.4V από την πλευρά της πηγής ισχύος και συνέδεσα έναν μετρητή σφιγκτήρα για να ελέγξω πώς λειτουργεί. Όπως μπορείτε να δείτε πότε το ρυθμισμένο ρεύμα είναι 300mA, το κύκλωμα αντλεί 300mA από την μπαταρία, η οποία μετριέται επίσης από τον μετρητή σφιγκτήρα ως 310mA.
Η πλήρης λειτουργία του κυκλώματος βρίσκεται στο παρακάτω βίντεο. Ελπίζω να καταλάβατε το έργο και σας άρεσε να φτιάξετε κάτι χρήσιμο. Εάν έχετε οποιεσδήποτε ερωτήσεις αφήστε τις στην ενότητα σχολίων ή χρησιμοποιήστε τα φόρουμ.