Vi điều khiển, thực chấ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ành thấ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ối ngoại vi n
Trang 1BÀI GIẢNG
Phần Cứng Của CPU
Trang 2MỤC LỤC
Trang 31. 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ên một vi mạch tích hợp đơn Khối xử lý trung tâm (CPU) là một bộ vi xử lý được nhiề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ều thà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ạc mà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ực chấ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ành thấ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ối ngoạ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ất hiệ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ện thoạ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à ROM hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), một hoặc vài bộ định thời và các cổ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ác vớ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ên nề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ói riê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ở để tiếp tục nghiên cứu những họ vi điều khiển khác như AVR, PIC, ARM… phục vụ trong quá trình học tập và làm việc sau này
Chúng em chân thành cảm ơn thầy Nguyễn Hồng Quang đã hướng dẫn chúng
em hoàn thành bài tập này
Nhóm 2 – TĐH 4 – K50
Trang 42. MÔ TẢ KĨ THUẬT
2.1 THIẾT KẾ MẠCH
Hai mạch chính sử dụng trong bài tập này là mạch SENSORS để dò đường và mạch VI XỬ LÝ VÀ ĐỘNG CƠ để thu tín hiệu, xử lý và đưa ra tín hiệu điều khiển hai động cơ để dẫn hướng Ngoài ra, để nạp chương trình cho vi điều khiển, chúng em sử dụng mạch nạp ISP loại đơn giản tự làm theo sơ đồ trên mạng Internet
a) 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ên nề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ông nhậ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 IC LM324
để 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 5IC LM324 gồm 4 bộ so sánh
Trang 6Mỗi bộ so sánh được minh họa như hình bên Trong đó, đầu vào đảo nối với cực Anot của led thu và đầu vào không đảo nối với điện áp so sánh từ chiết áp.Khi led ở ngoài nền trắng, mức điện áp trên led thu đo được là 3.0V, ngược lạ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 7Sơ đồ nguyên lý mạch SENSORS:
Sơ đồ mạch in:
Trang 8b) 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 đầu và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 ắc quy 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ác led 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ức nă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ông cầ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ành thậ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ào châ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óa nố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 9truyề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ần dùng
5 chân: GND, MOSI, MISO, SCK, RESET nối với cổng LPT của máy tính thô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ấp nhậ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ạch SENSORS Khi một cặp thu-phát bắt vào vạch đen thì led báo tương ứng sẽ sáng lê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 so với vạch đen, từ đó giúp debug chương trình thuận tiện hơn rất nhiều
Khối LCD HIỂN THỊ
Trong bài tập này chúng ta sử dụng một LCD để giới thiệu cũng như hiển thị những thông tin cần thiết khác, đồng thời học cách giao tiếp giữa hai vi xử lý Do
Trang 10LCD tiêu thụ dòng khá lớn đặc biệt là khi bật đèn nền, làm mau hết ắcquy nên chỉ
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ền sá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 EE
0
V
U ≈
thì độ tương phản là lớn nhất, EE
Do vậy chúng ta sử dụng IC L293D gồm hai mạch cầu H bên trong, mỗi mạch cầu
H dùng điều khiển một động cơ có sơ đồ khối như hình vẽ:
Trang 11Trong 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 12Mạch in tổng hợp:
Trang 13 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 142.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ều khiển hoạt động của vi điều khiển
Trang 15o 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ải quyế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 16Sơ đồ bộ nhớ Ram:
Đối với AT89S52 ngoài 128 byte Ram có địa chỉ từ 30h đến 7Fh thì còn có 128 byte Ram có địa chỉ trùng với các thanh ghi chức năng đặc biệt từ 80h đến FFh Để truy xuất các thanh ghi chức năng đặc biệt ta sử dụng cách định địa chỉ trực tiếp, ngược lại dùng cách định địa chỉ gián tiếp để truy cập 128 byte Ram thêm
2.3 MÔ TẢ THIẾT KẾ CÁC PHẦN KHÁC
Thân xe
Thân xe được làm từ một miếng nhựa tổng hợp, kích thước 15x20 cm, đằng trước có gắn bánh lái có thể quay 360o, do vậy chuyển động của xe phần lớn do hai bánh sau quyết định Hai bánh đằng sau được lắp vào hai trục của động cơ một chiều để lái chiều chuyển động của xe
Hai động cơ sử dụng là động cơ một chiều loại 15V được gắn chặt vào thân xe
Trang 17Mạ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ều khiể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ình dịch
là phần mềm Keil C Ưu điểm của ngôn ngữ Assembler là mã nguồn chạy nhanh
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ển cũ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:
MẠCHSENSORSMẠCH
VI ĐIỀU KHIỂNĐIỀU KHIỂN ĐỘNG CƠ
XE CHUYỂN ĐỘNG
Trang 18Lưu đồ thuật toán điều khiển:
KHỞI TẠOGIỚI THIỆU
DÒ ĐƯỜNGLỆCH
NO
Chương trình con khi bắt vạch đích
VẠCH
2.5 CÁC BƯỚC KIỂM TRA
Kiểm tra điện áp đưa ra từ khối nguồn: 4.99V
Kiểm tra điện áp trên cực Anot led thu khi qua và không qua vạch đen: tốt
Kiểm tra hoạt động của tín hiệu gửi về thông qua led báo: tốt
Kiểm tra hoạt động mạch nạp: tốt
Kiểm tra hoạt động của LCD: tốt
Kiểm tra hoạt động của IC L293: tốt
3. 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ình LCD…
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…
Trang 19Kế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ất quan 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ắp xế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ạch cũng sử dụng thư viện chân linh kiện download trên hai diễn đàn trên đã được chú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ủa cá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 20Xử lý các trường hợp trên như thế nào?
Trong quá trình test xe, nhiều khi Sensors bắt không chuẩn hoặc không ổn định
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ác trườ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ủa hai động cơ không bằng nhau hoặc trường hợp động cơ quay không đúng với chương trình Ví dụ cùng một trường hợp Led báo về nhưng có lúc động cơ quay thuậ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ơn hẳ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, hai bá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ả tuy nhiê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úc quay 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ều khiển LCD Một số hàm điều khiển LCD được hiệu chỉnh từ một số source code trê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 LM7805 phá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 ta chỉ 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 23Bà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ũng như 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ụng mạ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 cao củ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 sensor cầ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ần sensor.Từ đó
xe tự hành có thể di chuyển trên đường bất kì và ta có thể nghiên cứ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 thi robocon), thậm chí có thể là thu dọn rác hay ấn nút mở cửa…!