Μετάβαση στο κύριο περιεχόμενο

Αντιστάσεις pull up, pull down

 

Αντιστάσεις pull up (Pull up resistors)


atmega328 reset pullup

Οι αντιστάσεις pull up είναι πολύ συνηθισμένες όταν χρησιμοποιούνται μικροελεγκτές (MCU) ή οποιαδήποτε συσκευή ψηφιακής λογικής. Θα εξηγήσουμε πότε και πού να χρησιμοποιήσετε αντιστάσεις pull up και, στη συνέχεια, θα κάνουμε έναν απλό υπολογισμό για να δείξουμε γιατί είναι σημαντικά τα pull-ups.

Τι είναι μια αντίσταση Pull up

Ας υποθέσουμε ότι έχετε ένα MCU με ένα pin διαμορφωμένο ως είσοδο. Εάν δεν υπάρχει τίποτα συνδεδεμένο με τον ακροδέκτη και το πρόγραμμά σας διαβάζει την κατάσταση του ακροδέκτη, θα είναι ψηλά (τραβηγμένο στο VCC) ή χαμηλό (τραβηγμένο στη γείωση);  Αυτό το φαινόμενο αναφέρεται ως αιωρούμενο (floating). Για να αποφευχθεί αυτή η άγνωστη κατάσταση, μια αντίσταση pull-up ή pull-down θα διασφαλίσει ότι η ακίδα βρίσκεται είτε σε υψηλή είτε σε χαμηλή κατάσταση, ενώ χρησιμοποιεί επίσης χαμηλή ποσότητα ρεύματος.

Για απλότητα, θα εστιάσουμε στα pull-ups καθώς είναι πιο συνηθισμένα από τα pull-down. Λειτουργούν χρησιμοποιώντας τις ίδιες έννοιες, εκτός από το ότι η αντίσταση pull up είναι συνδεδεμένη με την υψηλή τάση (συνήθως είναι 3,3 V ή 5 V και συχνά αναφέρεται ως VCC) και η αντίσταση pull-down συνδέεται στη γείωση.

Τα pull-ups χρησιμοποιούνται συχνά με κουμπιά και διακόπτες.

σχηματικό pull-up

Με μια αντίσταση pull up, η ακίδα εισόδου θα διαβάζει υψηλή κατάσταση όταν δεν πατηθεί το κουμπί. Με άλλα λόγια, μια μικρή ποσότητα ρεύματος ρέει μεταξύ του VCC και του ακροδέκτη εισόδου (όχι στη γείωση), επομένως ο ακροδέκτης εισόδου διαβάζει κοντά στο VCC. Όταν πατηθεί το κουμπί, συνδέει την ακίδα εισόδου απευθείας στη γείωση. Το ρεύμα ρέει μέσω της αντίστασης προς τη γείωση, επομένως η ακίδα εισόδου διαβάζει μια χαμηλή κατάσταση. Λάβετε υπόψη ότι εάν η αντίσταση δεν υπήρχε, το κουμπί σας θα συνέδεε το VCC στη γείωση, κάτι που είναι πολύ κακό και είναι επίσης γνωστό ως βραχυκύκλωμα .

Λοιπόν, τι τιμή αντίστασης πρέπει να επιλέξετε;

Η σύντομη και εύκολη απάντηση είναι ότι θέλετε μια τιμή αντίστασης της τάξης των 10 kΩ για το pull-up.

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

σχηματικό pull-up εσωτερικό

Η τιμή της αντίστασης pull up πρέπει να επιλεγεί για να πληροί δύο προϋποθέσεις-συνθήκες:

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

  2. Όταν δεν πατηθεί το κουμπί , η ακίδα εισόδου τραβιέται ψηλά. Η τιμή της αντίστασης pull up ελέγχει την τάση στον pin εισόδου.

