TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA ĐIỆN TỬ - VIỄN THÔNG
-------------------o0o----------------

BÀI TẬP LỚN
Môn : VI XỬ LÝ
Đề tài :
ĐIỀU KHIỂN CHUYỂN ĐỘNG RÔBÔT
BẰNG ĐỘNG CƠ BƯỚC

Thầy hướng dẫn : Nguyễn Hoàng Dũng
Nhóm sinh viên :
1. Hoàng ĐứcGiang Nguyên
2. Nguyễn Phi Tuấn
3. Phạm Quang Vinh
4. Vũ Thị Thanh Thảo
5.Nguyễn Thu Thủy

HÀ NỘI , THÁNG 5-2006

LỜI NÓI ĐẦU
Sau một thời gian học tập trên giảng đường của trường đại học bách
khoa Hà Nội nói chung hay khoa điện tử viễn thông nói riêng ,chúng em
đã tiếp thu được những kiến thức khoa học và công nghệ. Đặc biệt là
môn vi xử lý do thầy Nguyễn Hoàng Dũng giảng dạy, chúng em đã có cơ
hội chuyển kiến thức lý thuyết thành sản phẩm thực tế qua đề tài “ Điều
khiển chuyển động rôbôt bằng động cơ bước”. Nhận được sự quan tâm
và chỉ bảo của thầy chúng em đã hoàn thành được sản phẩm của mình.
Qua đây chúng em có thêm được nhiều kiến thức thực tế giúp cho công
việc sau này.

Chúng em xin chân thành cảm ơn.

Đặt vấn đề II. III. phát huy nhung kiến thức đã học trong môn vi xử lý. Mục đích thiết kế -Phát huy thành quả ứng dụng của vi điều khiển tạo ra những sản phẩm tiên tiến có độ tích hợp cao về công nghệ. Đề tài Điều khiển chuyển động của rôbồt bằng động cơ bước.Chức năng của hệ thống . + Điều khiển động cơ bước theo đường đi bất kì ( bằng cảm ứng quang). . lùi.Qua đây có thêm nhiều kinh nghiệm giúp ích sau khi ra trường có thể hòa nhập với công nghệ tiên tiến trên xa hội. + Chuyển động thẳng: tiến. . Nội dung đề tài 1.Chuyển động động cơ bước theo ý muốn của người lập trình . + Điều khiển được tốc độ chuyển động của động cơ. -Việc thực hiện đề tài này giúp em tiếp cận với thực tế. phải.Chương I: Mở đầu I. + Chuyển động quay trái. 2.

Sơ đồ khối của hệ thống Khối điều khiển Khối cơ học .Nhiệm vụ thiết kế . Vậy ta làm các bước sau: +Mạch điều khiển động cơ +Thiết kế mô hình động cơ +Viết chương trình điều khiển II.CHƯƠNG II THIẾT KẾ I.Thiết kế điều khiển chuyển động rôbôt bằng động cơ bước.

và một nguồn dòng phù hợp đảm bảo cho động cơ hoạt động. a.Một số đăc tính kĩ thuật của tip 122 . Tuy nhiên những cách làm trên chỉ sử dụng cho những động cơ nhỏ. Có rất nhiều cách làm phục vụ mục đích này.Khối điều khiển Để điều khiển chuyển động của động cơ theo ý muốn cần phải có trình dịch chính xác với chuyển động của động cơ.Thiết kế và phân tích nguyên lý từng khối 1. Với việc điều khiển động cơ chỉ cần dòng qua cuộn dây cỡ 500 mA.III. ULN2803 +DS2003( national semiconductor 2003) . trên thực tế chúng tôi dùng IC opto coupler và IC tip 122 có cấu tạo dùng mạch mắc theo kiểu Darlington . có thể dùng dãy IC loại dãy Darlington côllêctơ hở : +ULN2003.MC1413(motorola).

