Xem Mạch đếm món đồ dùng cảm biến hồng ngoại – linh kiện Tháo Máy – Bán lẽ linh kiện điện tử 2024
giới thiệu Mạch đếm dòng dòng dòng mặt hàng dùng cảm biến hồng ngoại
Mạch đếm món đồ dùng cảm biến hồng ngoại : Trong bài viết này, mình sẽ đẳng cấp thiết kế Mạch đếm mặt hàng dùng cảm biến hồng ngoại. cụ thể hơn, mình sẽ sử dụng cảm biến IR để bắt chạm mặt gỡ vật thể để làm bộ đếm .
các Ứng dụng thường dùng :
- Đếm các người đi qua 1 lối đi hoặc lối vào nhất định. Ví dụ, một số tòa nhà dịch vụ TM có các cổng trấn áp sự ra vào hoặc hiện hữu của người dùng thường được sử dụng để Gia Công hóa việc tiêu thụ nguồn năng lượng ;
đếm đồ vật hoặc hàng hóa trong lĩnh vực công nghiệp;
Bạn đang đọc: Mạch đếm mặt hàng dùng cảm biến hồng ngoại – linh kiện Tháo Máy – Bán lẽ linh kiện điện tử
- Vân vân .
Mạch đếm món đồ dùng cảm biến hồng ngoại đếm mặt hàng dùng cảm biến hồng ngoại hoàn toàn có thể được tạo nên không riêng gì với công nghệ IR mà còn với các mạng lưới hệ thống Ảnh nhiệt sử dụng một loạt các cảm ứng bắt chạm chán nguồn nhiệt hoặc sử dụng thị giác máy thường thị hiếu các thuật toán xử lý và xử lý Ảnh phức hợp .
trình làng ứng dụng : bộ đếm với công nghệ tiên tiến IR
khoảng cách từ đối tượng khách hàng là rất cần thiết và trong một số ít tình huống, cảm ứng IR không phù hợp cho các ứng dụng này. Nếu khoảng cách từ vật thể lớn hơn 20-30 cm, cảm biến siêu âm hoàn toàn có thể là chọn lựa tốt hơn .
mình cần phải biết bao giờ cảm biến IR đổi mới trạng thái của nó từ CAO sang THẤP và đếm số lần chuyển đổi này xảy ra: đây được gọi là bắt gặp biến đổi trạng thái . Để biết thêm thông báo về nguyên lý buổi giao lưu của cảm biến hồng ngoại .
Mạch đếm mặt hàng dùng cảm biến hồng ngoại hai chiều
các bộ đếm hạng sang sử dụng phần cứng phức tạp cho quá trình đếm. Project của bản thân là 1 trong những các số trong số bộ đếm đối tượng quý khách đơn thuần dựa trên Arduino và hai cảm biến IR. cụ thể hơn, nó là bộ đếm từ 0 đến 9, trong đó cảm biến đi đầu được sử dụng để đếm các vật đến, cảm biến thứ hai là các người đi ra. Sự độc lạ ( IN – OUT ) được hiển thị trên LED 7 đoạn .
Mô tả phần cứng : LED 7 đoạn
tập kết vào LED 7 đoạn SMA42056, đây là 1 trong trong linh phụ kiện điện tử được thiết kế để hiển thị số và thường được sử dụng trong đồng hồ kỹ thuật số, đồng hồ điện tử và các loại LED số khác.
SMA42056 là LED 7 đoạn cathode chung với 1 đoạn bổ trợ sau cuối được gọi là dấu thập phân hoặc đơn thuần là dấu chấm, được biểu lộ bằng chữ P ( Xem Hình 2 ), được sử dụng để hiển thị các số không hẳn số nguyên. Mỗi đoạn chỉ là một trong đèn LED đơn thuần và thường được bộc lộ bằng các vần âm từ A đến G. LED 7 đoạn không nhúng một điện trở nối tiếp đuôi nhau cho mỗi đèn LED và điều khiển và điều khiển chúng với điện áp một chiều không đổi hoàn toàn có thể làm hư dài lâu các điểm nối : tránh điều này mình sẽ sử dụng một điện trở tiếp diễn đuôi nhau 220 Ω cho mỗi đèn LED .
nghiên cứu và phân tích và lý giải về Demo Bộ đếm hai chiều
Mạch sẽ đếm các đối tượng khách hàng không trong quãng đang đi qua hai cổng IR : cổng đón đầu tạo nên số tăng trên bộ đếm tổng, cổng thứ hai tạo ra số giảm. Vì mạch khá đơn thuần và sử dụng led một chữ số, ứng dụng của chính mình sẽ kiểm tra xem có hai điều đã xảy ra :
- Số đếm không được trình bày bằng số âm ;
- Số đếm không được màn biểu diễn bằng số lớn hơn 9 ;
BOM ( Bill of Materials ) của mạch là :
- Bo mạch Arduino UNO;
- 2 x cảm biến IR fc-51;
- 1 x LED 7 – đoạn SMA42056;
- 8 x R = 220 Ω.
Mạch nguyên tắc
Để điều khiển LED 7 đoạn, mình cần có 7 PIN đầu ra kỹ thuật số như trong Hình 4. Ta cũng cần đọc thông tin từ hai cảm biến IR. Điều này nhu yếu sử dụng 9 chân kỹ thuật số.
bài viết liên quan: linh phụ kiện máy tính xách tay | Linh Kiện PC Chính Hãng, xây đắp Mọi cấu hình
Trong tình huống, ta đã sử dụng chân từ D2 đến D10 của Arduino. Để làm ví dụ hơn, mình đã xác lập số PIN để gán tên riêng cho chúng. Lưu ý rằng, các tham số không đổi tại thời hạn chạy và do đó, được xác lập tại thời hạn biên dịch, mình đang sử dụng các thông tư tiền giải quyết và xử lý .
Sử dụng lệnh “ define ”, mình không riêng gì giảm chiếm hữu bộ nhớ mà còn Gia Công hóa việc thực thi chương trình .
mình được xác lập các chân kỹ thuật số ( từ D2 đến D8 ) mà sẽ sử dụng để điều khiển và điều khiển led là DISP_PIN_x ( x từ 0 đến 6 ). Hai chân đầu ra của cảm biến IR ( D9 và D10 ) đã được xác lập là IR1 và IR2 ./*===========================================================================*/ /* PIN-map. */ /*===========================================================================*/ #define DISP_PIN_0 2 /* digital pin input for segment A */ #define DISP_PIN_1 3 /* digital pin input for segment B */ #define DISP_PIN_2 4 /* digital pin input for segment C */ #define DISP_PIN_3 5 /* digital pin input for segment D */ #define DISP_PIN_4 6 /* digital pin input for segment E */ #define DISP_PIN_5 7 /* digital pin input for segment F */ #define DISP_PIN_6 8 /* digital pin input for segment G */ #define IR1 9 /* digital pin input for ir sensor */ #define IR2 10 /* digital pin input for ir sensor */mình cũng đã xác lập 1 số ít hằng số bổ trợ :
NUMB_OF_PRESET, đó là con số đặt trước được lưu trữ trong Lookup table (tức là 10 vì mình sẽ sử dụng các chữ số từ 0 đến 9);
- NUMB_OF_SEGMENTS, đó là các đoạn hiển thị mà mình đang sử dụng ;
- MAX_NUMB, đó là con số giới hạn khoanh vùng phạm vi đếm lớn nhất .
/*===========================================================================*/ /* Constant values */ /*===========================================================================*/ #define NUMB_OF_PRESET 10 /* Available preset */ #define NUMB_OF_SEGMENTS 7 /* Available segments */ #define MAX_NUMB 9 /* High counting range limit */có 1 số ít giá trị không đổi khác được khai báo trong code của chính mình, dù sao để dễ sử dụng, mình ưu tiên tàng trữ chúng nó vào một mảng bidimensional được gọi là displaySEG là một Lookup table : có thể nói rằng, nó là một tập hợp những mã PIN đặt trước thiết yếu để hiển thị một chữ số nhất định trên màn hình hiển thị hiển thị hiển thị .
không dừng lại ở đó những hàng bộc lộ chữ số, những cột bộc lộ từng đoạn ( LED ) của màn hình hiển thị. Ví dụ, để hiển thị số 0, tổng thể những đoạn ngoại trừ G phải được đặt là CAO ( xem Hình 2 ). Phần tử tiên phong của mảng tàng trữ cấu hình theo nhu yếu của mỗi DISP_PIN để hiển thị 0. bởi thế, mình hoàn toàn có thể sử dụng mảng displaySEG [ 0 ] trong một vòng lặp để đặt từng DISP_PIN theo giá trị đặt trước của bản thân và lấy số 0 của chính mình ./*===========================================================================*/ /* Lookup table. */ /*===========================================================================*/ const byte displaySEG[NUMB_OF_PRESET][NUMB_OF_SEGMENTS] = { /* A B C D E F G */ { HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW }, /* 0 */ { LOW, HIGH, HIGH, LOW, LOW, LOW, LOW }, /* 1 */ { HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH }, /* 2 */ { HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH }, /* 3 */ { LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH }, /* 4 */ { HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH }, /* 5 */ { HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH }, /* 6 */ { HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW }, /* 7 */ { HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH }, /* 8 */ { HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH }, /* 9 */ };mình cần những biến bổ trợ là trạng thái của cảm biến IR được đặt tên là IRx_out ( với x 1 hoặc 2 ), một biến để tàng trữ giá trị đếm và một biến chung được sử dụng giữa những vòng lặp .
int IR1_out = HIGH; /* Avoiding initial false detections. */ int IR2_out = HIGH; /* Avoiding initial false detections. */ int counter = 0; int i = 0;những chức năng được lý giải
setDisplayValue()
Hàm này viết một số ít từ 0 đến 9 trên màn hình hiển thị. cụ thể hơn, tham số n đại diện đại diện cho số hiển thị trên màn hình hiển thị của chính bản thân mình. Lưu ý rằng n % 10 là bắt buộc để tránh hoàn cảnh tràn bộ đệm ở đầu cuối .
void setDisplayValue(int n) { for(i = 0; i < NUMB_OF_SEGMENTS; i++){ digitalWrite(DISP_PIN_0 + i, displaySEG[n % 10][i]); } }initDisplay()
Đây chưa hẳn là một chức năng mà là một macro mà ridefine setDisplayValue chuyển 0 làm đối số. Macro này được sử dụng để đặt lại hiển thị khi khởi động. Lưu ý rằng bằng cách sử dụng những lệnh tiền giải quyết và xử lý, mình vẫn đang tối ưu hóa những bộ nhớ và hiệu suất tránh để tạo phiên bản ghi kích hoạt bổ trợ .
#define initDisplay() setDisplayValue(0)increaseAndDisplay()
hiệu quả này tăng bộ đếm và update màn hình hiển thị. Lưu ý rằng, nếu bộ đếm to hơn MAX_NUMB thì nó sẽ kết thúc thành 1 .
void increaseAndDisplay() { counter++; if(counter > MAX_NUMB) { counter = 1; } setDisplayValue(counter); }decreaseAndDisplay()
lợi ích này giảm bộ đếm và update màn hình hiển thị. Lưu ý rằng, nếu bộ đếm bằng 0 thì nó không có kết quả gì : theo cách này, mình đang tránh những số âm .
void decreaseAndDisplay() { if(counter) { counter--; setDisplayValue(counter); } }Code chính
cài đặt()
TRUNG TÂM SỬA CHỮA ĐIỆN TỬ QUẢNG BÌNH
MR. XÔ – 0901.679.359 – 80 Võ Thị Sáu, Phường Quảng Thuận, tx Ba Đồn, tỉnh Quảng Bình
thiết đặt () đặt những chế độ chân: IRx làm đầu vào và DISP_PIN_x làm đầu ra. Hơn nó gọi là initDisplay () hiển thị số 0 trên SMA42056 của mình .
tìm hiểu thêm thêm: Flycam giá rẻ nên mua loại nào – Linh kiện RC
void cài đặt() { Serial.begin (9600); pinMode(IR1, INPUT); pinMode(IR2, INPUT); /* Setting Display related PIN as OUTPUT */ for(i = 0; i < NUMB_OF_SEGMENTS; i++){ pinMode(DISP_PIN_0 + i, OUTPUT); } initDisplay(); }loop()
Vòng lặp đọc những trạng thái IR được lưu trong chúng nó vào IRx_out. Khi IR bắt gặp một đối tượng người dùng không trong suốt thì giá trị của nó là THẤP. Lưu ý rằng cần có độ trễ để tránh phát hiện sai .
void loop() { IR1_out = digitalRead(IR1); IR2_out = digitalRead(IR2); if(IR1_out == LOW) { increaseAndDisplay(); delay(500); } if(IR2_out == LOW) { decreaseAndDisplay(); delay(500); } delay(100); }
Source: https://dichvubachkhoa.việt nam
Category : Linh Kiện Và Vật Tư
Thông tin liên hệ
- Địa chỉ: Tòa nhà 7A, Lê Đức Thọ, Mai Dịch, Cầu Giấy, Hà Nội
- đường dây nóng: 0968.688.076 – 0769.159.159
- Email: [email protected]
- website: https://trumgiadung.nước ta