Các dây đất – nguồn – tín hiệu (đen – đỏ – cam).

Một phần của tài liệu ĐIỀU KHIỂN ĐỘNG cơ SERVO BẰNG kít ARM STM32F103 (Trang 26 - 31)

2.1.2 Động cơ RC Servo SG90s

• Khối lượng: 9g

• Kích thước: 23 * 12.2 * 29 mm • Momen xoắn cực đại : 1.8kg/cm

• Tốc độ quay: 0.1 giây/60 độ (4.8V). • Điện áp hoạt động: 4.8V

Hình 2.3. Động cơ RC Servo SG90

2.1.3 Nguyên lý hoạt động và cách điều khiển động cơ RC Servo

Động cơ RC Servo được điều khiển bằng xung. Để điều khiển cho Servo có thể quay đến các vị trí góc như mong muốn, bộ điều khiển cần phát ra tín hiệu là các xung vuông. Các xung này phải có độ rộng phần lên từ 1-2ms, và tần số nằm trong khoảng 40-50Hz .

Như đã được trình bày ở trên, do cấu tạo đặc biệt, động cơ Servo chỉ có thể quay trong dải góc từ 0o – 180o. Trên lý thuyết, độ rộng phần lên của xung điều khiển Servo chỉ có thể nằm trong khoảng từ 1-2ms, tuy nhiên, trên thực tế, với độ rộng xung này, động cơ Servo chỉ có thể quay được dải góc 70o mà không thể quay hết được toàn dải 180o. Trên thực tế, độ rộng phần lên có thể nhỏ thấp nhất là 500us và lớn nhất là 2300us, với dải độ rộng phần lên này thì động cơ Servo sẽ quay được triệt để 180o, để phù hợp với nhiều ứng dụng khác nhau. Mặt khác, trên thực tế, nếu cấp xung điều khiển có tần số thấp hơn 40Hz, động cơ vẫn hoạt động nhưng độ chính xác và công suất của động cơ sẽ giảm rõ rệt. Khi nhận được các xung có đặc tính như trên thì động cơ sẽ quay trong dải góc hoạt động là từ 0o – 180o. Người điều khiển Servo sẽ dựa vào ý đồ điều khiển để điều chỉnh độ rộng của phần lên sao cho phù hợp với các giá trị góc quay thực của Servo. Đây là kỹ thuật điều chế độ rộng xung (PWM).

Hình 2. 1. Cách thức điều khiển động cơ Servo bằng PWM

Trong thuật toán điều khiển, người điều khiển sẽ chia nhỏ dải thời gian hiệu dụng của phần lên xung điều khiển theo một độ phân giải nhất định. Độ phân giải càng cao thì động cơ có thể di chuyển tới càng nhiều vị trí góc và chuyển động quay sẽ càng mịn. Tuy nhiên, độ phân giải này cũng có giới hạn nhất định, thường đối với các ứng dụng đòi hỏi chính xác cao sử dụng các Servo Standard thì độ phân giải nằm trong khoảng từ 30-40 mức.

Hình 2. 2. Giá trị góc tương ứng với độ rộng xung (độ phân giải 19 mức)

2.2Giao tiếp USART

UART (Universal Asynchronous Receiver Transmitter) là giao tiếp truyền thông nối tiếp bất đồng bộ, dùng để truyền và nhận dữ liệu nối tiếp. Mặc dù các giao diện trao đổi dữ liệu dạng nối tiếp dần dần không còn được hỗ trợ trên máy tính, chúng ta vẫn còn sử dụng rất nhiều trong lĩnh vực nhúng bơi sự tiện ích và tính đơn giản.

Hình 2.6 Tín hiệu tương đương của UART và RS232 Các thông số truyền thông UART trong STM32 bao gồm :

Baud rate (tốc độ Baud): tốc độ truyền phải được cài đặt như nhau. • Frame (khung truyền): Bên cạnh tốc độ baud, khung truyền là một yếu

tốc quan trọng tạo nên sự thành công khi truyền và nhận. Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởi khung truyền.

Start bit: start là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới.

Data: data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận.

Parity bit: parity là bit dùng kiểm tra dữ liệu truyền đúng không (một cách tương đối). Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn nghĩa là số lượng số 1 trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược lại tổng số lượng các số 1 trong parity lẻ luôn là số lẻ.

USART_InitStructure.USART_BaudRate = 115200; //Khoi tao Baudrate

USART_InitStructure.USART_WordLength =

USART_WordLength_8b;//Do dai truong du lieu

USART_InitStructure.USART_StopBits = USART_StopBits_1;//co dung stop bit

USART_InitStructure.USART_Parity = USART_Parity_No;//Ko kiem tra parity USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure);

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_ITConfig(USART1, USART_IT_TXE, ENABLE); USART_Cmd(USART1, ENABLE);

2.3Timer/Counter

Một phần của tài liệu ĐIỀU KHIỂN ĐỘNG cơ SERVO BẰNG kít ARM STM32F103 (Trang 26 - 31)

Tải bản đầy đủ (DOCX)

(45 trang)
w