Tải bản đầy đủ (.docx) (23 trang)

Thiết kế modul đếm sản phẩm sử dụng cảm biến hồng ngoại và hiển thị trên LCD 16x2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1017.28 KB, 23 trang )

ĐỀ TÀI:
Thiết kế modul đếm sản phẩm sử dụng
cảm biến hồng ngoại và hiển thị trên
LCD 16x2.


MỤC LỤC

2


LỜI MỞ ĐẦU
Trong những năm gần đây cả nước ta đang bước vào cơng cuộc cơng
nghiệp hố hiện đại hố đất nước, sự giáo dục đóng vai trị quan
trọng trong công cuộc này đặc biệt là đào tạo ra đội ngũ có tay nghề
cao biết kết hợp chặt chẽ lý thuyết và thực tiễn vào lao động sản
xuất.
Cùng với sự phát triển của các ngành kỹ thuật điện điện tử, công
nghệ thông tin, ngành kỹ thuật điều khiển và tự động hoá đã và
đang đạt được nhiều tiến bộ mới. Tự động hố q trình sản xuất
đang được phổ biến rộng rĩa trong các hệ thống công nghiệp trên
thế giới nói chung và ở Việt Nam nói riêng. Tự động hố khơng
những làm giảm nhẹ sức lao động cho con người mà cịn góp phần
rất lớn trong việc nâng cao năng suất lao động, cải thiện chất lượng
sản phẩm.
Với mục tiêu cơng nghiệp hố hiện đại hố đất nước, ngày càng có
thêm nhiều xí nghiệp mới sử dụng kỹ thuật cao, đòi hỏi cán bộ kỹ
thuật và kỹ sư điện những kiến thức về điện tử công suất, về truyền
động điện, điều chỉnh tự động truyền động điện, về vi mạch và xử lý
trong công tác kỹ thuật hiện tại.
Để đáp ứng những nhu cầu khó khăn đó em được giao nhiệm vụ làm


đồ án "Thiết kế modul đếm sản phẩm sử dụng cảm biến hồng
ngoại và hiển thị trên LCD 16x2 ".
Việc làm đồ án đã giúp em ôn lại phần lý thuyết đã được học ở
trường, thực hành trên lớp kết hợp với thực tiễn lao động sản xuất
đã giúp em hiểu sâu hơn, biết vận dụng được lý thuyết được học ở
trường vào thực tiễn.
Lời cuối, nhóm em xin chân thành cảm ơn cô “…….” đã nhiệt tình
hướng dẫn và giúp đỡ nhóm em trong suốt q trình làm việc để
nhóm có thể hồn thảnh một cách tốt nhất .

3


CHƯƠNG 1: Tổng quan về hệ thống đếm sản phẩm bằng cảm biến
hồng ngoại
1.1. Nội dung nghiên cứu
Đề tài : Thiết kế mạch đếm sản phẩm sử dụng cảm biến hồng ngoại
và hiển thị kết quả trên LCD 16x2
- Vi điều khiển đọc giá trị từ bộ cảm biến hồng ngoại, xử lý để nhận
dạng có vật cản hay khơng có vật cản, từ đó tăng số đếm khi có vật
cản đi qua.
- Vật được đặt trên hệ thống băng tải và đưa qua cảm biến
- Xuất tín hiệu để hiển thị trên màn hình LCD với giá trị đếm được,
không bị giới hạn số lần đếm và đếm được tất cả các loại vật liệu.
- Khi ấn reset thì sẽ quay về trạng thái ban đầu.
1.2. Khái quát chức năng và nhiệm vụ của các khối trong hệ
thống

Hình 1-Sơ đồ khối của hệ thống


1.2.1. Khối nguồn
* Khối nguồn cung cấp năng lượng cho toàn mạch:
- Nguồn cho Arduino: 0-5V
- Nguồn cho LCD: 2.7-5.5V
- Nguồn cho cảm biến: 0-5V
1.2.2. Khối cảm biến
- Khối cảm biến sử dụng là LED hồng ngoại LM 383 có nhiệm vụ
phát hiện vật cản để đưa ra tín hiệu gửi đến khối hiển thị
1.2.3. Khối xử lý
- Khới xử lý là Arduino UNO R3 có nhiệm vụ xử lý tín hiệu từ cảm
biến và đưa ra tín hiệu để gửi kết quả đến khối hiển thị

