Với số lượng đầu vào các biến của chuyển động là 5 biến cho 5 ngón tay và 2*n biến cho chuyển động lớn của cánh tay (n=1, 2, 3) tương ứng với cặp 2 cử động lớn của cổ tay, khớp khuỷu tay, và khớp bả vai. Thay vì quy định chuyển động chung cho cả hệ thống điều khiển mô phỏng dựa vào ma trận đầu vào (2*n+5) x 1 giá trị. Chúng ta sẽ thực hiện mô phỏng riêng lẻ từng chuyển động với các cảm biến đặt tương ứng với các vị trí tạo ra điều khiển và thực hiện mô phỏng trực tiếp trạng thái thông qua việc điều chế độ rộng xung của tín hiệu và cơ chế servo.
Phương pháp điều xung PWM (Pulse Width Modulation) là phương pháp điều chỉnh điện áp ra tải, hay nói cách khác, là phương pháp điều chế dựa trên sự thay đổi độ rộng của chuỗi xung vuông, dẫn đến sự thay đổi điện áp ra. Các PWM khi biến đổi thì có cùng 1 tần số và khác nhau về độ rộng của sườn dương hay sườn
PWM được ứng dụng nhiều trong điều khiển. Điển hình nhất mà chúng ta thường hay gặp là điều khiển động cơ và các bộ xung áp, điều áp... Sử dụng PWM điều khiển độ nhanh chậm của động cơ hay cao hơn nữa, nó còn được dùng để điều khiển sự ổn định tốc độ động cơ. Ngoài lĩnh vực điều khiển hay ổn định tải thì PWM còn tham gia và điều chế các mạch nguồn như : boot, buck, nghịch lưu 1 pha
và 3 pha...
PWM còn gặp nhiều trong thực tế ở các mạch điện điều khiển. Điều đặc biệt là PWM chuyên dùng để điều khiển các phần tử điện tử công suất có đường đặc tính là tuyến tính khi có sẵn 1 nguồn 1 chiều cố định .Như vậy PWM được ứng dụng rất nhiều trong các thiết bị điện điện tử. PWM cũng chính là nhân tố mà các đội -
Robocon sử dụng để điều khiển động cơ hay ổn định tốc độ động cơ.
Với việc sử dụng biến trở, ta có thể đơn giản xác định được chế độ điều chế xung của cơ cấu điều khiển của chuyển động ngón tay theo công thức:
Trong đó, Rx là điện trở hiện thời của biến trở và Rbiến trở là giá trị định danh của biến trở. Khi đó, tỉ lệ sẽ tương đương với hệ số điều chỉnh D trong điều chế độ rộng xung vuông. Cơ chế điều khiển này có ưu điểm rất mạnh trong điều khiển động cơ bởi đây gần như là cơ cấu điều khiển khá phổ biến cho các hệ thống robot, và không đòi hỏi người sử dụng cần có nhiều kiến thức về điều khiển học.
Chương 3: Thiết kế hệ thống điều khiển mô phỏng cho cánh tay.
Dựa vào các cơ sở lý thuyết được phân tích trong chương 2, chương 3 sẽ tập trung vào phần thực hiên các yêu cần thiết để có thể thiết kế mô hình hợp lý nhất phù hợp điều kiện môi trường nghiên cũng như tạo ra được kết quả khả thi nhất.
3.1 Khái quát về hệ thống điều khiển mô phỏng chuyển động cánh tay
Với các cơ sở trong chương 2, hệ thống điều khiển mô phỏng chuyển động cánh tay sẽ gồm 2 khối chính là khối cảm biến và khối xử lý. Ngoài ra, trong khuôn khổ mục đích mô phỏng, chúng ta cũng thực hiện xây dựng mô hình mô phỏng cánh tay với một số yêu cầu kỹ thuật nhất định. Dưới đây là sơ đồ khối của hệ thống điều khiển mô phỏng chuyển động cánh tay:
H Ệ T H Ố NG ĐI Ề U K H IỂ N M Ô P H Ỏ NG CH UYỂ N Đ Ộ N G C Á N H T A Y Ch u yể n đ ộn g củ a cá nh ta y
VI XỬ LÝ/VI ĐIỀU KHIỂN
Cử động lớn của cánh tay
Bộ cảm biến biến trở trượt Cảm biến la bàn MPU6050
Cử động nhỏ của ngón tay
Tín hiệu được điều chế độ rông xung
Các lựa chọn cụ thể với các khối như sau:
Khố ải c m bi n và nh n d ng chuyế ậ ạ ển động: B c m bi n bi n tr ộ ả ế ế ở trượt và cảm biến la bàn MPU6050
Khố ửi x lý: Kit Arduino Uno R3 và module Arduino Nano.
3.2 Khối cảm biến và nhận dạng chuyển động Bộ cảm biến biến trở trượt và - MPU6050
Là khối chức năng chính để thu nhận các chuyển động và cử động của cơ thể, khối cảm biến và nhận dạng chuyển động thu thập dữ liệu trạng thái của các
ngón tay và trạng thái của cẳng tay, cánh.
3.2.1 Bộ cảm biến biến trở thanh trượt
Hình 3-2. Hình minh họa cho bộ cảm biến biến trở thanh trượt
Bộ cảm biến biến trở trượt được hình thành theo yêu cầu đo biến dạng của ngón tay. Với nguyên lý chính dựa vào nguyên lý của cảm biến biến dạng và cảm biến di chuyển. Với việc đồng nhất hiệu điện thế của 5 biến trở, ta có thể xác định được chuyển động tương đương của các ngón tay thông quá trình phân áp trên điện trở thanh trượt
(3.1)
Trong đó, Rx là điện trở hiện thời của biến trở và Rbiến trở là giá trị định danh của biến trở.
Hình 3-3. Nguyên lý hoạt động của biến trở. 1 là vị trí của thanh biến trở, 2 là vị trí của con chạy trên biến trở
Nguyên lý hoạt động của bộ cảm biến biến trở
Biến trở trượt được cố định 1 đầu hoàn toàn vào cổ tay hoặc 1 điểm nằm trên cánh tay, con chạy của biến trở được nối vào đầu ngón tay bằng một dây không có
tính đàn hồi và được giằng cố định bằng một dây cao su có độ đàn hồi co dãn xác định.
Hình 3-4. Trạng thái của ngón tay và trạng thái tương ứng của con chạy biến trở.
điều khiển); khi đó điện thế phân áp trên biến trở = 0V tương ứng với khi ngón tay duỗi thoải mái. Khi ngón tay co duỗi, do tính chất không đàn hồi của dây nối và tính chất đàn hồi của da, con chạy của biến trở sẽ bị dây nối dịch chuyển một đoạn Δl tương đương với độ biến dạng theo chiều chuyển động của bề mặt ngón tay. Thực nghiệm đo cho thấy, Δl và U ngón tay tỷ lệ thuận với nhau tương đương với giá trị theo công thức phân áp. Qua đó, chúng ta hoàn toàn có thể xác định được giá trị điện thế tương đương với các cử động của ngón tay. Ngoài ra,
Chức năng của dây nối không biến dạng là xác định khoảng biến dạng của ngón tay là Δl ; dây cao su có chức năng duy trì hình dáng và vị trí của con chạy biến trở, đồng thời tái tạo tính đàn hồi của hệ thống mô phỏng. Dây cao su này cho phép hệ thống cảm biến con trở duy trì độ dịch chuyển của biến trở tương đương với biến dạng dọc của ngón tay trong các chuyển động co duỗi.
3.2.2 Cảm biến gia tốc góc/ la bàn MPU6050
MPU6050 là cảm biến của hãng InvenSense. MPU6050 là một trong những giải pháp cảm biến chuyển động đầu tiên trên thế giới có tới 6 (mở rộng tới 9) trục vảm biến tích hợp trong 1 chip duy nhất. Với kích thước nhỏ gọn thích hợp với việc gắn cố định lên cánh tay. Đây là một lựa chọn hợp lý cho hệ thống mô phỏng
MPU6050 sử dụng công nghệ độc quyền MotionFusion của InvenSense có thể chạy trên các thiết bị di động, tay điều khiển,... Nó được điều hành bằng một nguồn cung cấp 3.3V/5V và gia tiếp thông qua I2C với tốc độ tối đa 400kHz. Chip o
này cũng có sẵn một gói SPI được gọi là MPU6000 cho tốc độ giao tiếp lên tới
10Mbs.
Thông số truyền động:
Có th lể ựa chọn ±2/4/8/16g ph m vi gia t ạ ốc.
Có thể ự l a chọn ±250/500/1000/2000 độ /s ph m vi con quay h i chuy n. ạ ồ ể
Con quay nh y c m c a gia t c tuyạ ả ủ ố ến tính 0.1 độ/s, m t c i ti n l n so vộ ả ế ớ ới con quay h i chuy n trồ ể ục tri của các công ty khác.
Chị ảnh hưởu ng c a nhi u th p trên c hai k t qu u ra (xem thông s k ủ ễ ấ ả ế ả đầ ố ỹ
thuật).
T l sỷ ệ ản lượng d ữ liệu lên đến 1000Hz, mặc dù được xây d ng b ng k ự ằ ỹ
thuật sốthấp vượt qua b l c có t n s góc tộ ọ ầ ố ối đa là 256Hz.
Con quay h i chuy n 3 trồ ể ục (3-axis MEMS gyroscope). C m bi n gia t c 3 chi u (3-axis MEMS ả ế ố ề accelerometer).
Ngoài ra, MPU6050 còn có 1 đơn vị tang tốc phần cứng chuyên xử lý chuyển động số (Digital Motion Processor – DMP) do cảm biến thu thập và thực hiện các tính toán cần thiết. Điều này giúp giảm bớt đáng kể phần xử lý tính toán của vi điều khiển, giảm độ trễ của tốc độ đáp ứng, cải thiện tốc độ xử lý; và kết quả là tốc độ phản hồi của khối cảm biến sẽ được cải thiện đáng kể. Đó chính là ưu điểm lớn của MPU6050 so với khá nhiều cảm biến gia tốc khác.
-
Các cảm biến bên trong MPU6050 sử dụng bộ chuyển đổi tương tự số
( Analog to Digital Converter ADC) 16-– bit cho ra kết quả chi tiết về góc quay với độ phân giải cao. Với 16 bit, chúng ta có giải giá trị thu được lên tới 65536 mức, tất -
cả chỉ cần 1 cảm biến
Một tính năng của chip này là bộ xử lý chuyển động kỹ thuật số trên máy bay (DMP). Trong lý thuyết này có thể được sử dụng để sản xuất trực tiếp các góc Euler, Quaternions, hoặc một hướng cosin ma trận, và thậm chí thực hiện lọc cùng với việc tích hợp dữ liệu một la bàn I2C bên ngoài.
MPU6050 có thể kết hợp với cảm biến từ trường (bên ngoài) để tạo thành bộ cảm biến 9 góc đầy đủ thông qua giao tiếp I2C.
Hơn nữa, MPU6050 có sẵn bộ đếm dữ liệu 1024 byte cho phép vi điều khiển phát lệnh cho cảm biến và nhận dữ liệu sau khi MPU6050 tính toán xong.
Chân giao tiếp MPU6050.
Hình 3-6. Module cảm biến MPU6050 VCC 2.375V 3.46V–
SCL Chân SCL trong giao tiếp I2C
SDA Chân SDA trong giao tiếp I2C
XDA Chân dữ liệu (kết nối với cảm biến khác)
XCL Chân xung (kết nối với cảm biến khác)
AD0 Bito của địa chỉ I2C
INT Chân ngắt
MPU-6050 sẽ giúp ta xác định được góc nghiêng của thiết bị với phương nằm ngang mặt đất (Accelerometer) cũng như xác định được vận tốc góc theo các trục tọa độ( Gyro) Việc tích hợp 2 bộ cảm biến trên vào trong con MPU 6050 sẽ . -
tận dụng ưu điểm và hạn chế nhược điểm của 2 bộ cảm biến gia tốc và cảm biến
góc.
Cảm biến gia tốc giúp ta đo được chính xác góc nghiêng, nhưng lại bị ảnh hưởng rất mạnh bởi nhiễu,rung động của thết bị, còn cảm biến góc thì giúp ta xác
định được vận tốc góc, từ đó suy ra được góc nghiêng, và không bị ảnh hưởng bởi rung lắc của thiết bị, nhưng lại bị trôi điểm 0, và hoạt động sau một thời gian thì tích lũy sai số rất lớn. Cho nên việc kết hợp 2 bộ trên là rất hợp lý.
MPU-6050 có rất nhiều thanh ghi, có những thanh ghi là để thiết lập chế độ hoạt động cho nó, và có những thanh ghi chứa các dữ liệu cảm biến mà ta cần phải đọc được giá trị của nó qua I2C để từ đó tính toán được góc nghiêng.
- -
Việc giao tiếp I2C với MPU 6050 được nói đến trong datasheet của MPU 6050 như sau:
Để đọ c nhi u byte m t lúc: ề ộ
Tương tự đó là việc ghi 1 hay nhiều byte vào các thanh ghi của MPU-6050:
Trong đó:
S: bit Start
AD :địa ch c a MPU-6050 ỉ ủ W: bit xác định là đọc ghi li u ệ R: bit xác địnhlà đọc d li u ữ ệ
ACK: bit Acknowledge N-ACK :№t-Acknowledge
RA: địa ch thanh ghi mà ta muỉ ốn đọc DATA: d u truy n di hoữliệ ề ặc đọc được
Rõ ràng là để giao tiếp I2C với các chip khác nhau thì cách thức là khác nhau, nhưng đều dựa trên chuân I2C, ở đây ta thấy là có thể phải gửi 2 lần bit Start, trong một phiên giao tiếp phải gửi cả bit Write đầu tiên sau đó lại lại bit Read.
Ta chỉ có thể biết rõ điều này khi th m khảo datasheets.a
3.3 Khối xử lý- duino Uno Ar
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác. Một khía cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết nối với CPU của board với các module thêm vào có thể dễ dàng chuyển đổi, được gọi làshield. Vài shield truyền thông với board Arduino trực tiếp thông qua các chân khách nhau, nhưng nhiều shield được định địa chỉ thông qua hệ thống bus nối tiếp I2C-nhiều shield có thể được xếp chồng và sử dụng dưới dạng song song. Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, và ATmega2560. Một vài các bộ vi xử lý khác cũng được sử dụng bởi các mạch Aquino tương thích. Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz (hoặc bộ cộng hưởng ceramic trong một vài biến thể), mặc dù một vài thiết kế như LilyPad chạy tại 8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do hạn chế về kích cỡ thiết bị.
Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot loader cho phép đơn giản là upload chương trình vào bộ nhớ flash on chip, so với các thiết bị -
khác thường phải cần một bộ nạp bên ngoài. Điều này giúp cho việc sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như là một bộ nạp chương trình.
Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board được lập trình thông qua một kết nối RS 232, nhưng cách thức thực hiện lại tùy -
USB, thực hiện thông qua chip chuyển đổi USB- -to serial như là FTDI FT232. Vài
biến thể, như Arduino Mini và Boarduino không chính thức, sử dụng một board adapter hoặc cáp nối USB- -to serial có thể tháo rời được, Bluetooth hoặc các phương thức khác. (Khi sử dụng một công cụ lập trình vi điều khiển truyền thống thay vì ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sẽ đượcsử dụng.)
Nhắc tới dòng mạch Arduino dùng để lập trình, cái đầu tiên mà người ta thường nói tới chính là dòng Arduino UNO. Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (R3).
3.3.1 Thông số của Arduino UNO R3
Vi điều khiển ATmega328 (họ 8bit)
Điện áp hoạt động 5V – DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ 30mA
Điện áp vào khuyên dùng 7-12V –DC
Điện áp vào giới hạn 6-20V –DC
Số chân Digital I/O 14 (6 chân PWM)
Số chân Analog 6 (độ phân giải 10bit) Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash
32 KB (ATmega328) với 0.5KB dùng bởi
bootloader
SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328)
Vi điều khiển
Hinh 3-7. Vi điều khiển ATMEGA328
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ độ ẩm và hiển thị lên màn hình LCD,… Thiết kế tiêu chuẩn của Arduino -
UNO sử dụng vi điều khiển ATmega328. Tuy nhiên nếu yêu cầu phần cứng không cao, có thể sử dụng các loại vi điều khiển khác có chức năng tương đương như ATmega8 (bộ nhớ flash 8KB) hoặc ATmega168 (bộ nhớ flash 16KB):
Chế tạo thủ công Sử dụng mạch in Năng lượng
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7 12V DC và giới hạn là 6 20V. Thường - -
thì cấp nguồn bằng pin vuông 9V là hợp lí nhất nếu không có sẵn nguồn từ cổng