Računala za bicikl uređaji su koji su se pojavili na tržištu prije cca 5 godina. Njihova primarna funkcija prikaz je podataka na zaslonu koji su prikupljeni pomoću senzora. Jedan je od najzanimljivijih podataka brzina kretanja, a pomoću nje možemo odrediti prijeđeni put preko mjerenja proteklog vremena ili izračunati potrošenu energiju, koja je najčešće izražena u obliku kalorija. Iako se mogu kupiti na eBayu po cijeni već od 3 dolara, pokazat ćemo vam da se može napraviti jedno takvo računalo. Micro:bit je odlična platforma jer sadrži integrirani 5 x 5 LED zaslon na kojemu se mogu ispisati tražene vrijednosti, a ima i unaprijed ugrađene funkcije (poput Bluetootha) koje nam nude mogućnost povezivanja s pametnim telefonom, ali nam također pruža senzore poput žiroskopa i senzora temperature. Osim toga, troši vrlo malo električne energije pa može koristiti baterijsko napajanje. Sada dolazi onaj „teži“ dio, a to je — kako izmjeriti brzinu kretanja bicikla? Možda ste čuli za senzor Hallova efekta, a to je sitan uređaj, manji od zrna graška, koji može prepoznati postojanje magnetskog polja.
Kako nam to može pomoći? Ako takav senzor učvrstimo za vilicu bicikla, a trajni magnet učvrstimo za žbicu kotača bicikla, svaki puta kada se kotač okrene, naš će senzor dojaviti micro:bitu jedan okretaj. Prilikom okreta kotač će prevaliti put koji je jednak njegovu opsegu, a ako izmjerimo vrijeme tog okretanja, možemo izračunati brzinu koja je jednaka izrazu: brzina = prijeđeni put / vrijeme. Da se ne bismo morali zamarati analognim vrijednostima očitanja senzora Hallova efekta, preporučljivo je kupiti modul s komparatorom napona koji će, ovisno o vrijednostima koje se mogu odrediti pomoću potenciometra na modulu, slati micro:bitu digitalne vrijednosti očitanja. Pri svakom punom krugu kotača senzor će poslati 1 na digitalni ulaz micro:bita, a brzinu ćemo izračunati u programskom kodu uzevši u obzir opseg kotača kao konstantu. Micro:bitov 5 x 5 LED zaslon možda i nije najbolje rješenje za ispis brzine kretanja zbog svoje „tromosti“, tj. sporog ispisa jer na samom zaslonu se može prikazati samo jedna brojka, a dvoznamenkaste vrijednosti moraju se ispisati u obliku slijeda, što se ne izvršava instantno. Ako u trenutku promijenite brzinu kretanja, micro:bit će obraditi te podatke, ali ih zaslon neće moći ispisati u istom trenutku, nego ćete morati sačekati par sekundi.
Korak 1: Spajanje senzora
Senzor Hallova efekta ili senzor magnetskog polja prethodno je uparen s komparatorom napona koji će nam slati digitalne vrijednosti 1 ili 0, ovisno o tome detektira li magnetsko polje ili ne. Samo spajanje prilično je jednostavno jer senzor ima tri priključka. Dva su za napajanje i jedan je za slanje digitalnih vrijednosti prema upravljačkoj jedinici. Njega možemo zalijepiti ljepljivom trakom za vilicu, a magnet za žbice na kotaču.
Raspored nožica senzora magnetskog polja.
Shema spajanja analognog senzora magnetskog polja.
Udaljenost od sredine kotača na koju se postavlja senzor s magnetom nije bitna jer će u svakom položaju jedan okret proći za jednako vrijeme. Ako koristite analognu verziju senzora magnetskog polja bez komparatora napona, očitanje će se morati izvesti u kodu. Postavit ćete uvjet da se, kad očitanje senzora dosegne neku vrijednost, simulira slanje digitalne vrijednosti koju ovdje postižemo komparatorom.
Korak 2: Zamisao programa
Glavna je zamisao mjerenje vremenskog intervala između okretaja kotača i računanje trenutne brzine u tom trenutku pomoću formule za brzinu: v=s/t, s time da nam je put fiksno zadan kao konstantna i on je jednak opsegu kotača. Da bismo dobili što precizniju vrijednost, nije dovoljno računanje opsega pomoću promjera obruča, nego je potrebno krojačkim metrom izmjeriti stvarni opseg. Izračunatu vrijednost brzine ispisivat ćemo na micro:bitovu ekranu, i to u vremenskim intervalima za svakih 10 mjerenja jer je ispisivanje dvoznamenkastih vrijednosti sporo. Sve jedinice koje se koriste trebaju biti u SI sustavu, prijeđeni put u metrima, a vrijeme u sekundama. Dobivena će brzina biti u m/s, a množenjem s 3.6 ćemo dobiti vrijednost u km/h kako bi se dobio malo realniji utisak o brzini.
Prilikom pokretanja programa postavit ćemo vrijednosti varijabli brzine u km/h i brzine u cm/s na vrijednost 0 te vrijednost varijable put na 72, a put nam je ekvivalentan opsegu kotača.
Korak 3: Izrada koda za mjerenje brzine
Prilikom pokretanja programa postavit ćemo vrijednosti varijabli brzine u km/h i brzine u cm/s na vrijednost 0 te vrijednost varijable put na 72, a put nam je ekvivalentan opsegu kotača.
U beskonačnoj petlji vrtjet će se programski odsječak za mjerenje vremena kroz 10 okretaja, programski odsječak za računanje i pretvaranje brzine te na kraju naredbu za ispis vrijednosti brzine u km/h. Naravno, vrijeme između 10 okretaja kotača i brojač postavit ćemo na nulu jer svakim novim prolaskom kroz beskonačnu petlju „forever“ želimo izvoditi program kao da se prvi puta pokreće. While petlja služit će nam da bismo izbrojali točno 10 okretaja kotača. Svakim prolaskom kroz while petlju očitat će se vrijednost s digitalnog ulaza P2, odnosno je li kotač napravio puni krug. Ako jest, onda će se brojač povećati za 1 i digitalno očitanje će se vratiti na 0 kako bi bilo spremno za sljedeći prolazak kroz petlju, a program će se pauzirati na 100 ms i povećat ćemo varijablu „vrijeme decisekunde“ pomoću koje ćemo računati proteklo vrijeme. Naravno, ako kotač nije napravio puni krug, tada se uvjet if neće izvršiti i ponovno će se pokrenuti petlja while.
Zašto vrijeme u 100 ms? Ako uzmemo vrijednost od 1000 ms, što je ekvivalentno 1 sekundi, pauzirat ćemo program na puno vremena, a ako u tom međuvremenu od jedne sekunde kotač napravi puni krug, on neće biti zabilježen! Također pretpostavljamo da je izvođenje naredbi instantno. Vrijeme u „decisekundama“ lako ćemo pretvoriti u sekunde ako ga podijelimo s 10. Budući da je duljina puta, odnosno opseg kotača u centimetrima, i naša brzina koja se dobije pomoću izraza v=s/t također u cm/s, dijeljenjem sa 100 dobit ćemo brzinu u m/s. S obzirom na to da želimo u km/h, brzinu izraženu u m/s pomnožit ćemo s 3,6.
Blokovska shema koda
Napajanje:
Napajanje smo napravili najjednostavnije moguće, koristeći Li-ion bateriju kapaciteta 450 mAh i Zenerovu diodu napona 3 V. Nazivni napon baterije iznosi 3,7 V, a napon pune baterije često doseže 4,1 V. Budući da je micro:bit na baterijskom režimu rada napravljen da radi na 3 V, taj ćemo napon morati nekako stabilno sniziti. Zenerova je dioda prihvatljivo, ali i jeftino rješenje. Ona garantira da će na njoj biti napon od otprilike 3 V, ali kamo će otići ostatak? Naravno, na otpornik. Višak napona koji će biti u rasponu 0,7-1,1 V „pojest“ će otpornik. Dobro je izbjegavati korištenje otpornika pri napajanjima jer sva snaga koja se razvija na njima beskorisno se potroši u toplinu. Budući da su otpornik i dioda spojeni u seriju, ukupna struja koju pojedu micro:bit i dioda prolazit će kroz otpornik. Gubici u takvom spoju često mogu iznositi i 25 %. Uzmite u obzir da će se od baterije kapaciteta 1000 mAh moći iskoristiti samo 750 mAh na micro:bitu, a ostalih će 250 mAh otpasti na gubitak koji se potroši na otporniku.
Iako je možda najbolje rješenje DC-DC konverter na 3 V jer su njegovi gubici često ispod 10 %, mi ga nismo koristili jer ga je teško nabaviti, kao i stabilizatore napona 3 V, koje nismo uspjeli pronaći ni u specijaliziranim trgovinama u Hrvatskoj.
Napajanje pomoću Zenerove diode 3V
Napomena:
Micro:bitov Javascript program za blokovsko programiranje ne podržava decimalne vrijednosti te ih moramo upisivati pomoću razlomaka i to preko matematičke funkcije dijeljenja. Također micro:bit ne sadržava integriranu funkciju mjerenja vremena te samim time otežava bilo kakvo daljnje korištenje tih funkcija u programskom kodu jer ih moramo dobiti na improviziran način, a to i nije baš najpreciznije. Pauziranje programa jako je loša opcija jer time pauziramo apsolutno sve i vrijednosti koje se nalaze na analognim ili digitalnim pinovima micro:bita neće biti očitane za to vrijeme, ali nama je to jedina opcija. Naravno, uzet ćemo u obzir da se naš kotač neće okrenuti ispod 100 ms, što znači da će raditi donekle pouzdano s vrijednostima do 25 km/h. Ako se smanji na 50 ms, maksimalna brzina koju će sklop moći pouzdano izmjeriti iznosi 50 km/h.
Izvođenje naredbi unutar koda nije instantno te smanjivanjem vrijednosti brojača vremena na <50 ms povećavate pogrešku mjerenja. Naprimjer, ako izvođenje naredbi traje 5 ms, a vremenski brojač 50 ms, to znači da će izvođenje naredbi trajati 10 %, od vremena brojača. Ako je vremenski brojač 100 ms, a izvođenje naredbi 5 ms, što je jednako 5 % od vremena brojača. Najbolje je pronaći kompromis jer, kao što smo rekli, povećavanjem intervala vremenskog brojača uvodimo rizik da nam kotač napravi puni krug, a da program ne može očitati. Smanjenjem intervala vremenskog brojača smanjujemo preciznost brojanja.