Wednesday 28 November 2018

Giao Tiếp Modul Cảm Biến Siêu Âm HC-SR04

Giới thiệu

Siêu âm HC-SR04 Module
Mô-đun siêu âm HC-SR04 hoạt động trên nguyên tắc của hệ thống SONAR và RADAR.
  • Các mô-đun HC-SR04 có máy phát siêu âm, máy thu và mạch điều khiển trên một bảng duy nhất.
  • Module chỉ có 4 chân, Vcc, Gnd, Trig và Echo.
  • Khi một xung từ 10µsec trở lên được trao cho chốt Trig, 8 xung 40 kHz được tạo ra. Sau đó, pin Echo được tạo ra bởi mạch điều khiển trong module.
  • Echo pin vẫn còn cao cho đến khi nó được tín hiệu echo của các xung truyền trở lại.
  • Thời gian mà pin echo vẫn cao, tức là chiều rộng của pin Echo cho thời gian thực hiện cho âm thanh siêu âm được tạo ra để di chuyển về phía đối tượng và quay trở lại.
  • Sử dụng thời gian này và tốc độ của âm thanh trong không khí, chúng ta có thể tìm thấy khoảng cách của vật thể bằng cách sử dụng một công thức đơn giản cho khoảng cách sử dụng tốc độ và thời gian.
Để đo thời gian, chúng tôi có thể sử dụng bộ đếm thời gian 8051. Để biết về 8051 bộ hẹn giờ và công việc của chúng, hãy tham khảo bộ đếm thời gian 8051 của chủ đề trong phần 8051 bên trong

Sơ đồ giao thoa

Siêu âm HC-SR04 Giao diện với 8051
HC-SR04 Mô-đun siêu âm interfacing với 8051

Thí dụ

Ở đây chúng ta hãy thiết kế một ứng dụng trong đó chúng ta sẽ tìm thấy một khoảng cách đến một đối tượng bằng cách interfacing siêu âm mô-đun HC-SR04 với 8051 (ở đây AT89S52 sử dụng) và hiển thị khoảng cách trên 16x2 LCD.
Các bước lập trình
  1. Bộ vi điều khiển 8051 cần truyền ít nhất 10 xung kích hoạt của chúng tôi tới Pin HC-SR04 Trig.
  2. Sau khi nhận được xung kích hoạt, HC-SR04 tự động gửi tám sóng âm 40 kHz và đợi cho đầu ra cạnh tăng ở chân Echo.
  3. Khi chụp cạnh tăng xảy ra tại pin Echo được kết nối với đầu vào 8051, hãy khởi động Bộ đếm thời gian 8051 và một lần nữa đợi cạnh rơi trên chốt Echo.
  4. Ngay khi cạnh rơi xuống được giữ ở chân Echo, vi điều khiển đọc số đếm của Timer. Số thời gian này được sử dụng để tính toán khoảng cách đến một đối tượng.
Tính toán (khoảng cách tính bằng cm)
\ lớn Khoảng cách = \ tfrac {Tốc độ âm thanh \ ast Thời gian} {2}
            Vận tốc âm thanh = 34300 (tính bằng cm trên giây)
Ở đây, tần số dao động của AT89S52 (8051) là 11,0592 MHz thì tần số hẹn giờ 8051 sẽ là 921,6 kHz. Vì vậy, thời gian cần thiết để thực hiện 1 lệnh là 1.085 chúng tôi.
Vì vậy, bộ đếm thời gian được tăng lên sau 1.085 thời gian trôi qua.
ví dụ
 \ lớn = \ frac {34300 \ ast TimerCount \ ast 1.085 \ ast 10 ^ {- 6}} {2}
Chương trình
#include<reg52.h> #include <stdio.h> #include <LCD_8_bit.h> #include <math.h> #define sound_velocity 34300 /* sound velocity in cm per second */ #define period_in_us pow(10,-6) #define Clock_period 1.085*period_in_us /* period for clock cycle of 8051*/ sbit Trigger_pin=P2^6; /* Trigger pin */ sbit Echo_pin=P2^7; /* Echo pin */ void Delay_us() { TL0=0xF5; TH0=0xFF; TR0=1; while (TF0==0); TR0=0; TF0=0; } void init_timer(){ TMOD=0x01; /*initialize Timer*/ TF0=0; TR0 = 0; } void send_trigger_pulse(){ Trigger_pin= 1; /* pull trigger pin HIGH */ Delay_us(); /* provide 10uS Delay*/ Trigger_pin = 0; /* pull trigger pin LOW*/ } void main() { float distance_measurement, value; unsigned char distance_in_cm[10]; LCD_Init(); /* Initialize 16x2 LCD */ LCD_String_xy(1,1,"Distance:"); init_timer(); /* Initialize Timer*/ while(1) { send_trigger_pulse(); /* send trigger pulse of 10us */ while(!Echo_pin); /* Waiting for Echo */ TR0 = 1; /* Timer Starts */ while(Echo_pin && !TF0); /* Waiting for Echo goes LOW */ TR0 = 0; /* Stop the timer */ /* calculate distance using timer */ value = Clock_period * sound_velocity; distance_measurement = (TL0|(TH0<<8)); /* read timer register for time count */ distance_measurement = (distance_measurement*value)/2.0; /* find distance(in cm) */ sprintf(distance_in_cm, "%.2f", distance_measurement); LCD_String_xy(2,1,distance_in_cm); /* show distance on 16x2 LCD */ LCD_String(" cm "); delay(100); } }

No comments:

Post a Comment