b. dòng Ic khoảng 5 đến 8 ampe. điều đó phải kích áp và dòng qua động cơ.Với cấu tạo: . Mạch được mắc theo sơ đồ Nhưng trên thực tế ta măc tip 122 với opto coupler để dòng vào cực bazơ nhỏ hơn 120 mA thì ta sẽ mắc đầu vào với 1 điện trở R= 10k. Có rất nhiều cách khác nhau.BCE Với dòng vào cực bazơ có thể đạt khoảng 120 mA . Mặt khác tín hiệu ra là một là 5V.1 số đặc tính kĩ thuật của opto coupler Khi điều khiển động cơ chuyển động trên mặt đất ta phải dùng một động cơ có công suất lớn với mức điện áp là 12V. và một trong những cách hay chính là dùng opto coupler như một khoá chuyển từ 5V sang 12V và đưa trực tiếp nguồn dòng từ nguồn sang động cơ.

Giới thiệu sơ lược về IC 89C51 -IC điều khiển 89C51tương thích với họ MSC51 có đặc điểm sau : + 4K Bytes Flash rom + 128 Bytes Ram + 4 port 8 bit + 2 bộ định thời 16 bit + Có port nối tiếp + Có thể mở rộng bộ nhớ chương trình ngoài 64 K Byte + Bộ xử lý bit .Tuy nhiên cấu tạo của opto coupler(p51) trên thị trường Việt Nam chỉ có 4 chân 1. IC ULN2003 cho dòng vào cuộn dây I<500 mA. D của 2 động cơ bước. B. + Đầu ra nối với các chân A. 5 mà không có các chân còn lại vì không cần thiết. 4. b. 2. C. Sơ đồ nối chân cụ thể giống như hình vẽ tổng quan của mạch điều khiển động cơ sẽ nói tới sau. c. Thiết kế mạch tạo chuyển động dùng ULN2003 : Nối hai IC ULN2003 với : + Đầu vào các chân từ 1-4 của 2 IC lần lượt với đầu ra tương ứng 4 bit thấp và cao của 89C51.Cấu trúc bên trong của 89C51: .

INT\*1 INT\*0 TIMER2 TIMER1 PORT nối tiếp Điều khiển ngắt Các thanh ghi khác 128 byte Ram Rom 4K-8051 OK-8031 Timer1 Timer2 CPU Taïo dao ñoäng Ñieàu khieån bus EA\ RST PSEN ALE Caùc port I\O P0 P1 P2 Port noái tieáp P3 TXD* RXD* T1* T2* .

Khối cơ học a.2 P1.5 P1.3 P2.1 P1.3 Po.0 P1.1 P2.1 Po.5 Po.6 Po. Động cơ bước .7 P1.4 P2.0 32 33 34 35 36 37 38 39 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 8 7 6 5 4 3 2 1 28 27 26 25 24 23 22 21 A15 A14 A13 A12 A11 A10 A9 A8 .0 P2.7 P2.4 Po.4 P1.Sơ đồ chân của 89C51 : 30p 40 19 XTAL1 12MHz 30p 18 29 30 31 9 RD\ WR\ T1 T0 INT1 INT0 TXD RXD Vcc XTAL2 PSEN\ ALE EA\ RET 17 16 15 14 13 12 11 10 Vss 20 2.5 P2.7 Po.2 P2..6 P1.2 Po.Cấu trúc bên trong động cơ bước Po.6 P2.3 P1.

Mỗi khi vòng dây được cấp thì động cơ được gọi là quay 1 bước A A' B B' t C C' t D D' t t Hoạt động của từng cuộn dây trong động cơ bước.B'. .D' C D -Phương pháp điều khiển động cơ bước Các cuộn dây được cấp dòng theo vòng.C'.A B A'.

. Tuy nhiên.Các thành phần cơ học khác Bao gồm các bánh xe : + 2 bánh xe điều khiển chuyển động. chúng em xin sử dụng động cơ bước trên thị trường với các bước khác trong sách: “ABCD”= “1001”. b. được tạo trục thích hợp gắn liền với trục quay của 2 động cơ bước. “0110”.Các cuộn dây ABCD được nạp theo chu trình : “ABCD”= “1001”  “1100”  “0110”  “0011”. “0001”. + 1 bánh xe con gắn liền với thân rôbôt có thể quay mọi hướng xung quanh trục gắn liền đó.C luôn cùng mức điện áp. Lúc đó động cơ sẽ quay ngược chiều kim đồng hồ được 1 vòng . “1110”. Với các cuộn dây B. Muốn động cơ quay thuận chiều kim đồng hồ thì ta chỉ việc thay đổi ngược lại chu trình nạp trên .

