Trong đề tài nghiên cứu khoa học này nội dung các vấn đề tác giả cần triển khai: tìm hiểu họ vi điều có cấu trúc ARM, cụ thể là dòng LPC2000 của Philip;từ đó áp dụng chip ARM thiết kế b
Trang 1ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CẤP TRƯỜNG
NGHIÊN CỨU, THIẾT KẾ, CHẾ TẠO BOARD MẠCH TRUNG TÂM ỨNG DỤNG ĐIỀU KHIỂN ROBOT
MÃ SỐ: T2010 - 04
S 0 9
S KC 0 0 3 0 1 4
Trang 2ĐỀ TÀI NCKH CẤP TRƯỜNG:
NGHIÊN CỨU, THIẾT KẾ, CHẾ TẠO BOARD MẠCH TRUNG TÂM ỨNG DỤNG ĐIỀU
KHIỂN ROBOT
MÃ SỐ: T2010 - 04
THUỘC NHÓM NGÀNH : KHOA HỌC KỸ THUẬT
NGƯỜI CHỦ TRÌ : THS LÊ TẤN CƯỜNG
ĐƠN VỊ : KHOA CƠ KHÍ MÁY
Trang 3TÓM TẮT ĐỀ TÀI
Trong Robot, board mạch trung tâm đóng vai trò rất quan trọng nó nhận tín hiệu từ các cảm biến, từ yêu cầu người điều khiển thông qua các nút nhấn, qua giao diện người và máy hoặc lệnh từ xa, từ đó nó ra quyết định điều khiển các cơ cấu chấp hành một cách linh hoạt nhất Do vậy, bộ điều khiển chính thường sử dụng các chip điều khiển có tốc độ cao và ít tốn điện như các bộ vi điều khiển ARM để giúp Robot phản ứng nhanh với tác động từ môi trường ngoài
Trong đề tài nghiên cứu khoa học này nội dung các vấn đề tác giả cần triển khai: tìm hiểu họ vi điều có cấu trúc ARM, cụ thể là dòng LPC2000 của Philip;từ
đó áp dụng chip ARM thiết kế board trung tâm điều khiển robot, xây dựng giao diện màn hình giao tiếp giúp điều khiển và hiển thị các thông tin dễ dàng hơn, kết nối mạng RS485 điều khiển 3 driver PID Motor cho mobile robot 3 bánh di chuyển đa hướng một cách chính xác nhất
Trang 4ABSTRACT
In Robot, circuit mainboard is important to receive signals from the sensors, from request through the control buttons, the user interface or remote commands, from which its decision to control the observance of a structural flexibility Therefore, the mainboard used the high-speed controller and less power
as the ARM microcontroller that will help robot to react quickly to environmental impacts from outside
In scientific research this problem content authors need to deploy: learning the structure of ARM LPC2000 particular line of Philip, which applies ARM microcontroller to design a mainboard for controling robot, building an interface screen help to control and display information more easily, RS485 network is used
to control three PID Motor Driver that help three-wheeled mobile robot to move towards a multi accurately
Trang 5MỤC LỤC
PHẦN 1 : ĐẶT VẤN ĐỀ 4
I Đối tượng nghiên cứu
II Tình hình nghiên cứu trong và ngoài nước
II Phương pháp nghiên cứu
III Nội dung
Trang 6Phần 1 ĐẶT VẤN ĐỀ
I Đối tượng nghiên cứu
Vi điều khiển ARM7 LPC2148, dòng LPC2000 của hãng Philip, nguyên
lý mạch điện, chương trình phần mềm lập trình, phần mềm nạp chip Giao diện điều khiển robot trên màn hình LCD 128x128, công cụ chuyển đổi các icon hình ảnh nạp vào chip, giúp thao tác điều khiển robot dễ dàng và trực quan hơn
Đo lường và hiển thị các thông số của hệ thống như mức pin, thời gian hệ thống trên giao diện màn hình LCD
Xây dựng giao thức truyền thông RS485 nhằm kết nối và điều khiển 3 bộ Driver PID Motor cho robot 3 bánh di chuyển đa hướng một cách chính xác nhất
II Tình hình nghiên cứu trong và ngoài nước
Board mạch sử dụng chip vi điều khiển ARM7 dòng LPC2000 được rất nhiều hang phát triển và hỗ trợ rất tốt cho người dùng Đây là một mạch mẫu:
Board ARM7 MCB2140 của hãng Keil, Đức:
Trang 7Hình 1.1 : Board MCB2140 của Keil
Trang 8Board ARM7 LPC-P2138 của hãng Olimex, Đức:
Hình 1.2 : Board LPC-P2138 của Olimex
Board ARM7 CP-JR ARM7 USB LPC2148 của hãng ETT, Thái Lan:
Hình 1.3 : Board CP-JR ARM7 USB LPC2148 của ETT
Trang 9Từ lúc đặt mua thiết bị của hãng đến khi có hàng thường mất 4-6 tuần, chi phí vẫn chuyển cao nên trong thiết kế Robot cần có dự trù thời gian hợp lý
Từ những hạn chế trên, ta thấy việc nghiên cứu và chế tạo một board mạch chính sử dụng chip ARM7 điều khiển chuyên dụng cho robot dựa trên các linh kiện
có sẵn trong nước là vấn đề rất đáng quan tâm và nghiên cứu Board mạch thiết kế
có thể tùy biến phù hợp với robot điều khiển nên sẽ có kích thước nhỏ gọn, giá thành thấp Đó cũng chính là hướng nghiên cứu của đề tài
Trang 10Phần 2 GIẢI QUYẾT VẤN ĐỀ
I Mục đích đề tài
Đề tài cần giải quyết các vấn đề sau:
Nghiên cứu, tìm hiểu vi điều khiển ARM7 LPC2148, phần mềm biên dịch và chương trình nạp chip
Thiết kế board mạch chính dùng vi điều khiển LPC2148, có các thành phần ngoại vi sau: hệ thống thời gian thực (realtime) dùng pin lưu trữ, kết nối JTAG dùng debug chương trình, giao tiếp LCD màu 128x128 điểm ảnh, giao tiếp hỗ trợ mạng RS485 dùng truyền thông với các driver tớ, hỗ trợ mạch đo lường và báo pin yếu
Xây dựng tập lệnh C giao tiếp hiển thị thông tin trên LCD, giao tiếp người dùng điều khiển và giao tiếp truyền thông điều khiển các Driver PID Motor
II Phương pháp nghiên cứu
Đề tài được thực hiện với các phương pháp sau:
Khảo sát, tìm hiểu nguyên lý một số board mạch của các hãng như Keil, Olimex, ETT… từ đó tổng hợp nguyên lý chuyên dùng cho board robot Tìm hiểu các bài ví dụ lập trình cho ARM, các công cụ phát triển để từ đó khai thác và lập trình tốt nhất cho ARM Philip
Khai thác sử dụng các linh kiện dán bề mặt SMD, nhằm thiết kế board robot có kích thước nhỏ gọn, từ đó dễ dàng lắp trên robot
Khảo sát một số thiết bị có giao thức mạng như RC Motor của Robotis, từ
đó rút ra giao thức mạng phù hợp với thiết bị, giúp hệ thống linh hoạt hơn trong hoạt động
Trang 11III Nội dung
3.1 Sơ đồ hệ thống điều khiển
Sơ đồ hệ thống board mạch trung tâm cho robot có dạng như hình sau :
Mạng
Driver
Truyền đồng bộ SPI
Truyền nối tiếp UART0
Truyền nối tiếp UART1
Bộ chuyển đổi ADC
Hình 3.1 : Sơ đồ hệ thống board mạch chính cho robot
Hệ thống gồm các thành phần cơ bản sau:
ARM controller: đóng vai trò là bộ xử lý trung tâm của board mạch, nó cần phải có các chức năng sau
Trang 12 Hai bộ UART: một bộ dùng giao tiếp RS485 điều khiển các bộ Driver con , và kênh còn lại giao tiếp với module RF dùng nhận lệnh điều khiển từ xa của người dùng
Kênh truyền thông nối tiếp đồng bộ tốc độ cao SPI dùng giao tiếp với module LCD
ADC dùng cho việc đo lường pin
Mạch RS485: giúp chuyển đổi tín hiệu UART TTL thành tín hiệu RS485 giao tiếp điều khiển các module Driver PID con
Bộ điều khiển vị trí và tốc độ: đóng vai trò nhận thông tin điều khiển, xử
lý tinh toán và xuất tín hiệu cho mạch công suất điều khiển theo tốc độ đặt hoặc đến đúng vị trí mong muốn Trong quá trình điều khiển nó cũng nhận tín hiệu hồi tiếp, tính toán ra sai lệch và từ đó tạo tín hiệu điều khiển cần thiết
Giao thức mạng: đây là chuẩn giao tiếp truyền thông cho phép nhiều thiết
bị kết nối nhau theo giao thức mạng, khối này giúp cho thiết bị chủ có thể giao tiếp với nhiều thiết bị con, và hệ thông dễ dàng kết nối hơn
3.2 Phương án lựa chọn thiết kế phần cứng
3.2.1 Module màn hình HMI:
Trên robot có rất nhiều thiết bị ngoại vi, để thay đổi thông số hoặc chọn lựa các ngoại vi này thì cần phải có rất nhiều nút nhấn Đối với các robot có kích thước nhỏ thì việc bố trí nhiều nút nhấn là gần như không thể Do đó, mà các màn hình giao diện người và máy đã được phát triển, gọi là các màn hình HMI Hình 3.2 mô
tả về màn hình HMI cỡ nhỏ dùng trong robot
Trang 13kế và phát triển một màn hình HMI có kích cỡ nhỏ phù hợp với robot của đề tài
Cấu trúc của màn hình HMI này bao gồm một màn hình LCD Nokia 6610 132x132 pixels 12-bit màu, điện áp cung cấp 3.3V, giao tiếp nối tiếp SPI như trong hình 5.13 Lót phía trên màn hình là tấm cảm ứng 4 dây loại điện trở , giải mã cảm ứng sử dụng chíp ADS7843 giao tiếp chuẩn SPI (kham khảo thư mục Datasheet trong đĩa CD để biết thêm đặc tính của ADS7843) Lưu đồ giải thuật giao tiếp với chip ADS7843 như trong hình 5.14 Như vậy, từ màn hình hiển thị Nokia 6610 thông thường và tấm cảm ứng 4 dây cùng chíp giải mã ADS7843 ta đã tạo nên module màn hình HMI, giao tiếp với main board qua chuẩn SPI
Trang 14Hình 5.13: Màn hình Nokia 6610
Hình 3.3: Lưu đồ giải thuật giao tiếp điều khiển chíp ADS7843
Trang 16 Tốc độ truyền: 1200/2400/4800/9600/19200/38400Bit/s, người dùng có thể thay đổi với phần mềm đi kèm của nhà sản xuất
Chuẩn giao tiếp : TTL
Ngõ giao tiếp gồm : VCC, GND, RXD, TXD, SLE (Sleep control), mức cao trên chân này sẽ đưa module vào chế độ ngủ nhằm tiết kiệm năng lượng
3.2.3 Board mạch chính:
Sơ đồ nguyên lý board mạch chính như hình sau:
Trang 17Hình D.4: Module Mainboard
Trang 18Board mạch chính dùng cho robot như hình sau:
Hình 3.5: Board mạch chính điều khiển robot
Board mạch chính bao gồm các thành phần sau:
1) Vi điều khiển LPC2148 dòng ARM7TDMI-S 16 bit/32 bit của NXP Về đặc tính của LPC2148 kham khảo thư mục Datasheets trong đĩa CD
2) Nguồn cung cấp board mạch: 7.4V DC Board mạch có cầu chì bảo vệ, từ nguồn này sẽ ổn áp ra 2 loại nguồn: 5V cấp cho module RF, MAX485,…và nguồn 3.3V cấp cho bộ xử lý ARM
3) Pin 3V dùng lưu trữ thời gian thực cho hệ thống
Trang 194) Cổng USB1: dùng để nạp chương trình cho ARM qua USB, giao tiếp chuyển đổi USB sang COM, giao tiếp với ARM qua URT0
5) Cổng USB2: truyền thông USB do ARM hỗ trợ
6) Khe cắm thẻ nhớ MMC/SD giao tiếp với ARM qua truyền nối tiếp đồng bộ SPI
7) Module RF giao tiếp với ARM qua UART1
8) Cổng JTAG chuẩn 20 chân dùng debug chương trình hoặc nạp ARM bằng JTAG
9) Giao tiếp RS485 dùng giao tiếp điều khiển các smart servos
10) Bốn led đơn thiết kế dùng cho debug chương trình
3.2.4 Pin cho robot và mạch giám sát dung lượng pin
Để robot di chuyển tự do và không bị vướng víu bởi dây điện thì robot cần được trang bị nguồn năng lượng riêng Nguồn năng lượng phải đảm bảo: khối lượng nhẹ để không ảnh hưởng nhiều đến khối lượng robot, phải đủ dòng để duy trì hoạt động cho robot trong thời gian dài Năng lượng ở đây sử dụng nguồn pin cấp cho robot
a) Chọn pin cho robot
Trong thực tế có nhiều loại pin Trong tài liệu [How to rebuild a Li-Ion battery pack, trang 5] từ [http://www.electronics-lab.com] có đề cập so sánh các loại pin thông dụng hiện nay như trong bảng 3.1 sau:
Trang 20có
1.2
70
560 trung bình cao trung bình 30-35
có
2.1
30
- trung bình trung bình thấp
-
Có
3.6/3.7 100-160
1000 cao thấp cao 6-9 không
3.6
140
- cao thấp cao
- không
Bảng 3.1: Bảng so sánh các loại pin thông dụng
Theo bảng so sánh trên ta thấy pin Li-ion và Lipo là 2 pin đảm bảo các tiêu
chí năng lượng cấp cho robot Ở thị trường Việt Nam thì pin Li-ion có thể dễ dàng
tìm mua loại pin thay cho cell của Laptop với giá thành tương đối rẻ, một cell pin
sẽ cho áp 3.7V dòng 1000mA/h Để có dòng cao hơn ta mắc các cell song song
nhau Các hộp pin chế tạo theo dạng này sẽ cho giá thành thấp, dòng cung cấp cao,
nhưng lại nặng và to về kích thước Hình 3.6 mô tả hộp pin Li-ion chế tạo theo kiểu
này, hộp pin gồm 4 cells cho dung lượng 7.4V, 2000mA
Trang 21(a) (b)
Hình 3.6: (a) Hộp pin hoàn chỉnh, (b) các cell Li-ion lắp bên trong pin
Còn pin Lipo ở Việt Nam có thể dễ dàng tìm mua ở các cửa hàng bán pin sử dụng cho máy bay và xe mô hình Hình 3.7 là hai cells pin Lipo dùng trong mô hình, mỗi cell cho dòng 900mA, hai cell mắc song song cho áp 7.4V và dòng tối đa 1800mA Pin dạng này có giá thành khá cao nhưng khối lượng lại nhẹ
Hình 3.7: (a) Hai cells pin Lipo mắc song song, (b) đồ sạc pin chuyên dụng cho
Trang 22b) Mạch báo dung lượng pin
Pin sử dụng trong mô hình là pin Li-ion và pin Lipo, đây là những loại pin có giá thành cao, số lần nạp-xả nhiều Nhưng trong thực tế để số lần nạp-xả đạt tối đa thì cần phải tuân theo những nguyên tắc cơ bản sau:
Đối với pin Li-po sử dụng dụng cụ sạc chuyên dụng, như trong hình 3 7(b) mạch sạc chuyên dụng đến từ hãng E-sky, quá trình sạc pin và báo đầy pin được hiển thị bằng đèn led Đối với hộp pin Li-ion tự chế như trong hình 3.6 (a) thì theo nguyên tắc sau : điện áp pin 7.4V thì ta cần phải sạc với áp 8.4V, theo hãng Panasonic dòng sạc lớn nhất là 0.7C, ví dụ pin Li-ion có thông số 600mAh thì dòng sạc lớn nhất là 0.7*0.600=420mA Khi dòng sạc trên qua pin chỉ còn vài mA thì pin đã đầy
Trong quá trình sử dụng điện áp trên pin sẽ giảm dần, nếu cell có điện áp 3.7V thì khi nạp đầy điện áp cell là 4.2V, nếu điện áp của cell nhỏ hơn 3.2V
là pin cần phải được sạc, trong quá trình sử dụng nếu không lưu ý điều này
sẽ làm giảm tuổi thọ của Pin
Với các lưu ý trên ta nhận thấy: pin sẽ được sạc và ngắt bằng các mạch sạc chuyên dụng, để nâng cao tuổi thọ của pin thì trong quá trình sử dụng trên robot cần
có mạch báo dung lượng pin để điện áp của pin không nhỏ hơn ngưỡng qui định sạc Để có thể giám sát trạng điện áp của pin thì mạch chia điện áp đã được thiết kế
để chia điện áp pin về mức điện áp cho phép của bộ chuyển đổi A/D trên mainboard Do điện áp vào lớn nhất trên mainboard là 3.3V, nên chọn giá trị điện
áp chia cho 3 Chọn R16.8k,R2 3.3k cho mạch chia điện áp Kết quả là ngõ
ra điện áp xấp xỉ bằng 1/3 điện áp của pin
Đối với pin trong đề tài có điện áp 7.4V, khi xạc đầy điện áp của pin là 8.4V
và khi pin yếu là 6.4V Qua mạch chia điện áp ngõ ra đo lường nằm trong tầm từ 2.1V đến 2.8V Dựa vào điều này ta có thể thiết kế hiển thị dung lượng pin từ 0-100%, và khi màn hình HMI báo pin ở 0%, điều này có nghĩa pin cần phải được
Trang 23đem đi sạc Hình 5.8 mô tả mạch chia điện áp và hiển thị trạng thái pin trên màn hình HMI
R49 3.3k
+7V4
BATVOL
R48 6.8k
Hình 3.8: (a) Nguyên lý mạch chia áp , (b) báo dung lượng pin đạt 90 %
Điều quan trọng cần lưu ý là, 2 pin Lipo cần phải sạc đầy như nhau và phải được cân bằng để có cùng điện áp trước khi ghép chúng song song nhau
3.3 Phương án lựa chọn thiết kế mềm điều khiển
3.3.1 Các chương trình con xây dựng trên ARM
Các phần cứng trên robot bao gồm: màn hình hiển thị Nokia 6610, giải mã tấm cảm ứng sử dụng chíp ADS7843 , module RF, các smartservo, mạch đo dung lượng pin, bộ thời gian thực để ARM có thể giao tiếp với chúng thì các đoạn chương trình con đã được xây dựng trong KeilCARM Hình 3.9 mô tả hình cây các hàm con dùng giao tiếp với các phần cứng trên
Trang 24Hình 3.9: Các hàm chương trình con trên ARM dùng giao tiếp với các ngoại vi
phần cứng
3.3.2 Chương trình giao tiếp màn hình LCD 6610
LCD 6610 giao tiếp ARM qua SPI0, các hàm giao tiếp và điều khiển gồm:
void InitSPI0(void);
void Send_Spi(unsigned int data);
void WriteSpiCommand(unsigned int command);
void WriteSpiData(unsigned int data);
void InitLCD(void);
extern void LCDWritebmp(const unsigned char *bitmap, long sizebitmap, unsigned char x,unsigned char y,unsigned char sizex,unsigned char sizey);
extern void LCDClearScreen(int color);
void LCDSetXY(int x, int y);
void LCDSetPixel(int x, int y, int color);
void LCDSetLine(int x1, int y1, int x2, int y2, int color);
Trang 25extern void LCDSetRect(int x0, int y0, int x1, int y1, unsigned char fill, int color); void LCDSetCircle(int x0, int y0, int radius, int color);
void LCDPutChar(char c, int x, int y, int size, int fcolor, int bcolor);
extern void LCDPutStr(char *pString, int x, int y, int Size, int fColor, int bColor) ;
Các hàm trên có chức năng như sau: khởi tạo cổng SPI0, đọc và ghi dữ liệu qua SPI0, khởi tạo màn hình và cuối cùng là các hàm hiển thị hình ảnh trên màn hình, vẽ đường thẳng, hình chữ nhật, đường tròn và ghi một ký tự hoặc một chuỗi ra màn hình
3.3.3 Chương trình giao tiếp chíp giải mã touch screen ADS7843
ADS7843 giao tiếp ARM qua SPI0, các hàm giao tiếp và điều khiển gồm:
void InitTouch (void);
void Touch_Write(unsigned char data);
unsigned int Touch_Read(void);
unsigned int Get_X();
unsigned int Get_Y();
Các hàm trên có chức năng như sau : khởi tạo màn hình cảm ứng, ghi dữ liệu điều khiển chíp, lấy tọa độ trục X và Y, cuối cùng là đọc tọa độ điểm đã chấm trên màn hình
3.3.4 Chương trình giao tiếp module RF
Module RF giao tiếp ARM qua UART0, tốc độ 9600bits/s các hàm giao tiếp
và điều khiển gồm:
void UART0Init( DWORD Baudrate );
int getchar (void);
Khởi tạo cổng UART0, gửi và nhận một ký tự qua UART0
3.3.5 Chương trình giao tiếp smart servo
Smart servo giao tiếp mainboard qua RS485 sủ dụng driver Max485, trên ARM cổng UART1 được khởi tạo để truyền thông 485