4


1.2.4. Khối hiển thị
- Khối hiển thị là hiển thị là màn hình LCD 16x2 có nhiệm vụ hiển thị
tín hiệu dưới dạng số
1.3. Công nghệ sử dụng
- Hệ thống sử dụng module Arduino Uno R3 tích hợp vi điều khiển họ
8 bit ATmega328P-PU để thực hiện các tác vụ đã nêu ở mục 1.1. Với
Arduino, hầu hết thiết bị phần cứng đều được làm sẵn và chuẩn hóa.
Bên cạnh đó, mỗi phần cứng Arduino được hỗ trợ những đoạn code
mẫu do cộng đồng người dùng Arduino cùng phát triển. Chính vì sự
tiện lợi này mà Arduino đã và đang phát triển mạnh trong ngành
điện tử thế giới.

Hình 2-Vi điều khiển AT328P-PU tích hợp trên Arduino Uno R3

5



CHƯƠNG 2: Lựa chọn thiết bị và thiết kế
2.1. Giới thiệu về cảm biến hồng ngoại
- Cảm biến hồng ngoại hay còn được gọi là IR Sensor, chúng là một
thiết bị điện tử có khả năng đo và phát hiện bức xạ hồng ngoại trong
môi trường xung quanh, tên tiếng anh của cảm biến hồng ngoại là
Passive Infrared, viết tắt là PIR dịch sát nghĩa là “hồng ngoại thụ
động”. Cảm biến hồng ngoại (IR Sensor) phát ra các tia vô hình đối
với mắt người, vì bước sóng của nó dài hơn ánh sáng khả kiến (mặc
dù nó vẫn nằm trên cùng một phổ điện từ). Bất cứ thứ gì phát ra
nhiệt (mọi thứ có nhiệt độ trên năm độ Kelvin) đều phát ra bức xạ
hồng ngoại.
* Khối cảm biến sử dụng bộ cảm biến hồng ngoại – module FC-51 sử
dụng IC LM 393 gồm một LED phát và một LED thu hồng ngoại hoạt
động theo nguyên lý như sau:
- LED phát hồng ngoại sẽ phát ra sóng ánh sáng có bước sóng hồng
ngoại.
- LED thu hồng ngoại bình thường có nội trở lớn, khi LED thu bị tia
hồng ngoại chiếu vào thì nội trở giảm xuống tạo ra tín hiệu đưa đến
khối điều khiển.

Hình 3-Module cảm biến hồng ngoại FC-51 sử dụng IC LM393

6


2.1.1. Nguyên lí hoạt động của cảm biến hồng ngoại
- Cảm biến hồng ngoại sẽ hoạt động bằng cách sử dụng một cảm
biến ánh sáng cụ thể để phát hiện bước sóng ánh sáng chọn trong

phổ hồng ngoại (IR). Bằng cách sử dụng đèn LED tạo ra ánh sáng có
cùng bước sóng với cảm biến đang tìm kiếm, bạn có thể xem cường
độ của ánh sáng nhận được. Khi một vật ở gần cảm biến, ánh sáng
từ đèn LED bật ra khỏi vật thể và đi vào cảm biến ánh sáng. Điều
này dẫn đến một bước nhảy lớn về cường độ, mà chúng ta đã biết có
thể được phát hiện bằng cách sử dụng một ngưỡng.

Hình 4-Minh hoa về cách làm việc của cảm biến

2.1.2. Sơ đồ chân
- Vì cảm biến hồng ngoại sử dụng cảm biến ánh sáng, nên sơ đồ rất
giống với cảm biến ánh sáng. Sự khác biệt duy nhất là việc bổ sung
đèn LED hồng ngoại và đầu dò hồng ngoại yêu cầu kết nối với 5V và
nối đất. Các bạn có thể tham khảo mạch thiết kế của cảm biến hồng
ngoại dưới đây để có thể hiểu thêm nhé.