điều đó sẽ gây ra chuyển động tịnh tiến của rôbôt. tuỳ theo hướng quay.Hoạt động của rôbôt a. hay sau. tín hiệu thay đổi liên tục sẽ được xuất ra ở cổng P0 đưa vào đầu vào của 4 chân đầu của ULN2003. tín hiệu ra được đưa lần lượt ra 2 động cơ làm cho 2 động cơ chạy cùng lúc với vận tốc như nhau. chúng ta muốn động cơ chuyển hướng.Hoạt động về mặt định tính +Chuyển động tịnh tiến: Khi nguồn 5V cung cấp vào toàn mạch và động cơ. Để thực hiện được ta sẽ thôi không xuất tín hiệu ở 4 bít đầu.IV. . Sơ đồ mạch và hoạt động của rôbôt 1. Lúc đó một động cơ sẽ không còn tín hiệu vào và sẽ không quay. +Chuyển động quay: Sau khi đi đươc quãng đường. Điều đó cũng dẫn đến chuyển động quay của rôbôt.Sơ đồ mạch 2. Lúc này do sức nặng của bánh đủ làm cho động cơ là một trục quay để bánh còn lại quay quanh chúng.

Tốc độ v của động cơ tỷ nghịch với hàm trễ . bằng tìm tòi nhóm đã quyết định dùng một linh kiện đơn giản đó chính la quang trở. cụ thể ở đây là dải đen sẽ tiếp tục khai thác ở ngay sau. 2. Giả sử ở với một hàm delay nào đó tốc độ động cơ là vo(khi tính cả lực ma sát). Thiết kế mạch Trên nhưng kinh kiện đã có sẵn trong cuộc sống.Rôbốt chuyển động theo một đường đi nhất định của người lập trình thì không thể linh hoat trong mọi tình huống.Hoạt động của động cơ về mặt định lượng Tuỳ thuộc vào chương trình chạy cho trễ( delay) bao nhiêu thì tốc độ động cơ sẽ thay đổi bấy nhiêu. 2.1 Sơ đồ mạch .Thiết kế mạch chạy theo đường đi tuỳ ý 1. muốn chuyển thành tốc độ v1 trong giới hạn cho phép thì ta chỉ cần tăng hoặc giảm tỉ lệ nghịch hàm delay với tốc độ động cơ. chúng em lại muốn phát triển thêm về việc điều khiển rôbốt. Băng sự phụ thuộc của điện trở vào quang nhóm đã thiết kế ra mạch để ngăt ngoài vi điều khiển đồng thời chuyển những chương trình chạy phù hợp của động cơ ứng với các ngắt đó hay nói cách khác là xử lý cho đúng những vấn đề trên đường đi của rôbốt.Giải pháp trên rất hiệu quả nhưng chúng cũng có thể thực hiện chuyển động quay của rôbôt bằng cách cho 2 động cơ chuyển động ngược chiều nhau.AF đến 5f. V.5f. Theo tính toán thực tế thì rôbốt có thể chạy được với hàm delay có độ trễ là AF. dẫn đến chuyển động quay như ý muốn.Vì vậy. b.Đặt vấn đề Khi có mạch điều khiển động cơ như trên. chúng em muốn điều khiển rôbôt theo đường đi vạch ra trên mặt đất.

