Arduino radionica: Digitalni metar

Nakon malo veće pauze evo i novog projekta!

Za razliku od prethodnog, ova skalamerija se može upotrebiti i van kuće, tačnije može se nositi sa sobom. Reč je o digitalnom metru.

Kratak pregled projekta:


 

Nekome će ovo dobro doći, a nekome može poslužiti samo kao projekat za usavršavanje znanja. Ovaj uređaj, kao što i naziv kaže, meri razdaljinu. Za merenja umesto da se koristi konvencionali metar možemo koristiti i digitalni, u uradi-sam varijanti. 🙂

Mana ovog metra je to što nije dovoljno tačan da bi se vršila ozbiljna merenja, kao i to što ima opseg merenja od približno 3cm do 3m.

Potrebno:

  • Arduino
  • Ultrazvučni senzor HC SR04
  • LCD displej 16×2
  • 10kΩ trimer potenciometar
  • malo više kratkospojnika
  • protoploča

Ja sam ga izradio tako da je prenosiv, koristio sam Arduino Pro Mini, dakle napravio sam ploču na kojoj su svi elementi i za napajanje sam koristio 9V bateriju, kao što možete videti na slikama i snimku iznad.

Povezivanje

LCD se povezuje pomoću 12 pinova, od kojih su 2 za napajanje displeja, 2 za napajanje osvetljenja, 1 za podešavanje kontrasta i ostali za kontrolu prikaza na displeju. Ono što će vam najverovatnije praviti problem je podešavanje kontrasta koje se vrši 10k trimerom, jer on je veoma osetljiv, ili bolje rečeno, biće zamorno podešavati kontrast. 🙂 Ostalo ne bi trebalo da predstavlja problem, ako se sve poveže kao na datoj šemi.


sema


Napajanje se može vršiti preko USB kabla kojim povezujete Arduino, ili putem eksternog izvora, tj. baterije. U slučaju da koristite bateriju kao što sam ja, morate prilagoditi naponski nivo za naš digitalni metar. Ukoliko bi doveli 9V neminovno je da će nešto pregoreti, zato možete ili napraviti razdelnik napona (sa 9 na 5), ili ako koristite Arduino Pro Mini, pozitivan kraj napajanja mu dovesti na RAW pin, koji predstavlja „sirovo“ napajanje. Arduino Pro Mini će sam spustiti naponski nivo koliko mu odgovara i na njegovim VCC pinovima imaćemo 5V, dakle onda sve ostale elemente povezujete na 5V.

Ono što je meni predstavljalo problem, osim kontrasta, je to da sam imao polupraznu bateriju pa metar nije hteo da radi kako treba, ili nije prikazivao razdaljinu, ili nije ništa prikazivao, i zbog toga sam ga napajao preko starog punjača za telefon. Ako se odaberete za takvo napajanje onda nećete imati problema.

Takođe da napomenem, u zavisnosti od proizvođača, raspored pinova na LCD mogu biti različiti. Ja sam dao šemu koja je odgovarala za LCD koji sam koristio, uglavnom je to taj raspored pinova ali pre nego što povežete najbolje bi bilo proveriti u datasheetu modela koji ste kupili.

Kod

Kada je sve povezano dolazi red i na program:

#include <LiquidCrystal.h>          
LiquidCrystal lcd(2,3,4,5,6,7);

int trigPin=13;
int echoPin=11;
float pingTime;
float targetDistance;
float speedOfSound=776.5; //brzina zvuka u miljama
float cm;
 
void setup() {
  
  Serial.begin(9600);
  lcd.begin(16,2);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  
  lcd.setCursor(0,0); //ciscenje ekrana
  lcd.print("                ");
  lcd.setCursor(0,1);
  lcd.print("                ");
 
}
 
void loop() {
  
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2000);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(15);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(10);
  
  pingTime = pulseIn(echoPin, HIGH);
  pingTime=pingTime/1000000; //konvertovanje pingTime u sekunde
  pingTime=pingTime/3600; //konvertovanje pingTime u sate
  targetDistance= speedOfSound * pingTime;  //brzina puta vreme
  targetDistance=targetDistance/2; //razdaljinu delimo sa 2 jer je vreme od slanja impulsa do detekcije duplo vece
  targetDistance= targetDistance*63360;    //konvertovanje milja u ince
  cm = targetDistance * 2.54; //konvertovanje inca u cm
  
  lcd.setCursor(0,0);
  lcd.print("Razdaljina:");
  lcd.setCursor(8,1);
  lcd.print(cm);
  lcd.setCursor(13,1);
  lcd.print("cm");
  
}


Ovaj metar radi tako što emituje kratke ultrazvučne impulse pomoću modula koji ih ujedno i emituje i detektuje, dakle ima i predajnik i prijemnik na sebi. Jedan od valjaka senzora je predajnik, a drugi prijemnik. Arduino na osnovu razlike u vremenu slanja i detektovanja impulsa proračunava razdaljinu od predmeta o koji se impuls odbio. Nešto slično ste verovatno videli na smartphonima pored zvučnika sa prednje strane, 2 kružića, to takođe služi za merenje razdaljine samo što nije u pitanju ultrazvučni već IR senzor. 🙂

To je to! Ako nešto ne radi kako valja počnite ispočetka. 🙂 Do sledećeg teksta, pozdrav!


Autor:

Aleksa Ristić

Student, bloger, veliki entuzijast i kreativac

Advertisements

One thought on “Arduino radionica: Digitalni metar

  1. Повратни пинг: Kućni alarm v1.0 – Arduinisti

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s