Cách điều khiển động cơ Servo bằng cần điều khiển

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Trong bài đăng này, chúng ta sẽ học cách điều khiển động cơ servo bằng cần điều khiển và Arduino. Chúng ta sẽ xem tổng quan về cần điều khiển, các chân của nó, cấu tạo và hoạt động của nó. Chúng tôi sẽ trích xuất dữ liệu hữu ích từ thanh joy stick sẽ là cơ sở để điều khiển động cơ servo.

Giới thiệu

Phương châm của bài viết này không chỉ để điều khiển động cơ servo nhưng, để học cách sử dụng cần điều khiển để điều khiển nhiều thiết bị ngoại vi khác.



Bây giờ chúng ta hãy xem xét cần điều khiển.

Cần điều khiển là một thiết bị đầu vào bao gồm một đòn bẩy, có thể di chuyển theo một số hướng theo trục X và Y. Chuyển động của đòn bẩy được sử dụng để điều khiển động cơ hoặc bất kỳ thiết bị điện tử ngoại vi nào.



Joysticks được sử dụng từ đồ chơi RC đến máy bay Boing và thực hiện các chức năng tương tự. Ngoài ra, gậy chơi game và gậy vui nhỏ hơn có một nút nhấn ở trục Z có thể được lập trình để thực hiện nhiều hành động hữu ích.

Hình minh họa của Joystick:

Hình minh họa của Joystick:

Cần điều khiển là thiết bị điện tử nói chung, vì vậy, chúng ta cần phải sử dụng điện năng. Sự chuyển động của đòn bẩy tạo ra sự chênh lệch điện áp tại các chân đầu ra. Các mức điện áp được xử lý bởi bộ vi điều khiển để điều khiển thiết bị đầu ra như động cơ.

Cần điều khiển minh họa tương tự, có thể tìm thấy trong bộ điều khiển PlayStation và Xbox. Bạn không cần phải phá vỡ các bộ điều khiển này để cứu một bộ điều khiển. Các mô-đun này có sẵn tại các cửa hàng điện tử địa phương và các trang thương mại điện tử.

Bây giờ chúng ta hãy xem cấu tạo của cần điều khiển này.

Nó có hai 10 Kilo ohm chiết áp được định vị theo trục X và Y bằng lò xo để nó trở lại vị trí ban đầu khi người dùng nhả lực từ cần gạt. Nó có một nút nhấn để BẬT trên trục Z.

Nó có 5 chân, 5 volt Vcc, GND, biến X, biến Y và SW (công tắc trục Z). Khi chúng ta đặt điện áp và để cần điều khiển về vị trí cần gạt ban đầu của nó. Các chân X và Y sẽ tạo ra một nửa điện áp đặt vào.

Khi chúng ta di chuyển đòn bẩy, điện áp sẽ thay đổi trong các chân đầu ra X và Y. Bây giờ, hãy thực tế giao diện cần điều khiển với Arduino.

Sơ đồ:

Điều khiển động cơ Servo Arduino bằng cần điều khiển

Chi tiết kết nối chân được đưa ra bên cạnh mạch. Kết nối thiết lập phần cứng đã hoàn thành và tải mã lên.

Chương trình:

//---------------Program Developed by R.Girish--------------//
int X_axis = A0
int Y_axis = A1
int Z_axis = 2
int x = 0
int y = 0
int z = 0
void setup()
{
Serial.begin(9600)
pinMode(X_axis, INPUT)
pinMode(Y_axis, INPUT)
pinMode(Z_axis, INPUT)
digitalWrite(Z_axis, HIGH)
}
void loop()
{
x = analogRead(X_axis)
y = analogRead(Y_axis)
z = digitalRead(Z_axis)
Serial.print('X axis = ')
Serial.println(x)
Serial.print('Y axis = ')
Serial.println(y)
Serial.print('Z axis = ')
if(z == HIGH)
{
Serial.println('Button not Pressed')
}
else
{
Serial.println('Button Pressed')
}
Serial.println('----------------------------')
delay(500)
}
//---------------Program Developed by R.Girish--------------//

Mở màn hình Nối tiếp, bạn có thể thấy mức điện áp tại các chân trục X và Y và trạng thái của trục Z tức là nút nhấn như minh họa bên dưới.

Các giá trị trục X, Y, Z này được sử dụng để diễn giải vị trí của đòn bẩy. Như bạn có thể thấy, các giá trị là từ 0 đến 1023.

