Hình 3.2: Mặt trước và mặt sau board Arduino DUE
Arduino Due là board phát triển sử dụng nhân ARM đầu tiên của series board arduino, sử dụng CPU Atmel SAM3X8E ARM Cortex-M3 và đƣợc nạp bootloader tƣơng thích code nhƣ các board arduino khác. Arduino Due có 54 chân kỹ thuật số vào/ra (trong đó 12 chân có thể sử dụng chức năng PWM), 12 ngõ vào tín hiệu Analog, 4 UARTs (cổng truyền nối tiếp), xung clock sử dụng lên đến 84 MHZ với bộ nhớ Flash 512 KB, bộ nhớ SRAM 96KB và có bộ điều khiển DMA bên trong hỗ trợ cho CPU. Board tích hợp 1 cổng USB OTG, 2 bộ chuyển đổi DAC (digital to Analog), 2 TWI, một jack cấp nguồn, 1 jack SPI, một jack chuẫn JTAG, một nút reset, và một nút xóa chƣơng trình.
27
Hình 3.3: Sơ đồ chân của kit ArduinoDue7.
Thông số kỹ thuật của Arduino Due đƣợc trình bày ở bảng 3.1 bên dƣới để chúng ta có thể nắm đƣợc những thông tin cụ thể khi làm việc với Arduino Due. Với cấu hình mạnh có thể xử lí với tốc độ nhanh để đáp ứng sự di chuyển của robot và ngôn ngữ lập trình dễ hiểu, dễ lắp ráp, kết nối với các thiết bị khác cũng nhƣ đƣợc sự hỗ trợ rất lớn từ mã nguồn mở, dễ tìm kiếm và giá cả hợp lí. Kit Arduino Due phù hợp với các yêu cầu mà nhóm đặt ra nên nhóm quyết định chọn là nó để thực hiện đề tài.
Bảng 3.1: Thông số kỹ thuật của Arduino Due.
Vi điều khiển AT91SAM3X8E
Điện áp hoạt động 3.3V
Điện áp đầu vào (đƣợc đề nghị) 7 - 12V
Điện áp đầu vào (giới hạn) 6 -16V
Chân I/O số 54 (trong đó 12 cho ngõ ra PWM)
Chân ngõ vào tƣơng tự 12
Chân ngõ ra tƣơng tự 2 (DAC)
Tổng dòng DC đầu ra trên tất cả các I/O 130mA
Dòng DC cho chân 3.3V 800mA
Dòng DC cho chân 5V 800mA
Bộ nhớ Flash 512KB
7Nguồn http//:freetronics.com.au.
28
SRAM 96KB (hai Banks:64KB và 32KB)
Clock Speed 84Mhz Chiều dài 101,52 mm Chiều rộng 53,3 mm Trọng lƣợng 36g 3.2.2. Camera Kinect Hình 3.4: Cảm biến Kinect
Kinect là một thiết bị đầu vào, là cảm biến chuyển động do hãng Mictosoft sản xuất những sản phẩm đầu tiên đƣợc bán tại Bắc Mỹ vào ngày 4 tháng 11 năm 2010 dành cho Xbox 360° và máy tính Windows. Dựa trên một webcam kiểu add-on ngoại vi cho Xbox 360°, nó cho phép ngƣời dùng điều khiển và tƣơng tác với thiết bị mà không dùng đến bộ điều khiển cầm tay thông qua một giao diện ngƣời dùng tự nhiên bằng cử chỉ và lệnh nói đem lại những cảm giác thú vị cho ngƣời chơi game trên Xbox.
Bên cạnh phục vụ cho mục đích chơi game, sản phẩm Kinect còn đƣợc dùng vào mục đích nghiên cứu xử lý ảnh 3D, phát hiện cử chỉ (gesture recognition), bám theo ngƣời (body tracking) và nhiều mục đích khác, nhƣng trong đề tài này chỉ sừ dụng Kinect với mục đích giám sát thông thƣờng chứ không đi sâu vào các chức năng khác nhƣ xử lí ảnh 3D, phát hiện cử chỉ. Khả năng hiểu đƣợc cử chỉ con ngƣời của Kinect dựa trên hai đặc tính sau: thông tin về độ sâu (depth map), khả năng phát hiện và bám theo đặc tính cơ thể ngƣời (body skeleton tracking).
29 Bên trong Kinect bao gồm 1 camera RGB, cảm biến độ sâu , bộ phát hồng ngoại, một dãy các microphone và 1 động cơ điều khiển góc nâng.
Hình 3.5: Cấu tạo bên trong của Camera Kinect.8
Hệ thống cảm biến chiều sâu:
Bao gồm bộ phát hồng ngoại (Infrared light) và camera hồng ngoại
(depth image cmos). Kích cỡ ảnh là 640 x 480 pixel, tốc dộ 30 khung hình mỗi giây.
Có 2 phạm vi độ sâu:
Phạm vi mặc định có sẵn trong cả hai bộ cảm biến Kinect cho windows và các cảm biến Kinect cho Xbox 360.
Phạm vi gần chỉ áp dụng cho Windows.
Hình 3.6: Vùng hoạt động của Kinect.
Để Kinect hoạt động tốt nhất nên sử dụng khoảng cách từ 1.2 =>3.5 (m). Và nguyên lí hoạt động của cảm biến chiều sâu là các tia hồng ngoại đƣợc chiếu qua bộ
30 phát hồng ngoại đến đối tƣợng, sau đó camera hồng ngoại sẽ thu thập dữ liệu bị phản chiếu.
Với góc chụp thì Kinect có vùng hoạt động là 430 dọc và 570 theo chiều ngang.
Hình 3.7: Góc hoạt động của Kinect.
Camera RGB-D.
Chức năng chính của camera là nhận biết 3 màu cơ bản là đỏ, xanh lá và xanh da trời (Red-Green-Blue). Quá trình chụp bao gồm chụp một ảnh màu (RGB) và thực hiện một phép đo độ sâu (D), sau đó cảm biến kết hợp với cảm biến chiều sâu nằm ở gần nhau cho phép xác nhập bản đồ cho ra hình ảnh 3D và thông tin hình ảnh RGB-D đƣợc lƣu trữ.
Camera có tốc độ chụp 12 khung hình/giây với kích cỡ 1280 x 960 pixel và 30 khung hình/giây với kích cỡ 640 x 480 pixel. Từ đó cho thấy độ phân giải thấp hơn thì tốc độ chụp và truyền hình ảnh sẽ cao hơn. Từ dữ liệu thu thập đƣợc nó sẽ tạo ra một bản đồ khung xƣơng ngƣời đứng ở trƣớc cảm biến và bộ khung xƣơng này có thể xác định đƣợc cử chỉ, hành động của ngƣời sử dụng.
31
Hình 3.8: Bộ khung xương tạo ra từ Kinect.
Động cơ, máy đo gia tốc, micro.
Máy đo gia tốc: Kinect sử dụng nó để xác định ngƣời đứng trƣớc, đứng sau trong khi đo.
Động cơ: nằm ở chân đế của Kinect có khả năng làm cho Kinect hƣớng lên cao hay hạ xuống thấp. Vì vậy Kinect có thể thu hình ảnh cao hơn rất nhiều so với khi không có động cơ.
Micro: bao gồm 4 micro nhỏ hoạt động nhƣ nhau ở 16 bit với tốc độ lấy mẫu là 16Khz (số mẫu/giây).
3.2.3. Khối chấp hành – động cơ DC giảm tốc Faulhaber 12V
Động cơ DC là động cơ điện hoạt động với dòng điện một chiều, nó đƣơc ứng dụng rộng rãi trong các thiết bị trong gia đình cũng nhƣ trong công nghiệp. Động cơ có cấu tạo gồm hai phần: Stator là phần đứng yên và Rotor là phần quay so với stator. Phần cảm (phần kích từ - thƣờng đặt trên stator) tạo ra từ trƣờng đi trong mạch từ, xuyên qua các vòng dây quấn của phần ứng (thƣờng đặt trên rotor). Khi có dòng điện chạy trong mạch phần ứng, các thanh dẫn phần ứng sẽ chịu tác động bởi các lực điện từ theo phƣơng tiếp tuyến với mặt trụ rotor, làm cho rotor quay.
Tùy thuộc cách mắc cuộn dây rotor và stator mà ta có động cơ kích từ song song và động cơ kích từ độc lập.
32 Động cơ kích từ song song: Cuộn dây kích từ mắc nối tiếp với cuộn dây
phần ứng.
Động cơ kích từ độc lập: Cuộn dây stator và cuộn dây rotor mắc riêng rẽ nhau, có thể cấp nguồn riêng biệt. Và đối với loại động cơ kích từ độc lập, ngƣời ta có thể thay thế cuộn dây kích từ (stator) bởi nam châm vĩnh cữu, khi đó ta có loại động cơ điện một chiều dùng nam châm vĩnh cửu.
Để điều khiển tốc độ của động cơ kích từ độc lập dùng nam châm vĩnh cửu, ta thay đổi điện áp cung cấp cho rotor. Mà việc thay đổi điện áp cấp cho rotor liên tục rất khó khăn, vì vậy ngƣời ta dùng phƣơng pháp điều xung (PWM) nhƣ hình 3.9.
Hiện nay trong tất cả các IC hầu nhƣ đều hổ trợ cho ta tính năng PWM và Board Arduino cũng không ngoại lệ. Arduino hổ trợ ta PWM 8bit tƣơng ứng 255 xung. Phƣơng pháp PWM hoạt động dựa theo nguyên tắc cấp nguồn cho động cơ bằng chuỗi xung đóng mở với tốc độ nhanh. Nguồn DC đƣợc chuyển đổi thành tín hiệu xung vuông (chỉ gồm hai mức 0 volt và xấp xỉ điện áp hoạt động) và tín hiệu xung vuông này đƣợc cấp cho động cơ. Nếu tần số chuyển mạch đủ lớn động cơ sẽ chạy với một tốc độ đều đặn phụ thuộc vào momen của trục quay.
Với cách điều chỉnh này, ta điều chỉnh tốc độ của động cơ thông qua việc điều chế độ rộng của xung, tức là thời gian mức cao của chuỗi xung vuông cấp cho động cơ. Việc điều chỉnh này sẽ tác động đến công suất trung bình cung cấp cho động cơ từ đó sẽ làm thay đổi tốc độ động cơ cần điều khiển. Khi độ rộng của xung nhỏ thì động cơ chạy chậm và khi độ rộng xung càng lớn thì động cơ DC chạy càng nhanh.
33
Thông số kỹ thuật động cơ:
- Điện áp hoạt động: 12V. - Dòng tải tối đa: 1400 mA. - Tốc độ motor: 8100 RPM.
- Tốc độ sau hộp giảm tốc: 120 RPM. - Tỉ số giảm tốc: 64:1.
- Dòng không tải: 74 mA. - Moment xoắn: 1.72 Nm. - Đƣờng kính: 30mm. - Chiều dài động cơ: 85mm. - Đƣờng kính trục: 6mm. - Chiều dài trục: 35mm. - Công suất: 17W.
Hình 3.10: Động cơ Faulhaber 12V.
Động cơ này đã tích hợp sẵn encoder trên động cơ giúp đơn giản hóa trong vấn đề lắp đặt và mạch trở nên nhỏ gọn hơn và quan trọng công suất của động cơ phù hợp cho yêu cầu kéo tải nên nhóm quyết định chọn động cơ Faulhaber 12V trong đồ án của nhóm.
34
3.2.4. Khối cảm biến – Encoder
Encoder là dụng cụ xác định quãng đƣờng di chuyển cho bánh xe hay dùng để xác định vị trí góc của đĩa quay, trục động cơ hay bất kỳ thiết bị nào có cơ cấu quay và cần xác định độ dịch chuyển.
Có hai loại encoder là encoder tƣơng đối (incremental encoder) và encoder tuyệt đối (absolute encoder) nhƣ hình 3.11.
Hình 3.11: Hình đĩa quay của encoder tuyệt đối (a) và encoder tương đối (b)
Từ hình 3.11 ta thấy đƣợc Encoder tuyệt đối có cấu tạo đĩa quay phức tạp hơn encoder tƣơng đối và vì thế nó cung cấp cho ta chính xác vị trí encoder mà không cần qua xử lý, vì vậy nó có giá thành khá cao.Trong khi encoder tƣơng đối có cấu tạo đơn giản hơn cũng vì thế nó đòi hỏi thêm khâu xử lý từ tín hiệu encoder trƣớc khi xác định đƣợc vị trí quay động cơ. Với giá thành rẻ hơn và việc xử lý cũng không quá phức tạp nên encoder tƣơng đối đƣợc sử dụng rông rãi với những úng dụng đòi hỏi độ chính xác không quá cao và trong đề tài này nhóm em cũng chọn encoder tƣơng đối.
Ở đây, ta tập trung nói về incremental optical encoder là loại encoder tƣơng đối sử dụng cảm biến quang. Hệ thống optical encoder bao gồm một nguồn phát quang (thƣờng là hồng ngoại – infrared), một cảm biến quang và một đĩa có chia rãnh nhƣ hình 3.12
35 Encoder thƣờng có ba kênh (ba ngõ ra) bao gồm kênh A, kênh B và kênh Z (Index). Trên hình 3.12, ta thấy có hai cặp phát thu hồng ngoại. Bên ngoài đĩa quay đƣợc chia thành các rãnh nhỏ và có một cặp thu – phát dành cho các rãnh này đó chính là kênh A của encoder, cứ mỗi lần động cơ quay thì tia hồng ngoại từ nguồn phát sẽ xuyên qua các lỗ nhỏ đến cảm biến quang và cảm biến lại thu đƣợc một tín hiệu do đó khi động cơ quay đƣợc 1 vòng thì sẽ có N xung xuất hiện trên kênh A, với N là số rãnh trên đĩa và còn đƣợc gọi là độ phân giải (resolution) của encoder. Bên trong ta còn một cặp thu phát hồng ngoại khác, cặp thu phát này dành cho kênh Z, kênh Z hoạt động cũng giống nhƣ kênh A nhƣng điều đặc biệt ở đây là kênh Z chỉ có một khe tƣơng ứng khi cặp thu phát nhận đƣợc tín hiệu tức là động cơ đã quay đƣợc một vòng. Hầu nhƣ tất cả động cơ đều có kênh Z giống nhau nhƣng kênh A thì khác, có khi trên mỗi đĩa kênh A chỉ có vài rãnh nhƣng cũng có trƣờng hợp có đến hàng nghìn rãnh đƣợc chia. Để điều khiển động cơ, ta phải biết đƣợc độ phân giải của encoder đang dùng. Độ phân giải ảnh hƣởng đến độ chính xác điều khiển và cả phƣơng pháp điều khiển. Ngoài ra, trên encoder còn có một cặp thu phát khác đƣợc đặt trên cùng đƣờng tròn với kênh A nhƣng lệch một chút (lệch M+0.5 rãnh), đây là kênh B của encoder. Tín hiệu xung từ kênh B có cùng tần số với kênh A nhƣng lệch pha 900. Bằng cách phối hợp kênh A và kênh B ta có thể biết chiều quay của động cơ nhƣ hình 3.13.
Hình 3.13: Hai kênh A và B lệch pha nhau trong encoder.
Khi cảm biến A bắt đầu bị che thì cảm biến B vẫn nhận đƣợc hồng ngoại xuyên qua và ngƣợc lại. Hình 3.13 là dạng xung ngõ ra trên 2 kênh. Xét trƣờng hợp động cơ quay cùng chiều kim đồng hồ, tín hiệu di chuyển từ trái sang phải. Lúc tín hiệu kênh A chuyển từ mức cao xuống thấp (cạnh xuống) thì kênh B đang ở mức thấp.
36 Ngƣợc lại, nếu động cơ quay ngƣợc chiều kim đồng hồ, tín hiệu di chuyển từ phải qua trái. Lúc này, tại cạnh xuống của kênh A thì kênh B đang ở mức cao. Nhƣ vậy, bằng cách phối hợp hai kênh A và B, ta không những xác định đƣợc góc quay (thông số xung) mà còn biết đƣợc chiều quay của động cơ (thông qua mức của kênh B ở cạnh xuống của kênh A).
Đối với động cơ DC giảm tốc Faulhaber 12V ta có thông số encoder đi kèm là: Encoder xung loại 2 kênh với độ phân giải 12 xung/vòng.
Dây cấp nguồn 5V.
Dây GND.
Dây kênh A và dây kênh B. Hai dây này ngƣợc pha nhau 90 độ.
Khi sử dụng encoder ta phải mắc thêm điện trở để hạn dòng cho hai led hồng ngoại nhƣ hình 3.14.
Hình 3.14: Cách đấu nối encoder trên động cơ vào mạch
Để kiểm tra tốc độ động cơ quay thì dùng encoder là cách dễ sử dụng nhất trong cách tìm hiểu nguyên lí hoạt động cũng nhƣ lập trình ứng dụng cho các yêu cầu đặt ra trong đề tài.
37
3.2.5. Khối công suất – Module mạch cầu HL298
Hình 3.15: Module mạch cầu HL298
Nói đến điều khiển đảo chiều động cơ DC chắc hẳn ai cũng nghĩ đến mạch cầu H. Trƣớc đây khi muốn sử dụng mạch cầu H ta phải tự thiết kế và thi công để sử dụng nhƣng ngày nay trên thị trƣờng đã có một mạch cầu H đƣợc thiết kế sẵn và khá nhỏ gọn đó là Module mạch cầu HL298: giúp dễ dàng điều khiển tốc độ và chiều quay của động cơ DC, ngoài ra ModuleHL298 còn điều khiển đƣợc một động cơ bƣớc lƣỡng cực.
Thông số kỹ thuật:
L298 đƣợc tích hợp sẵn hai mạch cầu. Điện áp điều khiển: +5 ~ +35.
Dòng tối đa cho mỗi mạch cầu là: 2A. Dòng của tín hiệu điều khiển: 0 ~ 36mA. Công suất hao phí: 20W (khi T = 75 ºC). Nhiệt độ bảo quản: - 25 ºC ~ +135 ºC.
38
Sơ đồ các chân điều khiển.
Hình 3.16: Sơ đồ chân Module L298.
Chân 1: DC motor 1 "+" hoặc stepper motor A+. Chân 2: DC motor 1 "-" hoặc stepper motor A-.
Chân 3: Jumper này dùng để cấp nguồn cho IC ổn áp tạo ra nguồn 5V,tháo jumper ra nếu sử dụng nguồn trên 12V nếu không sẽ làm cháy IC nguồn. Chân 4: Cắm dây nguồn cung cấp điện áp cho motor vào đây từ 5V đến 35V. Chân 5: Cắm chân GND của nguồn vào đây.
Chân 6: Ngõ ra nguồn 5V, nếu jumper đầu vào không rút ra.
Chân 7: Chân Enable của Motor 1, chân này dùng để cấp xung PWM cho motor nếu dùng vi điều khiển thì rút jumper ra và cắm chân PWM vào đây. Giữ nguyên khi dùng với động cơ bƣớc.
Chân 8: IN1. Chân 9: IN2. Chân 10: IN3. Chân 11: IN4.
Chân 12: Chân Enable của Motor 2, chân này dùng để cấp xung PWM cho motor nếu dùng vi điều khiển thì rút jumper ra và cắm chân PWM vào đây. Giữ nguyên khi dùng với động cơ bƣớc.
Chân 13: DC motor 2 "+" hoặc stepper motor B+ Chân 14: DC motor 2 "-" hoặc stepper motor B-
Nhóm chọn module L298 là vì mạch đƣợc thiết kế nhỏ gọn, hoạt động ổn định với chức năng nâng cao công suất và thực hiện đảo chiều động cơ một cách dễ dàng, module này sẽ là giải pháp hợp lí cho việc điều khiển động cơ.
39
3.2.6. Khối nguồn
Đề tài nhóm đã sử dụng nguồn sạc Acquy APOLLO nhƣ hình 3.17 để cung cấp cho khối chấp hành, camera kinect còn cảm biến encoder lấy nguồn 5V cung cấp từ kit Arduino và nguồn từ cổng usb của laptop để cung cấp nguồn 5V cho khối điều khiển Arduino.
Hình 3.17: Nguồn Acquy APOLLO cấp cho khối chấp hành.
Thông số kỹ thuật của nguồn acquy RL1212: