Giới thiệu về sensor địa bàn CMPS03

Một phần của tài liệu XÂY DỰNG ROBOT DI ĐỘNG TRÁNH VẬT CẢN DỰA TRÊN CÁC SENSOR SIÊU ÂM VÀ SENSOR ĐỊA BÀN (Trang 28)

Module địa bàn trên trợ giúp cho robot. Nó sử dụng sensor trường Philips KMZ51, loại n ày có đủđộ nhạy để nhận biết từ trường của trái đất. Hai lối ra của nó liên kết theo hình tam giác và mỗi trong số chúng sử dụng để tính toán chiều của các thành phần từ trường trái đất. Ta có một số ví dụ sử dụng mô hình rút gọn này cho các hệđiều khiển lớn hơn và ở những ứng dụng phổ biến hơn.

Hình 4.5: Sensor địa bàn

Mô hình này yêu cầu nguồn điện 5V và dòng khoảng 15mA.Có hai cách kiểm tra thông số của module này: tín hiệu PWM ở đầu số ra 4 hay giao tiếp là I2C được cung cấp ở các đầu số 2 và 3. Chân Chức năng 1 Nguồn 5V 2 SCL 3 SDA 4 Tín hiệu PWM 5 Không dùng 6 Định cỡ 7 50/60Hz 8 Không dung 9 GND

Tín hiệu PWM là xung được điều chế với độ rộng xung biến thiên tam giác, độ rộng xung biến thiên từ 1mS(0o) đến 36.99mS(359.9o) theo cách gọi khác là 100uS/1o với một +1mS offset.Tín hiệu đi khoảng 65mS giữa xung, nên trong khoảng thời gian 65mS, độ rộng xung biến thiên từ 66mS đến 102mS. Xung được mã hóa bởi 16 bit thời gian của bộ vi xử lý, và khả năng cho phép của vi xử lý là 1uS, tuy nhiên có một lời khuyên là không nên đo bất cứ cái gì vượt quá 0.1o(10uS). Hãy chắc chắn là đã kết nối tới các đầu I2C, SCL và SDA, tới nguồn cấp 5 V nếu bạn sử dụng PWM, cũng như là không sử dụng điện trở cao tại các đầu dò.

Đầu ra 2 và 3 là một giao tiếp I2C và có thể sử dụng để đọc trực tiếp các thông số. Nếu giao tiếp I2C không được sử dụng sau khi các đầu được nạp điện áp cao(tới 5V) qua một cặp điện trở. Độ khoảng 47k là vừa, các giá trị đó không phải là nhất thiết chính xác lắm.

Sensor địa bàn dùng để xác định góc lệch, trong khoá luận này dùng sensor để xác định góc lệch của robot so với hướng đi ban đầu.

Các thông số của Sensor địa bàn - Nguồn vào là 5V. - Dòng là 20mA. - Độ phân giải là 0.1o. - Sai số là 3o-4o. - Lối ra 1: xung thời gian 1mS-37mS. - Lối ra 2: giao diện I2C, 0-255 và 0-3599, SCL tốc độ 1MHz. - Kích thước: 32mm x 35mm.

Sensor này sử dụng 2 cuộn dây KMZ51, đặt vuông góc với nhau.

H ình 4.6

Giao thức truyền thông I2C sử dụng module rút gọn trên được sử dụng phổ biến trong EEPROOM như là của 24C04.Trong bit được truyền đầu tiên,địa chỉ của module(0xC0) với bit ghi/đọc được đặt ở mức thấp, sau đó thì ghi số mà bạn muốn đọc.Điều này sẽ lặp lại tại lúc khởi động module địa chỉ lần nữa với các bit đọc/ghi ở mức cao(0xC1).Bây giờ bạn có thể đọc một hay hai byte cho 8 bit hay 16 bit thanh ghi.Thanh ghi 16 bit đọc byte cao trước.Mô hình này có mảng gồm 16 byte thanh ghi.Có một sốđược nâng lên thành 16 bit thanh ghi như hình 4.7

PHN 2

THC NGHIM THIT K

XÂY DNG MT ROBOT DI ĐỘNG

CHƯƠNG 5

KHẢO SÁT THIẾT KẾ BỘĐIỀU KHIỂN ROBOT

Bên cạnh hệ sensor giúp robot cảm nhận với môi trường bên ngoài. Bộ điều khiển là một thành phần quan trọng nhất quyết định sự thông minh của robot. Các bộ điều khiển có khả năng tính toán xử lý mạnh, sẽ giúp robot thực hiện các bài toán phức tạp. Đối với các ứng dụng trung bình và nhỏ, bộ điều khiển robot thường được thiết kế trên cơ sở các vi điều khiển. Khóa luận này nghiên cứu, thiết kế bộ điều khiển dựa trên vi điều khiển BASIC STAMP BS2SX.

Trước khi trình bày thiết kế bộ điều khiển, cần đề cập đến những hiểu biết về vi điều khiển BASIC STAMP.

5.1 Chip vi điều khiển BASIC Stamp 2sx

Bộ phận điều khiển trung tâm của robot là một vi điều khiển BASIC Stamp 2sx. BASIC Stamp 2sx là một mạch tích hợp vài IC cỡ lớn gồm có 24 chân như hình 5.1. Chức năng của các chân được miêu tả trong bảng 5.1

Để lập trình cho vi điều khiển BASIC Stamp, một phần mềm rất mạnh được viết riêng cho chíp gọi là Basic Stamp. Chi tiết phần mềm này được giới thiệu ở phần sau.

Bảng 5-1

Số chân Tên chân Miêu tả

1 SOUT Lối ra nối tiếp: Nối tới chân RX của cổng COM trong PC 2 SIN Lối vào nối tiếp: Nối tới chân TX của cổng COM trong PC 3 ATN Chú ý: Nối tới chân DTR của cổng COM

4 VSS Đất hệ thống: (giống như chân 23). Nối tới chân đất của cổng COM

6-20 P0-P15

Các chân vào/ra chung: mỗi một chân có thể là đầu ra hoặc đầu vào , dòng lớn nhất có thể đạt được là 30mA. Tuy nhiên, dòng tổng của tất cả các chân không được vượt quá 75 mA nếu sử dụng bộổn áp 5V nội. Dòng tổng trong các nhóm 8 chân (từ P0-P7 hoặc P8-P15) không được vượt quá 100mA nếu sử dụng ổn áp ngoài.

21 VDD

Lối vào/ra 5V: Nếu cung cấp nguồn bất thường vào chân VIN, thì điện áp lối ra của chân VIN là 5V. Nếu không có điện áp nào đặt vào chân này thì chân này sẽ có điện áp nằm trong khoảng 4,5V và 5,5V

22 RES

Reset lối vào/ra: nó sẽ ở mức low khi nguồn cung cấp nhỏ hơn 4,2V,

điều này làm reset BASIC Stamp. Có thểđưa xuống thấp để reset chip. Chân này không nhất thiết phải nối, không được đặt nó lên cao. (adsbygoogle = window.adsbygoogle || []).push({});

23 VSS Đấcuốt hi. ệ thống (giống như chân 4 )được nối với chân đất của thiết bịđầu

24 VIN

Nguồn một chiều chưa ổn định có thể chấp nhận điện áp 5,5V-12VDC (Thông thường là 7,5V). Chân này có thể không được sử dụng nếu như

sử dụng bộổn áp ngoài.

Để kết nối BASIC Stamp với PC và các mạch khác, ta dùng mạch có cấu tạo như hình 5.2

Muốn lập trình cho mạch trên ta chỉ cần kết nối nó với máy tính thông qua cổng COM. Chỉ cần cắm dây cáp từ cổng nối tiếp của PC vào bộ vi điều khiển. Nạp chương trình vào vi điều khiển. Khi ấn phím Run thì chương trình được nạp vào vi điều khiển và sẽ tựđộng chạy chương trình. Sau đó có thể bỏ dây cáp nối giữa máy tính và vi điều khiển ra. Do từ mã được lưu trong EEFROM nên chương trình được bảo vệ khi mất nguồn nuôi. Nếu muốn thay đổi chương trình, phải nạp từ mã mới. Vi điều khiển sẽ dừng lại và chấp nhận từ mã mới và sau đó sẽ chạy chương trình với những từ mã mới này.

Hình 5.2: Mạch điều khiển dùng BSe2sx

Sơđồ nguyên lý của mạch vi điều khiển.

Hình 5.3: Sơđồ nguyên lý của mạch vi điều khiển

Hình 5.4: Giao diện của ngôn ngữ Basic Stamp 2

Một chíp vi điều khiển cũng có thể coi là một máy tính, các hệ sử dụng vi điều khiển thường yêu cầu các bộ phận của nó phải gọn nhẹ, khả năng làm việc hiệu quả và đặc biệt là công suất tiêu thụ thấp. Các hệ như vậy thường được gọi là các máy tính nhúng (Embedded PC) đây là một trong những bộ phận sử dụng công nghệ tích hợp cao.

BASIC là ngôn ngữ lập trình rất dễ sử dụng, BASIC STAMP được xây dựng dựa trên ngôn ngữ BASIC, nó là bộ vi điều khiển có giá tương đối rẻ (nhỏ hơn 50$). BASIC STAMP thế hệ đầu tiên được giới thiệu vào năm 1993 (California-based Parallax, Inc). Vào mùa hè năm 2000 xuất hiện hai loại ngôn ngữ Stamp là BASIC STAMP I (BS 1) và BASIC STAMP II (BS 2 ) được viết riêng cho chíp vi điều khiển này.

Tất cả Stamp đều có các đặc điểm sau : + Kích thước nhỏ.

+ Có sẵn chương trình viết bằng BASIC. + Nguồn cung cấp 9V.

Chương trình được lưu trữ trong bộ nhớ vĩnh cửu EEPROM (có thể xoá được ). Bất cứ khi nào được cấp nguồn thì chương trình BASIC trong bộ nhớ sẽ chạy. Stamp có thể được lập trình lại bằng cách nối tạm thời với máy tính thông qua chương trình chủ.

Các lối vào/ra có thểđược nối với các thiết bị số khác, như chuyển mạch sensor, thậm chí điều khiển trực tiếp các loại tải nhỏ như LED.

Bộ xử lý PIC sử dụng công nghệ Microchip Inc, nên cho phép hoạt động với tốc độ 5 triệu mã máy trên 1 giây.

5.2.1 Một số câu lệnh chính trong Basic Stamp.

a) Nhãn, lệnh nhảy gotos.

Tất cả các chương trình vừa giới thiệu đều chạy trực tiếp. Chúng bắt đầu chạy từ lệnh đầu tiên và chạy từng dòng một. Nhưng điều hay nhất trong lập trình đó là khả năng thay đổi trật tự của các lệnh trong chương trình. Hãy xem dòng lệnh sau debug”Ready…” debug”Ready…” debug”Set..” BS2 debug”Set..” debug”Go!” debug”Go!”

Bây giờ, có thểđoán trước được kết quả của chương trình; Stamp sẽ hiển thị.

Có thể thay đổi chương trình như sau

BS2

debug ”Ready...” goto Start

debug “Set” Start:

debug “Go!”,cr Nhận được:

Ready...Go!

Stamp bỏ qua các lệnh in Set.. do sử dụng lệnh nhảy goto Start, Stamp sẽ thấy nó bỏ qua câu lệnh

debug “Set..”

Điều này minh họa cách đơn giản nhất để thay đổi tiến trình hoạt động của chương trình. Nhãn bao gồm một tên và kết thúc là dấu (:), nhãn thường đứng trước lệnh sẽ là đích của lệnh nhảy goto. (adsbygoogle = window.adsbygoogle || []).push({});

Thông thường, cập goto/label được sử dụng để tạo vòng lặp. Chúng ta hãy xem ví dụ dưới đây xem có gì khác với các ví dụ trên không.

BS1: debug ”Ready...” goto Start debug “Set” Start: debug “Go!”,cr goto Start Nếu chạy chương trình sẽ thấy sự lặp lại các chỉ thị, và Stamp sẽ hiển thị:

Ready...Set..Go! Go! Go!

Nó sẽ lặp lại lệnh Go! Đến vô tận.

b) Vòng lặp For...Next

Giả sử muốn lặp lại lệnh Go! Ba lần hoặc một số lần. Cặp lệnh goto/label không cho phép đặt được số vòng lặp, nhưng có một cặp lệnh cho phép điều khiển chúng.

BS2:

Symbol loops = b0 FOR loops=1 to 3

debug “Go!”,cr NEXT

debug “Done” Chúng ta sẽ có Go! Go! Go! Done.

Cặp lện For ...Nẽt sử dụng biến đểđếm số vòng lặp. Lệnh For đặt giá trị ban đầu của biến:

FOR loops=1 ...

Phần sau câu lệnh For là ...to 3, thực chất là để thông báo cho lệnh Next. Lệnh Next thêm 1 vào biến (vòng lặp) và so sánh kết quả với giá trị cuối cùng được gửi từ lện For (trong trường hợp này bằng 3). Nếu giá trị biến nhỏ hơn hoặc bằng với kết quả cuối cùng, lệnh Nẽt làm cho vòng lặp của chương trình quay trở lại lệnh For. Nếu giá trị biến lớn hơn giá trị cuối cùng thì lệnh Next kết thúc vòng lặp và để chương trình chạy tiếp các câu lệnh khác.

For...Next sẽ chạy các câu lệnh nằm giữa chúng và vẫn tiếp tục cho đến khi giá trị biến vượt quá giá trị cuối cùng.

c) Cấu điều kiện If...Then

Trong BASIC sử dụng câu điều kiện If...Then. Ví dụ:

BS2 x varbyte x=99 IF x<100 then saySo debug “x is 100 or more” End saySo

debug “x is less than 900”

chương trình đưa ra x=99 nhỏ hơn 100. Thay đổi x=99 gán giá trị x bằng 100 hoặc nhiều hơn (nhưng không lớn hơn 255, giá trị lớn nhất của byte) và trở lại chương trình. Bây giờ chương trình sẽ hiển thị thông điệp “x is 100 or more”. (x lớn hơn hoặc bằng 100).

Có hai phần trong câu lệnh If...Then. phần đầu là điều kiện- câu lệnh này là mối quan hệ giữa hai giá trị, như là x<100. Nếu câu lệnh If đúng thì vế thứ hai sẽđược thực hiện. Nếu câu điều kiện sai thì câu lẹnh If...then sẽ không lam gì cả. nó cho phép chương trình tiếp tục chạy các câu lệnh khác.

Biểu tượng ý nghĩa = < > <> <= >= Bằng Nhỏ hơn Lớn hơn Không bằng Nhỏ hơn hoặc bằng Lớn hơn hoặc bằng Ví dụ: BS2

Loops var byte Loops=0 Repeat:

Debug “looping:”, DEC loops,cr Loops=loops +1

If loops <=5 then repeat Debug “Done:”, DEC loops

d) Lệnh Gosub

Các lệnh trong ngôn ngữ Stamp đều sử dụng hòm công cụđể xây dựng chương trình. Và thùng công cụ này nhỏ, chỉ có 36 lệnh trong BS2. trong một số trường hợp, nhóm lệnh sẽ rất hữu ích vì nó sẽ sử dụng nhiều hơn một lần trong chương trình đơn, ở đó ta sử dụng câu lệnh Gosub...Return.

Gosub là một biến thể của lệnh Goto, nó gọi chương trình con được bắt đầu bằng một nhãn và bao giờ cũng kết thúc bằng lệnh Return. Sau đây là một ví dụ có sử dụng chương trình con:

BS2

Loops var byte

Debug “Subroutine Example” GOSUB mySub (adsbygoogle = window.adsbygoogle || []).push({});

For loops=0 to 5 Debug DEC loops GOSUB mySub Next end mySub: pause 500 debug cls,”>” RETURN

Chương trình con mySub sẽ làm tạm dừng chương trình Stamp một nửa giây (500/1000ths/sec), xóa màn hình Debug bằng lệnh cls, và ghi ra màn hình ký tự>. Khi chạy chương trình, chương trình con được đưa vào đầu chương trình và được gọi một lần trong mỗi bước của vòng lặp.

5.3 Mạch điều khiển công suất động cơ.