Για την συνθήκη 1, δεν θέλετε η τιμή της αντίστασης να είναι πολύ χαμηλή. Όσο χαμηλότερη είναι η αντίσταση, τόσο περισσότερη ισχύς θα χρησιμοποιηθεί όταν πατήσετε το κουμπί. Γενικά θέλετε μια μεγάλη τιμή αντίστασης (10kΩ), αλλά δεν τη θέλετε πολύ μεγάλη ώστε να έρχεται σε σύγκρουση με την συνθήκη 2. Μια αντίσταση 4MΩ μπορεί να λειτουργήσει ως pull-up, αλλά η αντίστασή της είναι τόσο μεγάλη  που μπορεί να μην κάνει τη δουλειά της στο 100% του χρόνου.

Ο γενικός κανόνας για τη συνθήκη 2 είναι να χρησιμοποιήσετε μια αντίσταση pull up (R1) που είναι μια τάξη μεγέθους (1/10η) μικρότερη από την σύνθετη αντίσταση εισόδου (R2) του ακροδέκτη εισόδου. Ένας ακροδέκτης εισόδου σε έναν μικροελεγκτή έχει σύνθετη αντίσταση που μπορεί να κυμαίνεται από 100k-1MΩ. Η σύνθετη αντίσταση είναι απλώς ένας φανταχτερός τρόπος να πούμε αντίσταση και αντιπροσωπεύεται από το R2 στην παραπάνω εικόνα. Έτσι, όταν το κουμπί δεν πατιέται, μια πολύ μικρή ποσότητα ρεύματος ρέει από το VCC μέσω του R1 και στον ακροδέκτη εισόδου. Η αντίσταση pull up R1 και η σύνθετη αντίσταση pinυ εισόδου R2 διαιρούν την τάση και αυτή η τάση πρέπει να είναι αρκετά υψηλή ώστε η ακίδα εισόδου να διαβάζει υψηλή κατάσταση .

Για παράδειγμα, εάν χρησιμοποιείτε αντίσταση 1MΩ για το pull-up R1 και η σύνθετη αντίσταση R2 της ακίδας εισόδου είναι της τάξης του 1MΩ (που σχηματίζει έναν διαιρέτη τάσης), η τάση στον ακροδέκτη εισόδου θα είναι περίπου το μισό του VCC και ο μικροελεγκτής μπορεί να μην καταγράψει τον ακροδέκτη σε υψηλή κατάσταση. Σε ένα σύστημα 5V, τι διαβάζει το MCU στον ακροδέκτη εισόδου εάν η τάση είναι 2,5V; Είναι υψηλό ή χαμηλό; Το MCU δεν γνωρίζει και μπορεί να διαβάσετε είτε υψηλό είτε χαμηλό. Μια αντίσταση 10k έως 100kΩ για το R1 θα πρέπει να αποφύγει τα περισσότερα προβλήματα.

Δεδομένου ότι οι αντιστάσεις pull up χρειάζονται τόσο συχνά, πολλά MCU, όπως ο μικροελεγκτής ATmega328 στην πλατφόρμα Arduino, διαθέτουν εσωτερικά pull-up που μπορούν να ενεργοποιηθούν και να απενεργοποιηθούν. Για να ενεργοποιήσετε τα εσωτερικά pull-ups σε ένα Arduino, μπορείτε να χρησιμοποιήσετε την ακόλουθη γραμμή κώδικα στη συνάρτηση setup():

pinMode(5, INPUT_PULLUP); // Enable internal pull-up resistor on pin 5

Ένα άλλο πράγμα που πρέπει να επισημανθεί είναι ότι όσο μεγαλύτερη είναι η αντίσταση για το pull-up, τόσο πιο αργός είναι ο pin να ανταποκρίνεται στις αλλαγές τάσης. Αυτό συμβαίνει επειδή το σύστημα που τροφοδοτεί τον ακροδέκτη εισόδου είναι ουσιαστικά ένας πυκνωτής που συνδέεται με την αντίσταση pull up, σχηματίζοντας έτσι ένα φίλτρο RC και τα φίλτρα RC χρειάζονται κάποιο χρόνο για να φορτιστούν και να αποφορτιστούν. Εάν έχετε ένα σήμα πραγματικά γρήγορης αλλαγής (όπως USB), μια αντίσταση pull up υψηλής αξίας μπορεί να περιορίσει την ταχύτητα με την οποία η ακίδα μπορεί να αλλάξει αξιόπιστα την κατάσταση. Αυτός είναι ο λόγος για τον οποίο θα βλέπετε συχνά αντιστάσεις 1k έως 4,7KΩ σε γραμμές σήματος USB.

Όλοι αυτοί οι παράγοντες παίζουν στην απόφαση για την τιμή της αντίστασης pull up που θα χρησιμοποιηθεί.

Υπολογισμός τιμής αντίστασης pull up

σχηματικό pull-up

Ας υποθέσουμε ότι θέλετε να περιορίσετε το ρεύμα σε περίπου 1 mA όταν πατήσετε το κουμπί στο παραπάνω κύκλωμα, όπου Vcc = 5V. Ποια τιμή αντίστασης πρέπει να χρησιμοποιήσετε;

Είναι εύκολο να δείξετε πώς να υπολογίσετε την αντίσταση pull up χρησιμοποιώντας το νόμο του Ohm :

V=I.R

Αναφερόμενοι στο παραπάνω σχήμα, ο νόμος του Ohm τώρα είναι:


VCC=I1.R1

Αναδιάταξη της παραπάνω εξίσωσης με κάποια απλή άλγεβρα προς επίλυση για την αντίσταση:




Θυμηθείτε να μετατρέψετε όλες τις μονάδες σας σε βολτ, αμπέρ και Ωμ πριν από τον υπολογισμό (π.χ. 1mA = 0,001 Α). Η λύση είναι να χρησιμοποιήσετε αντίσταση 5 kΩ.


Τι είναι οι αντιστάσεις pull down;

Οι αντιστάσεις pull down λειτουργούν με τον ίδιο τρόπο όπως οι αντιστάσεις pull up, εκτός από το ότι τραβούν τον pin σε μια λογική χαμηλή τιμή. Συνδέονται μεταξύ της γείωσης και της κατάλληλης ακίδας σε μια συσκευή. Ένα παράδειγμα  φαίνεται στο παρακάτω σχήμα.

έλξη προς τα κάτω αντίσταση


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

Τιμές αντίστασης Pull-up και Pull-down

Θα συνεχίσουμε την αναφορά για την κατάλληλη τιμή τηςpull-up (ή pull-down) αντίστασης επισημαίνοντας ότι περιορίζεται από δύο παράγοντες. Ο πρώτος παράγοντας είναι η απαγωγή ισχύος. Εάν η τιμή αντίστασης είναι πολύ χαμηλή, ένα υψηλό ρεύμα θα ρέει μέσω της αντίστασης έλξης, θερμαίνοντας τη συσκευή και καταναλώνοντας μια περιττή ποσότητα ισχύος όταν ο διακόπτης είναι κλειστός. Αυτή η κατάσταση ονομάζεται ισχυρό pull-up και αποφεύγεται όταν απαιτείται χαμηλή κατανάλωση ενέργειας. Ο δεύτερος παράγοντας είναι η τάση του ακροδέκτη όταν ο διακόπτης είναι ανοιχτός. Εάν η τιμή της αντίστασης έλξης είναι πολύ υψηλή, σε συνδυασμό με μεγάλο ρεύμα διαρροής του pinυ εισόδου, η τάση εισόδου μπορεί να γίνει ανεπαρκής όταν ο διακόπτης είναι ανοιχτός. Αυτή η κατάσταση ονομάζεται αδύναμη έλξη. Η πραγματική τιμή της αντίστασης του pull-up εξαρτάται από την σύνθετη αντίσταση του ακροδέκτη εισόδου, η οποία σχετίζεται στενά με το ρεύμα διαρροής του ακροδέκτη.

