Φορτιστής μπαταρίας για Arduino. Συσκευή προϋπολογισμού βασισμένη στο Arduino για τυφλούς (ανοιχτό υλικό)



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


Όχι λιγότερο σημαντικά στοιχεία θα είναι τα επαγωγικά, τα οποία μπορείτε να φτιάξετε με τα χέρια σας. Αυτά τα απλά πηνία τυλίγονται από χάλκινα σύρματα και ονομάζονται πηνία πυρήνα αέρα. Η δημιουργία μιας τέτοιας περιέλιξης για το σκοπό μας είναι πολύ απλή. Βρείτε έναν στρογγυλό κύλινδρο με διάμετρο περίπου 5 εκατοστά και τυλίξτε το σύρμα γύρω του έτσι ώστε κάθε στροφή να μην επικαλύπτει άλλη στροφή, αλλά ταυτόχρονα να είναι όσο το δυνατόν πιο κοντά στην άλλη στροφή. Ένας στρογγυλός κύλινδρος μπορεί να είναι, για παράδειγμα, ένας σωλήνας PVC. Ίσως χρειαστεί να χρησιμοποιήσετε κολλητική ταινίαή ταινία σε 2-3 σημεία για να διατηρηθεί η σταθερότητα της δομής.


Εκτός από το Arduino και τα επαγωγικά, θα χρειαστούμε: ένα τρανζίστορ NPN τύπου 2N3055, μία γέφυρα διόδου 1Α (σύνολο διόδου, έχουν τέσσερις ακροδέκτες), ένα LED, μία αντίσταση 100 ohm, δύο πυκνωτές 47 nF, μπαταρία 9 V τροφοδοτήστε το Arduino , και επίσης κατά προτίμηση δύο πλακέτες για πρωτότυπο. Το διάγραμμα για τη σύνδεση των εξαρτημάτων για τη δημιουργία μιας συσκευής ασύρματης μετάδοσης δεδομένων φαίνεται στην παρακάτω εικόνα.



Το κύκλωμα μπορεί να ελεγχθεί χρησιμοποιώντας απλός κώδικαςγια το Arduino που δίνεται παρακάτω.


void setup() ( pinMode(13,OUTPUT); ) void loop() ( digitalWrite(13,HIGH); delay(0.5); digitalWrite(13,LOW); delay(0.5); )

Ωστόσο, μια απλή συσκευή ασύρματης μεταφοράς ενέργειας μπορεί να κατασκευαστεί χωρίς Arduino. Βασικά, μπορούμε να χρησιμοποιήσουμε μόνο ένα τρανζίστορ 2N2222. Συνδέστε τον ακροδέκτη της βάσης του στο πρώτο άκρο του πηνίου και τον συλλέκτη του στο άλλο άκρο του πηνίου. Η ακίδα του πομπού είναι συνδεδεμένη με την μπαταρία. Ως αποτέλεσμα, ένας τόσο απλός σχεδιασμός μπορεί να μοιάζει με αυτό:




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

Παλιό καλό "Rectifier"
φορτιστής B14"!
Πάντα ήσουν σαν σωτήρας:
Μας βοήθησε, αγαπητέ!

Στη ζέστη και το κρύο του χειμώνα
Αναζωογόνησε την μπαταρία.
Ακόμα κι αν έχω κρυώσει
Είστε σαν ένα ρομπότ Terminator!

Δεν έσπασε, δεν τα παράτησε
Ακόμα και στην πιο δύσκολη ώρα.
Όταν χρειαζόταν, ταραζόμουν,
Χρεώνοντας τα πάντα για εμάς.

Έχουν ήδη περάσει σαράντα χρόνια
Από την καλή εποχή του Μπρέζνιεφ,
Όταν το σώμα σου είναι σαν σώμα
Σφραγίστηκε στο εργοστάσιο.

Και από τότε υπηρετείτε καλά.
Είστε προς όφελος όλων των μηχανών,
Διαφορετικό από την Ένωση
Γιατί η αλήθεια είναι άφθαρτη.

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

Αν ρωτήσει κανείς σε φαλτσέτο
"Πως μπορώ να το κάνω?" -
Μην ανησυχείς, το λέω
Σε αυτό το άρθρο θα σας πω.

Μια στιγμή εθισμού.

Χαιρετισμούς, αγαπητοί αναγνώστες! Μετά από ένα διάλειμμα σχεδόν τεσσάρων μηνών, επιστρέφω στις επιχειρήσεις και, ως αναφορά στη δουλειά που έγινε, θεωρώ απαραίτητο να γράψω αυτό το άρθρο. Σκέφτηκα πολύ καιρό από πού να ξεκινήσω, καλά, να μην δημοσιεύσω για τέταρτη φορά για μηδενική ορατότητα κ.λπ. - αυτό το απόσπασμα έχει ήδη λειτουργήσει για μένα τακτικά στα τρία τελευταία άρθρα, οπότε αυτό είναι αρκετό για αυτό - αφήστε το να πάει σε μια άξια ανάπαυσης! Λοιπόν, εν τω μεταξύ, θα χρησιμοποιήσω ένα νέο πειραματικό τέχνασμα, ας το ονομάσουμε "λεπτό εθισμού στα ναρκωτικά" - μια τόσο διασκεδαστική και χαλαρή στιγμή "γεια σας", που οδηγεί ομαλά στην κύρια ιδέα του άρθρου . 🙄

Έτσι, όπως ήδη αναφέρθηκε στο "λεπτό", σήμερα θα σας πω για το πώς έγινα αρχαίος Φορτιστήςαρχές της δεκαετίας του εβδομήντα σε ένα νέο, σύγχρονο, ελεγχόμενο από μικροελεγκτή. Αυτή η σκέψη μου ήρθε επειδή ο φίλος μου με κάλεσε για μια μπύρα ενώ η μπαταρία μου φορτιζόταν. Θα ήμουν ευτυχής να πάω, αλλά κακή τύχη - ο φορτιστής έπρεπε να παρακολουθείται συνεχώς! Τρέχετε σε αυτό μία φορά κάθε μισή ώρα, ή ακόμα πιο συχνά, για να ελέγχετε την τάση στην μπαταρία και αν υπερβαίνει το μέγιστο, μειώστε την ισχύ με τον κατάλληλο διακόπτη στον μπροστινό πίνακα. Συμφωνώ, δεν είναι βολικό: είστε συνεχώς αλυσοδεμένοι σε μια μπαταρία που φορτίζει και δεν μπορείτε να μετακινηθείτε πουθενά, και αν ξαφνικά χάσετε την κατάλληλη στιγμή, η μπαταρία δεν θα σας ευχαριστήσει. Από την άλλη, δεν θα το πει πάντως: είναι ένα μνημείο που δεν ξέρει να μιλάει))))

Εκτός από τα αστεία, από καιρό ήθελα να κάνω κάτι σοβαρό στο Arduino, το οποίο γνώρισα τον Νοέμβριο, παίρνοντας ένα πολύτιμο πακέτο από τους Κινέζους από την Aliexpress με μικροελεγκτή, ασπίδα και άλλα καλούδια στο ταχυδρομείο. Και εδώ είναι, μια μεγάλη ευκαιρία - πάρτε το και κάντε το! Το πήρα λοιπόν και άρχισα να το κάνω κατευθείαν!

Κύκλωμα φορτιστή

Αρχικά, θα σας δώσω ένα διάγραμμα με δυνατότητα κλικ της τελικής συσκευής:

Κατάλογος των κύριων εξαρτημάτων

  • 8 πυκνωτές: 2 από 22 pF, 1 από 100 pF, μερικά κομμάτια των 100 mF και για τροφοδοσία - ένας μεγάλος των 6,3 βολτ και δύο μεγάλοι των 16, για παράδειγμα, και 1500 mF, αντίστοιχα (όλα μπορούν να είναι 16 βολτ ή περισσότερο, δεν έχει σημασία).
  • Προγραμματιζόμενος μικροελεγκτής Atmega328 με χαλαζία 16 MHz και κατά προτίμηση ασπίδα για αυτόν (μετακινήστε μερικές σελίδες στην πρώτη ασπίδα, αυτή θα είναι η φθηνότερη επιλογή) για να κάνετε το φλας βολικό.
  • Για τον ίδιο λόγο - υποδοχές σύσφιξης για το προαναφερθέν μικροκύκλωμα. Αν και μπορείτε να τα βγάλετε πέρα ​​με τα κανονικά ως οικονομική επιλογή. Λοιπόν, ή κολλήστε τα καλώδια στο MK και αναβοσβήστε τα με άλλο Arduino ή φλας - όπως προτιμάτε.
  • 9 τρανζίστορ KT315 και 1 KT815 (ή ανάλογα) - χωρίς συγκόλληση από οποιονδήποτε παλιό σοβιετικό εξοπλισμό.
  • 8 λευκά LED διάχυσης και 1 πράσινο.
  • 9 ρελέ με πηνία 12 volt: ένα για 220 V, τέσσερα για 12 V 16 A και τέσσερα μικρότερα για 12 V 12 A. Τα τελευταία 8 πρέπει να είναι όσο το δυνατόν μικρότερα.
  • 40 αντιστάσεις: 15 560 ohm, 12 kilo ohm, 8 ohm, 2 10k και μία από τις 3k3, 4k7 και 30k.
  • Μια δυο διόδους για 12 βολτ: μια για μισό αμπέρ, η δεύτερη τουλάχιστον για ένα αμπέρ, μια ρεζέρβα δεν θα βλάψει. Είναι κολλημένο από οπουδήποτε, για παράδειγμα από νεκρά τροφοδοτικά.
  • Κάποιο είδος λαμπτήρα, ίσως ένα LED με αντίσταση, που καίει από 220 βολτ. Στην πραγματικότητα, ένα νέον κορίτσι θα φαινόταν cool εκεί!
  • Μια οθόνη δεκαέξι τμημάτων από μια παλιά μονάδα συστήματος για την εμφάνιση της τρέχουσας τάσης σε αυτήν. Λοιπόν, ή τρία επτά τμημάτων. Ή ακόμα και σφυρί σε ένα μπουλόνι για να εμφανιστεί η τρέχουσα τάση: αυτό, τελικά, αυτόματη συσκευή, ελέγχει την ίδια την τάση, δεν χρειάζεται να το γνωρίζετε, σε ακραίες περιπτώσεις μπορείτε να το μετρήσετε με ένα ελεγκτή. Αντί για οθόνη, μπορείτε απλά να βάλετε μερικά LED για να αναβοσβήνει το arduino μαζί τους, λένε, δεν έχω παγώσει, δουλεύω, όλα είναι υπό έλεγχο! (Όχι, δεν έχω δει ποτέ παγωμένο Arduino, αλλά παρόλα αυτά, πρέπει να είστε προετοιμασμένοι για οτιδήποτε.) 🙄
  • 3 καταχωρητές βάρδιας 74HC595
  • Λοιπόν, κάτι σαν τα μισά μιας πλακέτας κυκλώματος όπως αυτό (αγόρασα 10 κομμάτια στο eBay για ένα ποτήρι κομπόστα):

