Tipkala i sklopke

Tipkalo, sklopka, mikroprekidač, sklopka s kuglicom i reed sklopka: kako rade, kako ih spojiti na Arduino s pull-up otpornikom i zašto kontakti poskakuju.

Mala četvrtasta tipkala s četiri nožice, velike okrugle tipke u boji, crni mikroprekidač s polugom, sklopka s kuglicom i reed sklopka u staklenoj cjevčici pokraj magneta

Što su tipkala i sklopke?

Tipkalo i sklopka rade isto: spajaju i razdvajaju dva metalna dijela, kontakte. Kad su kontakti spojeni, struja teče. Kad su razdvojeni, ne teče. Razlikuju se po tome što se dogodi kad ih pustiš:

  • Tipkalo spaja kontakte samo dok ga držiš. Kad ga pustiš, opruga ga vrati. Tipkala su, na primjer, tipka zvona na vratima, tipke na tipkovnici i tipke A i B na micro:bitu.
  • Sklopka ostaje onako kako si je namjestio, dok je ponovo ne pomakneš. Sklopke su, na primjer, ona za svjetlo u sobi i ona kojom uključuješ robota Maqueen. U svakodnevnom govoru sklopku često zovemo i prekidač.

Neke sklopke ne pomiče ruka, nego nešto drugo: kuglica koja udari u polugu, nagib ili magnet. Takve su sklopke najjednostavniji senzori.

Kako ih prepoznati?

Četiri dijela, a ispod svakoga njegov simbol. Tipkalo 6 × 6 mm odozgo s četiri nožice: plave crtkane crte pokazuju da su nožice 1 i 2 te 3 i 4 spojene unutra. Mikroprekidač s polugom i nožicama COM, NO i NC. Sklopka s kuglicom, metalni valjak s dvije nožice i kuglicom unutra. Reed sklopka, dvije tanke metalne pločice u staklenoj cjevčici, s magnetom ispod nje. Simboli: tipkalo s tipkom, preklopni kontakt s COM, NC i NO, obična sklopka i sklopka u obrisu staklene cjevčice
  1. Malo tipkalo (6 × 6 mm) ima četiri nožice, ali samo dva kontakta. Nožice 1 i 2 spojene su unutra, kao i nožice 3 i 4. Pritisak spoji par 1 i 2 s parom 3 i 4. Tipkalo zato na breadboard stavljamo preko srednjeg utora, kao na stranici Breadboard. Ako nisi siguran koje su nožice spojene, provjeri multimetrom.
  2. Mikroprekidač je malo tipkalo s polugom. Za pritisak mu treba vrlo mala sila, a kontakti preskoče uz tihi klik. Ima tri nožice:
    • COM (od engleskog common, zajednički) je nožica koja se uvijek koristi,
    • NO (normally open, inače otvoren) je spojen s COM dok je poluga pritisnuta,
    • NC (normally closed, inače zatvoren) je spojen s COM dok poluga nije pritisnuta.
  3. Sklopka s kuglicom (senzor nagiba) je mali metalni valjak s kuglicom unutra. Dok stoji uspravno, kuglica leži na dnu i spaja kontakte. Kad je nagneš ili protreseš, kuglica se otkotrlja i kontakti se razdvoje.
  4. Reed sklopka ima dvije tanke metalne pločice u staklenoj cjevčici. Kad joj približiš magnet, pločice se privuku i dodirnu. Staklo je tanko: nožice ne savijaj tik uz cjevčicu, nego malo dalje.

Ispod svakog dijela je njegov simbol. Na simbolu tipkala crtica s tipkom na vrhu kaže da kontakt drži ruka. Reed sklopka ima obris staklene cjevčice.

Što je u tipkalu?

Tipkalo prerezano po sredini, lijevo pušteno, desno pritisnuto. Brojevi: 1 tipka, 2 metalni poklopac, 3 metalna kupola, 4 kontakti, 5 nožice. Na pritisnutom tipkalu kupola je udubljena i dodiruje srednji kontakt, a narančasta strelica pokazuje put struje od nožice preko kupole do srednjeg kontakta
  1. Tipka je plastični gumb koji pritišćeš prstom.
  2. Metalni poklopac drži sve dijelove zajedno.
  3. Metalna kupola je tanka savijena pločica. Kad je pritisneš, naglo se udubi uz klik, a kad je pustiš, sama skoči natrag. Ona je ujedno i opruga.
  4. Kontakti: rub kupole uvijek leži na vanjskim kontaktima, a srednji kontakt kupola dodirne samo dok je pritisnuta.
  5. Nožice su spojene s kontaktima. Vanjski kontakt ide na jedan par nožica, srednji na drugi.

Na desnoj slici tipkalo je pritisnuto. Kupola se udubila i dodiruje srednji kontakt, pa struja teče od jednog para nožica preko kupole do drugog.

