Pull-up / pull-down otpornik

Uvod

Prilikom korištenja mikrokontrolera ili bilo kojeg drugog digitalnog logičkog uređaja susresti ćemo pojam pull-up otpornika. Oni nam osiguravaju da zadržimo željeno stanje logičkog kruga bez obzira na uvjete. Tako se pojavljuje stanje visoke impedancije kada određeni pin nije postavljen u HIGH ili LOW stanje, već umjesto toga pluta (floata) između ta dva stanja. Dobar primjer ovoga su input pinovi Croduina. Probajte svojoj Croduino pločici zadati kod koji će u Serial monitoru zapisivati digitalna očitanja nekog pina. Očitanja koja ćete dobiti trebala bi biti LOW, odnosno 0 (nula). Međutim, ako na isti pin spojite kablić za eksperimentalnu pločicu, a njega na eksperimentalnu ili ga jednostavno dodirujete rukom, primjetiti ćete da se stanje mijenja iz LOW u HIGH i obratno. Za pin kažemo da floata što je ne prihvatljivo, posebno za ovako precizne mikrokontrolere.

Screen-Shot-2015-05-19-at-09.34.41
Pull-up otpornik na Croduino Basic pločici

Pull-up vs Pull-down otpornik

Pull-up i pull-down otpornici nisu nikakva posebna vrsta otpornika već jednostavno neka stalna vrijednost spojena preko, uglavnom, +5V i pina odnosno gnd-a i pina. Otpornik između pina i +5V zovemo pull-up otpornik, dok onaj između pina i gnd-a pull-down otpornik. Uobičajena vrijednost tog otpornika je 4.7kΩ ili 10kΩ, ali više o tome nešto kasnije. Kada koristiti pull-up a kada pull-down otpornik, proučiti ćemo na primjeru push-up tipke iliti tipkala.

Untitled Sketch_bb
Jedno tipkalo spojiti ćemo na pull-down otpornik (na slici gore lijevo), a drugo na pull-up otpornik (na slici gore desno). Vrijednost otpornika može biti 10kΩ koje ste dobili u CSP setu. Napisati ćemo kod koji će nam u Serial monitoru ispisivati stanja tipkala. Za pisanje kod možete se poslužite primjerom iz Arduino IDE-a pod File - Examples - Digital - Button. Alternativno, možete koristiti kod ispod. Ono spojeno preko pull-down otpornika davati ća nam stanje 0 (LOW) kada je neaktivno, odnosno 1 (HIGH) kada je aktivirano. Obratno će biti s očitanjima na PINu 6 koje je spojeno preko pull-up otpornika. Sada smo sigurni da se tipkalo neće aktivirati "samo od sebe".

const int tipkalo1 = 7;   
const int tipkalo2 = 6;    

void setup() {
  pinMode(tipkalo1, INPUT);
  pinMode(tipkalo2, INPUT);
  
  Serial.begin(9600);
}

void loop() {

  Serial.print("Stanje tipkala 1: ");
  Serial.println(digitalRead(tipkalo1);
  Serial.print("Stanje tipkala 2: ");
  Serial.println(digitalRead(tipkalo2);
  
}

Računanje vrijednosti otpornika

Vrijednost ovih otpornika ovisi o dva faktora. Prvi je potrošnja, rasipanje, energije. Ako je vrijednost otpornika premala HIGH (+5V u primjeru iznad) napon će prolaziti kroz pull-up otpornik te nepotrebno rasipati energiju kada je krug zatvoren. Energija će se trošiti na zagrijavanje. Ovo stanje se naziva strong pull-up i treba ga izbjegavati kada sklopu nije potreba velika struja. Drugi faktor je napon kada je sklop otvoren, tj. tipka pritisnuta. Ako je vrijednost otpornika prevelika, ulazni napon može biti premal da ga mikrokontroler registrira kao promjenu. Takvo stanje naziva se weak pull-up. Croduino napon od 3V ili veći digitalno registrira kao HIGH, sve ostalo LOW.
Oubičajeno je da se koriste otpornici koji su barem 10 puta manje od vrijednosti otporna ulaznog pina. Za Croduino, naravno i sve druge Arduino pločice, koje koriste 5V napon tipična vrijednost otpornika je 1-10kΩ. Za senzore se preporučuju vrijednosti 1-5kΩ, a dobra vrijednost za krenuti je 4.7kΩ. Koristite Ohmov zakon ukoliko želite izračunati točnu vrijednost pull-up otpornika za određeni modul.

Interni pull-up otpornici

Atmega328 chipovi, koje se nalaze na Croduino Basic i Croduino Pico, imaju integrirani 20kΩ pull-up otpornike. Ako koristite Arduino pločicu s nekim drugim mikrokontrolerom, vrijednost integriranog pull-up otpornika možete pronaći na ovom linku. Pozivamo ga prilikom definiranja pina pomoću INPUT_PULLUP.

pinMode(pin, INPUT_PULLUP);

Leave a Reply