7


Hình 5-Chi tiết về các chân của cảm biến hồng ngoại

* Cách thiết lập cảm biến hồng ngoại:
- Trước khi sử dụng cảm biến hồng ngoại thì chúng ta cần thiết lập
một vài thứ cụ thể để đảm bảo cho việc hoạt động của thiết bị. Lưu
ý là cảm biến hồng ngoại sẽ có nhiều loại khác nhau, tuy nhiên phần
này mình chỉ đề cập đến cảm biến hồng ngoại dạng linh kiện để các
bạn có thể tự học lắp đặt để phục vụ cho việc học hay nguyên cứu
nhé. Loại này sẽ khác với một con cảm biến hoàn chỉnh bán ngồi
thị trường có chức năng cảm biến hồng ngoại bằng cách cấp nguồn
là được.

- Để có thể thiết lập hoạt động của một cảm biến hồng ngoại thì các
bạn cần có những thứ như sau:


Máy dị hồng ngoại 2x



2x đèn LED hồng ngoại trong vỏ



Điện trở 2x 2kΩ (đỏ-đen-đỏ)



Điện trở 2x 220Ω (đỏ-đỏ-nâu)



Dây nhảy màu đỏ 2x



Dây nhảy màu đen 2x



Dây nhảy tín hiệu 2x (có thể có bất kỳ màu nào)


Chú ý : Cần đảm bảo rằng các đèn LED hồng ngoại nằm trong vỏ của
chúng:
1 Chèn IR LED vào phần vỏ lớn hơn với dây dẫn dính ra.
2 Nhấn mạnh đèn LED vào vỏ.
3 Đặt phần vỏ nhỏ hơn trên đèn LED.

8


Hình 6-Đèn led

* Đặt đèn LED hồng ngoại:
Tiếp theo thì chúng ta có thể đặt đèn LED IR vào bảng mạch và nên
lưu ý về chân của thiết bị như sau:
+ Cực dương là chân dài hơn, cạnh tròn
+ Cực âm cực âm là chân ngắn hơn, cạnh phẳng
Tuyệt đối các bạn không được đấu dây sai chân của LED, như vậy sẽ
làm hỏng linh kiện.
2.1.3. Ứng dụng của cảm biến hồng ngoại:
- Cảm biến hồng ngoại là thiết bị có nhiều tính năng nổi bật như: bật
tắt đèn tự động, báo trộm, mở cửa tự động…


Cảm biến hồng ngoại giúp bật tắt đèn tự động: với chức
năng bật đèn tự động khi có người bước vào thì cảm biến
hồng ngoại tự động đèn sẽ sáng lên. Và khi người di chuyển
đến đâu thì đèn sẽ sáng đến đó. Vì thế mà ở các không gian
lắp đặt thiết bị cảm biến hồng ngoại ở những vị trí như hành
lang dùng bật đèn chiếu sáng lối đi hoặc nhà vệ sinh sẽ giúp
cho các khơng gian đó được chiếu sáng ln.




Cảm biến hồng ngoại giúp chống trộm: so với các thiết bị
chống trộm khác thì việc sử dụng thiết bị cảm biến hồng
ngoại giúp chống trộm tốt nhất, bảo vệ được gia đình. Bởi
khi đêm đến nếu có trộm bước vào nhà hay đi qua sân vườn,
ban công của nhà bạn, khi chúng đi ngang qua mắt cảm ứng
mà trộm không xác định được vị trí lắp đặt của cảm biến thì
thiết bị hú cịi và ngay lúc đó thì chủ nhà biết có trộm để đề
phịng và có biện pháp xử lý kịp thời
9




Cảm biến hồng ngoại giúp mở cửa tự động: hiện nay có
nhiều thiết bị cảm biến hồng ngoại được lắp đặt kèm theo
chế độ mở cửa tự động giúp cho người dùng có thể tiện lợi
và linh hoạt hơn khi sử dụng và lắp đặt các thiết bị.

