Tekućine koje koristimo u svakodnevnoj upotrebi, neovisno o njihovoj namjeni, često se drže u nepraktičnim ambalažama poput boca i spremnika. Doziranje tekućina iz takvih spremnika može biti vrlo nepraktično i složeno. Pumpice koje djeluju na pritisak su praktične, ali služe samo za doziranje malih količina i nalaze se na bočicama sapuna. Što ako želimo dozirati 100, 200 ili 1000mL? Upravo zbog većih količina tekućine koristit ćemo električnu pumpu s kojom ćemo upravljati pomoću Arduina.
Arduino mega kao mozak operacije, a kako je kod nezahtjevan, mogu se koristiti i slabije verzije poput Arduino Nano.
Pritiskom na određene tipke korisnik će moći odabrati željenu količinu tekućine koju želi dozirati. Dio pumpe na kojem se nalazi propeler će biti uronjen u tekućinu, a transport do željenog mjesta doziranja će se prenositi savitljivim crijevom. Nešto poput aparata za kavu i sokove, ispod završetka crijeva postavlja se posudica u koju će se ispustiti željena količina tekućine. Pumpa ne mjeri količinu protoka tekućine, već ćemo taj podatak morati saznati ručnim ispitivanjem, tj. mjerenjem količine tekućine koju pumpa transportira u određenom periodu.
Uređaj neće biti precizan pri doziranju malih količina, ali se pri većim količinama poput 1000mL, što je 1 litra, odstupanje od par mL neće ni osjetiti. Bitno je voditi računa o viskoznosti tekućine jer mini pumpa nije u stanju transportirati guste tekućine, a treba napomenuti da su svi dijelovi plastični i da se tvari koje nagrizaju plastiku ne smiju dovoditi u kontakt s pumpom i crijevima. Najpoželjnije je uređaj koristiti za doziranje vode.
Cijena projekta:
1. Spajanje komponenata
Kroz pumpu tekućine ne teče velika struja i možemo ju uključivati uz pomoć tranzistorske sklopke, ali mi ćemo koristiti relej kako bismo je u budućnosti mogli zamijeniti s pumpom veće snage. Važno je voditi računa o mogućim poboljšanjima koja bi se mogla dogoditi u budućnosti kako ne bismo morali raditi cijeli novi uređaj.
Četiri tipkala služe za odabir željenog volumena tekućine koji želimo ispustiti. Vrijednosti volumena su: 100, 200, 500 i 1000mL. Po želji je moguće dodati veći broj tipkala s različitim vrijednostima.
LCD zaslon nećemo dodavati jer nema potrebe za ispisivanjem vrijednosti koje smo odabrali, ali po želji se može dodati i u nastavku će biti dodatak za LCD.
Tipkala se spajaju u seriju s pull-down otpornikom vrijednosti 10kΩ. Otpornik služi kako bi osiguravao prolazak vrlo malene struje koja ne može izazvati oštećenja. Otpornik se u seriju s otpornikom spaja na GND i VCC, tj. 5V. Otpornik ide na stranu GND, a tipkalo na VCC stranu. Spoj između tipkala i otpornika potrebno je dovesti na digitalni ulaz s kojega će se očitavati stanje tipkala.
Sama pumpa nije velike snage, stoga nije za očekivati kako će moći transportirati tekućinu na visine veće od 30cm u odnosu na položaj pumpe. Ako je potrebna veća visina, potrebno je koristiti i pumpe većih snaga.
Potrebno je napomenuti kako pumpa nije potopna, iako je „vodootporna“, ne podnosi potpuno uranjanje zbog elektromotora. Idealno bi bilo uroniti samo dio s propelerom.
U spremniku tekućine najbolje je napraviti rupu promjera 24mm i kroz nju ugurati pumpu do pola i zalijepiti s obje strane vrućim ljepilom i oblikovati ljepilo kako ne bi nigdje propuštalo. Na taj način smo sigurni da nam dio u kojemu se nalazi elektromotor neće biti pod vodom. Naravno, postoji opcija vertikalnog i horizontalnog postavljanja pumpe, ali treba uzeti u obzir da pri horizontalnom postavljanju pumpa neće moći izbaciti sav volumen tekućine. Vanjski dio pumpe možemo po želji još izolirati, a pločicu na kojoj se nalazi relej obavezno moramo zaštiti, po mogućnosti u nepropusnoj kutijici jer je u blizini tekućine, u našem slučaju vode. Pločicu s tipkama i Arduinom također treba zaštiti i staviti na dostupno mjesto. Preporuka je relej držati uz Arduino, a pločicu s tipkama fizički odvojiti i staviti na prednju stranu spremnika ili držača kako bi bilo dostupno i jednostavno za korištenje.
Kako smo i rekli, zbog pull-down otpornika od 10kΩ teče vrlo mala struja. I = U / R. I = 5V/10000Ω = 0.5mA. Odabir tipkala nije bitan jer tako malu struju može podnijeti gotovo svako tipkalo. Nepotrebno je kupovati tipkala namijenjena za 230V i 10A jer to možemo realizirati i mikroprekidačima. Prvenstveno zbog cijene izrade.
LCD zaslon u ovoj verziji nismo koristili, ali ako se odlučite za njega, poslužit će bilo koji s prikazom 16 znakova u 2 reda ili 16 u 4 reda.
SHEMA SPAJANJA:
2. Arduino kod:
Kod je pojednostavljen i ne sadrži opciju pauziranja rada pumpe. Zašto? Vrijeme koliko je uključena pumpa riješili smo delay opcijom, a ona stopira cijeli program na definirano vrijeme u milisekundama. Kako u stopiranom vremenu program ništa ne radi, pokušaj prekidanja procesa bio bi uzaludan, tj. pritiskali bismo dodatno tipkalo za stopiranje, ali Arduino ne bi ispitivao je li pritisnuto ili ne zbog pauziranja programa. Svaki uređaj bi trebao imati sigurnosni gumb „gljivu“ koja će zaustaviti ili prekinuti trenutni proces jer sigurnost čovjeka je na prvom mjestu. Mi to nećemo raditi jer je ovo demonstracijski sklop i ništa ne može poći po zlu jer se koriste mali naponi i struje, osim da prolijemo nešto tekućine. Naravno, sigurnosno tipkalo i vremenski delay možemo riješiti na drugi način, ali to nije današnji zadatak, pa ćemo to pokazati neki drugi put.
Na početku koda definiramo imena digitalnim pinovima radi lakšeg snalaženja u kodu. Koristili smo digitalne pinove 2-5 za tipkala te im nadjenuli imena „T1,…,T5“. „T“ kao tipkalo, a broj kao skraćeni volumen tekućine koja se odabire tipkalom, npr T2 za 200ml. Na digitalni pin 7 priključili smo relej za pumpu te ga nazvali „Pumpa“. Također smo postavili vrijednosti stanja svakog tipkala na 0.
U void setup-u definirali smo ulazne i izlazne pinove. Tipkala funkcioniraju kao ulazna jer šalju/prekidaju impuls koji Arduino očitava. „Pumpa“ je izlazni pin jer šalje signal prema tranzistorskoj sklopki koja uključuje/isključuje relej, a on pumpu.
U void loop-u očitavamo stanja tipkala i zatim ispitujemo koje od njih je pritisnuto. Za odgovarajuće tipkalo pokreće se pumpa na odgovarajuće vrijeme. Vrijeme je izraženo u milisekundama i predstavlja vrijeme potrebno da pumpa transportira određeni volumen tekućine. To vrijeme je potrebno otkriti ručno i različito je za različite pumpe. U našem se slučaju za pritisnuto tipkalo T5 pokreće pumpa i uključena je 50000ms što je 50 sekundi, koliko joj je potrebno za 500mL tekućine. Možemo reći da vrijeme linearno raste, a za veće volumene je pogreška manja jer je prvih nekoliko sekundi pumpi potrebno da napuni crijevo vodom ako je ispražnjeno, a to ovisi o položaju crijeva.
Ispitivanje funkcionalnosti sklopa i odziva na tipke
Važno je zapamtiti da program u vremenu dok je pauziran ne registrira nikakve promjene stanja na tipkalima jer ih ne može ispitivati.
Podsjetnik za LCD:
lcd.print(); - ispisuje poruku na LCD-u.
lcd.setCursor(x,y); - postavlja pokazivač na određenu poziciju. X označava mjesto u retku, počevši s lijeve strane. Y označava mjesto u stupcu, počevši odozgo. 0,0. prvi red, prvi stupac.
lcd.clear(); - briše poruku s LCD-a
lcd.backlight(); - pali pozadinsko osvjetljenje
lcd.noBacklight(); - gasi pozadinsko osvjetljenje
Programski kod za ovaj projekt pronađite na poveznici.