. Khi cấp nguồn 5v cho mạch do quang trở nối tiếp với R nên ta có thể tinh được áp chân lên quan trở băng công thức Vqt= 5. Một tín hiệu được qua cổng not đưa sang chân 12. Vì vây dựa vào các mức điện trở thay đổi ta co thể mắc 1 chân quang trở với âm nguồn và một chân qua trở (r) như hình vẽ. b.2 Ghép nối và hoạt động của mạch trên đường đi a.3 của mạch trên được nối với các chân ngắt của động cơ.Ghép nối: Các chân 2. chân 3 nối với chân 13 của 89C51. Lúc đó ta có mạch đầu ra ở cực C của tranzitor đạt mức 0 và 1 như yêu cầu. Chúng ta tính toán và chon trở R=70k.2. đồng thời điện áp ở mức 1 không quá bé ta sẽ tính được R Trên thực tế chúng ta đo được mức điện áp trên quang trở ở mức màu trắng là 4k và mức màu đen là 40k.Rqt/(Rt+ R) Để cho mức điện áp trên giữa khi cảm nhận màu đen và màu trắng là lớn và điện áp ở mức 0 phải nhỏ hơn một khá nhiều.Hoạt động của mạch Cơ sở: khi chiếu một nguồn sáng vào quang trở các mức điện trở sẽ thay đổi. Tín hiệu này được khuyếch đại bởi tranzitor C828 như hình vẽ. cụ thể là chân 2 được nối với chân 12. còn lại thì đưa sang chân 13 để thực hiện chương trình ngăt như lập trinh.

#00h MOV R4.----------------------------------------------------------org 0h ljmp main .#027h .Như hướng dẫn chi tiết trong lập trình đã làm cho động cơ chuyển động theo vạch đen một cách chuẩn xác. Enable int1 and int 0 mov p2.gf0 MOV R4. DT9 -.#066h B.#00h CLR A MOV MOV MOV MOV MOV l: A.#0ffh p2. Chương trình điều khiển chuyển động của động cơ theo 1 đường đi vạch sẵn . CHANGE THIS gf0: ACALL forward ACALL delay DJNZ R4.#00000000B .----------------------------------------------------------.#077h .#027h .gl0 MOV R4.A A.K48 . . VI. . Lập trình vi điều khiển 1.-----------. CHUONG TRINH DK DONG CO BUOC .----------. CHANGE THIS .INTERRUPT ADDRESS ---------org 0003h ljmp int0 org 0013h ljmp int1 . CHANGE THIS gl0: ACALL tleft ACALL delay DJNZ R4.#066h 7fh.MAIN PROGRAM --------------org 30h main: MOV IE.

#027h ------ .0 MOV 7fh.R1 gr1: ACALL tright ACALL delay DJNZ R4.1 MOV p1.R2 SETB p0.gf1 MOV R1. CHANGE THIS .gr1 CLR p0.A MOV A.p2 ANL A.A MOV A.-----.R1 ACALL tright ACALL delay MOV R1.#027h .#00h MOV IE.A ttr: MOV A.#00h MOV R4.TURN LEFT --------stl: MOV A.0 MOV p1.#10000101B RETI .#00000001b JZ ttr MOV A.R2 SETB p0.gr0 sjmp l .gr0: ACALL tright ACALL delay DJNZ R4. CHANGE THIS gf1: ACALL forward ACALL delay DJNZ R4.-----------------.INT 01 ---------------int0: MOV R2.#00h MOV R4.TURN RIGHT MOV A.-------.7fh JZ stl .

----------------Forward: RR A MOV R1.A ANL A.gf2: ACALL forward ACALL delay DJNZ R4.1 MOV 7fh.gl1 CLR p0.A MOV A.----------------int1: MOV 7fh.#01h MOV IE.A MOV A.R2 INT 01 -------------------- GO FORWARD ----------------- .A ttl: MOV A.#10000001B RETI .#00h MOV IE.R3 MOV p1.p2 ANL A.#10000101B RETI .#11110000b ORL A.#00001111b MOV R3.A ANL A.A MOV A.B RL A MOV R2.gf2 MOV R1.R1 MOV B.R1 ACALL tleft ACALL delay MOV R1.#00000001b JZ ttl MOV A.R1 gl1: ACALL tleft ACALL delay DJNZ R4.