2.2. Giới thiệu về Arduino
2.2.1. Giao diện phần mềm arduino trên máy tính

Hình 7-Giao diện để nhập code arduino

- Arduino là nền tảng tạo mẫu điện tử mã nguồn mở, được sử dụng
nhằm xây dựng các ứng dụng điện tử tương tác với nhau hoặc với
môi trường được thuận tiện, dễ dàng hơn.
- Nền tảng mẫu này giống như một máy tính thu nhỏ, giúp người

dùng lập trình và thực hiện các dự án điện tử mà không cần phải đến
các công cụ chuyên dụng để phục vụ việc nạp code.
- Phần mềm này tương tác với thế giới bên ngồi thơng qua các cảm
biến điện tử, đèn và động cơ.
* Chi tiết phần cứng của Arduino


Cổng USB: (1) là chân cắm để tải mã lập trình từ PC lên chip
điều khiển. Đồng thời đây cũng là cổng giao tiếp serial giúp
truyền dữ liệu từ chip điều khiển vào máy tính.
10










Jack nguồn: (2) để chạy Arduino, bạn hồn tồn có thể nạp
nguồn từ cổng USB ở trên. Tuy nhiên không phải lúc nào cũng
kết nối với máy tính được. Có những dự án cần thực hiện ngoài
trời sẽ cần một nguồn điện khác với mức điện áp từ 9V -12V.
Hàng Header: (3) những chân đánh số từ 0 – 12 là hàng digital
pin. Đây là nơ truyền – nhận các tín hiệu số. Bên cạnh đó sẽ có
một pin đất (GND) và pin điện áp tham chiếu (AREF).
Hàng header thứ 2: (4) chủ yếu liên quan tới điện áp đất,
nguồn.

Hàng header thứ 3: (5) đây là các chân để nhập – xuất các tín
hiệu analog (đọc thơng tin của các thiết bị cảm biến).
Chip điều khiển AVR: (6) bộ phận xử lý trung tâm của toàn bo
mạch. Với mỗi mẫu Arduino khác nhau, con chip này sẽ khác
nhau. Ví dụ trên Arduino Uno thì sẽ sử dụng ATMega328.

Hình 8-Các vùng để kích hoạt arduino

* Một số ứng dụng của Arduino trong đời sống phải kể đến như:






Điều khiển các thiết bị cảm biến âm thanh, ánh sáng.
Làm máy in 3D.
Làm đàn bằng ánh sáng.
Làm lị nướng bánh biết tweet thơng báo khi bánh đã chín.
Arduino có khả năng đọc các thiết bị cảm biến, điều khiển
động cơ,… Chính vì thế mà mã nguồn mở này được c dùng để
làm bộ xử lý trung tâm của rất nhiều loại robot.
11


− Arduino cịn có thể được sử dụng để tương tác với Joystick,
màn hình,… khi chơi các game như Tetrix, phá gạch, Mario…
− Dùng để chế tạo ra máy bay không người lái.
− Điều khiển đèn giao thông, làm hiệu ứng đèn Led nhấp nháy
trên các biển quảng cáo…

− Ngoài ra, Arduino cịn rất nhiều ứng dụng hữu ích khác tùy
thuộc vào sự sáng tạo của người sử dụng.
− Ví dụ: Muốn kết nối Internet thì có Ethernet shield, điều khiển
động cơ thì có Motor shield, kết nối nhận tin nhắn thì có GSM
shield,… Khá đơn giản, chỉ cần tập trung vào việc “lắp ghép”
các thành phần này và sáng tạo ra các ứng dụng cần thiết là
được.

Hình 9-Minh họa về arduino được đấu nối