Gdje ih koristimo?

  • Na micro:bit radionici tipkalo zatvara strujni krug u lekciji Breadboard laboratorij. U lekciji Prekidači i branik isprobavamo tipkalo, mikroprekidač i sklopku s kuglicom, a mikroprekidač postaje branik robota Maqueen.
  • Na Arduino radionici tipkala čitamo u lekciji Tipkala kako treba, a mnogo njih na malo pinova u lekciji Mnogo prekidača na malo pinova. U lekciji Prepoznavanje kuglice mikroprekidač broji udarce kuglice, a sklopka s kuglicom pazi da igrač ne gura aparat.
  • U našem fliperu tipke pokreću palice i igru, mikroprekidači su ispod meta, a četiri sklopke s kuglicom čine tilt.

Tipkala i sklopke na Arduino radionici

Od ovog mjesta stranica je za Arduino radionicu.

Pin ne smije biti u zraku

Dok tipkalo nije pritisnuto, pin na koji je spojeno nije spojen ni s čim. Takav pin u zraku čita nasumično 0 ili 1 (zabluda 10). Zato pin uvijek spajamo i preko otpornika, koji ga drži u poznatom stanju dok tipkalo miruje.

Lijevo: tipkalo između pina D2 i GND, a u Arduinu otpornik R od 5V do D2, uključen naredbom INPUT_PULLUP. Desno: tipkalo između 5V i D2, a otpornik od 10 kΩ od D2 prema GND, s naredbom INPUT

  • Pull-up otpornik (lijevo) spaja pin s 5 V. Otpušteno tipkalo daje HIGH, a pritisnuto spaja pin s GND i daje LOW. Arduino Uno takav otpornik ima ugrađen, od 20 do 50 kΩ. Uključuje ga pinMode(pin, INPUT_PULLUP), pa na breadboard ne stavljamo ništa osim tipkala.
  • Pull-down otpornik (desno) spaja pin s GND, a tipkalo je prema 5 V. Pritisnuto tipkalo daje HIGH. Uno ugrađene pull-down otpornike nema, pa stavljamo vanjski od 10 kΩ, kao u lekciji Dva semafora na križanju.

Mi tipkala spajamo s pull-up otpornikom: treba manje dijelova, a na breadboard ne moramo dovesti 5 V. Dok je tipkalo pritisnuto, kroz ugrađeni otpornik teče samo oko 0,14 mA. Kako se tipkalo čita u programu, piše u Vježbi 1 lekcije o tipkalima.

Poskakivanje kontakata

Kad se metalni kontakti udare jedan o drugi, odskoče, kao lopta koja padne na pod, i tek se nakon nekoliko milisekundi smire. Isto se događa kad ih pustiš. Čovjek to ne može primijetiti, ali Arduino tipkalo pročita mnogo puta u svakoj milisekundi i vidi svaki skok:

Napon na pinu s pull-up otpornikom: pri svakom pritisku i otpuštanju nekoliko puta skoči između 5 V i 0 V prije nego što se smiri
Program bez smirivanja jedan pritisak broji kao nekoliko. Na radionici kontakte smirujemo programom: nakon svake promjene neko vrijeme ne gledamo tipkalo (Vježba 3 lekcije o tipkalima) ili koristimo biblioteku Bounce2. Hallov senzor nema kontakata, pa ne poskakuje.

Smirivanje kondenzatorom

Kontakte možemo smiriti i bez programa: kondenzatorom od 100 nF (oznaka 104) izravno preko nožica tipkala. Graf pokazuje napon na pinu D2 pri jednom pritisku i otpuštanju, s ugrađenim pull-up otpornikom. Skokovi kontakata su primjer. U žutom dijelu tipkalo je pritisnuto, a crtkane crte su granice od 3 V i 1,5 V: iznad 3 V Uno sigurno čita 1, a ispod 1,5 V sigurno čita 0.

Dva grafa napona na D2 kroz 32 ms. Gore, bez kondenzatora: pri pritisku u 4. ms i otpuštanju u 20. ms napon nekoliko puta skoči između 5 V i 0 V. Dolje, sa 100 nF: pri pritisku padne na 0 V i u razmacima između skokova naraste najviše do 0,4 V, a pri otpuštanju ostane blizu nule dok kontakti poskakuju, pa polako naraste i prijeđe 3 V oko 25. ms

  • Pritisak: prvi dodir kontakata isprazni kondenzator u trenu. Dok kontakti poskakuju, pull-up otpornik ga puni, ali sporo: u razmaku od 0,3 ms napon naraste samo do 0,4 V, daleko ispod 1,5 V. Arduino vidi jedan čist pritisak.
  • Otpuštanje: svaki ponovni dodir kondenzator opet isprazni. Napon počne rasti tek kad se kontakti smire i 3 V prijeđe 3,2 ms poslije zadnjeg skoka.