Mạch được thiết kế theo nguyên lý mạch cầu H để đảo chiều của động cơ DC. ởđây em sử dụng cặp transistor trường kênh P là IRF9540 và kênh N là IRF640.

IRF9540: Nếu thế mở VGS = -10V thì dòng điện cực đại đi qua liên tục là 25 Ampe, dòng điện xung là 75 Ampe. Thếđánh thủng VGS là 20V.

IRF640: Nếu thế mở VGS = +10V thì dòng điện cực đại đi qua liên tục là 18 Ampe, dòng điện xung là 75 Ampe. Thếđánh thủng VGS là 20V.

Nguyên lý hoạt động của mạch. Ở cầu H thứ nhất khi không có tín hiệu điều khiển vào, hai transistor Q1 và Q2 đóng, lúc đó thế vào cực Gate của các

transistor công suất là mức cao, do đó Q5, Q6 mở, không có dòng điện đi qua động cơ. Khi có tín hiệu điều khiển vào, chẳng hạn chân 1, lúc đó Q1 mở, nó sẽ làm cho Q6 và Q9 cùng mở, Q5 và Q10 cùng đóng, dòng điện sẽ đi qua động cơ theo chiều thuận. Khi tín hiệu vào chân số 2, Q2 mở, dẫn đến Q5, Q10 mở còn Q6, Q9 đóng. Dòng điện sẽđi qua động cơ theo chiều nghịch.

Hình 5.4: Sơđồ nguyên lý mạch điều khiển động cơ

Tương tự khi không có tín hiệu điều khiển vào, hai transistor Q3 và Q4 đóng, lúc đó thế vào cực Gate của các transistor công suất là mức cao, do đó Q7, Q8 mở, không có dòng điện đi qua động cơ. Khi có tín hiệu điều khiển vào, chẳng hạn chân 3, lúc đó Q3 mở, nó sẽ làm cho Q8 và Q11 cùng mở, Q7 và Q12 cùng đóng, dòng điện sẽđi qua động cơ theo chiều thuận. Khi tín hiệu vào chân số 4, Q4 mở, dẫn đến Q7, Q12 mở còn Q8, Q11 đóng. Dòng điện sẽ đi qua động cơ theo chiều nghịch.

Điểm đặc biệt của mạch cầu này là có chếđộ “phanh động “ (có nghĩa là khi ta ngắt không điều khiển động cơ nữa thì hai transistor ở nửa trên sẽ cùng mở, tức là hai cực của động cơ sẽ chập vào nhau, chống lại quán tính quay của động cơ ). Mạch này cũng có cơ chế tự bảo vệ, khi ta cung cấp tín hiệu điều khiển vào cả hai chân chiều tiến và lùi vẫn không xảy ra xung đột, chập cháy mạch mà vẫn là ở chếđộ phanh động.

5.4 Kết cấu cơ khí của robot 5.4.1 Sơđồ thiết kế 5.4.1 Sơđồ thiết kế

Robot được liên kết bởi các thanh nhôm, có kích thước và kết cấu được chỉ ra ở hình 5.6 ắcqui Sensor địa bàn 45cm 39cm sensor siêuâm Hình 5.6: Hình dạng và kích thước của robot

Khung đế của robot hình chữ nhật, chiều dài 36cm, chiều rộng là 31cm, chiều cao tính từ mặt sàn tới sonar là 30cm. Bao gồm 3 bánh xe, 2 bánh phát động và một bánh bịđộng.

Hình 5.7: Hình dạng robot nhìn từ phía trên

Hình 5.8: Sơđồđế và các bánh của robot 5.4.2 Các thành phần khác của Robot

Robot sử dụng một nguồn nuôi là acqui 12V-5Ah để cung cấp nguồn điện cho các mạch điện.

- Động cơ sử dụng cho robot là động cơ 12V DC. - Sensor siêu âm dùng để đo khoảng cách.

Một phần của tài liệu XÂY DỰNG ROBOT DI ĐỘNG TRÁNH VẬT CẢN DỰA TRÊN CÁC SENSOR SIÊU ÂM VÀ SENSOR ĐỊA BÀN (Trang 28)