Pomozite razvoju web mjesta, dijelite članak s prijateljima!

U ovom projektu pokazat ću vam kako dizajnirati i izgraditi jednostavan detektorski krug za određivanje brzine vozila u pokretu ili bilo kojeg pokretnog objekta pomoću Arduino NANO i infracrvenih senzora (IR).

Načelo djelovanja

IR senzori su glavni dio ovog projekta. Praktično, postavku IR senzora možete implementirati na različite načine, ali u ovom projektu koristio sam dva IR senzora reflektivnog tipa, postavljajući ih na udaljenosti od 30 cm jedan od drugog.

IR senzor uključuje IR LED (predajnik) i fototranzistor (prijemnik). Kada objekt prolazi između senzora, svjetlo se odbija od objekta i pada na fototranzistor. Koristi se operacijsko pojačalo IC (LM393) na koje je spojen fototranzistor. Kada je objekt ispred senzora, on šalje logički signal visoke vrijednosti Arduinu.

To jest, kada automobil koji se kreće dođe do prvog IR senzora, on će se aktivirati. Od tog trenutka počinje mjerač vremena, koji će nastaviti odbrojavati sve dok automobil ne dođe do drugog IR senzora.

Odabirom udaljenosti između senzora unutar 5 metara, možete izračunati brzinu kojom će se automobil pomaknuti od prvog senzora do drugog, budući da već znate vrijeme vožnje.

Korištena formula: brzina = udaljenost / vrijeme, gdje

  • Brzina - brzina,
  • udaljenost - udaljenost između senzora,
  • Vrijeme - vrijeme izmjereno Arduino modulom.

Sve izračune i prikupljanje podataka obavlja Arduino, a konačni rezultat je prikazan na LCD modulu 16X2.

Korištene komponente

sastavni diospecifikacijaBrojGdje kupiti
TežakNano Rev3.01veza
IR senzorIR FC-512veza
LCD16X2 (1602A)1veza
Pogonski uređaj12 volti1
prekidačSPST1veza
potenciometar10 kΩ1veza

Nacrt projekta

Sljedeća slika prikazuje dijagram strujnog kruga projekta detektora brzine vozila.

Krug detektora brzine

U Arduinu, pinovi D2 i D3 su prekidi, gdje je D2 int.0 i D3 je int.1. Izlazni kontakti IR senzora povezani su s tim kontaktima.

LCD zaslon je spojen na Arduino D4-D9 pinove, gdje je D4 spojen na RS, D5 je spojen na E, a D6-D9 Arduino je spojen na D4-D7 pinove na LCD-u. Za osvjetljenje LCD-a koriste se igle 15 (A) i 16 (K).

Potenciometar R1 koristi se za ručno podešavanje kontrasta zaslona preko V0.

Opis kontakata LCD modula (1602A):

VSS"-" Snaga modula
VDD"+" Snaga modula
VOKontrolni kontrast zaslona
RSOdabir registra
RWOdabir načina pisanja ili čitanja
EDopušta pristup pokazatelju
DB0-DB7Bitovi sučelja
"+" Pozadinsko osvjetljenje
K"-" Pozadinsko osvjetljenje

programiranje

Na početku koda, zaglavlje datoteke je deklarirano s imenom “LiquidCrystal.h”, koji se koristi za LCD zaslon. U sljedećem retku, kontakti na LCD-u prikazani su u "LiquidCrystal lcd (4, 5, 6, 7, 8)" funkciji. Broj u zagradama prikazuje Arduino pinove koji su spojeni na LCD.

 # uključuju LiquidCrystal lcd (4, 5, 6, 7, 8, 9); 

U redovima 4 i 5 senzor1 i senzor2 su deklarirani kao cijeli brojevi (integer) - to su Arduino izlazi koji su spojeni na IR senzore.

 int sensor1 = 2; int sensor2 = 3; 