Θα ήθελα να σημειώσω ότι σχεδόν όλα τα εξαρτήματα που χρησιμοποιούνται σε αυτη η εργασια, δεν έχουν ακριβείς αξιολογήσεις και μπορούν να αντικατασταθούν με παρόμοια ή παρόμοια είτε με ελάχιστη προσαρμογή κυκλώματος και υλικολογισμικού, είτε χωρίς καμία απολύτως αλλαγή. Προσπάθησα να χρησιμοποιήσω εκείνα τα μέρη που κυριολεκτικά ήταν στα χέρια μου: για παράδειγμα, πρόσφατα συγκόλλησα τη συντριπτική πλειονότητα των αντιστάσεων και τρανζίστορ που χρησιμοποιήθηκαν εδώ από ένα μαγνητόφωνο Vilma πριν από την καταιγίδα, τα υπολείμματα του οποίου, μετά την αποκόλληση, στάλθηκαν με ασφάλεια στο μια χωματερή. Έτσι, το ποσό που δαπανήθηκε για την αγορά εξαρτημάτων για αυτήν τη συσκευή δεν υπερβαίνει τα 15 $ και το μεγαλύτερο μέρος του προϋπολογισμού δαπανήθηκε σε ρελέ.

Αρχική έκδοση φορτιστή

Δυστυχώς, δεν είχα φωτογραφία αυτού του φορτιστή στην αρχική του κατάσταση, οπότε το μόνο που μπορώ να σας προσφέρω είναι σε αυτό το στάδιο- φωτογραφία με το κάλυμμα που έχει ήδη αφαιρεθεί και ξεβιδωθεί μηχανικό μέροςδιακόπτης λειτουργίας (αριστερά) και η λαβή αυτού του διακόπτη (δεξιά). Το ηλεκτρικό του μέρος προεξέχει από το πάνω μέρος της συσκευής. Αφαιρείται επίσης από την αρχική του οπή ο διακόπτης τάσης (6 ή 12 βολτ):

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

Αρχή λειτουργίας της αρχικής συσκευής

Ο ίδιος ο φορτιστής είναι κατασκευασμένος σύμφωνα με απλή αρχή- 220 βολτ τροφοδοτούνται στην κύρια περιέλιξη του μετασχηματιστή, κατά συνέπεια, εναλλασσόμενη τάση εμφανίζεται επίσης στο δευτερεύον τύλιγμα. Η ισχύς μπορεί να ελεγχθεί λόγω του ότι υπάρχουν αρκετές έξοδοι από το δευτερεύον τύλιγμα (9 συνολικά). Αυτό σημαίνει ότι μεταξύ του πρώτου και καθενός από τους επόμενους οκτώ ακροδέκτες επιτυγχάνεται ένας αυξανόμενος αριθμός στροφών και όσο περισσότερες στροφές, όπως γνωρίζετε, τόσο μεγαλύτερη είναι η τάση (δηλαδή ρεύμα ή ισχύς - όπως θέλετε). Αυτές οι 8 ακίδες πηγαίνουν στον ίδιο διακόπτη με τον οποίο επιλέγετε την τρέχουσα ισχύ φόρτισης της μπαταρίας.

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

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

Επιλογή μεθόδου αλλαγής δευτερευόντων περιελίξεων

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

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

Ω ναι! Παραλιγο να το ξεχασω! Στην πραγματικότητα, δεν υπήρχαν 9 αλλά 10 ακροδέκτες από τη δευτερεύουσα περιέλιξη, οι δύο πρώτοι ήταν ένας για έξι βολτ, οι άλλοι για δώδεκα, και οι δύο πήγαν στον διακόπτη εναλλαγής και μόνο στη συνέχεια στη γέφυρα διόδου:

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

Λοιπόν, πώς συνεχίζετε να μετακινείτε; Εδώ είναι είτε τρανζίστορ, είτε θυρίστορ, είτε χρήση ρελέ. Και επέλεξα την τελευταία επιλογή, γιατί τα ρελέ είναι μικρότερα από τα τρανζίστορ/θυρίστορ και σε αντίθεση με αυτά δεν ζεσταίνονται καθόλου αν τα πάρεις με ρεζέρβα ρεύματος. Έτσι έκανα - αγόρασα 8 μικρά ρελέ με πηνία για 12 βολτ, 4 τεμάχια για 16 αμπέρ και 4 για 12 αμπέρ. Σε μέγεθος απλά χωρούν ελεύθερος χώροςμέσα στη θήκη του φορτιστή:

Αλγόριθμος λειτουργίας συσκευής

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

Αρχικά, ας εισαγάγουμε 3 πιο σημαντικές παραμέτρους:

// Μέγιστη τάση * 10
byte maxVoltageX10 = 148;

// Τάση * 10, στην οποία δεν είναι πλέον δυνατή η αύξηση της ισχύος
byte powerUpMaxTreshold = 142;

// Τάση * 10 στην οποία η ισχύς θα αναγκαστεί να αυξηθεί
byte powerUpMinTreshold = 136;

Πολλαπλασιάζονται επί 10, πρώτον επειδή κατά τον υπολογισμό τους είναι πιο βολικό να χρησιμοποιείτε ακέραιους αριθμούς - χωρίς στρογγυλοποίηση κ.λπ., δεύτερον επειδή αυτοί οι αριθμοί εμφανίζονται στην πραγματικότητα στην οθόνη και το κόμμα είναι, όπως ήταν, εικονικό , οπότε υπάρχει δεν χρειάζεται να κάνετε περιττούς υπολογισμούς στον κωδικό και είναι σαφές ότι πρόκειται για 14,8, 14,2 και 13,6 βολτ, αντίστοιχα.

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

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

Η τρίτη παράμετρος εισήχθη ειδικά για τις περιπτώσεις που θα φορτιστεί η μπαταρία που είναι συνδεδεμένη στο αυτοκίνητο. Για παράδειγμα, κάποιος άνοιξε το ραδιόφωνο -> η τάση έπεσε κάτω από αυτήν την τιμή -> αυξάνουμε την ισχύ. Τι γίνεται όμως αν το φορτίο που ρίχνει την τάση σε αυτό το επίπεδο είναι βραχυπρόθεσμο (ανάβοντας τους προβολείς ή τον αναπτήρα) ή περιοδικό, με μια συγκεκριμένη συχνότητα (για παράδειγμα, από τις κρούσεις ενός υπογούφερ) και θα βγει με τέτοιο τρόπο που μόλις οι εγκέφαλοι αυξήσουν την ισχύ, θα χρειαστεί αμέσως μείωση, μετά αμέσως αύξηση και πάλι κ.λπ.; Το αποτέλεσμα θα είναι ένας φαύλος κύκλος, τα ρελέ θα κάνουν συνεχώς κλικ, φθείρονται, και για την μπαταρία, ίσως, αυτό δεν θα είναι πολύ χρήσιμο... Ειδικά για αυτό, μπορούμε να κάνουμε το σύστημά μας αυτοεκπαιδευόμενο, όπως λες, με την είσοδο πρόσθετη παράμετρος:

// Εάν έχουν περάσει λιγότερα από αυτά πολλά χιλιοστά του δευτερολέπτου μεταξύ της αύξησης της ισχύος από το powerUpMinTreshold και της μείωσής της, τότε το powerUpMinTreshold θα μειωθεί κατά 1
ανυπόγραφο int powerUpMinTresholdTimeout = 60000;

Όπως μπορείτε να δείτε από το σχόλιο, χάρη σε αυτήν την παράμετρο, το powerUpMinTreshold θα μειώνεται κατά ένα δέκατο του βολτ κάθε φορά που ο εγκέφαλος μειώνει την ισχύ λιγότερο από το powerUpMinTresholdTimeout χιλιοστά του δευτερολέπτου μετά την αύξηση της. Αυτό ήταν, το πρόβλημα λύθηκε: κάνουν κλικ στα ρελέ μια φορά, κάνουν κλικ μια δεύτερη φορά και την τρίτη φορά θα σκεφτούν 10 φορές πριν κάνουν κλικ. Χα-χα-χα, επικοινώνησαν με λάθος άτομα!

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

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

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

// Καθυστέρηση σε χιλιοστά του δευτερολέπτου πριν από την έναρξη της φόρτισης
ανυπόγραφο int powerOnDelay = 2000;

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

αν (powerLevel == 1) (
καθυστέρηση (powerOnDelay);

}

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

Παρεμπιπτόντως, υπάρχει μια πολύ ενδιαφέρουσα παράμετρος στον κώδικα:

// Επίπεδο ισχύος (αρχικό)
byte powerLevel = 0;

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

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

// Χρόνος μετά τον οποίο η ισχύς μπορεί να αυξηθεί κατά ένα επίπεδο, σε χιλιοστά του δευτερολέπτου
int powerUpTime = 5000;

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

Όσο για τη μείωση της ισχύος, όλα είναι γενικά απλά: το πρόγραμμα ελέγχει περιοδικά εάν η τάση ρεύματος υπερβαίνει τη μέγιστη επιτρεπόμενο επίπεδο, και αν υπερβαίνει, η ισχύς πρέπει να μειωθεί:

