- Απαιτούμενα στοιχεία:
- Περιγραφή:
- Διάγραμμα κυκλώματος και εξήγηση εργασίας:
- Σχεδιασμός κυκλώματος και PCB χρησιμοποιώντας το EasyEDA:
- Υπολογισμός και παραγγελία δειγμάτων PCB online:
- Επεξήγηση προγραμματισμού:
Σε αυτό το έργο πρόκειται να φτιάξουμε ένα σύστημα παρακολούθησης μπαταρίας αυτοκινήτου βασισμένο σε PIC στο PCB. Εδώ έχουμε σχεδιάσει ένα PCB χρησιμοποιώντας τον online προσομοιωτή και σχεδιαστή PCB EASYEDA. Αυτό το κύκλωμα παρακολούθησης μπαταρίας αυτοκινήτου χρησιμοποιείται για την παρακολούθηση της ισχύος της μπαταρίας αυτοκινήτου, απλώς συνδέοντάς την στην πρίζα του ταμπλό ενός αυτοκινήτου. Το PCB έχει επίσης τη δυνατότητα να το χρησιμοποιήσει ως εργαλείο μέτρησης τάσης ή βολτόμετρο χωρίς τη χρήση φορτιστή αυτοκινήτου USB. Έχουμε συνδέσει ένα μπλοκ ακροδεκτών για να μετρήσουμε την τάση άλλων πηγών ισχύος, απλά συνδέοντας δύο καλώδια σε αυτό από την πηγή ισχύος.
Απαιτούμενα στοιχεία:
- Μικροελεγκτής PIC PIC18F2520 -1
- Κατασκευασμένη πλακέτα PCB -1
- Υποδοχή USB -1
- Υποδοχή τερματικού 2 ακίδων (προαιρετικό) -1
- Κοινή οθόνη επτά τμήματος ανόδου (4 σε 1) -1
- BC557 Τρανζίστορ -4
- 1k αντίσταση -6
- 2k αντίσταση -1
- 100R αντίσταση -8
- Πυκνωτής 1000uF -1
- Πυκνωτής 10uF -1
- Βάση IC 28 ακίδων -1
- γυναικείες κλοπές -1
- 7805 Ρυθμιστής τάσης -1
- Φορτιστής αυτοκινήτου USB -1
- LED -1
- Δίοδος Zener5.1v -2
- Καλώδιο USB (συμβατό με τύπου B ή Arduino UNO) -1
- 20MHz Crystal -1
- Πυκνωτής 33pF -2
Περιγραφή:
Γενικά, δεν είναι σημαντικό να μετράμε την ισχύ της μπαταρίας του αυτοκινήτου κάθε φορά, αλλά συχνά πρέπει να γνωρίζουμε για την τάση της μπαταρίας κατά τη φόρτιση, για να ελέγξουμε εάν η φόρτιση είναι ή όχι. Με αυτό, μπορούμε να προστατεύσουμε την αποτυχία της μπαταρίας λόγω του ελαττωματικού συστήματος φόρτισης. Η τάση μιας μπαταρίας αυτοκινήτου 12v κατά τη φόρτιση είναι περίπου 13,7v. Έτσι μπορούμε να προσδιορίσουμε εάν η μπαταρία μας φορτίζει καλά ή όχι και μπορούμε να διερευνήσουμε τις αιτίες της βλάβης της μπαταρίας. Σε αυτό το έργο, θα εφαρμόσουμε έναν μετρητή τάσης για μπαταρία αυτοκινήτου χρησιμοποιώντας έναν μικροελεγκτή PIC. Το Car Cigarette Lighter ή ο φορτιστής αυτοκινήτου USB χρησιμοποιείται για τη λήψη της τάσης της μπαταρίας στον πείρο ADC του μικροελεγκτή με τη βοήθεια του κυκλώματος διαίρεσης τάσης. Στη συνέχεια, μια οθόνη 4 ψηφίων επτά τμημάτωνχρησιμοποιείται για να δείξει την τιμή τάσης της μπαταρίας. Αυτό το κύκλωμα μπορεί να μετρήσει την τάση έως και 15v.
Όταν η μπαταρία ενός αυτοκινήτου φορτίζεται, τότε η τάση στους ακροδέκτες της μπαταρίας προέρχεται πραγματικά από τον εναλλάκτη / ανορθωτή, γι 'αυτό το σύστημα διαβάζει 13,7 βολτ. Αλλά όταν η μπαταρία δεν φορτίζεται ή ο κινητήρας του αυτοκινήτου δεν είναι ενεργοποιημένος, τότε η τάση σε όλο τον ακροδέκτη της μπαταρίας είναι η πραγματική τάση της μπαταρίας περίπου 12v.
Μπορούμε επίσης να χρησιμοποιήσουμε το ίδιο κύκλωμα για τη μέτρηση της τάσης άλλων πηγών ισχύος έως 15v. Για το σκοπό αυτό έχουμε κολλήσει το Block Block (πλαστικό μπλοκ πράσινου χρώματος) στο PCB όπου μπορείτε να συνδέσετε δύο καλώδια από την πηγή τροφοδοσίας και να παρακολουθείτε την τάση. Ελέγξτε το βίντεο στο τέλος, πού το αποδείξαμε μετρώντας την τάση ενός μεταβλητού τροφοδοτικού, μιας τράπεζας τροφοδοσίας USB και ενός προσαρμογέα 12V AC-DC. Ελέγξτε επίσης το κύκλωμα παρακολούθησης απλής μπαταρίας και το κύκλωμα φορτιστή μπαταρίας 12v.
Διάγραμμα κυκλώματος και εξήγηση εργασίας:
Σε αυτό το κύκλωμα παρακολούθησης τάσης μπαταρίας, έχουμε διαβάσει την τάση της μπαταρίας του αυτοκινήτου χρησιμοποιώντας έναν ενσωματωμένο αναλογικό πείρο μικροελεγκτή PIC και εδώ έχουμε επιλέξει τον πείρο AN0 (28) ακροδέκτη μικροελεγκτή μέσω ενός κυκλώματος διαχωριστή τάσης. Μια δίοδος zener 5.1v χρησιμοποιείται επίσης για προστασία.
Η οθόνη επτά τμημάτων 4 σε 1 χρησιμοποιείται για την εμφάνιση της στιγμιαίας τιμής της τάσης μπαταρίας αυτοκινήτου που είναι συνδεδεμένη στα PORTB και PORTC του μικροελεγκτή. Ένας ρυθμιστής τάσης 5v, δηλαδή το LM7805, χρησιμοποιείται για την τροφοδοσία ολόκληρου του κυκλώματος, συμπεριλαμβανομένων των Επτά Εμφανίσεων Τμημάτων. Χρησιμοποιείται ένας κρυσταλλικός ταλαντωτής των 20 MHz για την παρακολούθηση του μικροελεγκτή. Το κύκλωμα τροφοδοτείται από τον ίδιο το φορτιστή αυτοκινήτου USB χρησιμοποιώντας ένα LM7805. Έχουμε προσθέσει μια θύρα USB στο PCB, ώστε να μπορούμε να συνδέσουμε απευθείας το φορτιστή USB αυτοκινήτου στο κύκλωμα.
Ο φορτιστής USB αυτοκινήτου ή ο αναπτήρας Cigarette παρέχει ρυθμιζόμενη τροφοδοσία 5v από την πρίζα 12v του αυτοκινήτου, αλλά πρέπει να μετρήσουμε την πραγματική τάση της μπαταρίας αυτοκινήτου, οπότε έχουμε τροποποιήσει τον φορτιστή αυτοκινήτου. Πρέπει να ανοίξετε το φορτιστή USB του αυτοκινήτου και, στη συνέχεια, να βρείτε τους ακροδέκτες 5v (έξοδος) και 12v (είσοδος) και, στη συνέχεια, να αφαιρέσετε τη σύνδεση 5v τρίβοντάς την με χαρτί άμμου ή με κάποιο σκληρό πράγμα και βραχύνετε το τερματικό εξόδου USB στα 12v απευθείας. Ανοίξτε πρώτα τη σύνδεση 5v από τη θύρα USB στο φορτιστή USB του αυτοκινήτου και μετά συνδέστε 12v στη θύρα USB όπου ήταν συνδεδεμένο το 5v. Όπως φαίνεται στο παρακάτω σχήμα, έχουμε κόψει την κόκκινη σύνδεση, μπορεί να διαφέρει στον φορτιστή του αυτοκινήτου σας.
Για να διαμορφώσετε το ADC εδώ έχουμε επιλέξει αναλογικό πείρο AN0 με εσωτερική τάση αναφοράς 5v και f / 32 ρολόι για μετατροπή ADC.
Για τον υπολογισμό της τάσης της μπαταρίας του αυτοκινήτου από την τιμή ADC χρησιμοποιήσαμε τον δεδομένο τύπο:
Τάση = (τιμή ADC / συντελεστής αντίστασης) * τάση αναφοράς Πού: Τιμή ADC = έξοδος του διαχωριστή τάσης (μετατρέπεται σε ψηφιακό από μικροελεγκτή) Συντελεστής αντίστασης = 1023.0 / (R2 / R1 + R2) // 1023 είναι η μέγιστη τιμή ADC (10- bit) Τάση αναφοράς = 5 βολτ // επιλεγμένη εσωτερική αναφορά 5v
Υπολογισμός συντελεστή αντίστασης:
Σε αυτό το έργο διαβάζουμε τάση μπαταρίας αυτοκινήτου που είναι (γενικά) περίπου 12v-14v. Έτσι, κάναμε αυτό το έργο υποθέτοντας ότι το μέγιστο 15v σημαίνει ότι αυτό το σύστημα μπορεί να διαβαστεί έως και 15v.
Έτσι στο κύκλωμα χρησιμοποιήσαμε την αντίσταση R1 και R2 στο τμήμα διαχωριστή τάσης και οι τιμές είναι:
R1 = 2Κ
R2 = 1Κ
Συντελεστής αντίστασης = 1023.0 * (1000/2000 + 1000)
Συντελεστής αντίστασης = 1023.0 * (1/3)
Συντελεστής αντίστασης = 341,0 για έως και 15 βολτ
Έτσι, ο τελικός τύπος για τον υπολογισμό της τάσης θα έχει ως εξής, τον οποίο έχουμε χρησιμοποιήσει τον κώδικα, που δίνεται στο τέλος αυτού του άρθρου:
Τάση = (τιμή ADC / 341.0) * 5.0
Σχεδιασμός κυκλώματος και PCB χρησιμοποιώντας το EasyEDA:
Για να σχεδιάσουμε ένα κύκλωμα παρακολούθησης τάσης μπαταρίας αυτοκινήτου, χρησιμοποιήσαμε το EasyEDA το οποίο είναι ένα δωρεάν ηλεκτρονικό εργαλείο EDA για τη δημιουργία κυκλωμάτων και PCB με απρόσκοπτο τρόπο. Παραγγείλαμε προηγουμένως λίγα PCB από την EasyEDA και εξακολουθούμε να χρησιμοποιούμε τις υπηρεσίες τους καθώς βρήκαμε ολόκληρη τη διαδικασία, από το σχεδιασμό των κυκλωμάτων έως την παραγγελία των PCB, πιο βολικό και αποτελεσματικό σε σύγκριση με άλλους κατασκευαστές PCB. Η EasyEDA προσφέρει δωρεάν σχεδίαση κυκλώματος, προσομοίωση, σχεδιασμό PCB και προσφέρει επίσης προσαρμοσμένη υπηρεσία PCB υψηλής ποιότητας αλλά χαμηλής τιμής. Δείτε εδώ το πλήρες σεμινάριο σχετικά με τον τρόπο χρήσης του Easy EDA για τη δημιουργία Σχηματικών Σχέσεων, διατάξεων PCB, Προσομοίωσης Κυκλωμάτων κ.λπ.
Το EasyEDA βελτιώνεται μέρα με τη μέρα. έχουν προσθέσει πολλές νέες δυνατότητες και βελτιώνουν τη συνολική εμπειρία χρήστη, γεγονός που καθιστά το EasyEDA ευκολότερο και χρησιμοποιήσιμο για το σχεδιασμό κυκλωμάτων. Σύντομα πρόκειται να κυκλοφορήσουν την έκδοση Desktop, η οποία μπορεί να ληφθεί και να εγκατασταθεί στον υπολογιστή σας για χρήση εκτός σύνδεσης.
Στην EasyEDA, μπορείτε να κάνετε τα σχέδια κυκλωμάτων και PCB σας δημόσια, ώστε άλλοι χρήστες να μπορούν να τα αντιγράψουν ή να τα επεξεργαστούν και να επωφεληθούν από εκεί, έχουμε επίσης δημοσιοποιήσει ολόκληρες τις διατάξεις κυκλωμάτων και PCB για αυτήν την οθόνη τάσης μπαταρίας αυτοκινήτου, ελέγξτε τον παρακάτω σύνδεσμο:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Παρακάτω είναι το Στιγμιότυπο του κορυφαίου επιπέδου διάταξης PCB από το EasyEDA, μπορείτε να δείτε οποιοδήποτε επίπεδο (Top, Bottom, Topsilk, bottomsilk κ.λπ.) του PCB επιλέγοντας το επίπεδο από το παράθυρο «Layers».
Υπολογισμός και παραγγελία δειγμάτων PCB online:
Αφού ολοκληρώσετε τη σχεδίαση του PCB, μπορείτε να κάνετε κλικ στο εικονίδιο της εξόδου Κατασκευής , η οποία θα σας μεταφέρει στη σελίδα παραγγελίας PCB. Εδώ μπορείτε να προβάλετε το PCB σας στο Gerber Viewer ή να κατεβάσετε αρχεία Gerber του PCB σας και να τα στείλετε σε οποιονδήποτε κατασκευαστή, είναι επίσης πολύ πιο εύκολο (και φθηνότερο) να το παραγγείλετε απευθείας στο EasyEDA. Εδώ μπορείτε να επιλέξετε τον αριθμό των PCB που θέλετε να παραγγείλετε, πόσα στρώματα χαλκού χρειάζεστε, το πάχος PCB, το βάρος του χαλκού, ακόμη και το χρώμα PCB. Αφού ορίσετε όλες τις επιλογές, κάντε κλικ στο "Αποθήκευση στο καλάθι" και ολοκληρώστε την παραγγελία σας, και στη συνέχεια θα λάβετε τα PCB σας λίγες μέρες αργότερα.
Μπορείτε να παραγγείλετε απευθείας αυτό το PCB ή να κατεβάσετε το αρχείο Gerber χρησιμοποιώντας αυτόν τον σύνδεσμο.
Μετά από λίγες ημέρες παραγγελίας PCB πήρα τα δείγματα PCB
Αφού αποκτήσω τα PCB, έχω τοποθετήσει όλα τα απαιτούμενα εξαρτήματα πάνω από το PCB και, τέλος, έχουμε το Σύστημα Παρακολούθησης Μπαταρίας Αυτοκινήτου έτοιμο, ελέγξτε αυτό το κύκλωμα στην εργασία στο Βίντεο που δίνεται στο τέλος.
Επεξήγηση προγραμματισμού:
Το πρόγραμμα αυτού του έργου είναι λίγο δύσκολο για αρχάριους. Για να γράψουμε αυτόν τον κώδικα χρειαζόμαστε ορισμένα αρχεία κεφαλίδας. Εδώ χρησιμοποιούμε MPLAB X IDE για κωδικοποίηση και XC μεταγλωττιστή για τη δημιουργία και τη μεταγλώττιση του κώδικα. Ο κωδικός είναι γραμμένος στη γλώσσα Γ.
Σε αυτόν τον κώδικα, έχουμε διαβάσει την τάση της μπαταρίας χρησιμοποιώντας έναν αναλογικό πείρο και για τον έλεγχο ή την αποστολή δεδομένων σε επτά ψηφία επτά τμημάτων, έχουμε χρησιμοποιήσει Timer Interrupt Server Routine στον μικροελεγκτή PIC. Όλος ο υπολογισμός για τη μέτρηση τάσης γίνεται στην κύρια ρουτίνα του προγράμματος.
Αρχικά, στον κώδικα συμπεριλάβαμε μια κεφαλίδα και στη συνέχεια διαμορφώσαμε τον μικροελεγκτή PIC χρησιμοποιώντας τη διαμόρφωση Bits.
#περιλαμβάνω
Και μετά δηλώθηκαν μεταβλητές και καθορισμένες καρφίτσες για επτά τμήματα
χωρίς υπογραφή int counter2; μη υπογεγραμμένη θέση char = 0; χωρίς υπογραφή char k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int digit1 = 0, digit2 = 0, digit3 = 0, digit4 = 0; #define TRIS_seg1 TRISCbits.TRISC0 #define TRIS_seg2 TRISCbits.TRISC1 #define TRIS_seg3 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_led1 TRISAbits.TRISA2 #define TRIS_led2 TRISAbits.TRISA5 #define TRIS_led3 TRISAbits.TRISA0 #define TRIS_led4 TRISAbits.TRISA1 #define TRIS_led5 TRISAbits.TRISA………………
Τώρα έχουμε δημιουργήσει μια ρουτίνα διακοπής χρονοδιακόπτη για οδήγηση επτά τμημάτων:
void διακοπή low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++ if (counter2> = 1) {if (θέση == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Τώρα σε κενή λειτουργία () , έχουμε αρχικοποιήσει το χρονόμετρο και διακόπτουμε.
GIE = 1; // GLOBLE ΕΙΣΑΓΩΓΗ ΕΝΕΡΓΟΠΟΙΗΣΗ PEIE = 1; // περιφερειακή διακοπή σημαίας T0CON = 0b000000000; // prescaler value put TMR0IE = 1; // διακοπή ενεργοποίηση TMR0IP = 0; // διακοπή προτεραιότητας TMR0 = 55536; // έναρξη μετρητή μετά από αυτήν την τιμή TMR0ON = 1;
Και στη συνέχεια στο while loop, διαβάζουμε αναλογική είσοδο στον αναλογικό πείρο και καλούμε κάποια λειτουργία για υπολογισμούς.
ενώ (1) {adc_init (); για (i = 0; i <40; i ++) {Value = adc_value (); adcValue + = Τιμή; } adcValue = (float) adcValue / 40.0; μετατροπή (adcValue); καθυστέρηση (100); }
Δεδομένου adc_init () η συνάρτηση χρησιμοποιείται για την προετοιμασία του ADC
άκυρο adc_init () {ADCON0 = 0b00000011; // επιλέξτε κανάλι adc ADCON1 = 0b00001110; // επιλέξτε αναλογικό και ψηφιακό i / p ADCON2 = 0b10001010; // Χρόνος κάλυψης χρόνου εξάσκησης ADON = 1; }
Η συνάρτηση δεδομένης adc_value χρησιμοποιείται για την ανάγνωση εισόδου από τον αναλογικό πείρο και τον υπολογισμό της τάσης.
float adc_value (void) {float adc_data = 0; ενώ (GO / DONE == 1); // υψηλότερα δεδομένα bit έναρξη μετατροπής adc_data = (ADRESL) + (ADRESH << 8); // Αποθήκευση 10-bit εξόδου adc_data = ((adc_data / 342.0) * 5.0); επιστροφή adc_data; }
Και δεδομένη συνάρτηση μετατροπής χρησιμοποιείται για τη μετατροπή της τιμής τάσης σε τμηματοποιημένες τιμές.
άκυρη μετατροπή (float f) {int d = (f * 100); ψηφίο1 = d% 10; d = d / 10; digit2 = d% 10; d = d / 10; digit3 = d% 10; digit4 = d / 10; }
Ελέγξτε τον Πλήρες κωδικό για αυτό το έργο παρακάτω με ένα βίντεο επίδειξης.