Tìm hiểu nguyên tắc hoạt động và cấu tạo của robot CleanMate 365 của hãng Metapo, USA

Tóm tắt nội dung luận văn Nội dung của bài luận văn này là về vấn đề tìm hiểu nguyên tắc hoạt động và cấu tạo của robot CleanMate 365 của hãng Metapo,USA. Từ đó thiết kế, xây dựng một robot có chức năng giống CleanMate 365. Sau đó hoàn thiện phát triển thêm các chức năng mới cho robot này Luận văn bao gồm 6 chương. Chương 1 đặt vấn đề và giới thiệu về Robot Cleanmate 365. Chương 2 là cơ sở lý thuyết về robot di động thông minh. Các chương 3,4,5 là thiết kế chi tiết của robot về cơ khí, điện tử, phần mềm điều khiển. Chương 6 báo cáo về kết quả quá trình xây dựng, hoàn thiện Robot, và đề ra hướng phát triển cho robot. Phần phụ lục giới thiệu các công cụ sử dụng trong quá trình xây dựng robot và mã nguồn tham khảo của chương trình điều khiển robot. Mục Lục Danh Mục Hình Vẽ 4 Danh Mục Bảng Biểu 5 Chương 1: Tổng quan 6 1.1 Đặt vấn đề: 6 1.2 Giới thiệu về Robot Cleamate: 7 Cleanmate365 là một robot hút bụi thông minh được chế tạo bởi hãng Metapo, Hoa Kỳ. Không giống như các loại máy hút bụi thông thường, Cleanmate365 thực hiện công việc hút bụi một cách hoàn toàn tự động theo chương trình đã được lập sẵn. Cleanmate thích hợp cho các gia đình và văn phòng có nền nhà gỗ , thảm, đá hoa. Với kích thước nhỏ gọn cleanmate365 có thể di chuyển hết cả phòng, những nơi mà máy hút bụi thông thường không với vào được như gầm giường, gầm ghế 7 Chương 2: Cơ sở lý thuyết về hệ thống robot thông minh 8 2.1 Khái Niệm Về Robot : 8 2.2 Phân Loại Robot : 9 2.3 Các bộ phận của robot di động thông minh : 10 2.4 Các mô hình điều khiển robot: 11 2.4.1 Mô hình kiểu phản xạ : 11 2.4.2 Mô hình “sens – plan – act “ : 11 2.4.3 Mô hình kiểu lai : 12 Chương 3: Thiết kế Robot cleanmate – Phần cơ khí 12 Chương 4: Thiết kế mạch điện tử 14 4.2 Khối điều khiển và giới thiệu PIC16F877A: 15 4.2.1 Hight-performance RISC CPU 15 4.2.2 Các cổng vào ra : 17 4.2.3 Các Khối Timer: 19 4.2.4 Khối PWM: 24 4.2.5 Khối ADC: 25 4.2.6 Khối truyền thông nối tiếp UART: 27 4.2.7 Các tài nguyên của PIC được sử dụng trong việc xây dựng khối điều khiển cho robot: 27 4.3 Khối quản lý nguồn : 29 4.3.1 Khối chuyển đổi nguồn nuôi: 29 4.3.2 Khối ổn áp: 30 4.3.3 Khối nạp Pin: 34 4.4 Hệ thống cảm nhận vật cản: 35 4.5 Hệ thống sensor gầm cảm nhận độ cao: 36 4.6 Cảm nhận sáng tối: 37 4.7 Khối giao tiếp điều khiển từ xa hồng ngoại: 37 4.7.1 Nguyên lý hoạt động: 37 4.7.2 Bộ Phát : 39 4.7.3 Phần thu: 40 4.8 Bàn phím: 41 4.9 Hiển thị LED 7 đoạn và Loa: 43 4.9.1 Hiển thị LED 7 đoạn : 43 4.9.2 Loa : 43 4.10 Mạch điều khiển động cơ : 44 4.10.1 Giới thiệu về mạch cầu H: 44 4.10.2 Điều khiển motor với IC L298: 45 4.10.3 Điều khiển Motor chổi quét: 46 4.11 Thiết kế PCB: 48 4.11.1 Phần mềm thiết kế mạch in PCB DXP Altium Designer: 48 4.11.2 Thiết kế mạch điện trong môi trường Altium Designer: 49 4.11.3 Kết quả và nhận xét: 49 Chương 5: Phần mềm điều khiển Robot. 49 5.1 Lập trình cho hệ thống thời gian thực: 49 5.2 Bài toán di chuyển của robot: 52 5.3 Tránh vật cả và độ cao: 52 5.4 Tìm chỗ sáng: 53 5.5 Chương trình điều khiển robot: 53 5.5.1 Chương trình điều khiển robot: 53 Chương trình điều khiển robot có thể diên tả bằng lưu đồ sau, trong đó. Cleaner là hàm hoạt động của robot, charger là hàm nạp pin. 54 5.5.2 Sơ đồ trạng thái của robot trong quá trình hoạt động: 54 Chương 6: Kết quả thực nghiệm và hướng phát triển của đề tài 56 6.1 Kết quả thực nghiệm: 56 6.2 Hướng phát triển của đề tài: 57 6.2.1 Tìm trạm sạc: 57 6.2.2 Tạo tiếng nói cho robot: 59 6.2.3 Lập trình thời gian biểu: 59 Phụ Lục 60