2.2.2. Board mạch Arduino Uno
− Là bảng mạch vi điều khiển nguồn mở dựa trên Microchip
ATmega328, được phát triển bởi Arduino.cc.
− Bảng mạch được trang bị các bộ chân đầu vào/ đầu ra Digital
và Analog có khả năng giao tiếp với các bảng mạch mở rộng
khác nhau.
− Mạch Arduino Uno phù hợp với những bạn mới tiếp cận và có
đam mê về điện tử, lập trình… dễ dàng sử dụng, xây dựng dự
án cho mình một cách nhanh nhất.
− Arduino Uno được dùng trong lập trình Robot, xe tự hành, điều
khiển bật tắt led…
* Chức năng:
12


- Vi điều khiển (Atmega328P) dùng để lập trình nhúng động cơ, lập
trình led, relay và một số linh kiện điện tử khác.
* Tài nguyên:
- Digital I/O: 14 ( hỗ trợ 6 chân PWM)
- Analog I/O: 6

* Sản phẩm:
- Board mạch vi điều khiển

2.2.3. Sơ đồ chân và các cổng kết nối

Hình 10-Sơ đồ chân chi tiết về arduino

13


2.2.4. Thông số kỹ thuật
Vi điều khiển
Điện áp hoạt động
Điện áp vào khuyên dùng
Điện áp vào giới hạn
Digital I/O pin
PWM Digital I/O Pins
Analog Input Pins
Cường độ dòng điện trên mỗi I/O pin
Cường độ dòng điện trên mỗi 3.3V pin
Flash Memory
SRAM
EEPROM
Tốc độ
Chiều dài
Chiều rộng
Trọng lượng

ATmega328P
5V

7-12V
6-20V
14 (trong đó 6 pin có khả năng băm
xung)
6
6
20 mA
50 mA
32 KB (ATmega328P)
0.5 KB được sử dụng bởi bootloader
2 KB (ATmega328P)
1 KB (ATmega328P)
16 MHz
68.6 mm
53.4 mm
25 g

Hình 11-Bảng thông số kĩ thuật

2.3. Giới thiệu về LCD 16x2
2.3.1. Phân tích sơ đồ chân

14


Hình 12-LCD và chi tiết các chân

- Chân số 1 - VSS : chân nối đất cho LCD được nối với GND của mạch
điều khiển
- Chân số 2 - VDD : chân cấp nguồn cho LCD, được nối với VCC=5V

của mạch điều khiển
- Chân số 3 - VE : điều chỉnh độ tương phản của LCD
- Chân số 4 - RS : chân chọn thanh ghi, được nối với logic "0" hoặc
logic "1":
+ Logic “0”: Bus DB0 - DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở
chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ
“đọc” - read)
+ Logic “1”: Bus DB0 - DB7 sẽ nối với thanh ghi dữ liệu DR bên
trong LCD
- Chân số 5 - R/W : chân chọn chế độ đọc/ghi (Read/Write), được nối
với logic “0” để ghi hoặc nối với logic “1” đọc
- Chân số 6 - E : chân cho phép (Enable). Sau khi các tín hiệu được
đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho
phép của chân này như sau:
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào thanh ghi
bên trong khi phát hiện một xung (high-to-low transition) của tín
hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát
hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus
đến khi nào chân E xuống mức thấp
- Chân số 7 đến 14 - D0 đến D7: 8 đường của bus dữ liệu dùng để
trao đổi thơng tin với MPU. Có 2 chế độ sử dụng 8 đường bus này là:
Chế độ 8 bit (dữ liệu được truyền trên cả 8 đường, với bit MSB là bit
15


DB7) và Chế độ 4 bit (dữ liệu được truyền trên 4 đường từ DB4 tới
DB7, bit MSB là DB7)
- Chân số 15 - A : nguồn dương cho đèn nền
- Chân số 16 - K : nguồn âm cho đèn nền

2.3.2. Thông số kĩ thuật của sản phẩm LCD 16x2:
- Điện áp MAX : 7V
- Điện áp MIN : - 0,3V
- Hoạt động ổn định : 2.7-5.5V
- Điện áp ra mức cao : > 2.4
- Điện áp ra mức thấp : <0.4V
- Dòng điện cấp nguồn : 350uA - 600uA
- Nhiệt độ hoạt động : - 30 - 75 độ C
2.3.3. Giao tiếp I2C
2.3.3.1 Cấu tạo