Ένας εμπειρικός κανόνας είναι να χρησιμοποιείτε μια αντίσταση που είναι τουλάχιστον 10 φορές μικρότερη από την τιμή της σύνθετης αντίστασης της ακίδας εισόδου. Σε οικογένειες διπολικής λογικής που λειτουργούν σε λειτουργία στα 5 V, η τυπική τιμή της αντίστασης έλξης είναι 1-5 kΩ. Για εφαρμογές με διακόπτες και αισθητήρες αντίστασης, η τυπική τιμή της αντίστασης έλξης είναι 1-10 kΩ. Εάν έχετε αμφιβολίες, ένα καλό σημείο εκκίνησης όταν χρησιμοποιείτε διακόπτη είναι 4,7 kΩ. Ορισμένα ψηφιακά κυκλώματα, όπως οι οικογένειες CMOS, έχουν μικρό ρεύμα διαρροής εισόδου, επιτρέποντας πολύ υψηλότερες τιμές αντίστασης, από περίπου 10 kΩ έως 1 MΩ. Το μειονέκτημα όταν χρησιμοποιείται μεγαλύτερη τιμή αντίστασης είναι ότι η ακίδα εισόδου ανταποκρίνεται αργά στις αλλαγές τάσης. Αυτό είναι το αποτέλεσμα της σύζευξης μεταξύ της αντίστασης έλξης και της συνολικής χωρητικότητας pinυ και καλωδίου στον κόμβο μεταγωγής που σχηματίζει ένα κύκλωμα RC. Όσο μεγαλύτερο είναι το γινόμενο των R και C, τόσο περισσότερος χρόνος χρειάζεται για τη φόρτιση και την εκφόρτιση της χωρητικότητας, και κατά συνέπεια τόσο πιο αργό είναι το κύκλωμα. Σε κυκλώματα υψηλής ταχύτητας, μια μεγάλη αντίσταση έλξης μπορεί μερικές φορές να περιορίσει την ταχύτητα με την οποία ο pin μπορεί να αλλάξει αξιόπιστα κατάσταση.

Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Tmp36GZ θερμόμετρο με LCD οθόνη

 Tmp36GZ με LCD οθόνη // Define to which pin of the Arduino the output of the TMP36 is connected: #include <LiquidCrystal_I2C.h> // Look for LiquidCrystal I2C library by Marco Schwartz LiquidCrystal_I2C lcd ( 0x 27 , 16 , 2 ) ;  // set the LCD address to 0x3F for a 16 chars and 2 line display #define sensorPin A0 void setup () {   // Begin serial communication at a baud rate of 9600:   Serial . begin ( 9600 ) ;   lcd . init () ;   lcd . clear () ;           lcd . backlight () ;      // Make sure backlight is on     // Print a message on both lines of the LCD.   lcd . setCursor ( 2 , 0 ) ;   //Set cursor to character 2 on line 0   lcd . print ( "Hello world!" ) ;     lcd . setCursor ( 2 , 1 ) ;   //Move cursor to character 2 on line 1   lcd . print ( "LCD Tutorial" ) ; } void loop () {   // Get a reading from the temperature sensor:   int reading ...

Σερβοκινητήρας

  Βασικός έλεγχος σερβομηχανισμού Θα μάθουμε πώς να ελέγχετε έναν τυπικό σερβοκινητήρα, να πηγαίνει εμπρός και πίσω κατά 180 μοίρες, χρησιμοποιώντας ένα «βρόχο for()». Αυτό γίνεται με τη βοήθεια της βιβλιοθήκης Servo, η οποία είναι προεγκατεστημένη βιβλιοθήκη στο Arduino IDE (τόσο εκτός σύνδεσης όσο και σε ηλεκτρονική έκδοση). . Αυτό γίνεται με τη βοήθεια της βιβλιοθήκης  Servo     , η οποία είναι προεγκατεστημένη βιβλιοθήκη στο Arduino IDE (τόσο εκτός σύνδεσης όσο και σε ηλεκτρονική έκδοση).      Χρειαζόμαστε τα παρακάτω:     Arduino IDE Arduino UNO  Σερβοκινητήρας 4,8V - 6V  Καλώδια βραχυκυκλωτήρα. Τυπικοί σερβοκινητήρες Οι τυπικοί σερβοκινητήρες είναι ενεργοποιητές που επιτρέπουν τον ακριβή έλεγχο της θέσης (γωνία). Χαρακτηριστικό  είναι ότι η γωνία του κινητήρα είναι 0 - 180 μοίρες. Με άλλα λόγια, μπορεί να κάνει το μισό μιας περιστροφής. Ένας τυπικός σερβοκινητήρας, όπως και άλλοι κινητήρες, είναι ουσιαστικά απλώς ένας...