doc67 trang | Chia sẻ: banmai | Lượt xem: 3982 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Tìm hiểu nguyên tắc hoạt động và cấu tạo của robot CleanMate 365 của hãng Metapo, USA, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Được mệnh danh là máy hút bụi thông minh, CleanMate 365 có thiết kế nhỏ gọn với đường kính 36 cm và nặng 2,7kg, bao gồm một cổng hút dài và hệ thống chổi quét lô tròn và chổi quét cạnh, khi di chuyển máy sẽ xới bụi và cổng hút sẽ hút hết bụi bẩn. Chính vì vậy mà động cơ hút bụi không cần có công suất lớn như máy hút bụi thông thường. Các chức năng nổi bật của Cleanmate365: Điều khiển được từ xa bằng remote control, tự cảm nhận tránh vật cản, làm việc trên bậc cầu thang mà không bị rơi, di chuyển theo 5 dạng quỹ đạo khác nhau. Robot Cleaner 365 do Hãng Metapo chế tạo Chương 2: Cơ sở lý thuyết về hệ thống robot thông minh 2.1 Khái Niệm Về Robot : Nguyên gốc của một từ La Tinh là robota có nghĩa là người tạp dịch. Như vậy mục đích ra đời của robot là thay thế con người làm 1 số công việc nào đó. Robot hay người máy là một loại máy có thể thực hiện những công việc một cách tự động bằng sự điều khiển của máy tính. Robot là một tác nhân cơ khí, nhân tạo, ảo, thường là một hệ thống cơ khí-điện tử. Với sự xuất hiện và chuyển động của mình, robot gây cho người ta cảm giác rằng nó giác quan giống như con người. Từ "robot" (người máy) thường được hiểu với hai nghĩa: robot cơ khí và phần mềm tự hoạt động. Ngày nay, người ta vẫn còn đang tranh cãi về vấn đề: “Một loại máy như thế nào thì đủ tiêu chuẩn để được gọi là một robot?” Một cách gần chính xác, robot phải có một vài (không nhất thiết phải đầy đủ) các đặc điểm sau đây: Không phải là tự nhiên, tức là do con người sáng tạo ra. Có khả năng nhận biết môi trường xung quanh. Có thể tương tác với những vật thể trong môi trường. Có sự thông minh, có khả năng đưa ra các lựa chọn dựa trên môi trường và được điều khiển một cách tự động theo những trình tự đã được lập trình trước. Có khả năng điều khiển đuợc bằng các lệnh để có thể thay đổi tùy theo yêu cầu của người sử dụng. Có thể di chuyển quay hoặc tịnh tiến theo một hay nhiều chiều. Có sự khéo léo trong vận động. Sau đây là một số định nghĩa về robot : Tiêu chuẩn quốc tế ISO 8373 định nghĩa robot như sau: “Đó là một loại máy móc được điều khiển tự động, được lập trình sẵn, sử dụng vào nhiều mục đích khác nhau, có khả năng vận động theo nhiều hơn 3 trục, có thể cố định hoặc di động tùy theo những ứng dụng của nó trong công nghiệp tự động.” Joseph Engelberger, một người tiên phong trong lĩnh vực robot công nghiệp nhận xét rằng: “Tôi không thể định nghĩa robot, nhưng tôi biết loại máy móc nào là robot khi tôi nhìn thấy nó!!”. Từ điển Cambridge trực tuyến định nghĩa robot rằng rằng: “Đó là một loại máy có thể thực hiện những công việc một cách tự động bằng sự điều khiển của máy tính”. Người máy hay Robot là công cụ cơ điện tử, thủy lực, nhân tạo, ảo,... thay thế con người trong công nghiệp hay môi trường nguy hiểm. Robot còn là công cụ để giúp con người giải trí, tìm hiểu khoa học. Ta có thể thấy định nghĩa về robot là 1 định nghĩa “mở”, nghành công nghiệp robot ngày càng phát triển, con người sẽ được chứng kiến sự ra của nhiều loại robot hơn nữa. 2.2 Phân Loại Robot : Có rất nhiều định nghĩa cũng như cách phận loại robot. Sau đây là một số cách phân loại robot. Theo Viện Robotics Hoa Kỳ(Robotics Institute of America - RIA) thì có 4 loại robot như sau: Robot vân hành với sự điều khiển của con người. Tự vận hành với chu trình được định trước. Robot khả trình, điều khiển được với quỹ đạo liên tục Robot có khả năng tự thu nhận thông tin từ môi trường để đưa ra chuyển động thông minh Theo Hiệp Hội Robot Nhật Bản : Robot vận hành với sự điều khiển của con người. Robot vận hành với trình tự cố định. Robot vận hành với trình tự được điều khiển đơn giản. Playback Robot, Robot được lập trình sẵn nhiều cách chuyển động. Robot điều khiển bằng số với các tác vụ được lập sẵn. Robot thông minh : có thể tự hiểu được môi trường để hành động hoàn thành tác vụ. Ngoài ra còn các cách phân loại robot theo hình dáng và chức năng của robot ví dụ như: robot công nghiệp, tay máy, robot giống người, robot mo phỏng động vật … 2.3 Các bộ phận của robot di động thông minh : Một robot thường bao gồm 3 bộ phận: bộ phận cảm nhận, bộ phận điều khiển và bộ phận chấp hành. Bộ phận cảm nhận : thu nhận thông tin từ môi trường. Bao gồm các sensor nội và sensor ngoại. Bộ phận điều khiển : nhận thông tin từ bộ phận cảm nhận từ đó đưa ra tín hiệu điều khiển bộ phận chấp hành. Bao gồm bộ xử lý và bộ nhớ. Bộ phận chấp hành : thực hiện hành động của robot. Nhận thông tin điều khiển từ bộ phận điều khiển. Trong nhiều trường hợp bộ phận chấp hành nhận thông tin thẳng từ bộ phận cảm nhận. Cảm nhận Chấp hành Điều khiển (gồm vi xử lý và bộ nhớ) Robot PC Môi Trường Hình Ba bộ phận của robot 2.4 Các mô hình điều khiển robot: 2.4.1 Mô hình kiểu phản xạ : Cảm Nhận Chấp Hành Mô hình kiểu phản xạ Mô hình này không có khối điều khiển. Thông tin từ khối cảm nhận được đưa thẳng tới khối chấp hành, từ đó cơ cấu chấp hành hoạt động. Mô hình này có ưu điểm là tốc độ đáp ứng nhanh. Cảm nhận Lên kế hoạch Chấp hành 2.4.2 Mô hình “sens – plan – act “ : Mô hình tuần tự Ở mô hình này, thông tin của môi trường được cảm nhận. Thông tin này được truyền tới bộ phận điều khiển, bộ phận điều khiển sẽ phân tích và từ đó đưa ra thông tin điều khiển tới bộ phận chấp hành. Mô hình này có tốc độ đáp ứng chậm. 2.4.3 Mô hình kiểu lai : Lập kế hoạch Chấp hành Cảm Nhận Mô hình lai Mô hình này là mô hình kết hợp giữa 2 kiểu mô hình trên. Mô hình lai bao gồm nhiều cặp “cảm nhận – châp hành” hoạt động như mô hình phản xạ, tốc độ đáp ứng khá nhanh. Bên cạnh đó có 1 khối điều khiển lập kế hoạch cho toàn bộ tác vụ của robot. Chương 3: Thiết kế Robot cleanmate – Phần cơ khí Robot bao gồm : Đế hình tròn bằng nhựa mica đường kính 38 cm. Hộp hút bụi: chổi quét, hộp đựng rác, nắp đậy. Chổi quét hoạt động bởi 1 động cơ chổi than. Vành dò vật cản: là 1 vành tròn uốn bằng nhôm, lắp phía trước robot. Bánh xe phát động: tiện bằng nhự có vành cao su, đường kính 7cm. Cặp động cơ phát động là 2 động cơ chổi than có sô vòng quay là 100 vòng / phút. Trục đỡ vành dò vật cản HỘP ĐỰNG RÁC 38 cm Bánh xe phát động 20 cm Đế Robot nhìn từ trên xuống Sensor dò độ cao Bánh xe thụ động Chổi Quét 38cm 20 cm Bánh xe phát động Đế robot nhìn từ dưới Motor và bánh xe phát động Chương 4: Thiết kế mạch điện tử 4.1 Tổng quan về mạch điện tử : Mạch điện tử bao gồm các khối lớn sau: Khối nguồn: Nguồn lấy từ ăcquy (khi robot hoạt động), điện lưới thông qua adapter (khi robot sạc pin). Khối nạp ăcquy. Khối nguồn cho các động cơ. Khối nguồn cho vi điều khiển, sensor. Khối giao tiếp: Bàn phím. Đèn hiển thị, LED 7 đoạn. Loa. Mắt đọc hồng ngoại. Khối cảm biến: Cảm biến cảm nhận độ cao. Cảm biến dò vật cản phía trước. Mạch công suất: Mạch điều khiển động cơ. Khối điều khiển trung tâm: Sử dụng vi điều khiển PIC16F877A của hãng Microchip. 4.2 Khối điều khiển và giới thiệu PIC16F877A: Vi điều khiển được sử dụng trong robot là PIC16F877A do hãng Microchip sản xuất. Các vi điều khiển thuộc dòng PIC tỏ ra rất ổn định, các khối chức năng được hỗ trợ đầy đủ và giúp người dùng tiết kiệm thời gian thiết kế mạch cũng như lập trình. Hiện nay các loại vi điều khiển dòng PIC được sử dụng rất nhiều trong công nghiệp. Tiêu biểu nhất trong dòng vi điều khiển cấp trung của họ PIC là 16F877A. Sơ đồ chân của PIC16F877A 4.2.1 Hight-performance RISC CPU Cấu trúc tập lệnh đơn giản: 35 lệnh đơn. CPU thiết kế theo kiến trúc RISC. Tần số hoạt động lớn nhất: DC – 20MHz. Flash Program Memory: 8K x 14 words. Data Memory (RAM) : 368 x 8 bytes. EEPROM Data Memory: 256 x 8 bytes. Nạp chương trình và sửa lỗi onboard. Chế tạo theo công nghệ CMOS. Hỗ trợ nhiều tính năng mạnh mẽ Sơ Đồ KhốI PIC16F877A 4.2.2 Các cổng vào ra : Vi điều khiển PIC16F877A có 5 cổng vào ra bao gồm:A, B, C, D, E. Trong đó: Cổng A: Vào ra 6 bit, có định hướng. Khai báo định hướng vào ra ở thanh ghi TRISA. Nếu bit TRISAx=1 thì chân RAx sẽ được đinh nghĩa là lối vào và ngược lại. Thanh ghi lưu trạng thái các chân của cổng A là thanh ghi PORTA. Chân RA4 của cổng A được có thể được sử dụng để đưa dao động đầu vào cho Timer0 (T0CKI). Các chân còn lại của cổng A có thể được khai báo để được dùng như lối vào tương tự. Các thanh ghi liên quan ADCON0, ADCON1. Cấu hình Cổng A Cổng B: Vào ra số có độ rộng 8bit, có định hướng. Khai báo định hướng vào ra ở thanh ghi TRISB. Nếu bit TRISBx=1 thì chân RBx sẽ được đinh nghĩa là lối vào và ngược lại. Thanh ghi lưu trạng thái các chân của cổng B là thanh ghi PORTB 3 chân của cổng B là : RB3,RB6,RB7 còn được sử dụng làm chân lập trình PGM, PGC,PGD. 4 chân từ RB7:RB4 có ngắt on-change. Cấu hình Cổng B Cổng C : Vào ra số có độ rộng 8bit, có định hướng. Khai báo định hướng vào ra ở thanh ghi TRISC. Nếu bit TRISCx=1 thì chân RCx sẽ được đinh nghĩa là lối vào và ngược lại. Thanh ghi lưu trạng thái các chân của cổng C là thanh ghi PORTC. Các chân của cổng C đều có bộ đệm triger smitt. Cổng C còn được sử dụng cho 1 số khối chức năng khác. Cấu hình Cổng C Cổng D : Vào ra số có độ rộng 8bit, có định hướng. Khai báo định hướng vào ra ở thanh ghi TRISD. Nếu bit TRISDx=1 thì chân RDx sẽ được đinh nghĩa là lối vào và ngược lại. Thanh ghi lưu trạng thái các chân của cổng D là thanh ghi PORTD. Cấu hình Cổng D Cổng E : Cổng E chỉ có 3 chân vào ra, có bộ đệm triger smitt. Cổng E có thể được dùng như lối vào ra số hoặc tương tự. Thiết lập tại các thanh ghi TRISE, ADCON1. Cấu hình Cổng E 4.2.3 Các Khối Timer: Vi điều khiển PIC16F877A có 3 bộ timer: Timer0: Là bộ đếm 8bit, có thể ghi đọc. Timer0 có 2 chế độ hoạt động là : định thời hoặc đếm. Khi hoạt động Timer đếm tiến từ giá trị được ghi trong thanh ghi TMR0 đến 256. Khi đếm đến 256 cờ tràn TMR0IF sẽ đc bật lên. Time = (FOSC/4) x Prescale x ( 256 – TMR0 ) Bit T0CS : chọn nguồn dao động cho Timer0 =1 nguồn dao động được đưa vào từ chân T0CKI.(Chế độ đếm) =0 nguồn dao động hệ thống Bit T0SE : Ở chế độ đếm, chọn sườn xung =1 sườn xuống. =0 sườn lên. Bit PSA : Chọn prescale =1 prescale được dùng cho watchdog. =0 prescale được dùng cho timer0. Bit PS2:PS0 : chọn tỉ lệ chia cho Prescale Cấu hình Presacle Timer0 Sơ đồ khối Timer0 Timer1: Sơ đồ khối Timer1 Là bộ đếm 16 bit, có thể ghi đọc. Giá trị timer được lưu trong 2 thanh ghi là TMR1L và TMR1H. Khác với timer0, timer1 có bit bật và tắt timer. Timer1 có thể được dùng để đinh thờI cho khối CPP. Khi Timer 1 được bật, timer sẽ đếm từ giá trị được ghi trong 2 thanh ghi TMR1L và TMR1H tới 0xFFFF, khi đó cờ tràn TMR1IF được bật. Time = (FOSC/4) x Prescale x ( 0xFFFF – (( TMR1H x 0xFFFF ) + TMR1L)). Bit T1OSCEN: Chọn nguồn dao động =1: sử dụng dao động ngoài. =0: sử dụng nguồn dao động hệ thống. Bit TMR1CS=1 timer1 hoạt động như bộ đếm, xung vào từ chân RC1. Bit TMR1ON: bật tắt timer1. =1 Bật. =0 Tắt. Bit T1CKPS1: T1CKPS0 : Chọn số chia cho prescale. 0:0 chia 1 0:1 chia 2 1:0 chia 4 1:1 chia 8 Timer2: sơ đồ khối timer 2 Là bộ đếm 16 bit, có thể ghi đọc. Giá trị timer được lưu trong 2 thanh ghi là TMR1L và TMR1H. Timer2 có bit bật và tắt timer. Timer1 có thể được dùng để đinh thời cho khối PWM. Khi Timer 1 được bật, timer sẽ đếm từ giá trị được ghi trong 2 thanh ghi TMR2L và TMR2H tới 0xFFFF, khi đó cờ tràn TMR2IF được bật. Timer 2 có cả prescale lẫn postscale. Các bit TOUTPS3: TOUTPS0 : Chọn thỉ lệ chia cho postscale. TMR2ON : bit bật tắt timer2. T2CKPS1: T2CKPS1 : Chọn tỉ lệ cho prescale. 4.2.4 Khối PWM: PIC16F877A có 2 khốI PWM nằm trong 2 khối CCP sơ đồ khối PWM Độ rộng xung là dữ liệu 10 bit được lưu trong 2 thanh ghi CCPR1L và OCPCON Chu kì được quyết định bởI giá trị ghi trong thanh ghi PR2 và Timer2. PWM period = [( PR2 + 1 ) x 4 x TOSC x ( TMR2 prescale value ) xung ra từ PWM Các bước cài đặt cho PWM Ghi chu kì vào thanh ghi PR2. Ghi độ rộng xung vào 2 thanh ghi CCPR1L và CCP1CON Chọn chân ra là chân RC2. Bằng cách xoá bit TRISC2. Ghi giá trị prescale của timer2. Cho phép Timer2. Cấu hình CCP để sử dụng PWM. Cấu hình khối CCP 4.2.5 Khối ADC: Khối ADC của PIC16F877A là loại ADC xấp xỉ liên tiếp có 10 bit lối ra. Điện áp tham chiếu lựa chọn được bằng phần mềm, có thể là điện áp hệ thống, hoặc điện áp tham chiếu ngoài được đưa và từ chân RA2 và RA3. Khi việc biến đổi A/D hoàn tất cờ ADIF sẽ được bật. Khối biến đổi A/D có 4 thanh ghi là : Kết quả biến đổi Byte cao: ADRESH Kết quả biến đổi Byte thấp: ADRESL Hai thanh ghi điều khiển: ADCON0 và ADCON1. Sơ đồ khối ADC Thanh ghi ADCON0: Chọn nhịp xung đồng hồ cho ADC. Cấu hình xung nhịp cho ADC Các bit CHS2:CHS1:CHS0 : chọn kênh cho ADC 000 : kênh 0 ( AN0 ) 001: kênh 1 ( AN1 ) 010: kênh 2 ( AN2 ) 011: kênh 3 ( AN3 ) 100: kênh 4 ( AN4 ) 101: kênh 5 ( AN5 ) 110: kênh 6 ( AN6 ) 111: kênh 7 ( AN7 ) Bit GO/DONE : khi ADGO=1, ADC bắt đầu biến đổi. Bit ADON: bật tắt ADC. 4.2.6 Khối truyền thông nối tiếp UART: Khối UART có thể được cấu hình để hoạt động ở chế độ song công hoặc bán song công. Chuẩn điện : bit 1 tương ứng mức điện áp 5v, bit 0 tương ứng với điện áp 0v. Data 7 bit hoặc 8 bit. Ở đầu khung dữ liệu có 1 Bit start, cuối khung dữ liệu có 1 hoặc 2 bit stop. Khi nhận dữ liệu cờ ngắt RCIE và RCIF sẽ đc bật. Tốc độ truyền được ghi vào thanh ghi SPBRG. SPBRG = [(FOSC/16)/Speed] – 1 4.2.7 Các tài nguyên của PIC được sử dụng trong việc xây dựng khối điều khiển cho robot: I/O Port : 22 chân. PWM. UART. Timer0. ADC. Cụ thể các tài nguyên được dùng trình bày ở bảng sau Mô tả chức năng các chân vào ra được sử dụng Tên chân Chân # Kiểu I/O/P Mô tả OSC1 13 I Lối vào tự bộ dao động thạch anh 4MHz OSC2 14 O Lối ra từ bộ dao động thạch anh 4MHz /Vpp 1 I Chân Reset của PIC. Chân này hoạt động ở mức thấp Vpp P Chân lối vào điện áp lập trình PORTA Key/RA0 2 I Kênh 0 của bộ A/D để cảm nhận phím bấm Sen22/RA1 3 I Kênh 1 của bộ A/D để cảm nhận nguồn đang sử dụng là pin hay adaptor CDS/RA2 4 I Kênh 2 của bộ A/D để cảm nhận mức độ sáng tối của môi trường V1sen/RA3 5 I Kênh 3 của bộ A/D để theo dõi mức điện áp trên pin trong quá trình Cleaner hay Charger PORTB SW/RB0 33 I Cảm nhận vật cản Foto_Dio/RB1 34 I Cảm nhận độ cao PGM/Mo_sing/RB3 36 PGM P Lập trình ICSP ở mức thế thấp Mo_Sing O Điều khiển motor quét Speak/RB4 37 O Tín hiệu điều khiển loa PGC 39 P Chân Clock của ICSP PGD 40 P Chân Data của ICSP PORTC PWM/RC2 17 O Điều khiển dòng nạp pin TX/RC6 25 O Truyền dữ liệu tới PC RX/IR/RC7 26 I Nhận dữ liệu ra từ bộ thu IR PORTD Inx/RDx 19, 20, 21, 22 O Các tín hiệu điều khiển chuyển động bánh xe A, B, C, D/RDx 27, 28, 29, 30 O Dữ liệu về số được hiển thị PORTE T1/RE0 8 O Điều khiển bật/tắt led 7 đoạn 1 T2/RE1 9 O Điều khiển bật/tắt led 7 đoạn 2 T3/RE2 10 O Điều khiển bật/tắt các led đơn VDD 11, 32 P Nguồn 5V GND 12, 31 P Chân đất I = Input O = Output P = Power Mô tả các tài nguyên được sử dụng 4.3 Khối quản lý nguồn : 4.3.1 Khối chuyển đổi nguồn nuôi: Nguồn cung cấp lối vào cho CleanMate có thể lấy từ pin hoặc adaptor tùy thuộc vào chế độ hoạt động của robot là Cleaner hay Charger, do vậy cần có hệ thống rơle để chuyển đổi giữa hai loại nguồn này Sơ đồ đầu đưa điện áp vào. Hình A: điện áp được lấy trực tiếp từ pin hoặc adaptor qua các diode bảo vệ đưa vào mạch rơle ở hình B. Hình B: Khi ON (bật công tắc nguồn) thì Vcc lấy từ pin NiCd, robot hoạt động ở chế độ Cleaner. Khi OFF (tắt công tắc nguồn) thì Vcc lấy từ adaptor (nguồn 22V), robot hoạt động ở chế độ Charger. Việc sử dụng rơle sẽ tránh được sự ngắn mạch giữa pin và adaptor. Sơ đồ hệ rơle chọn nguồn 4.3.2 Khối ổn áp: Tạo điện áp 5 V : sử dụng IC7805 Điện áp 5V được sử dụng để nuôi vi điều khiển, IC giải mã 74LS47, khối logic của L298, các khối cảm biến, loa và các led hiện thị. sơ đồ ổn áp. Tạo nguồn cho các motor: Để đảm bảo cho robot di chuyển một cách đồng đều khi có sự thăng giáng của điện áp trên nguồn hoặc khi sử dụng một nguồn điện khác, ta sử dụng thêm một mạch ổn áp để cung cấp nguồn cho các motor . Các yêu cầu cho bộ nguồn motor: Điện áp ra trên 10V và có thể điều chỉnh được Dòng cung cấp có thể đạt tới 3A Đáp ứng các tiêu chí trên và một vài yếu tố khác, ở đây ta sử dụng mạch ổn áp theo kiểu Switching Step-Down dùng IC LM2576. Lựa chọn nguồn Switching thay cho nguồn kiểu tuyến tính (linear) sẽ thu được nhiều ưu điểm quan trọng sau: Hiệu suất làm việc cao (có thể tới 88%) Có thể cung cấp dòng ra lớn (điều mà hiếm IC linear nào có thể đạt được hoặc sẽ phải dùng tản nhiệt lớn, chằng hạn như LM138 - 5A, LM150 – 3A, LM317 – 1.5A) Công suất tiêu tán nhiệt ít Đây là kết luận thu được sau một quá trình sử dụng LM317. Lúc đầu hệ thống dự định sẽ sử dụng LM138 hoặc LM150, tuy nhiên hai loại IC này không có bán trên thị trường, do vậy đã chuyển sang dùng 2 IC LM317 mắc song song để tạo ra dòng lớn hơn (mới chỉ cung cấp cho 2 động cơ bánh xe mà không có động cơ chổi quét). Điều đó cũng đồng nghĩa với việc phải sử dụng tản nhiệt có kích thước lớn. Nhưng với LM2576 thì hoàn toàn không cần đến tản nhiệt (nếu cũng cung cấp cho 2 động cơ bánh xe) hoặc dùng tản nhiệt nhỏ (nếu cung cấp cho cả 3 motor). Thực tế ta cũng có thể sử dụng LM317 để tạo nguồn ổn áp theo kiểu Switching nhưng sẽ yêu cầu nhiều thành phần bên ngoài hơn là sử dụng LM2576. Tham khảo mạch của CleanMate 356 ta cũng thấy có một IC Switching KA34063A, IC này có thể hoạt động theo 3 chế độ Buck, Boost, Inverter với dòng tối đa là 1.5A Mô tả về LM2576 Các đặc tính: Điện áp ra điều chỉnh được từ 1.23V tới 37V Dòng ra đạt tới 3A Chỉ yêu cầu 4 thành phần ngoài Bộ dao động bên trong với tần số không đổi 52kHz Hiệu suất cao Bảo vệ quá dòng, quá nhiệt Cấu tạo bên trong của LM2576 Sơ đồ mạch nguồn cho motor Công thức tính điện áp ra: Trong đó: VREF = 1.23V, R24 = 100, R25 = 1k Như vậy điện áp ổn định lối ra được quyết định thông qua điện áp phản hồi về chân 4 (FB- Feed Back). Điện áp này sau đó được so sánh với một điện áp tham chiếu chuẩn (VREF) để điều khiển độ dẫn của một transistor trong LM2576 sao cho điện áp ra luôn luôn gần với điện áp mong muốn. Lựa chọn các linh kiện: Diode Schottky D16: FR306 (3A) Cuộn cảm L1: dùng dây đồng cuốn đầy trên lõi ferit hình xuyến (hình bên) Biến trở R43 10k được xoay chỉnh sao cho điện áp trên hai cực của motor là 9V. Khi đó Vmotor = 10.25V. Theo công thức trên ta tính được P1 = 7.23k. 4.3.3 Khối nạp Pin: Khối nạp Pin sử dụng thêm 1 bộ chuyển đổI AD/DC, đầu vào 220V – 50hz đầu ra là 22VDC- 1A. Sơ đồ khối nạp Pin IC LM317 luôn duy trì một điện áp 1.25V giữa chân OUT và chân ADJ,với điện trở công suất R12=1 ohm sẽ tạo ra nguồn dòng 1.25 A. Khi chân PWM ở mức cao thì transistor C1815 sẽ mở, điện áp trên chân ADJ là 0.2V, quá trình nạp bị ngắt. Khi chân PWM ở mức thấp C1815 đóng, điện áp ra khoảng 21.5V quá trình nạp được thực hiện. Điện áp trên Pin được khối điều khiển nhận biết bằng việc đo điện áp ở chân V1sen: Vpin = V1sen / R23 x (R22 + R23) 4.4 Hệ thống cảm nhận vật cản: Khối này sử dụng hai cách ly quang (Opto) H92B4 để có thể cảm nhận va chạm từ bên trái, bên phải hoặc ở giữa. Khi robot chạm vào vật cản thì hệ thống cơ khí sẽ ngăn ánh sáng truyền từ led phát sang cực B transistor Cách ly quang Tín hiệu ra trên các cực C của các Opto được tổng hợp và chuyển đổi sang mức logic nhở transistor C1815. Như vậy, lối ra sẽ là logic 0 nếu chạm vào vật cản và logic 1 nếu không chạm vật cản. Các điện trở R17, R18, R19 được chọn sao cho chỉ cần ít nhất một opto bị ngăn ánh sáng là lối ra SW Out sẽ quyết định ở mức 0. Như vậy, hai opto có chức năng hoàn toàn giống nhau và robot chỉ cần cảm nhận có va chạm hay không chứ không phân biệt va chạm trái hay va chạm phải. Bên cạnh việc sử dụng cách ly quang, ta cũng có thể sử dụng các công tắc chạm thông thường, khi đó mạch sẽ đơn giản hơn. Tuy nhiên, trong quá trình hoạt động của robot, do số lần va chạm là rất lớn nên công tắc chạm cũng dễ bị hỏng hóc hơn. sơ đồ bộ phận cảm nhận vật cản 4.5 Hệ thống sensor gầm cảm nhận độ cao: Khi robot làm việc ở những vùng có bậc thang, để không bị rơi, robot phải có hệ thống sensor cảm nhận được độ cao. Nguyên lý cảm nhận: Sử dụng ba cặp diode thu phát hồng ngoại được lắp đặt tại 3 góc ở phía trước của robot. Bình thưởng, tín hiệu phát từ sensor phát sẽ phản xạ từ mặt sàn lên sensor thu, nhưng nếu gặp phải độ cao (tức là khoảng cách giữa sensor và mặt sàn lớn hơn một ngưỡng nào đó) thì tín hiệu phản xạ sẽ rất yếu hoặc không có. Tín hiệu thu được trên sensor thu sẽ qua bộ lọc, khuếch đại rồi so sánh để chuyển thành tín hiệu dạng số. Do phải làm việc với nhiều loại mặt sàn, chịu ảnh hưởng của nhiều loại nhiễu, chủ yếu là nhiễu ở tần số thấp, vì vậy ta phải điều chế tín hiệu phát lên tần số cao, trong đề tài này là 1KHz. Tần số này được tạo ra bởi mạch sử dụng LM124 Sơ đồ điều chế tín hiệu phát 4.6 Cảm nhận sáng tối: Mạch này sử dụng một quang trở (photoresistor) được mắc như hình vẽ. Tùy vào điều kiện môi trường sáng hay tối mà điện trở của nó sẽ có giá trị trong khoảng từ 200Ω – 6kΩ. Lối ra từ dòng chuyển thành thế qua một điện trở rồi đưa vào khối ADC 10-bit của vi điều khiển.Vi điều khiển sẽ so sánh giá trị ADC thu được với giá trị trước đó để kết luận robot đang di chuyển về vùng sáng hơn hay tối hơn. Điện trở R ở đây cũng có tác dụng hạn dòng khi điện trở của quang trở có giá trị nhỏ quá. sơ đồ ghép nối quang trở 4.7 Khối giao tiếp điều khiển từ xa hồng ngoại: Khối này có chức năng hoàn toàn giống như một bộ điều khiển từ xa trong bán kính 10m.Tín hiệu điều khiển được truyền từ bộ phát (hay bộ điều khiển từ xa) đến bộ thu trong môi trường không khí. Để bộ thu có thể phân biệt được giữa tín hiệu IR của bộ điều khiển với với các nguồn phát IR khác, tín hiệu của bộ phát được điều chế trên sóng mang có tần số từ 32.5kHz - 56kHz. Trong ứng dụng này, tần số 40kHz được sử dụng. Hai thành phần chính là bộ phát và bộ thu. 4.7.1 Nguyên lý hoạt động: Mỗi tín hiệu IR được phát ra từ bộ điều khiển từ xa từ bộ điều khiển từ xa có rất nhiều đặc trưng khác nhau. Những đặc trung này phụ thuộc vào nhà sản xuất. Nhìn chung đều có những đặc trung sau : Bước sóng của tín hiệu IR. Tần số sóng mang. Phương thức mã hoá. Nội dung của mã. ThờI gian của xung. Chuẩn RC5 là 1 trong những chuẩn giao tiếp IR tiêu biểu. Đây là chuẩn được hãng Philips phát triển. Trong chuẩn này khi mỗI phím bấm trên điều khiển từ xa được ấn nó sẽ phát ra một khung dữ liệu gồm 14 bit, mỗi bit có độ dài 1.728ms. Toàn bộ chuỗi bit được phát lại sau mỗi 130ms nếu phím được giữ. Các bit được được mã hoá theo kiểu manchester, tức là mỗi bit bao gồm 2 nửa: nửa trái và nửa phải, 2 nửa này có mức logic ngược nhau. Dạng Xung mã hoá Manchester. Cấu trúc 1 khung dữ liệu khi nhận như sau: Khung dữ liệu RC5 khi nhận. 4.7.2 Bộ Phát : Led IR phát Bàn phím Bộ phát tín hiệu Sóng mang A Dữ liệu Cấu trúc 1 bộ phát hồng ngoại Trong sơ đồ trên, các khối Bộ tạo dữ liệu, bộ phát tín hiệu, bộ tạo sóng mang thường nằm trong một IC Encoder như M145027 (SGS-THOMSON), PT2262, TRC1300 (Texas Instruments)… Hoạt động và chức năng của mỗi khối: Bàn phím: thể hiện các phím chức năng. Khi một phím được ấn sẽ làm Wake-Up IC Encoder (thoát khỏi chế độ Power-Down) để thực hiện nhiệm vụ. Mỗi phím được ấn tương ứng với một dữ liệu được truyền đi. Trước khi dữ liệu được truyền, chúng được thêm các bit đầu, cuối, kiểm lỗi, hoặc các bit bảo mật…Dữ liệu mới tạo ra được truyền từng bit đồng thời chúng được điều chế trên sóng mang có tần số đặc trưng cho bộ phát. Sơ đồ bộ phát Tuy nhiên xây dựng một mạch phát riêng là không cần thiết, ta có thể sử dụng 1 chiếc điều khiển từ xa của TV có sẵn. 4.7.3 Phần thu: Phần thu sử dụng cảm biến GP1U52X. Đây là cảm biến có sẵn bộ lọc thông dải, bộ giải điều chế, bộ khuếch đại cho lối ra là dạng số. Sơ đồ cấu tạo bên trong của GP1U52X Đặc tính kỹ thuật: Điện áp hoạt động 5V Dòng tiêu thụ 5mA Tần số trung tâm của bộ lọc 40kHz Độ rộng dải thông 4kHz Hình ảnh cảm biến GP1U52X Khung dữ liệu nhận được từ cảm biến có sự tương đồng với khung dữ liệu chuẩn RS232. Vì vậy ta sử dụng khốI UART của vi điều khiển để đọc dữ liệu từ cảm biến. Tốc độ UART phải được đặt đúng bằng tốc độ truyền của remote control. Sau khi tham khảo nhiều loại remote control cũng như thử nghiệm. Tốc độ UART được đặt là 300Kbps. 4.8 Bàn phím: Ngoài việc điều khiển từ xa, robot còn bố trí 3 phím bấm: Start/Stop (khởi động hoặc ngừng hoạt động robot) Timer (đặt thời gian chạy) Mode (đặt chế độ chạy). Để tiết kiệm các công vào ra ( I/O port ) của vi điều khiển, ta dùng phương pháp đọc phím bấm bằng ADC. Sơ đồ ghép nối phím bấm với Vi điều khiến Ở đây ta sử dụng mạng điện trở hợp thành một dãy các bộ chia thế. Các bộ chia thế này tao ra các mức điện áp khác nhau cho mỗi phím được nhấn. Lối ra được đưa vào ADC 10-bit của vi điều khiển để đo các mức điện áp này và quyết định xem phím nào được nhấn. Phím Điện áp ra (V) Giá trị ADC Start/Stop 1.56 320 Timer 2 410 Mode 2.5 512 Giá trị ADC khi đọc phím bấm Trên thực tế, trong phần mềm xử lí, để quyết định xem phím nào được ấn, không phải ta so sánh giá trị ADC với một số nào đó mà xem giá trị ADC này có nằm trong dải nào đó không. Chằng hạn, nếu phím Mode được ấn thì giá trị ADC phải nằm trong dải từ 502 tới 522 (tức là lân cận của 512, với mức sai số là 10). Phương pháp đọc phím bấm này có ưu điểm tiết kiệm tài nguyên của Vi điều khiển, tuy nhiên nhược điểm của phương pháp này là không chính xác, do xung nhiếu sinh ra khi ấn phím. 4.9 Hiển thị LED 7 đoạn và Loa: 4.9.1 Hiển thị LED 7 đoạn : LED 7 đoạn sẽ hiển thị thời gian đặt cho robot hoạt động, chế độ hoạt động. Khối này sử dụng 4 chân của vi điều khiển qua bộ giải mã BCD-TO-SEVEN-SEGMENT 74LS47 để điều khiển 2 led 7 đoạn và các led đơn. Các thông tin về thời gian, chế độ chạy, trạng thái của pin sẽ được thể hiện trên các led này. Mỗi led 7 đoạn và nhóm led đơn được refresh với chu kì 5ms bởi phần mềm qua các tín hiệu điều khiển T1, T2, T3 để hiện thị các giá trị khác nhau trên các led. Sơ đồ hiển thị LED 7 đoạn 4.9.2 Loa : Loa báo hiệu khi phím được ấn, báo lỗi, báo hết pin. Loa phát âm La tần số 440Hz, tín hiệu điều khiển loađược cung cấp từ vi điều khiến Sơ đồ ghép nối loa 4.10 Mạch điều khiển động cơ : 4.10.1 Giới thiệu về mạch cầu H: Robot sử dụng 2 động cơ DC chổi than, vì vậy ta sử dụng mạch cầu H để điều khiển motor Sau đây là sơ đồ nguyên lý và nguyên tắc hoạt động của mạch cầu H Sơ đồ nguyên lý và nguyên tắc hoạt động của mạch cầu H. Ta thấy mạch cầu H điều khiển động cơ bằng 4 khoá S1 S2 S3 S4. Khi S1 và S4 đóng, S2 S3 mở động cơ quay theo chiều kim đồng hồ, còn khi S2 và S3, còn khi Khi S2 và S3 đóng, S1 S3 mở động cơ quay theo chiều ngược chiều kim đồng hồ.S1 và S3 đóng, S2 và S4 mở hoặc S1 và S3 mở, S2 và S4 đóng Motor ở trạng thái phạnh. Các trường hợp S1 S2 cùng đóng hoặc S3 và S4 cùng đóng không được xảy ra, vì khi đó xảy ra hiện tượng đoản mạch dẫn đến mạch bị cháy. S1 S2 S3 S4 Motor Mở Mở Đóng Đóng Đoản mạch Đóng Đóng Mở Mở Đoản mạch Đóng Mở Đóng Mở Phanh Mở Đóng Mở Đóng Phanh Đóng Mở Mở Đóng Tiến Mở Đóng Đóng Mở Lùi Đóng Đóng Đóng Đóng Ngắn mạch Mở Mở Mở Mở Thả nổi Trạng thái motor Trên thực tế trong các mạch cầu H ta có thể thay các khoá S1 S2 S3 S4 bằng rơle hay các loại transistor, tuy nhiên các transistor này phải có công suất tiêu tán nhỏ, chịu được dòng lớn. Hiện nay có rất nhiều loại transistor trường MOSFET có công suất tiêu tán nhỏ tuy nhiên lại chịu được dòng lớn, rất thích hợp cho việc thiết kế mạch cầu H. Mạch cầu H được thiết kế với transistor trường MOSFET 4.10.2 Điều khiển motor với IC L298: Để điều khiển motor phát động cho Robot ta hoàn toàn có thể thiết kế 1 mạch cầu H như trên, tuy nhiên cặp motor phát động của robot có công suất nhỏ thêm nữa hình dáng robot nhỏ nên việc sử dụng mạch cầu H là không cần thiết. Thay vào đó ta sử dụng IC L298 Đây là IC có chứa 2 mạch cầu H hoàn toàn độc lập và có thể ghép song song với nhau, mỗi cầu có khả năng cung cấp dòng 2A – đáp ứng được yêu cầu cho mỗi motor có dòng tiêu thụ tối đa là 1.5A. Sơ đồ chân IC L298 Chức năng Chân số Tên Chức năng Nguồn Chân 4 Vs Điện áp Vmotor cho motor Chân 9 Vss Điện áp 5V cho khối logic Chân 8 GND Chân nối đất Lối vào Chân 5, 7 Input 1, Input 2 Lối vào TTL của cầu A Chân 10, 12 Input 3, Input 4 Lối vào TTL của cầu B Lối ra Chân 2, 3 Output 1, Output 2 Lối ra của cầu A Chân 13, 14 Output 3, Output 4 Lối ra của cầu B Cảm nhận Chân 1, 15 IsA, IsB Dùng để điều khiển dòng tải Mô tả IC L298 Hai cầu A và B được mắc hoàn toàn tương tự nhau. Các tín hiệu điều khiển từ PIC được nối thông qua các trở hạn dòng tới lối vào In1, 2, 3, 4 của L298 (do dòng tối đa ứng với điện áp vào ở mức cao là 100µA). Lối ra được mắc thêm các diode xung lên nguồn Vmotor và đất để triệt tiêu các xung phản hồi từ motor. Gần các chân nguồn Vs và Vss cần mắc thêm các tụ gốm 100nF để tránh dao động làm ảnh hưởng tới PIC. Sơ đồ ghép nối với vi điều khiển 4.10.3 Điều khiển Motor chổi quét: Chổi quét sử dụng một động cơ có dòng tiêu thụ tối đa là 2A. Do chổi quét chỉ xoay theo một chiều nên mạch điều khiển không cần cầu H mà chỉ sử dụng một MOSFET-N là IRF540 làm nhiệm vụ đóng mở thông thường. Mô tả IRF540 mô tả IRF540 Như vậy, IRF540 có thể tải được dòng khá lớn 33A – đủ để đáp ứng cho motor, điện trở giữa cực nguồn (S) và cức máng (D) khi mở rất nhỏ 44mΩ nên sụt áp trên hai cực DS cũng nhỏ (cỡ 1V). Thêm vào đó, trong IRF540 đã có sẵn một diode Schottky để bảo vệ dòng ngược từ S sang D mà có thể làm hỏng cấu trúc của MOSFET. Lối vào Mo_sing Chức năng motor L Dừng H Xoay L: Low H: High sơ đồ mạch điều khiển motor quét Nguồn cung cấp Vmotor được lấy từ lối ra của mạch Switching LM2576. Sơ đồ điều khiển này sử dụng thêm một tầng phụ (dùng C1815) để kích mở IRF540. Điều này có thể không cần thiết nhưng sẽ rất an toàn nếu có sự cố làm hỏng MOSFET cũng không làm ảnh hưởng đến vi điều khiển. Hai cực của motor được nối thông qua jack JP3. Khi tín hiệu điều khiển Mo_sing từ vi điều khiển ở mức thấp (Low) thì C1815 sẽ cấm, cực G của Q1 nối đất qua điện trở R42, do vậy Q1 cũng cấm và làm motor ở trạng thái dừng. Ngược lại, khi Mo_sing ở mức cao (High), Q2 dẫn, điện áp cực E của Q2 sẽ ở mức cao do R42 có giá trị trở rất lớn và làm Q1 mở, kết quả là có dòng chạy qua motor. Nhược điểm của mạch: vì IRF540 mở hoàn toàn ở 10V nên với mạch được thiết kế như trên IRF540 mở ở 5V vì vậy trong quá trình hoạt động transistor rất nóng, mặc dù có tản nhiệt nhưng cũng không thể hoạt động được lâu. 4.11 Thiết kế PCB: 4.11.1 Phần mềm thiết kế mạch in PCB DXP Altium Designer: Cũng giống như Orcad, Protel, Proteus, Altium Designer là một phần mềm tiện công cụ để thiết kế các loại bo mạch điện tử. Altium Designer được phát hành đầu năm 2007 với những tính năng mạnh mẽ, vượt trội so với Orcad và Protel. Theo các chuyên gia của Altium, thông thường, việc phát triển các sản phẩm điện tử, gồm thiết kế bo mạch, thiết kế FPGA (vi mạch tích hợp, có thể lập trình để thực hiện các chức năng khác nhau và có thể tái lập trình) và phát triển phần mềm nhúng… là các quá trình riêng rẽ, độc lập được tiến hành trong những môi trường riêng biệt. Altium Designer là một hệ thống phát triển điện tử thống nhất đầu tiên trên thế giới cho phép các kỹ sư thiết kế sản phẩm điện tử từ những khái niệm ban đầu cho đến khi hoàn thành mạch in cuối cùng trong một môi trường đơn nhất. Altium Designer cung cấp một ứng dụng kết hợp tất cả công nghệ và chức năng cần thiết cho việc phát triển sản phẩm điện tử hoàn chỉnh, như thiết kế hệ thống ở mức bo mạch và FPGA, phát triển phần mềm nhúng cho FPGA và các bộ xử lý rời rạc, bố trí mạch in (PCB)… Altium Designer thống nhất toàn bộ các quá trình lại và cho phép bạn quản lý được mọi mặt quá trình phát triển hệ thống trong môi trường tích hợp duy nhất. Khả năng đó kết hợp với khả năng quản lý dữ liệu thiết kế hiện đại cho phép người sử dụng Altium Designer tạo ra nhiều hơn những sản phẩm điện tử thông minh, với chi phí sản phẩm thấp hơn và thời gian phát triển ngắn hơn. 4.11.2 Thiết kế mạch điện trong môi trường Altium Designer: Altium Designer quản lý dữ liệu theo các project. Đầu tiên ta phải khởi tạo project, sau đó tạo file schematic để tạo ra môi trường vẽ mạch nguyên lý. Altium hỗ trợ hầu hết thư viện footprint cho các linh kiện điện tử, như PIC16F877A, Led7 đoạn, các loại điện trở và tụ điện, IC người thiết kế không phải tự tạo thư viện footprint vì vậy việc thiết kế mạch được thực hiện khá nhanh và thuận lợi. Sau khi hoàn thành việc thiết kế mạch nguyên lý ( schematic ) ta chuyển thành PCB. Đầu tiên ta sắp linh kiện vào vị trí nhất định trên bản mạch, khối số được sắp gần nhau, khôi tương tự được sắp ra 1 phần, điều này giúp giảm nhiễu trên mạch. Altium Designer hỗ trợ tính năng đi dây tự động ( auto ruote ). Sau khi đi dây tự động ta chỉnh lại các phần đi dây tự động chưa hợp lý. 4.11.3 Kết quả và nhận xét: Mạch điện tử cơ bản đã đáp ứng được yêu cầu của bài toán. Nhận xét: Tuy nhiên vì tất cả các khối được đặt trên cùng 1 bo mạch nên việc sửa chữa và nâng cấp là rất khó khăn. Khối điều khiển motor phát điộng tuy đã đáp ứng được việc thực hiện các tác vụ của robot, tuy nhiên do sử dụng IC tích hợp, nên khi yêu cầu thay động cơ có công suất cao hơn vào thì không đáp ứng được. Phần điều khiển motor quét chưa tốt. Khi vận hành 1 thời gian dài transistor có hiện tượng nóng. Sensor cảm nhận độ cao hoạt động còn hạn chế, ví dụ như không nhận dạng được nhiều loại mặt sàn. Chương 5: Phần mềm điều khiển Robot. 5.1 Lập trình cho hệ thống thời gian thực: Khái niệm về điều khiển thời gian thực: RTOS( real time operation system ) một hệ điều hành đa nhiệm dành cho các ứng dụng thời gian thực. Như trong các ứng dụng hệ thống nhúng, robotics, điều khiển tự động. Một hệ thống real-time được hiểu là một hệ thống làm việc với các sự kiện tức thời (real-time). Tuy nhiên, không phải mọi hệ thống đều có thể thực hiện được những quyết định tức thời hay đáp trả lại sự kiện một cách tức thời như chúng ta mong muốn. Khi xây dựng các ứng dụng phần mềm chúng ta luôn mong muốn thời gian trễ để đưa ra một lệnh hay một quyết định là nhỏ nhất, hay khi xây dựng các ứng dụng phần cứng chúng ta lại muốn thời gian đưa ra một tín hiệu đáp trả một sự kiện là phải gần như tức thời, các hệ thống đáp ứng sự kiện bao giờ cũng có một thời gian trễ nhất định. Khái niệm "hệ thống thời gian thực" ở đây được hiểu ngầm như là một hệ thống đáp ứng sự kiện với một thời gian trễ chấp nhận được. Như vậy, một hệ thời gian thực là một hệ thống mà sự hoạt động tin cậy của nó không chỉ phụ thuộc vào sự chính xác của kết quả, mà còn phụ thuộc vào thời điểm đưa ra kết quả, hệ thống có lỗi khi yêu cầu về thời gian không được thoả mãn. ví dụ về đáp ứng của hệ thống thời gian thực Một hệ thống thời gian thực có các đặc điểm tiêu biểu sau: Tính bị động: Hệ thống phải phản ứng với các sự kiện xuất hiện vào các thời điểm thường không biết trước. Ví dụ, sự vượt ngưỡng của một giá trị đo, sự thay đổi trạng thái của một thiết bị quá trình phải dẫn đến các phản ứng trong bộ điều khiển. Tính nhanh nhạy: Hệ thống phải xử lý thông tin một cách nhanh chóng để có thể đưa ra kết quả phản ứng một cách kịp thời. Tuy tính nhanh nhạy là một đặc điểm tiêu biểu, nhưng một hệ thống có tính năng thời gian thực không nhất thiết phải có đáp ứng thật nhanh mà quan trọng hơn là phải có phản ứng kịp thời đối với các yêu cầu, tác động bên ngoài. Tính đồng thời: Hệ thống phải có khả năng phản ứng và xử lý đồng thời nhiều sự kiện diễn ra. Có thể, cùng một lúc một bộ điều khiển được yêu cầu thực hiện nhiều vòng điều chỉnh, giám sát ngưỡng giá trị nhiều đầu vào, cảnh giới trạng thái làm việc của một số động cơ. Tính tiền định: Dự đoán trước được thời gian phản ứng tiêu biểu, thời gian phản ứng chậm nhất cũng như trình tự đưa ra các phản ứng. Nếu một bộ điều khiển phải xử lý đồng thời nhiều nhiệm vụ, ta phải tham gia quyết định được về trình tự thực hiện các công việc và đánh giá được thời gian xử lý mỗi công việc. Như vậy người sử dụng mới có cơ sở để đánh giá về khả năng đáp ứng tính thời gian thực của hệ thống. Xử lý thời gian thực: Trong các hệ thống điều khiển, khái niệm tác vụ (task) cũng hay được sử dụng bên cạnh quá trình tính toán. Có thể nói, tác vụ là một nhiệm vụ xử lý thông tin trong hệ thống, có thể thực hiện theo cơ chế tuần hoàn hoặc theo sự kiện. Trong một hệ thống với nhiều đầu vào, và đáp ứng ở đầu ra thì số lượng công việc phải xử lý là khá lớn. Vì vậy ta phải chia khối công việc đó thành nhiều tác vụ nhỏ ( task ) nhỏ hơn đơn giản hơn. Mỗi tác vụ xử lý một công việc nhất định, có thể là quét bàn phím, đọc sensor, điều khiển motor v.v… Tại một thời điểm vi xử lý chỉ thực hiện 1 tác vụ, nhưng với thời gian chuyển đổi rất nhanh giữa các tác vụ ta có thể coi như các tác vụ được thực hiện đồng thời. Có hai kỹ thuật phổ biến cho lập trình hệ thống đa nhiệm là: trạng thái máy ( state machine ) và lập lịch ( time slicing ). State machine chia các tác vụ thành các trạng thái ( state ). Tại mỗi thời điểm sẽ xác định 1 trạng thái và chỉ chuyển sang trạng thái khác khi có một điều kiện nào đó xảy ra. Time Sciling gán cho mỗi tác vụ 1 chu kì thời gian nào đó. Khi thực hiện xong tác vụ này, vi xử lý sẽ chờ để nhảy sang thực hiện tác vụ khác. Các tác vụ cứ thế được thực hiện tuần tự. 5.2 Bài toán di chuyển của robot: Để điều khiển robot đi theo 1 quỹ đạo nào đó, ví dụ như di chuyển theo 1 đường cong nào đó thực chất là ta thay đổi tỉ lệ tốc độ 2 bánh xe của robot. Gọi tỉ lệ tốc độ quay giữa 2 bánh xe là R: với là tốc độ bánh xe bên trái,là tốc độ bánh xe bên phải. Khoảng cách giữa 2 bánh xe là L. Với R=1, robot tiến thẳng. Với 0 < R < 1, robot đi theo hình tròn ngược chiều kim đồng hồ với đường kính là D, sao cho: Với 0 < R < 1, robot đi theo hình tròn thuận chiều kim đồng hồ với đường kính là D, sao cho: Với R= 0 hoặc R= ¥, robot quay tròn với tâm là bánh trái nếu R= 0, và tâm là bánh phải nếu R= ¥. Với R= -1 , 2 bánh xe quay ngược chiều và đồng tốc, robot quay tròn tại chỗ, tâm là điểm giữa 2 bánh xe. Tổ hợp các quỹ đạo cơ bản ở trên lại với nhau ta có thể cho robot di chuyển theo 1 hình dạng bất kì nào nó. 5.3 Tránh vật cả và độ cao: Vành dò vật cản và hệ thống sensor dưới gầm cho ta biết robot có gặp vật cản hay độ cao hay không. Sau đây là thuật toán tránh vật cản và độ cao của robot : Bước 1: Kiểm tra trạng thái sensor. Nếu không có vật cản hay độ cao tiếp tục bước 1. Nếu có vật cản hoặc độ cao thực hiện bước 2. Bước 2: Lùi lại 1 đoạn, rẽ hướng khác. Sau đó quay lại bước 1. Tác vụ kiểm tra trạng thái sensor được thực hiện theo chu kì ngắt timer của vi xử lý. 5.4 Tìm chỗ sáng: Robot sử dụng một quang trở để cảm nhận sáng tối, vì vậy robot chỉ có biết vị trí hiện thời là tối hơn hay sáng hơn vị trí lúc trước của nó. Sau đây là thuật toán tìm chỗ sáng của robot: Bước 1: Robot đi thẳng đến khi gặp vùng tối hơn. Chuyển sang bước 2. Bước 2: Xoay tròn. Nếu gặp vùng sáng thì chuyển qua bước 1. Nếu ko thì chuyển sang bước 3. Bước 3: Cho robot tiến thẳng 1 đoạn roài chuyển sang bước 1. Thuật toán này được giới hạn thực hiện trong 1 khoảng thời gian xác định. Do đó khi hết thời gian robot vẫn có thể vẫn bị nhốt trong 1 vùng tối. 5.5 Chương trình điều khiển robot: 5.5.1 Chương trình điều khiển robot: Chương trình điều khiển robot có thể diên tả bằng lưu đồ sau, trong đó. Cleaner là hàm hoạt động của robot, charger là hàm nạp pin. Bắt Đầu Khởi tạo ADC, Timer,UART, Ngắt Nguồn có từ Pin không ? Charger( ) Cleaner( ) Lưu đồ thuật toán chương trình chính 5.5.2 Sơ đồ trạng thái của robot trong quá trình hoạt động: Sau khi khởi tạo ADC, Timer, UART, ngắt và kiểm tra nguồn là từ Pin, robot bắt đầu hoạt động. Trong quá trình hoạt động, các trạng thái của robot có thể được biểu diễn như sơ đồ dưới đây: Trạng thái chờ Stop Stop Start Bật motor quét Di chuyển không quét sàn (1) Di chuyển có quét sàn (2) Tắt motor quét Tránh vật cản Và bậc thang Ngắt Timer Ngắt Timer Đọc xong sensor Đọc xong sensor Đọc trạng thái sensor Sơ đồ trạng thái Robot Chương 6: Kết quả thực nghiệm và hướng phát triển của đề tài 6.1 Kết quả thực nghiệm: Sau khi dựng lại robot, đã hoạt động được tương tự robot Cleanmate365. Tuy nhiên, vẫn còn nhiều điểm hạn chế: Do phần cơ khí chưa tốt nên ảnh hưởng đến việc di chuyển của robot chưa tốt. Bánh xe phát động chỉ được lắp bằng đai cao su nên khi di chuyển trên mặt thảm gặp khó khăn. Phần đuôi robot nhẹ hơn so với phần đầu, tuy nhiên đã khắc phục được. Hệ thống sensor gầm phát hiện độ cao được làm chưa tốt, nên khi đặt trên các mặt thảm dầy, robot thường không nhận mặt sàn và báo lỗi. Phương hướng khắc phục là nâng công suất phát của led phát. Phần chổi quét hoạt động chưa tốt, khi vận hành lâu, transistor điều khiển motor quét nóng và có thể bị cháy. Robot không tự nạp điện được mà vẫn cần sự trợ giúp của con người. Các tính năng đã hoàn thiện: Có thể ra lệnh cho robot bằng 3 phím bấm trên robot hoặc điều khiển từ xa. Hiển thị thời gian vận hành và chương trình di chuyển trên led 7 đoạn. Có chức năng hẹn giờ cho robot. Thời gian tối đa là 80 phút, và tối thiểu là 10 phút. Robot được lập trình nhiều kiểu di chuyển: phản xạ, men tường hình chữ S, đa giác, xoẵn ốc, xoắn đa giác… Robot tránh được vật cản và bậc cầu thang. Khi gần hết Pin robot tự tìm đc vị trí sáng và tự động ngừng làm việc. Loa kêu cảnh báo khi robot báo lỗi : như không nhận mặt sàn, hết Pin… 6.2 Hướng phát triển của đề tài: 6.2.1 Tìm trạm sạc: Ý tưởng: Khi sắp hết Pin, hoặc thực hiện xong nhiệm vụ, robot tự tìm đến một vị trị nhất định trong phòng dừng lại, tự động nạp đầy Pin. Sau khi nạp đầy Pin robot lại tiếp tục công việc của mình. Phương pháp thực hiện: Có 2 phương pháp. Phương pháp thứ nhất: Tìm đường bằng hồng ngoại. Tại trạm sạc, ta đặt một nguồn phát hồng ngoại. Trên thân robot ta đặt một số nguồn thu hồng ngoại. Khi cần tìm trạm sạc, robot sẽ di chuyển sao cho nhận được tín hiệu từ nguồn phát hồng ngoại, và robot sẽ di chuyển trong thị trường của nguồn phát về đến trạm sạc. Tuy nhiên phương pháp này có một số nhược điểm khó khắc phục như sau: Do nguồn hồng ngoại không thể phát quá xa, hơn nữa lại bị ảnh hưởng của sự phản xạ do đó rất khó cho robot có thể nhận được tín hiệu từ nguồn phát và đi đúng trong thị trường của nguồn phát. Dễ bị ảnh hưởng của nhiễu gây ra bởi các thiết bị khác. Việc lập trình cho robot đi trong nguồn hồng ngoại là khá phức tạp và mất thời gian. Phương pháp thứ 2: Tìm đường bằng phương pháp xử lý ảnh. Tại trạm sạc, ta đánh dấu 1 mốc nào đó để làm mẫu cho robot nhận dạng, ví dụ ta có thể dán 1 hình vuông màu đỏ. Trên robot ta đặt 1 camera, có chức năng phát không dây, 1 bộ thu RF được ghép nối với vi điều khiển. Khi muốn tìm trạm sạc, robot di chuyển men theo tường đồng thời gửi hình ảnh thu được về máy tính. Máy tính sẽ liên tục so sánh các hình ảnh này với mẫu trạm sạc có sẵn. Khi phát hiện được trạm sạc, máy tính sẽ gửi tín hiệu điều khiển cho robot thông qua 1 máy phát sóng RF. Khi nhận được tín hiệu điều khiển từ máy tính, robot dừng lại và thực hiện việc nạp điện. Phương pháp này tỏ ra ưu điểm hơn nhiều so với phương pháp tìm đường bằng hồng ngoại: Robot có thêm “cái nhìn” về môi trường, từ đó hỗ trợ việc dẫn đường cho robot tốt hơn. Không bị ảnh hưởng bởi nhiễu. Việc có thêm camera xử lý ảnh giúp phát triển nhiều tính năng thông minh hơn nữa cho robot ví dụ như ra lệnh cho robot bằng cách ra hiệu bằng tay cho robot v.v… Vì khối vi điều khiển PIC16F877A chỉ có 1 khối giao tiếp RS-232, khối này lại được dùng để nhận tín hiệu từ remote control. Nên không thể ghép nối thêm bộ thu tín hiệu RF theo chuẩn RS 232. Ta có thể khắc phục bằng cách ghép nối bộ thu tín hiệu RF với vi điều khiển thông qua bộ chuyển đổi giao tiếp từ nối tiếp (serial) sang song song (parallel), rồi sau đó ghép nối với vi điều khiển bằng các cổng vào ra (I/O port) của vi điều khiển. Hoặc để khắc phục điểm này ta có thể sử dụng thêm 1 vi điều khiển Psoc để quét bàn phím, hiển thị, ghép nối với bộ thu RF. Ở đây ta đưa ra giải pháp sử dụng Psoc vì vi điều khiển Psoc được chế tạo trên công nghệ mới, có khả năng cấu hình phần cứng rất linh hoạt, ta có thể đặt nhiều khối UART trong vi điều khiển. Từ đó giảm nhẹ công việc cho khối điều khiển chính là PIC đồng thời cũng làm tăng khả năng giao tiếp của robot với nhiều thiết bị hơn. Khối điều khiển chính PIC Psoc Xử lý giao tiếp Bàn Phím LCD GP1U52X Bộ Thu RF Các thiết bị khác 6.2.2 Tạo tiếng nói cho robot: Ý tưởng: để robot trở nên gần gũi hơn với con người, thay bằng những tiếng kêu bip bip, robot có thể phát ra tiếng nói. Thực hiện: Sử dụng thẻ nhớ để lưu trữ cơ sở giọng nói, dưới dạng các file MP3 hoặc wav. Đồng thời sử dụng Chip PIC18F8550, hoặc DSPIC – Vi điều khiển cấp cao của họ PIC, thực hiện việc đọc dữ liệu từ thẻ nhớ và giải mã các file audio … 6.2.3 Lập trình thời gian biểu: Chức năng này cho phép đặt giờ làm việc cho robot, với chức năng này robot có thể hoạt động hoàn toàn độc lập. Công việc duy nhất của con người chỉ là lên lịch cho robot, chẳng hạn 10h bắt đầu làm việc, sau 40 thì kết thúc… Phụ Lục Giới thiệu về Mplab IDE và HT-PIC: Mplab IDE là gói phần mềm công cụ cho các dòng vi điều khiển PIC được hãng Micro chip phát triển đi kèm. Mplab IDE bao gồm chương trình soạn thảo và dịch mã nguồn, các cộng mô phỏng, chương trình nạp cho vi điều khiển khi sử dụng mạch nạp ICD2 hoặc ICE. Chương trình soạn thảo và dịch của Mplab hỗ trợ cho ngôn ngữ Assembly. Để thuận tiện hơn cho việc phát triển chương trình, hãng HiTech đã phát triển phần mềm HT-PIC chạy trên nền Mplab, hỗ trợ cho ngôn ngữ C và các loại vi điều khiển dòng PIC16 và số thuộc dòng PIC18. Dùng HT-PIC trên nền Mplab, ta có thể phát triển chương trình chương trình bằng ngôn ngữ C, vẫn có thể sử dụng được hết các công cụ tiện ích của Mplab. Ngoài HT-PIC cũng có nhiều phần mềm biên soạn và dịch chương trình cho các dòng vi điều khiển PIC. Tuy nhiên, HT-PIC dịch mã nguồn tối ưu nhất, hơn nữa HT-PIC chạy trên nền Mplab nên ta tận dụng được hết tiện ích của Mplab. Mã Nguồn: //Khoa Luan Tot Nghiep //Kim Ngoc Bach //MCU: PIC16F877A //=====Hard ware========================= //PORT A // RA0 key Analog // RA1 V1sens Vcc // RA2 CDS Analog //PORT B // RB0 SW // RB2 Speaker // RB3 Motorquet //PORT C // RC6 TX // RC7 RX //PORT D // RD0,RD1,RD2,RD3 DKmotor // RD4,RD5,RD6,RD7 Led7Segment //PRTD E // RE0 T1 // RE1 T2 // RE2 T3 // Thach Anh XT 4MHz //======================================= #include __CONFIG(UNPROTECT & XT & PWRTEN & BOREN & WDTDIS & LVPDIS & DUNPROT & DEBUGDIS); #define tien 0b00001010; #define lui 0b00000101; #define quaytrai 0b00001001; #define quayphai 0b00000110; #define retrai 0b00001000; #define rephai 0b00000010; #define phanh 0b00000000; int cnt1; int cnt2; int cnt3; int t1,t2; char start; char key; char time; char sens; char mode; //========================================= void interrupt MyInt(void) { if(TMR0IF) { TMR0=96; leddisplay(); cnt1++; cnt2++; if(cnt1==4) { cnt1=0; sens=readsens(); if(sens) t1++; if(t1==100) error(); } void run(); TMR0IF=0; } if(RXIF) { bip(15); readremote(); RXIF=0; } } //========================================== void Init(void) { TRISD=0b00000000; TRISB=0b00001000; TRISA=0b11111111; ADCON0=0b10000001; ADCON1=0b10001110; // khoi tao ADC T0CS=0; PSA=0; PS2=1; PS1=0; PS0=0; // khai bao timer0 TMR0IF=1; PEIE=1; GIE=1; } //========================================== void leddisplay(void) { RE1=0; PORTD=(PORTD&0b00001111)|(mode*16); RE1=1; } char readsens(void) { if((RB0==0)&&(RB1==0)) return(1); else return(0); } char readadc(void) { char ad; ADGO=1; ad=(ADRESH<<8)|(ADRESL) return(ad); } void readkey(void) { char v,key; v=readadc(); if((v>490)&&(v<530)) mode++; if((v>300)&&(v<340)) start=1; } char readremote(void) { char k; k=RCREG; return(k); } void tranhvc(void) { if(cnt3<24) PORTD=(PORTD&0b11110000)|lui; if(cnt3>24) PORTD=(PORTD&0b11110000)|quaytrai; } void run(void) { if(state==0) NOP(); else { if(sens==1) tranhvc(); else{ switch(mode) case1: ct1(); break(); case2: ct2(); break(); case3: ct3(); break(); case4: ct4(); break(); case5: ct5(); break(); case6; hutbui(); break(); } } } void bip(int i) { int k; for(k=0;k++;k<i) { RB2=0;delay(10); RB2=1;delay(10); } } void delay(int ms) { TMR1H=(0xFFFF-1000)>>8; TMR1L=(0xFFFF-1000)&0x00FF; TMR1ON=1; while(!TMR1IF); } void error(void) { while(1) { bip(1000); PORTD=0; } } void ct1(void) { PORTD=tien; } Void ct2(void) { PORTD=tien; PORTD=retrai; NOP(); NOP(); } void ct3(void) { t2++; if(t2<1000) PORTD=tien; if(t2>1000) PORTD=quaytrai; if(t2>1100) {PORTD=tien;t2=0;} } void ct4(void) { PORTD=tien;delay(100); PORTD=quaytrai;delay(100++); } void ct5(void) { // } void ct6(void) { } void quet(void) { RB3=!RB3; } //========================================== void main(void) { Init(); while(1) { if(cnt2==25) { readkey(); cnt2=0; if(start==1) {state=1;break();} } if(mode==0) {mode=readremote();} } } Tài Liệu Tham Khảo: [1] www.botmag.com [2] www.cypress.com [3] www.dientuvietnam.net [4] www.diendandientu.com [5] www.mathworks.com [6] www.mircochip.com [7] www.picvietnam.net [8] www.roombareview.com [9] www.wikipedia.com [10] Trần Văn Huấn. Khóa luận tốt nghiệp, xây dựng robot cleaner_D, trên cơ sở tổng hợp các cảm biến. Đại Học Công Nghệ - ĐHQGHN 2007. [11] Nguyễn Thiện Phúc. Robot giống người. Nxb KHKT [12] Trần Quang Vinh. Bài giảng Robotics – ĐH Công Nghệ - ĐHQGHN 2008. [12] Douglas R. Malcolm. Robotics: An Introduction. Delmar Publishers ,1988. [13] Panos J. Antsaklis and Kevin M. Passino. An Introduction to Intelligent and Autonomous Control. Kluwer Academic Publishers, 1993

Các file đính kèm theo tài liệu này:

  • docgggg.doc
Tài liệu liên quan