// Διακοπή ρεύματος
εάν (τάσηX10 > maxVoltageX10) (

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

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

Γενικά, όπως έχει δείξει η πρακτική, αυτές οι μπαταρίες που φόρτισα θα μπορούσαν να αφαιρεθούν με ασφάλεια από τη φόρτιση ακόμη και στο δεύτερο επίπεδο ισχύος, επειδή το ρεύμα έχει ήδη πέσει κάτω από τα 500 mA. Ωστόσο, δεν πρέπει να αμελήσετε τη λειτουργία αυτόματης απενεργοποίησης - υπάρχουν διαφορετικοί τύποι μπαταριών...

Επίσης, για τη μείωση της ισχύος υπάρχει μια παράμετρος καθυστέρησης, παρόμοια με την παράμετρο powerUpTime για αύξηση:

//Παύση μετά τη μείωση ισχύος, σε χιλιοστά του δευτερολέπτου
int powerDownPause = 500;

Είναι αλήθεια ότι υλοποιείται πιο απλά, μέσω της συνήθους καθυστέρησης() μετά από άμεση αναγωγή. Σκέφτηκα ότι το μισό δευτερόλεπτο δεν είναι τόσο μεγάλο διάστημα για να το χρησιμοποιήσω πρόσθετη προϋπόθεσηστη δήλωση επιλογής, αλλά στον καθένα το δικό του, οπότε αν κάποιος από εσάς δεν έχει τίποτα να κάνει, πρώτα απ' όλα θα μπορούσατε να τροποποιήσετε αυτό το κομμάτι κώδικα σύμφωνα με την αρχή powerUpTime.

Είναι εκπληκτικό το πώς έχω ήδη γράψει τόσα πολλά και δεν έχω πει από πού αντλώ πραγματικά την τρέχουσα ένταση. Διόρθωση:

void loop() (
ct=millis();

Αποδεικνύεται ότι στην αρχή κάθε επανάληψης του βρόχου, ο οποίος, όπως γνωρίζετε, απλώς επαναλαμβάνεται ατελείωτα μετά την εκκίνηση του συστήματος, κάνουμε δύο πράγματα: Πρώτα, γράφουμε στη μεταβλητή ct τρέχουσα ώρααπό τη στιγμή που ξεκινά το μικροκύκλωμα, σε χιλιοστά του δευτερολέπτου, και στη συνέχεια υπολογίζουμε απλώς την τάση ρεύματος χρησιμοποιώντας τη διαδικασία analogRead(), χρησιμοποιώντας τον αριθμό της εισόδου αναλογικής παρακολούθησης που καθορίζεται στην αρχή του σκίτσου:

// Αναλογική είσοδοςγια παρακολούθηση τάσης
byte voltageInput = 5;

Και επίσης 2 συντελεστές, για τους οποίους θα μιλήσω λεπτομερώς αργότερα:

// Συντελεστής υπολογισμού τάσης (διαιρούμενος με αυτόν)
τάση επιπλεύσεωςX10Συντελεστής = 5,11;

// Μετατόπιση υπολογισμού τάσης (προστίθεται)
int voltageX10Shift = 35;

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

boolean goingUp = true, isUpAfter = false;

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

Με το δεύτερο, όλα είναι τελικά πολύπλοκα - μας λέει εάν η αύξηση ισχύος συνέβη αφού το goUp έγινε ψευδές και ορίζεται από το ακόλουθο απλό κομμάτι κώδικα στο τέλος της διαδικασίας αύξησης ισχύος:

αν (goingUp == false) (isUpAfter = true;)

Αυτή τη στιγμή μάλλον σκέφτεστε, γιατί στο διάολο είναι όλα αυτά απαραίτητα; Θα σου εξηγήσω αμέσως!

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

εάν ((powerLevel<8) && (ct >powerTime + powerUpTime) && ((goingUp == true &&voltageX10< powerUpMaxTreshold) || (goingUp == false && voltageX10 < powerUpMinTreshold))) {

Όπως μπορείτε να δείτε, στην πρώτη φάση φόρτισης αυξάνουμε την ισχύ εάν η τάση ρεύματος είναι μικρότερη από το powerUpMaxTreshold και στη δεύτερη φάση - εάν είναι μικρότερη από το powerUpMinTreshold: αυτές είναι οι ίδιες παράμετροι για τις οποίες μίλησα στην αρχή.

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

boolean stillLow = αληθές;
αν (goingUp == false) (
για (int x=0; x<= upCycles; x++){
voltageX10analogRead(voltageInput)+voltageX10Shift)/voltageX10Coefficient;
if (voltageX10 > powerUpMinTreshold) (sillLow=false; break;)
καθυστέρηση(1);
}
}
αν (ακόμα Χαμηλό == αληθές) (

Στην οποία ένας νέος χαρακτήρας μπαίνει στη σκηνή:

//Αριθμός επαναλήψεων του χιλιοστού του δευτερολέπτου ελέγχου τάσης πριν από την αύξηση της ισχύος
int upCycles = 5000;

Το γεγονός είναι ότι όταν υπάρχει ένα σήμα για αύξηση της ισχύος αφού το goUp έχει γίνει ψευδές, πιθανότατα έχουμε να κάνουμε με κάποιο είδος ασταθούς φορτίου - το ίδιο υπογούφερ, όπως ήδη υπέθεσα, ή κάποια άλλα άγνωστα σκουπίδια. Και αν ναι, τότε γιατί, αντί να αυξάνουμε ανόητα την ισχύ, να κάνουμε ξανά κλικ στους πολύτιμους διακόπτες μας και να διακινδυνεύσουμε να βγάλουμε για λίγο την τάση της μπαταρίας υψηλότερη από τη μέγιστη καθορισμένη απλός έλεγχος: 5 χιλιάδες φορές (upCycles) με διάστημα ενός χιλιοστού του δευτερολέπτου, ελέγξτε την τάση ρεύματος και αν τουλάχιστον μία φορά, ακούστε, τουλάχιστον μία φορά υπερβαίνει το powerUpMinTreshold - αυτό είναι, Khan, δεν θα υπάρξει αύξηση, απενεργοποιήστε το ψάρεμα βέργες! Ένας απλός αλλά αποτελεσματικός έλεγχος.

Το isUpAfter, με τη σειρά του, μας βοηθά να εφαρμόσουμε τη συνάρτηση μείωσης powerUpMinTreshold (το μίλησα στην αρχή), εδώ είναι πώς φαίνεται:

if ((isUpAfter == true) && (powerTime > ct - powerUpMinTresholdTimeout)) (powerUpMinTreshold = powerUpMinTreshold - 1;)

Εδώ powerTime είναι ο χρόνος της τελευταίας αύξησης ισχύος την τρέχουσα στιγμή.

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

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

Προετοιμασία του μπλοκ ρελέ

Έτσι, έχοντας καταλάβει ποιες επαφές των ρελέ είναι υπεύθυνες για τι και έχοντας αποφασίσει την τοποθέτησή τους σε σχέση με το άλλο, άρχισα να κολλάω:

Για να το κάνω αυτό, χρησιμοποίησα το "Moment - Crystal" που βρίσκεται κοντά. Δεν θα πω ότι πρόκειται για κάποιο είδος κόλλας super-duper, αλλά οι ιδιότητές της μου ταιριάζουν. Είναι καλύτερα, φυσικά, να χρησιμοποιήσετε το "Glue To Death" του Khaigirov, στεγνώνει πιο γρήγορα και γενικά σκληραίνει στο τέλος, αλλά υπάρχει 2-3 φορές λιγότερο στο σωληνάριο και κοστίζει μιάμιση φορά περισσότερο από το Moment , επομένως, όπως είπε ο ήρωας ενός καλού σοβιετικού κινούμενου σχεδίου, "Κι έτσι θα γίνει!"

Όσο για την κόλληση, όλα είναι απλά και γραμμένα στο σωληνάριο - εφαρμόστε και στις δύο επιφάνειες, περιμένετε 5-10 λεπτά και πιέστε σφιχτά (ναι, τόσο δυνατά που το κάρβουνο που πιέζεται ανάμεσα στις καρφίτσες μετατρέπεται σε διαμάντι 😆):

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

Έκανα το ίδιο με τα μεγάλα ρελέ, και στη συνέχεια κόλλησα αυτά τα 2 μπλοκ που προέκυψαν μεταξύ τους, μετά από τα οποία άρχισα να συγκολλώ τα καλώδια στις επαφές. Το παχύ κίτρινο καλώδιο συνδέεται με τη σειρά του σε όλα τα ρελέ - αυτός είναι ο δίαυλος εξόδου, ο οποίος στη συνέχεια θα πάει στη γέφυρα διόδου, τα κόκκινα καλώδια είναι στους πρώτους 4 ακροδέκτες από τη δευτερεύουσα περιέλιξη του μετασχηματιστή και το μικρό κίτρινο καλώδιο που περνά με τη σειρά του από όλα τα ρελέ είναι σταθερά +12 βολτ πηνία Και τα μειονεκτήματα των πηνίων, όπως ίσως μαντέψατε, είναι τα καφέ και λευκά σύρματα, στα οποία θα επανέλθουμε σύντομα.

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

Δεδομένου ότι το ρεύμα που καταναλώνεται από τα πηνία σε τέτοια ρελέ (~100 mA) υπερβαίνει κατά πολύ το μέγιστο ρεύμα που μπορεί να ληφθεί από Έξοδοι Arduino(~40 mA) ή καταχωρητής μετατόπισης 74HC595 (~25 mA), πρέπει να χρησιμοποιούνται τρανζίστορ για την ενεργοποίηση των πηνίων ρελέ. Και το παλιό καλό πορτοκαλί KT315 φαίνεται να είναι φτιαγμένο για αυτό!

Αυτό τρανζίστορ npn, λοιπόν, στο κύκλωμα, για να το εξηγήσουμε με απλό τρόπο, το ρεύμα πρέπει να ρέει από το συν στο πηνίο, μετά από αυτό στον συλλέκτη του τρανζίστορ και μετά από τον πομπό του τρανζίστορ στο μείον. Αυτό το τρανζίστορ ανοίγει με ρεύμα από τη βάση στον πομπό, αλλά το ρεύμα που απαιτείται εκεί είναι πολύ μικρό, επομένως συνδέουμε τις βάσεις των τρανζίστορ μέσω αντιστάσεων 1 kOhm (1000 Ohm):

Τώρα το μόνο που μένει είναι να κολλήσετε κοντά καλώδια στις αντιστάσεις, χωρίς να ξεχνάτε να μονώνετε προσεκτικά τα πάντα και μπορείτε να τα στερεώσετε - προσωπικά, αποφάσισα να κολλήσω τα τρανζίστορ στο πλάι των ρελέ για να μην μπερδευτούν και να μην έρθει τίποτα μακριά από:

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

Τα τρανζίστορ είναι κολλημένα και το μπλοκ είναι σχεδόν έτοιμο:

Τώρα βρισκόμαστε αντιμέτωποι με το ερώτημα - με τι πρέπει να συνδέσουμε τα τρανζίστορ; Στο Arduino; Όχι, τότε δεν θα υπάρχουν αρκετές έξοδοι για άλλα εξαρτήματα και σε τέτοιες περιπτώσεις το τσιπ εξοικονόμησης παίζει - ο καταχωρητής μετατόπισης 74HC595. Έχουν γραφτεί τόσα πολλά για αυτό στο Διαδίκτυο, οπότε δεν θα γράψω 3 παραγράφους εδώ, θα πω απλώς ότι χάρη σε τέτοια μικροκυκλώματα, μπορείτε να αυξήσετε τον αριθμό των εξόδων Arduino, θυσιάζοντας μόνο τρεις για αυτό. Επιπλέον, μπορούν να συνδεθούν σε σειρά σε μια αλυσίδα. Τρώω διαφορετικές παραλλαγέςπαρόμοια μικροκυκλώματα, για παράδειγμα με 16 εξόδους ή 8, σε διαφορετικές συσκευασίες. Σε αυτό το έργο, αποφάσισα να χρησιμοποιήσω μια επιλογή 8 εξόδων σε ένα μικρό πακέτο SO-16. Αν και το έργο είναι εξαιρετικό, όλα καταλαμβάνουν λίγο χώρο, ο οποίος λείπει ήδη από το συμπαγές σώμα της συσκευής, το οποίο δεν έχει σχεδιαστεί για τέτοιες τροποποιήσεις:

Για να υποδείξω την τρέχουσα ισχύ της συσκευής, αποφάσισα να χρησιμοποιήσω 8 LED, ένα για κάθε ζεύγος τρανζίστορ/ρελέ, για αυτό χρησιμοποίησα ένα καλώδιο οκτώ πυρήνων, κολλώντας κάθε πυρήνα στο αντίστοιχο κανάλι ελέγχου, αλλά όχι απευθείας στον καταχωρητή. αλλά για τις αντιστάσεις, ηλεκτρικά δεν υπάρχει διαφορά, αλλά μηχανικά είναι πιο αξιόπιστο, νομίζω. Μετά από ενδελεχή έλεγχο (περισσότερα για αυτό παρακάτω), γέμισα το μικροκύκλωμα με την ίδια κόλλα και πέρασα για άλλη μια φορά όλα τα τρανζίστορ μαζί του - τώρα αυτό το σύστημα έχει γίνει ακόμα πιο "στερεό" και δυνατό:

Σύστημα ένδειξης τάσης

Ήρθε η ώρα για θεωρητικές δοκιμές του συστήματος απεικόνισης. Για να εμφανίσω την τρέχουσα τάση της μπαταρίας, χρησιμοποίησα μια οθόνη από μια παλιά μονάδα συστήματος από την εποχή των πρώτων Pentium. Δεν υπάρχουν κόλπα με αυτό, κάθε τμήμα είναι ένα απλό πράσινο LED που λειτουργεί από 2-2,1 βολτ. Η μόνη εξαίρεση είναι η μονάδα - σε αυτήν 2 τμήματα παραλληλίζονται και τοποθετούνται σε ένα πόδι. Η οθόνη έχει συνολικά 16 πόδια: 1 συν και 15 μείον. Δηλαδή, η ισχύς παρέχεται πάντα στο συν και η παροχή γείωσης σε ένα συγκεκριμένο σκέλος φωτίζει το τμήμα που χρειαζόμαστε - όλα είναι εξαιρετικά απλά, αλλά πώς να το εφαρμόσετε; Για να γίνει αυτό, χρησιμοποιούμε και πάλι καταχωρητές shift, αυτή τη φορά 2 τεμάχια. Για πρωτότυπο σε breadboardΧρησιμοποίησα το ίδιο 74HC595, αλλά σε συσκευασία DIP-16, γιατί είναι πολύ πιο βολικό να δουλεύεις μαζί τους. Στην παρακάτω εικόνα, όπως μπορείτε να δείτε, το σύστημα είναι ήδη συναρμολογημένο και λειτουργεί:

Αλλά αυτό το σύστημαπολύ διαφορετικό από αυτό που μπήκε στην τελική συσκευή. Ας ξεκινήσουμε με το γεγονός ότι αρχικά αποφάσισα να χρησιμοποιήσω σταθεροποιητή για να τροφοδοτήσω την οθόνη, αν και στο τέλος τον εγκατέλειψα και συνέδεσα κάθε σκέλος της οθόνης μέσω μιας αντίστασης 560 Ohm. Δεύτερον, σε αυτό το διάγραμμα, τα LED τροφοδοτούνται μέσω ενός άλλου σταθεροποιητής, επιπλέον, τροφοδοτεί και ο ίδιος ο καταχωρητής μετατόπισης. Αλλά τελικά, έμεινε μόνο ένας σταθεροποιητής στον φορτιστή μου - KREN5V, κατασκευασμένος στην ΕΣΣΔ, όπως το μαντέψατε, 5 βολτ.

Ωστόσο, σε αυτό το στάδιο, η μέθοδος τροφοδοσίας του υλικού δεν ήταν τόσο σημαντική - το κύριο πράγμα ήταν να μάθουμε πώς να εμφανίζουμε σημαντικές πληροφορίες στην οθόνη, για τις οποίες ήταν απαραίτητο να μάθουμε σε ποιο τμήμα αντιστοιχούσε κάθε μια από τις ακίδες καταχωρητή και στη συνέχεια δημιουργήστε δύο πίνακες στο υλικολογισμικό - δεκάδες και μονάδες, στις οποίες, χρησιμοποιώντας μονάδες και μηδενικά, εισάγετε την επιθυμητή μάσκα για κάθε εμφανιζόμενο αριθμό, δηλαδή 0-19 για τους δύο πρώτους χαρακτήρες της οθόνης και 0-9 για τον τρίτο χαρακτήρας:

// Πρότυπα για την οθόνη
char* δεκάδες=("10000001","10111011","01100001","00101001","00011011","00001101","000000101","10101011","0000000000001", "10100000", "000000", 10111010", "01100000", "00101000", "00011010", "00001100", "00000100", "10101010", "00000000", "00001000");
char* ones=("10000010","10111110","10001001","10011000","10110100","11010000","11000000","10111010","1000000000","1000000000","100000000");

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

Όταν το σύστημα άρχισε να λειτουργεί, αντί για τον καταχωρητή τρίτης βάρδιας, σύνδεσα ένα έτοιμο μπλοκ ρελέ σε αυτό. Και για να χτυπήσουν τα ρελέ, χρειαζόμουν δώδεκα βολτ τροφοδοτικό (όχι από κινέζικο διακόπτη, αλλά σταθεροποιημένο, με ομαλή επιλογή τάσης). Εάν θέλετε να χρησιμοποιήσετε ένα μη σταθεροποιημένο, χρησιμοποιήστε ένα εννέα βολτ, ή ακόμα και 7,5 - θα έχουν 12 βολτ χωρίς φορτίο. Το κυριότερο είναι να μην συγχέουμε το σταθερό με το μεταβλητό! Η επόμενη φωτογραφία δείχνει πώς συνδέονται 12 βολτ στα ακροφύσια με δύο βύσματα με καλώδια στην επάνω δεξιά γωνία 🙄

Η οθόνη λειτουργεί ήδη! Έγραψα ένα σκίτσο που εμφανίζει εναλλάξ αριθμούς από το μηδέν έως το 199 στην οθόνη και τη δυαδική τους αναπαράσταση στα LED στα δεξιά. Λοιπόν, έχει πλάκα!

Η εργασία με καταχωρητές βάρδιας, όπως είπα ήδη, πραγματοποιείται σε τρία καλώδια. Οι αριθμοί επικοινωνίας τους ορίζονται στην αρχή του σκίτσου μου:

// Επαφή που είναι συνδεδεμένη στην είσοδο ST_CP του 74HC595
int latchPin = 8, voltageX10,voltageGuard,ons,dz,
// Επαφή που είναι συνδεδεμένη στην είσοδο SH_CP του 74HC595
ClockPin = 12,
// Επαφή που είναι συνδεδεμένη στην είσοδο DS του 74HC595
DataPin = 11;

Όταν το σύστημα ξεκινά, ο τρόπος λειτουργίας αυτών των επαφών, όπως και των άλλων που χρησιμοποιούμε, ορίζεται σε OUTPUT:

void setup() (
pinMode(latchPin, OUTPUT);
pinMode (clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(relay220Pin, OUTPUT);
pinMode(fanPin, OUTPUT);

Λοιπόν, η έξοδος των πληροφοριών στους καταχωρητές μοιάζει με αυτό:

digitalWrite(latchPin, LOW);



Επιπλέον, αρχικά η shiftOut() λαμβάνει ως είσοδο μεταβλητή τύπου byte, και δεδομένου ότι είναι πολύ πιο σαφές για εμάς να γράφουμε απευθείας μονάδες και μηδενικά σε καταχωρητές, ο κώδικας χρησιμοποιεί ειδική λειτουργία bitseq(), που μετατρέπει τα παραπάνω μοτίβα σε αυτό ακριβώς που θέλει να κάνουμε η shiftOut():

byte bitseq (χαρακτηριστικά)(
byte ab=0;
για (byte ba=0; ba<8; ba++){
if (s == "0") (bitWrite(ab,ba,0);) else (bitWrite(ab,ba,1);)
}
επιστροφή ab?
}

Μέχρι εκείνη τη στιγμή, η επιφάνεια εργασίας μου έμοιαζε κάτι σαν την παρακάτω φωτογραφία. Μην ταράζετε το μυαλό σας αναρωτιέστε τι είναι το ασθενοφόρο. Ωραία σειρά, την βλέπω ήδη δεύτερη φορά. 🙄 Παρεμπιπτόντως, για να συνδέσω κυκλώματα χωρίς ρεύμα στη συσκευή μου, χρησιμοποίησα συνεστραμμένο ζεύγος, το ίδιο της κατηγορίας 5e, απλά έχω πολλά - δεν πετάω παλιά καλώδια από την οροφή, αλλά τα ξετυλίγω . Αλλά δεν είναι όλες οι καλωδιώσεις καλές για τέτοια πράγματα. Αυτά που χρησιμοποίησα δεν είναι συμπαγή εσωτερικά, αλλά στριμωγμένα, γεγονός που τα κάνει πολύ ελαστικά και όχι εύθραυστα, ενώ έχουν και υψηλής ποιότητας μόνωση. Αλλά δεν θα χρησιμοποιούσα ένα κανονικό καλώδιο συνεστραμμένου ζεύγους με συμπαγείς πυρήνες - λυγίζει πολύ σφιχτά (καλά, σχετικά) και θα ήταν εντελώς παράλογο να το κολλήσω σε μικρά μικροκυκλώματα σε συσκευασία SO-16. Τι λέτε, έπρεπε να έχουν χρησιμοποιήσει DIP mikruhi; Χα, δεν έχετε δει ακόμα τι είδους μαζοχισμός θα ξεκινήσει αυτή τη στιγμή, οπότε ας μην τραβάμε τη γάτα από τα κέρατα (ναι) - πάμε!

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

Όπως είπα ήδη, στην τελική έκδοση τα τμήματα συνδέονται μέσω αντιστάσεων, και όχι απευθείας, αλλά, ωστόσο, αποφάσισα να δείξω και την πρώτη επιλογή: ίσως σε κάποιον να αρέσει καλύτερα. Δεδομένου ότι αυτή η ίδια η οθόνη με αντιθετη πλευραγεμάτη με κάτι (τι αηδίες είναι αυτές οι οθόνες πλήρωσης σου), και η επιφάνεια αυτού του γεμίσματος είναι επίσης κοίλη προς τα μέσα, έκοψα ένα μικρό επίπεδο πιάτο από μια πλαστική κάρτα πληρωμής εικασίας που ο μονοπωλητής της Λευκορωσίας στον τομέα των τηλεπικοινωνιών Κόλλησα κατευθείαν στην οθόνη και ήδη επάνω Στη συνέχεια κόλλησα τα ίδια τα μητρώα σε αυτήν, έχοντας προηγουμένως σημαδέψει το πρώτο πόδι στο πίσω μέρος του καθενός από αυτά (γιατί "Μην μπερδεύετε τα βλέμματα, Kutuzau!").

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

Έτσι, έχω συνδέσει ακόμη και αυτά τα δύο μπλοκ μεταξύ τους (προσωρινά όμως) για να μπορώ να απολαμβάνω ξανά τους αριθμούς που αναβοσβήνουν και τους αριθμούς που κάνουν κλικ:

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

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

Μέτρηση τάσης με Arduino

Το Arduino είναι καλό, αρχικά έχει αναλογικές εισόδους στις οποίες μπορείς να παρακολουθείς την τάση σε πραγματικό χρόνο. Το μόνο πρόβλημα είναι ότι το εύρος μέτρησης αυτών των εισόδων εκτείνεται από το μηδέν έως μόνο πέντε βολτ, αλλά οι τάσεις μας θα είναι σχεδόν 15, επομένως αυτό το πρόβλημα πρέπει να λυθεί με κάποιο τρόπο. Και εδώ ένας απλός διαιρέτης τάσης που χρησιμοποιεί δύο αντιστάσεις έρχεται να μας βοηθήσει. Για παράδειγμα, για το απόλυτο μέγιστο θα πάρουμε 20 βολτ (καλά, για κάθε ενδεχόμενο, για να μην καεί τίποτα, αν μη τι άλλο), και το ταβάνι μας είναι 5, δηλαδή το ένα τέταρτο του μέγιστου, που σημαίνει ότι πρέπει να διαιρέστε την τάση με 4. Για να το κάνετε αυτό, πάρτε 2 αντιστάσεις τέτοιων τιμών που η τιμή της πρώτης είναι 1/4 και η τιμή της δεύτερης είναι τα 3/4 του αθροίσματος των τιμών τους. Για παράδειγμα, 10 και 30 kOhm. Ή 5 και 15 kOhm, ή 2,5 και 7,5, λοιπόν, καταλαβαίνετε. Δεν αξίζει να πάρετε λιγότερα, γιατί το ρεύμα εκεί είναι μικρό. Λοιπόν, συνδέστε σύμφωνα με το διάγραμμα: 10 μεταξύ της αναλογικής εισόδου και της γείωσης και 30 μεταξύ της αναλογικής εισόδου και της εξόδου φόρτισης της μπαταρίας.

Αλλά δεν είναι τόσο απλό - η διαδικασία analogRead() θα σας δώσει μια τιμή από 0 έως 1024, όπου το μηδέν είναι μηδέν και το 1024 είναι 5 βολτ για αυτήν ή 20 βολτ για εμάς. Επομένως, για να υπολογίσουμε εκ νέου αυτήν την τιμή, πρέπει να εισαγάγουμε έναν συγκεκριμένο συντελεστή, τον οποίο θα ορίσουμε ως σταθερά στην κεφαλίδα του υλικολογισμικού (voltage floatX10Coefficient = 5,11;). Κοιτάζοντας λίγο μπροστά, θα πω ότι στη συνέχεια η τάση που βλέπει το Arduino, σε υψηλό ρεύμα, άρχισε να πηδά με εξάπλωση έως και μισό βολτ, οπότε έπρεπε να συνδέσουμε τον αυτοσχέδιο αισθητήρα μας μέσω μιας διόδου, μετά την οποία εγκατέστησα έναν πυκνωτή 16V 1000 mF, και συνέδεσα επίσης ένα ρελέ 220 εκεί Β, αλλά περισσότερα για αυτό στο τέλος. Γιατί μιλάω για αυτό τώρα; Επειδή η δίοδος, όπως γνωρίζετε, μειώνει ελαφρώς την τάση, έτσι εισήγαγα έναν δεύτερο συντελεστή για να αντισταθμίσω την παρουσία αυτής της διόδου (int voltageX10Shift = 35;), δηλαδή πρώτα ο δεύτερος συντελεστής προστίθεται στην τιμή εξόδου και τότε αυτό που συμβαίνει διαιρείται με το πρώτο .

Ως αποτέλεσμα, η παρακολούθηση της τάσης αποδείχθηκε επιτυχής - συγκρίνετε τις μετρήσεις με τον ελεγκτή (δεν πρόκειται για μπαταρία συνδεδεμένη στη συσκευή, αλλά για το ίδιο σπιτικό σταθεροποιημένο τροφοδοτικό):

Μπροστινός πίνακας φορτιστή

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

Τώρα τα LED έχουν ήδη τοποθετηθεί και η οθόνη έχει εισαχθεί σε μια νέα θέση, και ακόμη και οι υπόλοιπες τρύπες έχουν βρει χρήση: στην τρύπα από τον τρέχοντα ρυθμιστή θα υπάρχει μια λάμπα συνδεδεμένη με την κύρια περιέλιξη του ο μετασχηματιστής - θα ανάψει όταν η φόρτιση είναι σε εξέλιξη, δηλαδή όταν τροφοδοτείται ο μετασχηματιστής 220 βολτ. Και αν ο φορτιστής φαίνεται να φορτίζει, αλλά η λυχνία δεν ανάβει, ελέγξτε αν ξεχάσατε να συνδέσετε το φις στην πρίζα! Στην τρύπα από τον διακόπτη 6-12 volt υπάρχει μια πλαστική μπορντούρα για LED, η οποία θα συνδεθεί απευθείας στην μπαταρία μέσω μιας αντίστασης χωρίς σταθεροποιητή και η φωτεινότητα της λάμψης της θα δείξει πόσο φορτισμένη είναι η μπαταρία. Αυτό είναι χρήσιμο εάν η μπαταρία είναι τελείως νεκρή και δεν υπάρχουν ούτε πέντε βολτ σε αυτήν για να τροφοδοτήσει τον εγκέφαλο - τότε η δίοδος θα λάμπει αμυδρά και δεν θα υπάρχουν ερωτήσεις, σαν να έχει χαλάσει η συσκευή. Αν και, φυσικά, δικαιολογώ: αν δεν υπήρχε μια τρύπα, δεν θα σκεφτόμουν καν να βάλω τίποτα εκεί. Αυτό συμβαίνει συνήθως με τους άντρες, αν καταλαβαίνετε τι εννοώ.

Παρεμπιπτόντως, λες, πού έχεις δει, Andryusha, τις μπαταρίες των αυτοκινήτων να έχουν αποφορτιστεί στα 5 βολτ; Λοιπόν, τότε δεν τα είχα δει πουθενά, αλλά αφού τελείωσαν τις εργασίες σε αυτόν τον φορτιστή, μου έφεραν ένα από αυτά. 3 βολτ. Και μάλιστα το φόρτισα, και είναι ακόμα και ζωντανό, αν και, όπως πιστεύω, είναι θειωμένο μέχρι θανάτου. Υπήρχε ένας δεύτερος σε παρόμοια κατάσταση, αλλά τίποτα δεν μπορούσε να τον σώσει 😆

Έτσι έμοιαζε το πίσω μέρος του ρύγχους εκείνη την ώρα:

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

Επίσης σε αυτή τη φωτογραφία στην επάνω αριστερή γωνία μπορείτε να δείτε πώς συνέδεσα τα LED. Έχουν ένα κοινό μείον, πηγαίνει κατά μήκος της εσωτερικής ακτίνας και συνδέεται με γενικό μείονσυσκευές μέσω μιας αντίστασης 3,3 kOhm - επέλεξα αυτή για να είναι φωτεινή και να μην τυφλώνει. Φαίνεται ότι λειτούργησε σωστά. Γιατί υπάρχει μόνο μία αντίσταση; Επειδή ανά πάσα στιγμή, με εξαίρεση τη στιγμή της εναλλαγής του φορτίου μεταξύ των ρελέ, μόνο ένα LED θα ανάψει στην οθόνη.

Γιατί εκτός από τη στιγμή της εναλλαγής; Επειδή αν σβήσει ένα ρελέ και μετά ανάψει το δεύτερο - τη στιγμή που απενεργοποιείται το πρώτο και τη στιγμή που ανοίγει το δεύτερο, θα εμφανιστεί ένας σπινθήρας στις επαφές τους, από αυτούς τους σπινθήρες θα σχηματιστούν εναποθέσεις άνθρακα στις επαφές, λόγω των οποίων θα αποτύχουν με την πάροδο του χρόνου - θα αυξηθεί η αντίστασή τους, θα αρχίσουν να ζεσταίνονται, και αυτό είναι, αναμνηστική θάλασσα! Οπότε είναι σωστό να ανάψετε πρώτα το δεύτερο ρελέ και μόλις ανάψει, να κλείσετε το πρώτο, τότε θα απαλλαγούμε από τους σπινθήρες και τα ρελέ θα ζήσουν ευτυχισμένα! Παρεμπιπτόντως, στον αρχικό διακόπτη όλα γίνονται ακριβώς με αυτόν τον τρόπο, οπότε όχι, δεν το βρήκα αυτό, το χειροκρότημα και τα λουλούδια στο αυτοκίνητο αποστέλλονται σε αυτήν την περίπτωση στους σχεδιαστές της αρχικής συσκευής και όχι σε εσάς ταπεινός υπηρέτης. Λοιπόν, δεν είναι όλα Μασλένιτσα για τη γάτα. 🙄

Παρεμπιπτόντως, η καθυστέρηση εναλλαγής μεταξύ των ρελέ ρυθμίζεται από αυτήν την παράμετρο:

// Διάρκεια μετάβασης μεταξύ ηλεκτρονόμων σε χιλιοστά του δευτερολέπτου
byte relayTransition = 80;

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

Λοιπόν, αγαπητοί κύριοι, κυρίες και βαν-νταμ, ειδικά για αυτόν τον σκοπό κατέληξα σε ένα σύστημα προστασίας από έναν τέτοιο Αρμαγεδδώνα. Μια αντίσταση 220 Ohm συνδέεται στο θετικό κάθε LED. Γιατί 220; Πρώτον, επειδή εκείνη τη μέρα η Σελήνη ήταν στον Κρόνο και δεύτερον, επειδή πριν από την Πρωτοχρονιά είχα την ευκαιρία να καλωδιώσω μερικά εγχώρια μαγνητόφωνα, καθώς και ένα εξίσου εγχώριο ηλεκτρονικό πιάνο (ή ένα πιάνο, δεν έχω ξέρω, αλλά όχι ένα πιάνο εν συντομία), οπότε από εκεί ξεκόλλησα ένα ολόκληρο κουτί από αυτές τις αντιστάσεις 220 Ohm, πρέπει να τις βάλω κάπου - οπότε, εξαιρετική χρήση!

Από την άλλη, όλες αυτές οι αντιστάσεις συνδέονται και έλκονται στη γείωση μέσω μιας αντίστασης 4k7 (αυτό σημαίνει 4,7 kOhm, ήρθε η ώρα να ονομάσουμε ένα φτυάρι!), από την οποία έχω επίσης ένα σκασμό και πολλά άλλα. Έτσι μετράμε την τάση σε αυτό το σημείο G, όπου και οι 9 αυτές αντιστάσεις συγκλίνουν, δηλαδή συνδέουμε αυτό το σημείο στην επόμενη αναλογική είσοδο του Arduino, η οποία ορίζεται από την ακόλουθη παράμετρο:

// Αναλογική είσοδος για παρακολούθηση του αριθμού των ενεργοποιημένων ρελέ
byte guardInput = 4;

Και από αυτή την τάση βλέπουμε αμέσως πόσα LED ανάβουν εκεί αυτή τη στιγμή, και αφού συνδέονται απευθείας με τα τρανζίστορ, αυτό είναι το ίδιο που βλέπουμε, πόσα ρελέ είναι ενεργοποιημένα αυτή τη στιγμή, και αυτό ακριβώς είναι αυτό που χρειαζόμαστε και είναι απαραίτητο σε αυτή την κατάσταση! Δηλαδή βάζουμε ένα κατώφλι τάσης πάνω από το οποίο πρώτα κόβουμε αμέσως 220 βολτ χρησιμοποιώντας το κατάλληλο ρελέ και δεύτερον προσπαθούμε να διορθώσουμε την κατάσταση με τα ρελέ και μόλις διορθωθεί ανάβουμε ξανά τα 220 και συνεχίζουμε. να δουλεύει σαν να μην ήταν τίποτα λάθος συνέβη. Όλα είναι απλά και αξιόπιστα, το έλεγξα!

Αυτό το όριο ορίζεται εδώ:

// Μέγιστη επιτρεπόμενη τιμή guardInput
byte guardTreshold = 160;

Και η διαδικασία του ελέγχου που περιγράφηκε παραπάνω εκτελείται σε κάθε κύκλο του βρόχου και μοιάζει με αυτό:

// Έλεγχος για τον αριθμό των διακοπτών και αυτόματη απενεργοποίηση - επαναφορά - ενεργοποίηση
if (voltageGuard > guardTreshold) (
digitalWrite(relay220Pin, LOW);
ενώ (voltageGuard > guardTreshold) (
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, bitseq(ones));
shiftOut(dataPin, clockPin, MSBFIRST, bitseq(δεκάδες));
shiftOut(dataPin, clockPin, MSBFIRST, bitseq(relays));
digitalWrite(latchPin, HIGH);
voltageGuard=analogRead(guardInput);
}
digitalWrite(relay220Pin, HIGH);
}

Και τώρα θα σας δείξω ακόμα τη φωτογραφία που υποσχέθηκα πριν από 9 παραγράφους, έστω και μόνο για λόγους ευπρέπειας:

Και το κάλυμμα που αφαιρέθηκε μας δείχνει την τάση. Εξυπνάδα!

Ρελέ εναλλασσόμενου ρεύματος

Ωστόσο, πρέπει να προχωρήσουμε. Όπως μπορείτε να δείτε, ο φορτιστής συναρμολογείται σταδιακά, τα καλώδια σταδιακά επιμηκύνονται και δύο νέοι χαρακτήρες εμφανίζονται στη σκηνή - το ίδιο ρελέ 220 βολτ και ένα μικρό ψυγείο δώδεκα βολτ - ογδόντα από τον υπολογιστή:

Ο Relyukha είναι συνηθισμένος, δεν διαφέρει από τους άλλους. Τραβάει 220 βολτ στα 10 αμπέρ. Αλλά δεν το χρειαζόμαστε αυτό, έχουμε μια ασφάλεια 1 αμπέρ. Αλλά μια επιφύλαξη σε τέτοια πράγματα είναι καλή, είναι αξιοπιστία. Το πηνίο αυτού του ρελέ λειτουργεί με 12 βολτ, αλλά υπάρχουν παρόμοια για 5. Αγόρασα 25 από αυτά με τη μία στο Ali, φθηνά. Γιατί πήρα 12 και όχι 5; Κοίτα, όπου κι αν το άναψα, θα χρειαζόμουν ακόμα ένα τρανζίστορ, σωστά; Κι ας ήταν 5 βολτ. Αλλά αν είναι στο 5, πρέπει να συνδεθεί μέσω ενός στελέχους, μέσω του οποίου τροφοδοτούνται ήδη όλοι οι εγκέφαλοι, θα ζεσταθεί ακόμη περισσότερο από αυτό - γιατί στο διάολο είναι τόσο απαραίτητο; Μπορείτε να χτυπήσετε απευθείας στα 12, αλλά τουλάχιστον 15 θα είναι εκεί - δεν τη νοιάζει, δουλεύει. Επιπλέον, ξεκινώντας από οκτώ βολτ. Συνέδεσα το LED σε αυτό απλώς για ένδειξη κατά τη διάρκεια της δοκιμής, όπως αν ανάψει το LED, σημαίνει ότι λειτουργεί και ουσιαστικά 220 βολτ πήγαν στον μετασχηματιστή. Συνδέεται απευθείας στην έξοδο του arduino, μέσω του ίδιου KT315, όπως και τα άλλα ρελέ στο ίδιο μπλοκ. Και ναι, το rezuk είναι επίσης 1 kOhm, αν και το 2 πιθανότατα θα λειτουργήσει εκεί, μπορείτε να εγκαταστήσετε αυτά που είναι μεγαλύτερα, αλλά έχετε κατά νου ότι όσο χαμηλότερη είναι η τιμή του rezuk, τόσο περισσότερο ρεύμα θα περάσει από το τρανζίστορ. Για γενική ενεργειακή απόδοση, αυτά τα + - μερικά milliamps δεν έχουν σημασία, αλλά για εξόδους χαμηλού ρεύματος του Arduino και των μητρώων - όχι πραγματικά, οπότε ορίστε.

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

digitalWrite(relay220Pin, HIGH);

Και σβήνοντας με

digitalWrite(relay220Pin, LOW);

Σύνδεση ψυγείου για ψύξη του φορτιστή

Αλλά το ψυγείο φαίνεται να καταναλώνει 140 milliamps, κρίνοντας από το αυτοκόλλητο πάνω του, οπότε το KT315 δεν θα λειτουργήσει εδώ, σύμφωνα με τις προδιαγραφές είναι μόνο μέχρι εκατό, οπότε πήρα το KT815A. Ανεβαίνουν μέχρι και μιάμιση χιλιάδες milliamps και θα είναι αρκετά. Υπάρχουν και άλλες επιλογές, απλά προσπαθώ πάντα να χρησιμοποιώ αυτό που έχω πολλά, ίσως εσύ πχ να έχεις κάποιο άλλο τρανζίστορ για το ψυγείο, αν τραβάει μέχρι 20 βολτ και μέχρι 150 μιλιαμπέρ - βάλε το, αν n-p-n, τότε απλώς κοιτάξτε το pinout για τα πόδια και αν είναι p-n-p, τότε πρέπει να αλλάξετε λίγο το κύκλωμα, αλλά σε αυτήν την περίπτωση δεν είναι όλα σημαντικά. Αλλά υπάρχει μια ακόμη απόχρωση εδώ…

Έχετε ακούσει ποτέ ένα πιο δροσερό τρίξιμο; Όχι, όχι από περιστροφή, απλά τρίξιμο; Ούτε εγώ το άκουσα, αλλά ήμουν τυχερός εδώ. Και όλα αυτά επειδή το Arduino ενδιάμεσες τιμέςΟι τάσεις εξόδου (περισσότερες από μηδέν, αλλά μικρότερες από πέντε) δημιουργούνται χρησιμοποιώντας PWM, δηλαδή, αυτές είναι γρήγορες διακυμάνσεις τάσης, ο ίδιος ο διαμορφωτής πλάτους παλμού λειτουργεί ορισμένη συχνότητακαι τα τρανζίστορ, όπως γνωρίζετε, ξέρουν επίσης πώς να λειτουργούν σε καθορισμένες συχνότητες, επομένως αυτοί οι παλμοί μεταδίδονται μέσω του τρανζίστορ στο ψυγείο και, λόγω της αρχιτεκτονικής του, αρχίζει να τρίζει. Δεν θα υπεισέλθω σε λεπτομέρειες, αφού δεν τα γνωρίζω ο ίδιος, αλλά όλα αυτά μπορούν να αντιμετωπιστούν συνδέοντας έναν αγωγό 100 mF με ένα συν στη βάση και τα μειονεκτήματα στον εκπομπό αυτού του τρανζίστορ. Η τάση εκεί είναι έως και 5 βολτ, επομένως ο συμπυκνωτής μπορεί να ρυθμιστεί σε τουλάχιστον 6,3 βολτ. Αυτό είναι όλο, το τρίξιμο θα εξαφανιστεί και δεν θα υπάρχει τίποτα απολύτως!

Ο αριθμός της επαφής PWM με την οποία ελέγχεται το ψυγείο ρυθμίζεται από την ακόλουθη παράμετρο:

// Έξοδος για έλεγχο ανεμιστήρα
byte fanPin = 6;

Οι ταχύτητες του από μηδέν (0V) έως 255 (5V) σε σχέση με τα επίπεδα ισχύος ορίζονται από την ακόλουθη διάταξη:

// Ρυθμίσεις ταχύτητας ανεμιστήρα
byte fanSpeeds=(0,0,80,90,100,110,120,180,255);

Και η ίδια η ρύθμιση αυτών των ταχυτήτων προδιαγράφεται στις διαδικασίες αύξησης και μείωσης ισχύος:

analogWrite(fanPin,fanSpeeds);

Παρεμπιπτόντως, εδώ είναι μια πιο προσεκτική ματιά στο ρελέ με το ψυγείο:

Περαιτέρω εργασία στον μπροστινό πίνακα

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

Τέλος, ήρθε η ώρα να το συναρμολογήσετε και να το τοποθετήσετε στη θέση του πρόσοψη! Όπως μπορείτε να δείτε, όλα τα καλώδια έχουν ήδη κολληθεί, ακόμα και το Krenka πέντε βολτ προεξέχει στο κάτω μέρος του πλαισίου, βιδώνονται αποστάτες στο σώμα για να μετακινήσετε λίγο το πάνελ (το έχω ήδη μιλήσει για αυτό), γιατί πριν ήταν κολλημένο κοντά στο σώμα. Όπως καταλαβαίνετε, σε πολλά σημεία έβαλα τα καλώδια σε περιβλήματα για να μην ξεφτίσει ή να κοντύνει τίποτα πουθενά. 12 βολτ προς Krenka προέρχονται απευθείας από γέφυρα διόδου, σύρμα κατηγορίας ανώτερης του απλού συνεστραμμένο ζευγάρι. Το μείον συνδέεται απευθείας με το κοινό μείον, αλλά το συν συνδέεται μέσω μιας διόδου, διαφορετικά ο Vasya Pupkin θα αντιστρέψει την πολικότητα κατά τη σύνδεση της μπαταρίας και αυτό είναι όλο, finita la comedy, επανακολλήστε τα μισά από τα καμένα εξαρτήματα! Και έτσι μπορείς να είσαι ήρεμος.

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

Εγκατάσταση του ελεγκτή Atmega328P με πλεξούδα και άλλα στοιχεία

Μέχρι εκείνη τη στιγμή, στη μισή από αυτές τις ίδιες πλάκες στερέωσης, είχα ήδη τοποθετήσει τη μερίδα του λέοντος από τα υπόλοιπα εξαρτήματα - μια υποδοχή για ένα μικροκύκλωμα, χαλαζία, αγωγούς, ένα τρανζίστορ για ένα ψυγείο κ.λπ. και ούτω καθεξής.:

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

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

Τελική διαμόρφωση των παραμέτρων της συσκευής

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

Μετά την ενεργοποίησή του, ανακαλύφθηκε ότι σε υψηλό ρεύμα, όταν το αμπερόμετρο σβήνει η κλίμακα, ο φορτιστής βλέπει μια τάση 0,5-0,8 βολτ μεγαλύτερη από αυτή που είναι στην πραγματικότητα στη μπαταρία αυτή τη στιγμή. Η δοκιμή έδειξε ότι μισό βολτ χάθηκε στα καλώδια, οπότε τα αντικατέστησα με καλύτερα, με μεγαλύτερη διατομή και τα κόλλησα σε ένα κρύο βύσμα που ήταν πολύ κατάλληλο για το συνολικό σχέδιο της συσκευής. Αυτό έλυσε το πρόβλημα, αλλά όχι 100 τοις εκατό - στα υψηλά ρεύματα κάποια διαφορά παρέμενε ακόμα. Αλλά σκέφτηκα ότι αυτό δεν ήταν ένα σφάλμα, αλλά ένα χαρακτηριστικό, γιατί δεν έχει νόημα να φορτίζετε την μπαταρία με τόσο υψηλά ρεύματα - αφήστε το να λειτουργήσει ως κάποιο είδος περιοριστικού παράγοντα!

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

Ο φορτιστής είναι έτοιμος!

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

Θέα από την αριστερή πλευρά. Λοιπόν, ή από τα δεξιά - εξαρτάται από το πώς το βλέπεις, συγχωρείς το λογοπαίγνιο.

Λοιπόν, αυτό είναι από ψηλά. Εδώ μπορείτε να δείτε ότι κόλλησα το πάνελ στο προεξέχον μέρος του αμπερόμετρου - αποδείχθηκε ότι ήταν ένα μεγάλο τρίτο σημείο στήριξης, διαφορετικά το πάνελ κάθισε κάπως ασταθή. Και έτσι όλα είναι υπέροχα, αξιόπιστα και όμορφα! Παρεμπιπτόντως, φανταστείτε αν αντί για ένα κρύσταλλο χρησιμοποιούσα μια συνηθισμένη στιγμή, και μέσα από το κενό θα ήταν ορατή όλη αυτή η ανοιχτοκίτρινη χάλια. Φουουουκ! 😳

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

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

Αυτό είναι το πρώτο μου έργο σε έναν προγραμματιζόμενο μικροελεγκτή. Πέρασα σχεδόν ένα μήνα δουλεύοντας πάνω σε αυτό τα βράδια. Έκανα ακόμη και ένα διάλειμμα μιας εβδομάδας γιατί το βαρέθηκα, αυτή η δουλειά είναι τόσο βαρετή ή κάτι τέτοιο. Αλλά είμαι χαρούμενος. Είμαι ευχαριστημένος με την εμπειρία, είμαι χαρούμενος που μπόρεσα να τελειώσω αυτή τη δουλειά, είμαι χαρούμενος που πλέον έχω έναν εξαιρετικό αυτόματο φορτιστή της κατηγορίας "set it and ξέχασέ το". Και χαίρομαι που όταν οι φίλοι ή οι γνωστοί μου ρωτούν αν έχω φορτιστή για την μπαταρία τους, θα τους τον παραδώσω και θα τους πω περήφανα ότι ήμουν εγώ που έφτιαξα αυτό το υπέροχο πράγμα!

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

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

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

Η λειτουργία των συσκευών βασίζεται στην ανάκλαση υπερηχητικών κυμάτων από εμπόδια. Μετρώντας τη διαφορά χρόνου μεταξύ της στιγμής που δημιουργείται ο παλμός και της στιγμής λήψης του ανακλώμενου σήματος ηχούς, μπορεί να προσδιοριστεί η απόσταση από το εμπόδιο.

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

Αισθητήρας υπερήχων

Για τη μέτρηση της απόστασης από ένα εμπόδιο, δοκιμάστηκαν δύο συσκευές:
  • Συμβατή μονάδα υπερήχων HC-SR04 με Arduino
  • Αισθητήρες στάθμευσης αυτοκινήτων HO 3800
Και οι δύο συσκευές λειτουργούν με την ίδια αρχή. Οι διαφορές έγκεινται στο μοτίβο κατεύθυνσης των αισθητήρων, στο μέγιστο εύρος ανίχνευσης εμποδίων και στο σχεδιασμό.
Σύγκριση παραμέτρων αισθητήρα:

Κατά τη διάρκεια των δοκιμών, αποδείχθηκε ότι οι μονάδες HC-SR04 έχουν ελαφρώς χειρότερη ικανότητα να ανιχνεύουν εμπόδια και να λειτουργούν σε δύσκολες κλιματολογικές συνθήκες (κρύο).

Και οι δύο αισθητήρες, παρά τις διαφορές τους, μπορούν να χρησιμοποιηθούν σε προσάρτηση ζαχαροκάλαμου υπερήχων ως μέσο μέτρησης της απόστασης από ένα εμπόδιο, επομένως η κύρια παράμετρος για εμάς κατά την επιλογή ενός αισθητήρα ήταν η τιμή. Καταλήξαμε στον φθηνότερο αισθητήρα HC-SR04.

Πίνακας ελέγχου

Ως πίνακας ελέγχου επιλέχθηκε η πλατφόρμα Arduino. Στην περίπτωσή μας, οι πιο εφαρμόσιμες πλακέτες είναι οι μινιατούρες εκδόσεις: Arduino Mini, Arduino Nano ή Arduino Pro Mini. Γενικά, μπορεί να χρησιμοποιηθεί οποιοσδήποτε άλλος ελεγκτής που παρέχει παρόμοιες δυνατότητες.

Μπαταρίες

Για την παροχή ρεύματος στη συσκευή, συνιστάται η χρήση στοιχείων μπαταρίας ιόντων λιθίου (Li-ion) ή νικελίου-υδριδίου μετάλλου (Ni-Mh).

Κατά τη λειτουργία σε κανονικές κλιματικές συνθήκες, είναι λογικό να χρησιμοποιείτε μπαταρίες Li-ion, οι οποίες έχουν τα ακόλουθα πλεονεκτήματα σε σύγκριση με το Ni-Mh:

Σε χαμηλές θερμοκρασίες, είναι προτιμότερο να χρησιμοποιείτε μπαταρίες Ni-Mh.

Η τάση στην έξοδο μιας μπαταρίας Ni-Mh (1,0 -1,4 V) δεν είναι αρκετή για τη λειτουργία της συσκευής. Για να λάβουμε τάση 5 V (απαραίτητη για τη λειτουργία τόσο του Arduino όσο και του αισθητήρα στάθμευσης), εκτός από τις μπαταρίες, θα χρησιμοποιήσουμε και έναν μετατροπέα ενίσχυσης DC-DC.

Για τη λειτουργία των μετατροπέων DC-DC που έχουμε επιλέξει, είναι απαραίτητο να παρέχεται τάση εισόδου 0,9-6,0 V. Για να αποκτήσετε την απαιτούμενη τάση εξόδου, θα μπορούσατε να χρησιμοποιήσετε ένα στοιχείο Ni-Mh με τάση 1,2 βολτ. Ωστόσο, καθώς μειώνεται η τάση εισόδου, η χωρητικότητα φορτίου του μετατροπέα μειώνεται επίσης, επομένως, για σταθερή λειτουργία της συσκευής, συνιστάται να τροφοδοτείτε τουλάχιστον 2 V στην είσοδο του μετατροπέα (δύο στοιχεία Ni-Mh των 1,2 V το καθένα ή ένα στοιχείο ιόντων λιθίου με τάση 3,7 V). Σημειώστε ότι υπάρχουν μετατροπείς DC-DC για τους οποίους η τάση εισόδου 1,2 V δεν αρκεί.

Φόρτιση μπαταριών

Για Μπαταρίες Li-ionυπάρχουν πολλά έτοιμα φθηνές ενότητεςμε ένδειξη λήξης χρέωσης.

Στην περίπτωση των μπαταριών Ni-Mh, όλα είναι πιο περίπλοκα. Δεν έχουμε βρει έτοιμες ενσωματωμένες λύσεις στην αγορά αυτή τη στιγμή. Για να φορτίσετε μπαταρίες Ni-Mh, μπορείτε να χρησιμοποιήσετε εξειδικευμένους εξωτερικούς φορτιστές ή να δημιουργήσετε το δικό σας κύκλωμα φόρτισης.

Ένας τρόπος φόρτισης μιας κυψέλης Ni-Mh είναι σειριακή σύνδεσημε μια μπαταρία δύο γραμμικών σταθεροποιητών LM317 (ή παρόμοιο): ο πρώτος - σε λειτουργία περιορισμού ρεύματος, ο δεύτερος - σε λειτουργία περιορισμού τάσης.

Η τάση εισόδου ενός τέτοιου κυκλώματος είναι 7,0-7,5 V. Ελλείψει ψύξης των σταθεροποιητών, δεν συνιστάται η υπέρβαση αυτής της τάσης. Τάση σε κάθε Μπαταρία Ni-MHΚατά τη διάρκεια της φόρτισης θα πρέπει να υπάρχει περίπου 1,45 V (τάση μιας πλήρως φορτισμένης κυψέλης Ni-Mh). Για να αποφευχθεί η υπερθέρμανση και η αστοχία των μικροκυκλωμάτων, το ρεύμα φόρτισης της μπαταρίας δεν πρέπει να υπερβαίνει τα 100 mA και μπορεί να αυξηθεί στα 200 mA όταν χρησιμοποιείτε κατάλληλα καλοριφέρ.

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

Τρομάζω

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

Κατά τη διάρκεια δοκιμών πρωτοτύπων, ανακαλύψαμε ότι είναι πιο βολικό να μεταδίδουμε πληροφορίες σχετικά με την εγγύτητα ενός εμποδίου μέσω δόνησης, επειδή Σε αυτή την περίπτωση, το κανάλι ήχου, το οποίο είναι πολύ σημαντικό για έναν τυφλό, δεν είναι κατειλημμένο. Γι' αυτό όλα τα σχεδιασμένα και συναρμολογημένα προϊόντα μας χρησιμοποιούν κραδασμούς για να προειδοποιούν για εμπόδια. Η ένταση της δόνησης είναι ανάλογη της απόστασης από το εμπόδιο.

Πλαίσιο

Δεν μπορέσαμε να βρούμε ένα βολικό περίβλημα για τη σύνδεση του ζαχαροκάλαμου υπερήχων μεταξύ των περιβλημάτων μαζικής παραγωγής. Για να δοκιμάσουμε τη συσκευή, χρησιμοποιήσαμε μια 3D εκτυπωμένη πλαστική θήκη ABS. Για την εκτύπωση της θήκης σε εκτυπωτή 3D, αναπτύξαμε το ακόλουθο τρισδιάστατο μοντέλο:

Αποτέλεσμα δοκιμής πρωτοτύπων

Κατά τη διαδικασία ανάπτυξης, συγκεντρώθηκαν περισσότερες από 12 επιλογές προϊόντων. Κάθε νέο προϊόν εξαλείφει τις ελλείψεις των προηγούμενων: ​​κατά τη διαδικασία ανάπτυξης, μειώσαμε τις διαστάσεις και το βάρος του προϊόντος, επιλέξαμε έναν αισθητήρα υπερήχων που μας ικανοποίησε τόσο σε τιμή όσο και τεχνικές προδιαγραφές, εγκατέλειψε τη χρήση ενός καναλιού ήχου και βελτιστοποίησε τον αλγόριθμο λειτουργίας της συσκευής. Μαζί με τους τυφλούς (Bortnikov P.V., Shalintsev V.A.), πραγματοποιήθηκαν δοκιμές όλων των συναρμολογημένων προϊόντων. Ως αποτέλεσμα, λάβαμε το τελικό δείγμα.

Παρακάτω είναι τα θεμελιώδη ηλεκτρικό διάγραμμαανεπτυγμένη συσκευή:

Όταν αποσυναρμολογηθεί, το μπρελόκ υπερήχων λαιμού μοιάζει με αυτό:

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

  1. Αισθητήρας υπερήχων HC-SR04.
  2. Πίνακας ελέγχου Adruino Pro Mini.
  3. Επαναφορτιζόμενη μπαταρία 3,7 V 300 mAh.
  4. Μετατροπέας τάσης 0,9V ~ 5V σε 5V 600 mA.
  5. Μονάδα φόρτισης AC/DC 220V έως 5 V 1 A.
  6. Φορτιστής LA-520W.
  7. Συναγερμός: μοτέρ δόνησης για κινητό τηλέφωνο 4x10mm DC 3V.
  8. Κουμπί PB-22E60.
  9. Στέγαση Gainta G1906 (για μπρελόκ).
  10. Τρανζίστορ: bss138/bcr108 ή οπτοζεύκτης CPC1230N.
Η εμφάνιση και οι τιμές (συμπεριλαμβανομένης της παράδοσης από την Κίνα) των εξαρτημάτων που χρησιμοποιούνται για τη συναρμολόγηση της κεφαλής υπερήχων στο μπαστούνι φαίνονται στο σχήμα:

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

Η εμφάνιση και οι τιμές (συμπεριλαμβανομένης της παράδοσης από την Κίνα) των εξαρτημάτων που χρησιμοποιούνται για τη συναρμολόγηση του μπρελόκ υπερήχων φαίνονται στο σχήμα:

Στο μέλλον, μπορείτε να αναπτύξετε μια βάση για το σώμα Gainta G1906 και να χρησιμοποιήσετε μια συσκευή με τέτοιο σώμα ως εξάρτημα για μπαστούνι.

Ένας από τους τρόπους μείωσης του κόστους των συσκευών είναι η εξοικονόμηση κόστους εργασίας και του κόστους παράδοσης εξαρτημάτων συσκευών στη Ρωσία, με την ανάπτυξη της παραγωγής απευθείας στην Κίνα.

Οι συσκευές που έχουμε αναπτύξει έχουν τα ακόλουθα χαρακτηριστικά:

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

Εμφάνιση του μπρελόκ λαιμού:

Ένα τρισδιάστατο μοντέλο του προσαρτήματος ζαχαροκάλαμου υπερήχων και ο πηγαίος κώδικας υλικολογισμικού για το Adruino είναι διαθέσιμα για λήψη στη διεύθυνση

Η ομάδα της Electro-Labs παρουσίασε στο blog της ένα έργο για το Arduino που δεν είναι μόνο ενδιαφέρον, αλλά και χρήσιμο στην καθημερινή ζωή. Σε αυτό το έργο, αναπτύχθηκε μια προγραμματιζόμενη ασπίδα για το Arduino που λειτουργεί ως φορτιστής για μπαταρίες λιθίου. Η ασπίδα περιλαμβάνει οθόνη LCD και διασύνδεση με κουμπιά που επιτρέπει στο χρήστη να ρυθμίζει την τάση από 2V σε 10V και το ρεύμα από 50mA σε 1,1A. Η συσκευή παρέχει επίσης τη δυνατότητα ελέγχου της διαδικασίας φόρτισης.

Η ασπίδα βασίζεται στο τσιπ LT1510 και ελέγχεται από το Arduino Uno. Η οθόνη που χρησιμοποιείται είναι μια απλή και προσιτή οθόνη LCD Nokia 5110. Συνδέεται μέσω Διεπαφή SPIκαι τροφοδοτείται από τάση 3,3V. Δεδομένου ότι οι ακίδες I/O του arduino λειτουργούν στα 5V, συνιστάται η σύνδεση της μονάδας LCD μέσω αντιστάσεων συνδεδεμένων σε σειρά στις γραμμές σήματος. Υπάρχουν δύο διαθέσιμες υποδοχές για τη σύνδεση μπαταριών Li-Ion. Τέσσερα κουμπιά ελέγχου συνδέονται στις ακίδες A2-A5 του Arduino. Η τάση της μπαταρίας και το ρεύμα φόρτισης ελέγχονται μέσω των αναλογικών ακίδων A0 και A1. Λεπτομέριες μετατροπή αναλογικού σε ψηφιακόεξηγείται σε πηγαίος κώδικαςέργο. Δύο SMD LEDχρησιμοποιούνται για να υποδείξουν τη λειτουργία της συσκευής.

Το σχηματικό διάγραμμα του έργου αναπτύχθηκε στο SoloCapture από το πακέτο SoloPCBtools. Η ασπίδα μπορεί να λειτουργήσει χωρίς έλεγχο μικροελεγκτή. Όταν το Arduino δεν αναβοσβήνει, ο φορτιστής ορίζει από προεπιλογή μια τάση αποκοπής 4,2 V και μέγιστο ρεύμα φόρτισης 1,1 Α. Το PCB έχει σχεδιαστεί σε SoloPSB. Εργο πλακέτα τυπωμένου κυκλώματοςκαι το ίδιο το πρόγραμμα SoloPSB μπορείτε να το κατεβάσετε από το electro-labs.com. Οι διαστάσεις της ασπίδας επιλέγονται για τη θέση της στο Arduino Uno. Οι λυχνίες LED, η διεπαφή με κουμπιά, η οθόνη LCD και οι υποδοχές μπαταρίας βρίσκονται στο επάνω μέρος για ευκολία. Όλα τα άλλα στοιχεία βρίσκονται στην πίσω πλευρά της ασπίδας.

Η οθόνη LCD είναι προγραμματισμένη να εμφανίζει τέσσερις σελίδες που επιτρέπουν στον χρήστη να εισάγει παραμέτρους φόρτισης και να ελέγχει τη διαδικασία φόρτισης. Στην πρώτη σελίδα, ο χρήστης μπορεί να ρυθμίσει την τάση αποκοπής και το μέγιστο ρεύμα φόρτισης, να μεταβεί στη σελίδα κατάστασης μπαταρίας και να ξεκινήσει τη φόρτιση. Τα κουμπιά πάνω και κάτω χρησιμοποιούνται για τη μετακίνηση μεταξύ των επιλογών και το δεξί και το αριστερό κουμπί χρησιμοποιούνται για την αλλαγή παραμέτρων και την επιλογή επιλογών. Η δεύτερη σελίδα δείχνει την κατάσταση της μπαταρίας. Σε αυτό μπορείτε να δείτε την τρέχουσα τάση στην μπαταρία. Η τρίτη σελίδα δείχνει την τάση και το ρεύμα φόρτισης. Αριστερά ή κάντε δεξί κλικΣε αυτή τη σελίδα μπορείτε να σταματήσετε τη διαδικασία φόρτισης και να επιστρέψετε στη σελίδα ρύθμισης παραμέτρων. Όταν φτάσει η τάση της μπαταρίας καθορισμένη τιμή, ο φορτιστής σταματά και εμφανίζει το μήνυμα "Charge Complete". Για έξοδο, πατήστε το αριστερό πλήκτρο.

Arduino Ελεγκτής PWMηλιακή φόρτιση
Πώς να φτιάξετε έναν πολύ μικρό, απλό και φθηνό ελεγκτή ηλιακής φόρτισης PWM με το Arduino Pro Mini για ρυθμίσεις εκτός δικτύου 12V. Το PCB έχει το ίδιο μέγεθος με την πλακέτα Pro mini, ώστε να μπορούν να στερεωθούν μεταξύ τους. Το PCB σχεδιάζει για μια γενική πρωτότυπη πλακέτα.

Σύνδεση και χρήση αυτού του ελεγκτή Arduino ηλιακό φορτίοπολύ απλό - υπάρχουν 2 καλώδια εισόδου από το ηλιακό πάνελ (+ και -) και 2 καλώδια εξόδου για να πάνε στην μπαταρία μολύβδου-οξέος. Η βάση του ηλιακού πάνελ και οι μπαταρίες συνδέονται μεταξύ τους. Οποιοδήποτε φορτίο πρέπει να συνδεθεί απευθείας στους ακροδέκτες της μπαταρίας και ο ελεγκτής φόρτισης θα χειριστεί αυτόματα τα υπόλοιπα.

Το Arduino μετρά τακτικά την τάση της μπαταρίας μολύβδου οξέος σύμφωνα με μια συγκεκριμένη τιμή, αλλάζει το MOSFET για να φορτίσει την μπαταρία από το ηλιακό πάνελ και απενεργοποιεί το MOSFET όταν η μπαταρία είναι πλήρως φορτισμένη. Όταν το φορτίο αντλεί ισχύ από την μπαταρία, ο ελεγκτής ανιχνεύει την πτώση τάσης και αμέσως αρχίζει να φορτίζει ξανά την μπαταρία. Κατά τη διάρκεια της νύχτας όταν ένα ηλιακό πάνελσταματά να παράγει, ο ελεγκτής περιμένει μέχρι να αρχίσει ξανά η έξοδος του πίνακα.


Απαιτείται θετικό καλώδιο στο ηλιακό πάνελ δίοδος προστασίαςΤο Schottky εγκαθίσταται απευθείας στο καλώδιο (τυλιγμένο σε θερμοσυστελλόμενο σωλήνα). Αυτό δεν περιλαμβάνεται στο κύριο PCB, καθώς αυτό διευκολύνει την αντικατάστασή του και ταυτόχρονα την ψύξη του. Μπορείτε εύκολα να κάνετε την πλακέτα λίγο μακρύτερη για να ταιριάζει σε διαφορετικό τύπο διόδου.

Περιγραφή κυκλώματος και λειτουργίας:

Η λειτουργία βασίζεται σε ένα τρανζίστορ MOSFET N-καναλιού IRF3205 στην ψηλή πλευρά του κυκλώματος. Αυτό απαιτεί τάση πύλης μεγαλύτερη από 12 V για να ενεργοποιηθεί σωστά το MOSFET. Προκειμένου να εξαλειφθεί η ανάγκη για εξωτερικό Προγράμματα οδήγησης MOSFETΟδηγείται από μια αντλία φόρτισης που δημιουργήθηκε με διόδους, 2 πυκνωτές και δύο ακροδέκτες εξόδου Arduino PWM (3 και 11). Ο ακροδέκτης A1 μετρά την τάση μπαταρίακαι ο ακροδέκτης 9 ελέγχει τον κύκλο ON/OFF του MOSFET. Η ενσωματωμένη λυχνία LED Arduino Pro Mini που είναι συνδεδεμένη στον ακροδέκτη 13 χρησιμοποιείται για να δείξει τον τρέχοντα κύκλο του σήματος PWM.

Ο ρυθμιστής τάσης και όλοι οι πυκνωτές γύρω (C6, C5 και C4) θα μπορούσαν να εξαλειφθούν καθώς υπάρχει ρυθμιστής που περιλαμβάνεται στο Arduino Pro Mini. Ωστόσο, επειδή χρησιμοποιούσα μια φθηνή πλακέτα κλώνου, δεν ήθελα να βασιστώ στην ικανότητά της να υποστηρίζει υψηλότερες τάσεις από 12 V για μεγαλύτερες χρονικές περιόδους. Το LP2950 είναι πολύ φθηνό και αποδοτικό έως και 30 βολτ, οπότε αξίζει να το έχετε στο σκάφος ούτως ή άλλως.


Λίστα ανταλλακτικών: Ρυθμιστής χαμηλής τάσης LP2950ACZ-5.0 Τρανζίστορ 2N3904 2N3906 x 2 N-channel MOSFET IRF3205 Αντιστάσεις 82K (1%) 20K (1%) 220K x3 (0,4W είναι αρκετό) 4KW1 είναι αρκετό 4K7 x4 Diode. P6KE33CA 90SQ035 (ή οποιοδήποτε παρόμοιο σχήμα παράστασης 35V ελάχιστο 9A) πυκνωτές 47n / 50V x2 κεραμικό 220p / 100V κεραμικό 1m / 50V (1000NF) κεραμικό 4M7 / 10V Tantal dance

Το κύκλωμα και ο κωδικός για αυτόν τον ελεγκτή φόρτισης είναι του Julian Ilett, αυτός είναι ο εγκέφαλος πίσω από αυτό έξυπνο πράγμα. Όλα αυτά είναι απλώς εκλεπτυσμένη τεκμηρίωση και κατάλληλος σχεδιασμός PCB για να ταιριάζει απόλυτα με την πλακέτα Arduino Pro Mini. Μοιράζεται ένα βίντεο με έναν πιο αποτελεσματικό ρυθμιστή φόρτισης Arduino MPPT, αλλά η κατασκευή του είναι πολύ πιο περίπλοκη και το έργο δεν έχει ακόμη ολοκληρωθεί. Εάν μπορείτε να βελτιώσετε τον κώδικα ή το σχέδιο με οποιονδήποτε τρόπο, μοιραστείτε τις βελτιώσεις σας στα σχόλια.