Đó là bởi vì Arduino đã tích hợp sẵn bộ chuyển đổi ADC để chuyển đổi giá trị điện áp 0V - 5V thành 0 đến 1023.

Bạn có thể chứng kiến ​​từ màn hình nối tiếp rằng khi không chạm vào cần gạt, cần gạt vẫn ở vị trí giữa của cả hai trục X và Y và hiển thị một nửa giá trị là 1023.

Bạn cũng có thể thấy đó không phải là một nửa chính xác của năm 1023 bởi vì việc sản xuất các cần điều khiển này không bao giờ hoàn hảo.

Bây giờ, bạn đã có một số kiến ​​thức kỹ thuật về cần điều khiển.

Bây giờ, hãy xem cách điều khiển hai động cơ servo bằng một cần điều khiển.

Sơ đồ mạch:

Hai động cơ servo được điều khiển bởi một cần điều khiển khi bạn di chuyển cần điều khiển dọc theo trục X, servo được kết nối tại chân số 7 sẽ di chuyển theo chiều kim đồng hồ và ngược chiều kim đồng hồ tùy thuộc vào vị trí cần gạt.

Bạn cũng có thể giữ bộ truyền động servo ở một vị trí, nếu bạn giữ mức cần điều khiển ở một vị trí cụ thể.

Tương tự đối với động cơ servo được kết nối tại chân số 6, bạn có thể di chuyển cần dọc theo trục Y.

Khi bạn nhấn cần dọc theo trục Z, hai động cơ sẽ thực hiện quét 180 độ.

Bạn có thể kết nối arduino với Pin 9v hoặc vào máy tính. Nếu bạn kết nối Arduino với máy tính, bạn có thể mở màn hình nối tiếp và xem góc của bộ truyền động servo và mức điện áp.

Chương trình điều khiển động cơ servo:

//---------------Program Developed by R.Girish--------------//
#include
Servo servo_X
Servo servo_Y
int X_angleValue = 0
int Y_angleValue = 0
int X_axis = A0
int Y_axis = A1
int Z_axis = 2
int x = 0
int y = 0
int z = 0
int pos = 0
int check1 = 0
int check2 = 0
int threshold = 10
void setup()
{
Serial.begin(9600)
servo_X.attach(7)
servo_Y.attach(6)
pinMode(X_axis, INPUT)
pinMode(Y_axis, INPUT)
pinMode(Z_axis, INPUT)
digitalWrite(Z_axis, HIGH)
}
void loop()
{
x = analogRead(X_axis)
y = analogRead(Y_axis)
z = digitalRead(Z_axis)
if(z == LOW)
{
Serial.print('Z axis status = ')
Serial.println('Button Pressed')
Serial.println('Sweeping servo actuators')
for (pos = 0 pos <= 180 pos += 1)
{
servo_X.write(pos)
delay(10)
}
for (pos = 180 pos >= 0 pos -= 1)
{
servo_X.write(pos)
delay(15)
}
for (pos = 0 pos <= 180 pos += 1)
{
servo_Y.write(pos)
delay(10)
}
for (pos = 180 pos >= 0 pos -= 1)
{
servo_Y.write(pos)
delay(15)
}
Serial.println('Done!!!')
}
if(x > check1 + threshold || x {
X_angleValue = map(x, 0, 1023, 0, 180)
servo_X.write(X_angleValue)
check1 = x
Serial.print('X axis voltage level = ')
Serial.println(x)
Serial.print('X axis servo motor angle = ')
Serial.print(X_angleValue)
Serial.println(' degree')
Serial.println('------------------------------------------')
}
if(y > check2 + threshold || y {
Y_angleValue = map(y, 0, 1023, 0, 180)
servo_Y.write(Y_angleValue)
check2 = y
Serial.print('Y axis voltage level = ')
Serial.println(y)
Serial.print('Y axis servo motor angle = ')
Serial.print(Y_angleValue)
Serial.println(' degree')
Serial.println('------------------------------------------')
}
}
//---------------Program Developed by R.Girish--------------//

Nếu bạn có bất kỳ câu hỏi cụ thể nào liên quan đến dự án này, đừng ngại bày tỏ trong phần bình luận, bạn có thể nhận được câu trả lời nhanh chóng.




Một cặp: Mạch đo điện dung kỹ thuật số sử dụng Arduino Tiếp theo: Sử dụng chiết áp kỹ thuật số MCP41xx với Arduino