Brzinu punjenja određuje vremenska konstanta τ = R · C = 35 kΩ · 100 nF = 3,5 ms (kako se kondenzator puni, objašnjava stranica Kondenzator). Ugrađeni otpornik može biti od 20 do 50 kΩ, pa je τ od 2 do 5 ms. To je dovoljno za tipke, ali otpuštanje uvijek kasni nekoliko milisekundi. Na radionici zato smirujemo programom, u kojem vrijeme sami biramo.

NO ili NC?

Mikroprekidač možemo spojiti nožicama COM i NO ili COM i NC. Program može čitati oba spoja, ali oni se razlikuju kad nešto pođe po zlu. Ako se žica do mikroprekidača spojenog na NO prekine, Arduino misli da prekidač nitko ne pritišće, i to nitko ne primijeti. Kod spoja na NC prekinuta žica izgleda kao stalni pritisak, pa je odmah vidljiva. Tilt u lekciji Prepoznavanje kuglice zato prekinutu žicu prepoznaje kao predugo otvorenu sklopku.

Sklopke koje čuvaju nešto važno, kao one na vratima perilice rublja ili na kraju puta nekog stroja, uvijek spajamo tako da prekid žice zaustavi stroj.

Mnogo tipkala na malo pinova

Uno ima samo 18 slobodnih pinova, a u fliperu ih osim prekidača trebaju i zaslon, lampice i zvuk. Tipkala zato spajamo u matricu: redove i stupce, tako da 12 tipki treba samo 7 pinova. Kako matrica radi i zašto joj trebaju diode, objašnjava lekcija Mnogo prekidača na malo pinova.

Koliku struju podnose kontakti?

Kontakti se troše, a jača struja ih brže uništi: pri razdvajanju između njih preskoči mala iskra. Okvirne vrijednosti za dijelove kakve koristimo:

DioNajveća struja kontakata
tipkalo 6 × 6 mmoko 50 mA na 12 V
reed sklopkaoko 0,5 A, ali manje kad je teret zavojnica
mikroprekidač s polugomnekoliko ampera

Prave vrijednosti navedene su u tehničkoj dokumentaciji (datasheetu) svakog dijela. Tipkalo i reed sklopka zato samo javljaju Arduinu da je nešto pritisnuto. Motor, zavojnicu ili jaku žaruljicu pali tranzistor, a ne kontakt tipkala.

Što smo naučili?

  • Tipkalo spaja kontakte samo dok ga držiš, a sklopka ostaje kako si je namjestio.
  • Malo tipkalo ima četiri nožice: 1 i 2 te 3 i 4 su spojene unutra. Mikroprekidač ima COM, NO i NC.
  • Pin s tipkalom treba pull-up ili pull-down otpornik. S INPUT_PULLUP pritisnuto tipkalo daje LOW.
  • Kontakti poskakuju nekoliko milisekundi. Smirujemo ih programom ili kondenzatorom.
  • Kontakt spojen na NC javlja i prekinutu žicu. Tipkalo samo javlja, a jake struje uključuje tranzistor.

Mali kviz

1. Koja je razlika između tipkala i sklopke?
Tipkalo spaja kontakte samo dok ga držiš, a opruga ga vrati kad ga pustiš. Sklopka ostaje onako kako si je namjestio.
2. Malo tipkalo ima četiri nožice. Zašto ga stavljamo preko srednjeg utora breadboarda?
Nožice 1 i 2 te 3 i 4 spojene su unutra. Preko utora svaki par završi u drugoj polovici breadboarda, pa tipkalo spaja dva različita stupca tek kad ga pritisneš.
3. Mikroprekidač je spojen nožicama COM i NC. Kada su kontakti spojeni?
Dok poluga nije pritisnuta. Kad je pritisneš, NC se odvoji od COM.
4. Tipkalo je spojeno između D2 i GND, s INPUT_PULLUP. Što pročita digitalRead(2) dok je pritisnuto?
LOW. Pritisnuto tipkalo spaja pin s GND, a dok je otpušteno, ugrađeni pull-up otpornik drži pin na HIGH.
5. Zašto program bez smirivanja jedan pritisak broji kao nekoliko?
Metalni kontakti pri pritisku i otpuštanju nekoliko puta odskoče, pa se spoje i razdvoje više puta unutar nekoliko milisekundi. Arduino tipkalo čita mnogo puta u svakoj milisekundi i vidi svaki skok.
6. Zašto motor ne palimo izravno tipkalom 6 × 6 mm?
Kontakti malog tipkala podnose oko 50 mA, a motor treba mnogo više. Kontakti bi iskrili i brzo se istrošili. Tipkalo javlja Arduinu, a motor pali tranzistor.