A MOV A.A ANL A.dl1 RET End 2.DELAY PROCEDURE -----------------delay: MOV R1.dl2 DJNZ R1. CHUONG TRINH DK DONG CO BUOC .A ANL A. . DT9 -.A MOV A.---------------TLeft: RR A TURN LEFT -------------------- MOV R1. Chương trình điều khiển động cơ theo một đường đi bất kì (dải đen) .-----------.--------------.R1 RET .INTERRUPT ADDRESS ---------org 0003h ljmp int0 org 0013h .#07fh dl2: DJNZ R2.RET .----------------------------------------------------------.#00001111b MOV p1.#07fh dl1: MOV R2.#00001111b MOV p1.K48 .----------------------------------------------------------org 0h ljmp main . .---------------TRight: RL A TURN RIGHT -------------------- MOV R1.R1 RET .

gf1 MOV R1.R1 gr1: ACALL tright ACALL delay DJNZ R4.A MOV A.R2 SETB p0.#00h l: ACALL Forward ACALL delay sjmp l .A ttr: MOV A.INT 01 ---------------int0: MOV R2.-----------------.p2 ANL A.#066h MOV B.#0ffh MOV p2.#10000101B .MAIN PROGRAM --------------org 30h main: MOV IE.gr1 CLR p0.#066h MOV 7fh.#00h MOV R4.-----.7fh JZ stl . Enable int1 and int 0 mov p2.#027h .0 MOV p1.#00h CLR A MOV A.A MOV A. CHANGE THIS gf1: ACALL forward ACALL delay DJNZ R4.TURN RIGHT MOV A.A MOV A.ljmp int1 .R1 ACALL tright ACALL delay MOV R1.#00000001b JZ ttr MOV A.----------.0 ------ .

#027h .gl1 CLR p0.A MOV A.#00h MOV R4.-------.TURN LEFT --------stl: MOV A.gf2 MOV R1.1 MOV 7fh.#00000001b JZ ttl MOV A.#10000101B RETI .R2 SETB p0.A ANL A.B INT 01 -------------------- GO FORWARD ----------------- .#00h MOV IE.MOV 7fh.#00h MOV IE.R1 ACALL tleft ACALL delay MOV R1.----------------int1: MOV 7fh.A ttl: MOV A.#10000001B RETI .R1 gl1: ACALL tleft ACALL delay DJNZ R4.#01h MOV IE.#10000101B RETI .1 MOV p1.----------------Forward: RR A MOV R1.p2 ANL A.#00001111b MOV R3.A MOV A. CHANGE THIS gf2: ACALL forward ACALL delay DJNZ R4.

--------------. tác giả: Văn Thế Minh.DELAY PROCEDURE -----------------delay: MOV R1.---------------TLeft: RR A TURN LEFT -------------------- MOV R1.A MOV A.R2 RET .A ANL A.R1 MOV B. .#00001111b MOV p1.dl1 RET End VI.A MOV A.R3 MOV p1.#00001111b MOV p1.#11110000b ORL A.#07fh dl1: MOV R2.#07fh dl2: DJNZ R2.Tài liệu tham khảo Kĩ thuật vi xử lý.A ANL A.dl2 DJNZ R1.RL A MOV R2.---------------TRight: RL A TURN RIGHT -------------------- MOV R1.R1 RET .R1 RET .A ANL A.A MOV A.

và các linh kiện khác lấy từ trang web www.com. . Datasheet và các linh kiện lấy từ trang AT89C51. Nếu có điều kiện chúng em xin phát triển thêm về con rôbôt với những tính năng đặc biệt hơn như: cảm ứng đồ vật khi chuyển động hay những tác dụng khác để rôbốt có thể là một công cụ hoàn thiện hơn của con người.Cấu trúc lập trình và họ vi điều khiển 8051. tác giả: Nguyễn Tăng Cường – Phan Quốc Thắng. Một lần nữa chúng em xin cảm ơn thầy chủ nhiệm bộ môn vi xử lý đã tạo điều kiện thuận lợi cho chúng em hoàn thành được bài tập lớn với những kiến thức lý thú.alldatasheet.