Vi điều khiển có thể được coi là một máy tính được tích hợp trên một chíp, nó thường được sử dụng để điều khiển các thiết bị điện tử.. Vi điều khiển, thựcchất, là một hệ thống bao gồm mộ
Trang 21. GIỚI THIỆU CHUNG
Vi xử lý (viết tắt là µP hay uP), đôi khi còn được gọi là bộ vi xử lý, là một
linh kiện điện tử máy tính được chế tạo từ các tranzito thu nhỏ tích hợp lên trênmột vi mạch tích hợp đơn Khối xử lý trung tâm (CPU) là một bộ vi xử lý đượcnhiều người biết đến và được ví như bộ não của máy tính nhưng ngoài ra nhiềuthành phần khác trong máy tính cũng có bộ vi xử lý riêng của nó, ví dụ trên cạcmàn hình, ổ đĩa cứng… cũng có các bộ bộ vi xử lý
Vi điều khiển có thể được coi là một máy tính được tích hợp trên một chíp,
nó thường được sử dụng để điều khiển các thiết bị điện tử Vi điều khiển, thựcchất, là một hệ thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thànhthấp (khác với các bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khốingoại vi như bộ nhớ, các module vào ra, ADC, DAC, timer, ngắt Ở máy tính thìcác mô đun thường được xây dựng bởi các chíp và mạch ngoài
Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng Nó xuấthiện khá nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điệnthoại, đầu đọc DVD, thiết bị đa phương tiện, dây chuyền tự động, v.v
Hầu hết các vi điều khiển ngày nay được xây dựng dựa trên kiến trúc Harvard,kiến trúc này định nghĩa bốn thành phần cần thiết của một hệ thống nhúng.Những thành phần này là lõi CPU, bộ nhớ chương trình (thông thường là ROMhoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), một hoặc vài bộ định thời và cáccổng vào/ra để giao tiếp với các thiết bị ngoại vi và các môi trường bên ngoài -tất cả các khối này được thiết kế trong một vi mạch tích hợp Vi điều khiển khácvới các bộ vi xử lý đa năng ở chỗ là nó có thể hoạt động chỉ với vài vi mạch hỗtrợ bên ngoài
Đề tài thiết kế xe chạy theo đường vẽ sẵn được chúng em thực hiện dựa trênnền kiến thức về mạch điện tử, vi xử lý nói chung và vi điều khiển họ 8051 nóiriêng được thầy giáo hướng dẫn trên lớp Thực hiện đề tài này là tiền đề để chúng
em nắm được những kiến thức cơ bản về vi điều khiển 8051, từ đó tạo cơ sở để
Trang 3a) MẠCH SENSORS
Đường đi của xe được vẽ bằng vạch đen nằm trên nền trắng Để xe nhận rađược đường đi, chúng em sử dụng các cặp led thu phát hồng ngoại đặt gần nhau.Các led phát phát ra ánh sáng đỏ, các led thu có điện trở phụ thuộc vào có nhậnđược ánh sáng phản xạ từ đường đi hay không
Khi cặp thu phát ở vị trí nền trắng, ánh sáng từ led phát phát ra phản xạ trênnền trắng và tới led thu Led thu thu được ánh sáng này thì điện trở giảm xuống,điện áp ở cực Anot của led thu gần về 0 Ngược lại, ở vị trí vạch đen, ánh sáng từled phát phát ra không phản xạ lại được do bị vạch đen hấp thụ Led thu khôngnhận được ánh sáng này nên điện áp ở cực Anot của nó gần bằng 5 V Điện áp ra
từ led thu được đem so sánh với điện áp chuẩn đã được tinh chỉnh hợp lý qua ICLM324 để cho ra mức logic 0-1, đưa vào vi điều khiển xử lý
Hình ảnh minh họa như sau:
Trang 5Khi led ở ngoài nền trắng, mức điện áp trên led thu đo được là 3.0V, ngượclại, mức điện áp thu đo được khi bắt vào vạch đen là 4.6 V Điện áp so sánh(Vref) được đặt qua biến trở 10k là 3.8 V.
Khi ở ngoài nền trắng:
Vled thu <Vref nên Output=1
Khi bắt vạch đen:
Vled thu >Vref nên Output=0
Để bắt đường được tốt, chúng em sử dụng 6 cặp led thu phát được bố trí nhưsau (LT: Led thu; LP: Led phat):
LT3LP3
LT4LP4
Trang 6Sơ đồ nguyên lý mạch SENSORS:
Sơ đồ mạch in:
Trang 7b) MẠCH VI ĐIỀU KHIỂN VÀ ĐỘNG CƠ
Khối NGUỒN:
Trong khối nguồn chúng ta sử dụng 1 bình ắc quy khô 12V.Mặt khác hệthốngiều khiển cần phải có nguồn 5V để cung cấp cho khối VI ĐIỀU KHIỂN vàkhối SENSORS Để tạo nguồn 5V DC chúng ta sử dụng IC ổn áp 7805, với đầuvào gồm đất chung của toàn hệ thống và nguồn 12 VDC lấy trực tiếp từ nguồn ắcquy IC ổn áp LM7805 được lắp một tản nhiệt loại nhỏ để tản bớt nhiệt khi hoạtđộng giúp khối nguồn cũng như toàn bộ mạch hoạt động ổn định
Mạch nguồn như sau:
Trong mạch nguồn có sử dụng một cầu chì kí hiệu là SW2 phòng xảy ra sự cốchập mạch, nhằm bảo vệ cho mạch nguồn cũng như các khối liên quan khác
Khối VI ĐIỀU KHIỂN
Khối này gồm có Vi điều khiển AT89S52, mạch RESET, mạch tạo dao động, cácled báo vạch về từ mạch SENSORS, Jumpers đầu vào dùng để nạp ISP
+ Vi điều khiển AT89S52 được chúng ta sử dụng vì nó có đầy đủ những chứcnăng của vi điều khiển AT89C51 Ngoài ra còn có thêm một timer (timer2) và có
bộ nhớ Flash, công nghệ nạp ISP (In System Programming) tức là nạp mà khôngcần tháo chip ra khỏi mạch, giúp việc lập trình và test rất thuận tiện Giá thànhthậm chí còn rẻ hơn AT89C51
+ Mach RESET có chức năng reset lại hoạt động của vi điều khiển, được nối vàochân số 9 của vi điều khiển là chân tích cực cao Khi chân số 9 được set lên 1 thì
vi điều khiển được reset lại Để chống rung khi ấn nút, chúng ta dùng một tụ hóanối song song với nút ấn
+ Mạch DAO ĐỘNG sử dụng thạch anh 12Mhz, như vậy một chu kì máy là 1us,rất thuận tiện cho việc tính toán và lập trình Tuy nhiên có hạn chế là không thể
Trang 8truyền thông với máy tính qua cổng COM (đòi hỏi thạch anh 11.0592Mhz).Thạch anh này được nối đất với tụ gốm 33p để lọc nhiễu.
+ Các Jumpers dùng để nạp ISP sử dụng mạch nạp ISP loại đơn giản, chỉ cầndùng 5 chân: GND, MOSI, MISO, SCK, RESET nối với cổng LPT của máy tínhthông qua jack DB25 Sử dụng kiểu nạp ISP này rất thuận tiện khi lập trình vàtest xe vì không phải tháo chip (hạn chế hỏng, gẫy chân chip), tốc độ nạp chấpnhận được, ít khi bị lỗi, chi phí thấp
+ Các led báo vạch về dùng để phản ánh tình trạng của các led thu phát ở mạchSENSORS Khi một cặp thu-phát bắt vào vạch đen thì led báo tương ứng sẽ sánglên và ngược lại Nói cách khác, các led báo này phản ánh vị trí lệch của xe sovới vạch đen, từ đó giúp debug chương trình thuận tiện hơn rất nhiều
Trang 9chỉ sử dụng LCD với những trường hợp cụ thể Để bật tắt đèn nền, chúng ta sửdụng một bóng thuận A1015, được điều khiển bởi chân P0.7 của vi điều khiển.Khi P0.7=0 thì bóng thông, cực A của LCD được nối với nguồn 5V, đèn nềnsáng và ngược lại Ngoài ra trong khối còn sử dụng một biến trở 10k tạo điện áp
ra đưa vào chân VEE của LCD để điều chỉnh độ tương phản Khi điện áp U VEE ≈ 0
thì độ tương phản là lớn nhất, U VEE ≈ 5V thì độ tương phản là nhỏ nhất.
Khối ĐỘNG CƠ
Để điều khiển động cơ quay thuận ngược nhanh chậm, chúng ta không thểdùng trực tiếp các chân của vi điều khiển được vì dòng ra của chân vi điều khiểnnhỏ Do vậy chúng ta sử dụng IC L293D gồm hai mạch cầu H bên trong, mỗimạch cầu H dùng điều khiển một động cơ có sơ đồ khối như hình vẽ:
Trang 10Trong khối này còn sử dụng một công tắc nguồn, có tác dụng bật tắt động cơkhi điều chỉnh vị trí của xe trước khi chạy.
Bảng chân lý mô tả hoạt động của L293D trên một kênh như sau
Giả sử ta cần điều khiển động cơ bên trái Ba chân cần điều khiển là IN1, IN2,EN1 và đầu ra OUT1 OUT2 của L293D được nối với hai dây của động cơ một chiều
Trang 11Mạch in tổng hợp:
Trang 12 Mạch nạp ISP
Mạch nạp sử dụng là loại mạch ISP đơn giản, có sơ đồ như hình dưới:
• Mạch nạp thực tế:
Trang 132.2 MÔ TẢ PHẦN CỨNG CPU
Cấu trúc chung của bộ vi điều khiển 8051:
Một số thành phần chính của bộ vi điều khiển 8051:
CPU: bộ não của vi điều khiển, thực hiện các phép toán số học, logic
Các cổng vào ra để nhận, truyền dữ liệu ra các mạch ngoại vi khác ởbên ngoài hoặc cũng có thể dùng để định địa chỉ khi sử dụng bộ nhớngoài
Rom: nơi lưu trữ bộ nhớ chương trình để CPU thực hiện các lệnh, điềukhiển hoạt động của vi điều khiển
Trang 14o 32 đường xuất nhập
o 3 bộ định thời 16 bit
o 8 nguồn ngắt
o Hỗ trợ truyền thông máy tính cổng nối tiếp
Với các đặc điểm trên, vi điều khiển AT89S52 hoàn toàn đủ mạnh để giảiquyết yêu cầu đặt ra của đề bài
Sơ đồ chân của vi điều khiển AT89S52 được minh họa như hình dưới:
Các chân được sử dụng trong bài tập này gồm: các chân nguồn, chân dao động, chân reset, các chân nạp ISP, cổng P3 để nhận tín hiệu led báo về, cổng P0
để điều khiển động cơ, cổng P2 điều khiển LCD
Trang 15Hai động cơ sử dụng là động cơ một chiều loại 15V được gắn chặt vào thânxe.
Trang 16Mạch SENSORS kết nối với mạch vi điều khiển qua sợi cáp 8 sợi trong đó cóhai sợi cấp nguồn 5V và 6 sợi truyền tín hiệu của mạch SENSORS về cho vi điềukhiển.
Hình ảnh xe:
2.4 THIẾT KẾ PHẦN MỀM
Chương trình viết cho vi điều khiển sử dụng ngôn ngữ Assembler với trìnhdịch là phần mềm Keil C Ưu điểm của ngôn ngữ Assembler là mã nguồn chạynhanh và gọn, giúp sinh viên nắm chắc cấu trúc phần cứng của vi điều khiểncũng như các bước lập trình phần mềm Tuy nhiên nhược điểm của ngôn ngữ này
là khó hiểu và rắc rối
Sơ đồ khối điều khiển được tóm tắt như sau:
Trang 18KHỞI TẠO GIỚI THIỆU
DÒ ĐƯỜNG
LỆCH
YES NO
Cua trái
Or Cua phải
Đi thẳng
YES NO
Chương trình con khi bắt vạch đích
VẠCH
2.5 CÁC BƯỚC KIỂM TRA
Trang 193. KẾT QUẢ ĐẠT ĐƯỢC VÀ PHÂN TÍCH LỖI
Trong quá trình thực hiện bài tập lớn, chúng em gặp một số khó khăn sau và
đã từng bước khắc phục
Tài liệu
Đây là lần đầu tiên thực hiện một sản phẩm thực dựa trên nền kiến thức học tậpđược nên nhiều vấn đề chưa được thông suốt Trước hết, là cách làm xe về cơkhí, thiết kế mạch, dò đường ra sao, cua xe trái phải thuận ngược, lập trìnhLCD…
Khắc phục: học hỏi từ hướng dẫn của thầy giáo, các bạn trong lớp đặc biệt là
các bạn đã từng tham dự cuộc thi Robocon, học hỏi từ các anh các khóa trước,tham khảo nguồn tài liệu trên mạng Internet…
Kết quả: Học hỏi được nhiều kinh nghiệm làm robot đơn giản từ các nguồn
trên, các tutorial về thiết kế mạch, thiết kế cơ khí, băm xung, ngắt…
Vật tư
Vấn đề: Các linh kiện điện tử khá sẵn (chợ Trời, Hàn Thuyên…) Tuy nhiên
một số chi tiết cơ khí khó tìm hơn: các bánh xe, thân xe… Nguồn ắcquy cũng rấtquan trọng, cung cấp năng lượng cho toàn bộ xe
Khắc phục: Tìm mua trong chợ Trời, các cửa hàng bán đồ cơ khí, cửa hàng
bán đồ cũ, cửa hàng sửa chữa xe máy…
Kết quả: Tìm mua đủ các vật tư và tiến hành lắp ráp hoàn chỉnh toàn bộ xe
gồm mạch điều khiển và kết cấu cơ khí
Thiết kế mạch
Vấn đề : Chưa có kinh nghiệm về thiết kế mạch thực tế, cần giải quyết các vấn
đề: vẽ mạch nguyên lý và mạch in sử dụng hai phần mềm Orcad Capture vàOrcad Layout trong bộ sản phẩm Orcad v10.0 của hãng Cadense, các kĩ thuật sắpxếp linh kiện, đi dây, kĩ thuật làm mạch thủ công bằng phương pháp là
Khắc phục : Học cách sử dụng các phần mềm nói trên với nhiều tutorial trên
các diễn đàn như www.dientuvietnam.net, www.picvietnam.com , trong mạchcũng sử dụng thư viện chân linh kiện download trên hai diễn đàn trên đã đượcchúng em chỉnh sửa lại
Về cách làm mạch bằng phương pháp là: học trên mạng và kinh nghiệm củacác bạn đã từng làm mạch Tuy nhiên để ra được hai mạch chạy ổn định thì cũng
đã hỏng mất vài cái
Trang 21Khắc phục: Để thu thập các trường hợp, dùng tay đẩy xe đi theo đường đặc
biệt là các khúc cua và ghi tín hiệu hiển thị trên các led báo về, tính toán cáctrường hợp lệch trái, lệch phải, lệch ít, lệch nhiều, không lệch, bắt vạch đích… Hàn chắc các mối hàn mạch SENSORS, kiểm tra cáp nối với mạch vi điều khiển,điều chỉnh biến trở để lấy điện áp so sánh hoạt động ổn định đưa vào IC LM324
là 3.8V
Kết quả:Mạch hoạt động ổn định, SENSORS bắt rất tốt, tín hiệu báo về trên
mạch vi điều khiển chuẩn xác
Vấn đề 2: Cách điều chế độ rộng xung PWM để đưa vào chân IN1, IN3 điều
khiển chiều quay cũng như tốc độ quay của hai động cơ truyền động
Trong quá trình test xe, chúng em gặp các vấn đề: băm xung xe không chạy,cùng băm xung với hai giá trị bằng nhau vào IN1 và IN3 nhưng tốc độ quay củahai động cơ không bằng nhau hoặc trường hợp động cơ quay không đúng vớichương trình Ví dụ cùng một trường hợp Led báo về nhưng có lúc động cơ quaythuận, lúc quay ngược
Khắc phục: Hiệu chỉnh chương trình băm xung cho hợp lý Mô phỏng chương
trình nói riêng cũng như mạch vi điều khiển, động cơ nói chung bằng phần mềm
mô phỏng rất mạnh là Proteus bản v7.2 SP6
Phát hiện điện trở treo ở cổng P0 bị hỏng, một chân điện trở có giá trị nhỏ hơnhẳn các thanh khác dẫn đến tín hiệu vào chân IN của L293 bị ảnh hưởng, haibánh không quay đều nhau
Trang 22Một số trường hợp ở về thu thập tín hiệu SENSORS có cùng một kết quả tuynhiên lại có những các giải quyết khác nhau nên động cơ lúc quay thế này, lúcquay thế khác Do vậy chúng em đã hiệu chỉnh lại.
Kết quả: Động cơ chạy đúng, bám đường tốt, xử lý góc cua khá, xe chạy ổn
định, theo đúng chương trình đã lập sẵn
Hạn chế: Xe chuyển động chưa được trơn mà bị giật một chút, tốc độ xe chưa
cao, mômen động cơ còn nhỏ khó vượt qua chướng ngại vật nhỏ để đi tiếp
Vấn đề 3: Hiển thị trên LCD
Bài tập này sử dụng LCD để hiển thị, dùng chế độ 8bit qua cổng P2 để điềukhiển LCD Một số hàm điều khiển LCD được hiệu chỉnh từ một số source codetrên các diễn đàn, đảm bảo hoạt động tốt, hiển thị chính xác, ổn định
Tuy nhiên khi bật đèn nền của LCD thì dòng tiêu thụ lớn dẫn đến LM7805phát nóng (mặc dù đã gắn tản nhiệt nhỏ) và ắcquy mau hết điện Do vậy chúng tachỉ bật đèn LCD khi cần hiển thị ở những trường hợp cần thiết
Hình ảnh sản phẩm hoàn chỉnh
Trang 234. KẾT LUẬN
Qua quá trình làm bài tập lớn vi xử lý với sản phẩm thực tế là chiếc xe chạytheo đường đi này, chúng em đã học hỏi được rất nhiều kiến thức: thiết kế xe,thiết kế mạch, làm mạch in, lập trình, hiệu chỉnh… Điều quan trọng là chúng em
đã làm được một sản phẩm dựa trên những kiến thức đã học vì từ lý thuyết rathực tế là cả một quãng đường dài
Bài tập này giúp chúng em hiểu thêm cấu trúc của Vi điều khiển 8051 cũngnhư tập lệnh của nó, tạo tiền đề để tiếp tục nghiên cứu các vi điều khiển ứng dụngmạnh hơn như AVR, PIC, ARM…., các bộ PLC, các hệ thống SCADA, DSC…,phục vụ cho quá trình làm việc, nghiên cứu sau khi tốt nghiệp
Chúng em chân thành cảm ơn thầy giáo Nguyễn Hồng Quang đã hướng dẫn,truyền đạt kiến thức để có thể hoàn thành được bài tập này
5. MỞ RỘNG ĐỀ TÀI
Để có được chiếc xe tự hành có khả năng di chuyển bắt vạch với độ phức tạp caocủa đường đi, xe đạt tốc độ lớn thì đề tài có thể nghiên cứu tiếp như sau:
• Sử dụng hộp số và động cơ có momen lớn hơn,
• Sử dụng encoder để phản hồi tốc độ, xây dựng vòng điều khiển để động cơ
Tuy nhiên việc xe tự hành di chuyển bắt vạch không có ứng dụng thực tế lắm,nên để có thể phát triển đề tài thành ứng dụng có tính thực tiễn thì phần sensorcần phát triển để có thể nhận biết vật cản nói chung chứ không chỉ là vạch đenđơn thuần Công nghệ xử lý ảnh có thể là một hướng phát triển hợp lý cho phầnsensor.Từ đó xe tự hành có thể di chuyển trên đường bất kì và ta có thể nghiêncứu phát triển phần cơ khí và các bộ điều khiển để xe có thể thực hiện một sốcông việc nào đó khi gặp vật cản như nhặt đồ bị rơi, gắp quà (trong cuộc thirobocon), thậm chí có thể là thu dọn rác hay ấn nút mở cửa…!
Trang 246. TÀI LIỆU THAM KHẢO
1 Bài giảng trên lớp
2 Cấu trúc và lập trình họ vi điều khiển 8051 – Nguyễn Tăng Cường
Trang 25Thạch anh 12Mhz 1 Hàn Thuyên 2k
/* Truong Dai hoc Bach Khoa Ha Noi
Khoa Dien-Bo mon Tu dong hoa
Bai tap lon vi xu ly: Thiet ke xe do duong
Giao vien huong dan : NGUYEN HONG QUANG
Sinh vien thuc hien : Nhom 2 - TDH4 - K50
Thanh vien : DANG DINH HOANG
NGUYEN DUC NGHIA
LE CAO SON LUU BACH TAN
LCD DATA P2 ;cong 2 la cong du lieu LCD
BUSY BIT LCD.7 ;bit bao ban
E BIT P1.5 ;chan EN
RW BIT P1.6 ;chan RW doc ghi
RS BIT P1.7 ;chan RS lenh hay du lieu
;BIT Sensors:
trai1 BIT P3.6 ;sensor1
trai0 BIT P3.5 ;sensor2
phai0 BIT P3.2 ;sensor3
phai1 BIT P3.1 ;sensor4
truoc BIT P3.4 ;sensor5
sau BIT P3.3 ;sensor6