Hình 13-I2c ngồi đời

Chuẩn giao tiếp I2C arduino thường sẽ sử dụng hai đường truyền tín
hiệu:


Một đường xung nhịp đồng hồ (hay cịn gọi là SCL) chỉ do
Master phát đi (Bình thường là ở mức 100kHz và 400kHz. Mức
cao nhất là 1Mhz và 3.4MHz).



Một đường dữ liệu (hay còn gọi là SDA) theo 2 chiều.
16


Hầu hết thiết bị đều có thể cùng được liên kết vào một bus I2C.
Nhưng bạn đừng lo về việc sẽ nhầm lẫn giữa các thiết bị. Mỗi công
cụ đều sẽ được phân biệt bởi một địa chỉ riêng, với một quan hệ

chủ/tớ tồn tại trong toàn bộ thời gian kết nối.

2.3.3.2. Nguyên lý hoạt động
- Mỗi một thiết bị hồn tồn có thể hoạt động như là dụng cụ nhận
hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận. Hoạt động
truyền hay nhận còn dựa trên việc dụng cụ đó là chủ (master) hay tớ
(slave).
- Một dụng cụ hay một IC khi liên kết với bus I2C, ngoài một địa chỉ
(duy nhất) để phân biệt, nó cịn được quy định là thiết bị chủ hay tớ.
- Vì trên một bus I2C thì quyền điều khiển thuộc về cơng cụ chủ.
Cơng cụ chủ nắm vai trị tạo xung đồng hồ cho toàn hệ thống. Khi
giữa hai thiết bị chủ-tớ giao tiếp ngoại vi thì dụng cụ chủ có chức
năng tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ từ đầu tới
cuối quá trình giao tiếp ngoại vi. Cơng cụ chủ sẽ giữ vai trị chủ
động, cịn cơng cụ tớ sẽ đóng vai trị bị động trong việc giao tiếp bên
ngoài.

17


2.4. Sơ đồ mạch đấu nối

Hình 14-Sơ đồ đấu bản vẽ điều khiển hệ thống

18


CHƯƠNG 3: Lập trình và triển khai hệ thống
3.1. Lập trình điều khiển hệ thống
3.1.1. Sơ đồ thuật tốn


19


3.1.2. Giái thích sơ đồ thuật tốn :
− Khi bắt đầu chạy chương trình, tồn mạch được cấp nguồn và
LCD được khởi tạo
− Với trạng thái ban đầu, vật cản sản phẩm sẽ được gán a=0
− Các trường hợp :
• Cảm biến phát hiện vật cản : nhận tín hiệu đưa ra a=a+1
và hiển thị giá trị bằng số đếm trên LCD rồi kết thúc
chương trình
• Khơng có vật cản : cảm biến khơng nhận được tín hiệu và
giữ ngun giá trị hiển thị gần nhất trên LCD và kết thúc
chương trình
− Ấn nút reset, lại quay về trạng thái ban đầu, vật cản sản phẩm
sẽ được gán a=0
3.3.3. Chương trình phần mềm
#include <math.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int a = 0;
void setup()
{
// pinMode(13, OUTPUT);
pinMode(A0,INPUT_PULLUP);
Serial.begin(9600);
lcd.init();
lcd.backlight();
}

void loop()
{
int button = digitalRead(A0);
lcd.clear();
lcd.setCursor(3, 1);
lcd.print(a);
lcd.setCursor(1,0);
20


lcd.print("so san pham la");
if (button == 0) /// khi co san pham di qua
{
a= a+1;
lcd.setCursor(3, 1);
lcd.print(a);
delay(1000);
}
else{
lcd.setCursor(3,1);
lcd.print(a);
delay (1000);
}
}
3.2. Mô phỏng
3.2.1. Thiết kế mạch sơ đồ mạch trên Fritzing

21



22


3.2.2. Kiểm tra lỗi và chạy chương trình

3.3. Lắp mạch thực

23



×