Nakon toga se deklariraju 4 cijela broja s imenom Time1, Time2, Time i flag. Gdje je "Time1" izmjereno vrijeme kada je aktiviran "sensor1", a "Time2" je izmjereno vrijeme kada je aktiviran "sensor2". Vrijeme je razlika između Time1 i Time2, što je ekvivalentno vremenu tijekom kojeg je automobil putovao između senzora1 i senzora2, ili senzora2 i senzora1.

 int Time1; int Time2; int Vrijeme; int zastavica = 0; 

Zatim deklariramo cijelu konstantnu udaljenost, koja je udaljenost između IR1 i IR2 senzora u centimetrima. Primjerice, uzeo sam udaljenost od 30 cm i vi, naravno, možete promijeniti svoju vrijednost (po mogućnosti do 5 metara).

 int distance = 30; 

Zatim, varijabla Speed, je deklarirana kao broj s pomičnim zarezom (vrsta float). Koristi se za pohranu brzine vozila.

 brzina plovka; 

Kada se pokrene "void setup ()", aktiviraju se 2 vanjske funkcije za upravljanje prekidima "attachInterrupt (0, fun1, RISING)" i "attachInterrupt (1, fun2, FALLING)". Na primjer, "attachInterrupt (0, fun1, RISING") znači da kada IR2 otkrije pad valova (int.0), prekid će pokrenuti funkciju fun1.

LCD zaslon se pokreće pomoću funkcije "lcd.begin (16, 2)". Briše se pomoću funkcije lcd.clear (). Na zaslonu "SPEED MEASURMENT" ispisana je poruka pomoću funkcije "lcd.print".

 void setup () {attachInterrupt (0, fun1, RISING); attachInterrupt (1, fun2, FALLING); početak (16, 2); lcd.clear (); lcd.print ("BRZO MJERENJE"); } 

void fun1 () počinje kada je aktiviran "interrupt0 (int.0)". U ovoj funkciji trenutačno vrijeme mjeri se pomoću "Time1 = millis ()".

Funkcija void fun2 () je ista kao i “void fun1 ()”, ali počinje kada je aktiviran “interrupt1 (int.1)”.

 void fun1 () {Time1 = millis (); if (flag == 0) {flag = 1;} else {flag = 0;}} void fun2 () {Time2 = millis (); if (flag == 0) {flag = 1;} else {flag = 0;}} 

U "void loop ()", Time se mjeri pomoću "Time1" i "Time2". "Vrijeme" treba biti pozitivno, dakle ako se dodatno koristi. Ali ovaj ciklus se izvršava kada je zastavica = 0, stoga se koristi uvjet "ako". Ako su "Time1" i "Time2" jednaki, "Speed" će biti nula.

Redak 47 provjerava je li (Speed == 0). Ako je taj uvjet istinit, na LCD-u se ispisuje "… .OK ….", što znači da je sustav spreman za uporabu.

Linije 51 i niže su odgovorne za prikazivanje brzine pokretnog objekta na LCD-u nakon što "Time1" i "Time2" postanu nula.

 void loop () {if (flag == 0) {if (Time1> Time2) {Time = Time1 - Time2; Brzina = (udaljenost * 1000) / Vrijeme;} drugo ako (Time2> Time1) {Time = Time2 - Time1; Brzina = (udaljenost * 1000) / vrijeme;} drugo {Brzina = 0;}} if (Brzina == 0) {lcd.setCursor (0, 1); lcd.print ("……. OK ……."); } else {lcd.setCursor (2, 1); lcd.print (brzina); lcd.print ("cm / s"); kašnjenje (10500); Time1 = 0; Time2 = 0; }} 

Cjelovita skica projekta:

Detektor brzine pokretnog objekta na Arduinu (471 bajt, preuzeto: 42)

Prikaz rada

Na donjoj animaciji možete vidjeti demonstraciju projekta. Senzori se nalaze na udaljenosti od 30 cm, a između njih se simulira kretanje ručke. U ovom slučaju brzina kretanja ručke bila je fiksirana na 17 cm / s.

Naravno, taj se razvoj može prenijeti na stvarne uvjete - na cesti, mjerenjem brzine vozila.

Demonstracija projekta

Pomozite razvoju web mjesta, dijelite članak s prijateljima!

Kategorija: