Làm thế nào để có được tần số và thời lượng của mỗi xung?


7

Tôi có ATmega8 và tôi bắt đầu làm việc trên động cơ servo HS-645MG. Tần số nào hoạt động với HS-645MG? Làm cách nào để có được tần số của PWM và thời lượng / độ dài của mỗi xung? Có tính toán không?

Câu trả lời:


20

Các mô hình điều khiển vô tuyến (RC) sử dụng PPM điều chế vị trí xung.

Có một số nhầm lẫn về thuật ngữ. Một số người gọi nó là Điều chế độ rộng xung (PWM). Điều này rất dễ hiểu, bởi vì độ rộng của xung mã hóa thông tin. Ngoài ra, phần cứng hẹn giờ được sử dụng để tạo tín hiệu PWM cũng có thể được sử dụng để tạo tín hiệu PPM.

Tần số PPM cơ sở cho một servo RC là 50Hz, tức là tín hiệu đến servo sau mỗi 20ms. Mô hình động cơ khá chịu được lỗi trong thời gian này và 15-25ms có thể hoạt động, thậm chí chỉ 5ms hoạt động với một số.

Khi xung thay đổi về chiều rộng, servo sẽ quét trong khoảng từ 0 đến 180 độ. Có một số thay đổi về độ dài xung PPM được đề xuất, thử giữa 1ms và 2ms và nếu điều đó không cho 180 độ, hãy thử 0,5ms đến 2,5ms. Bạn có thể cần phải làm một số thí nghiệm để làm cho đúng.

Xung dài 1,5ms sẽ điều khiển servo đến vị trí 'trung tâm', 90 độ.

Bạn có thể có được một phiên bản đơn giản này bằng cách sử dụng độ trễ. Nếu độ dài vị trí xung được đo bằng micro giây và được lưu trữ pos, mã Arduino này sẽ điều khiển servo

int servoPin = 9;   // pin attached to servo
int pos = 1500;     // initial servo position 

void setup() {                
  pinMode(servoPin, OUTPUT);     
}

void loop() {
  digitalWrite(servoPin, HIGH);   // start PPM pulse
  delayMicroseconds(pos);         // wait pulse diration
  digitalWrite(servoPin, LOW);    // complete the pulse
    // Note: delayMicroseconds() is limited to 16383µs
    // see http://arduino.cc/en/Reference/DelayMicroseconds
    // Hence delayMicroseconds(20000L-pos); has been replaced by:
  delayMicroseconds(5000-pos);   // adjust to 5ms period
  delay(15);                      // pad out 5ms to 20ms PPM period
}

CẢNH BÁO: Mã này đã được biên dịch, nhưng không được kiểm tra.

Lưu ý: delayMicroseconds()được giới hạn ở 16383 .
Do đó delayMicroseconds (20000L-pos); sẽ thất bại và đã được thay thế bằng hai độ trễ: delayMicroseconds(5000L-pos);trì hoãn thời lượng thuận tiện, sau đó là cố định
delay(15);.
Một số servo hài lòng với chu kỳ ngắn hơn, vì vậy chúng có thể hoạt động tốt nếu delay(15);bị xóa

Sơ đồ này có thể giúp: nhập mô tả hình ảnh ở đây

PPM so với PWM
Sự khác biệt giữa PPM và PMW có vẻ khá tinh tế. Tuy nhiên, độ rộng của xung PPM mã hóa trực tiếp thông tin vị trí . Nếu độ rộng xung bị thay đổi, nó có nghĩa là một vị trí khác. Phần cứng PWM có thể được sử dụng để tạo tín hiệu PPM, nhưng điều đó không có nghĩa là PPM giống như PWM.

Chỉnh sửa: @ Adam.at.Epsilon đã viết một lời giải thích rõ ràng, súc tích trong các bình luận dưới đây:

PPM chỉ mã hóa thông tin theo độ rộng xung dương, máy ảnh PWM mã hóa thông tin trong toàn bộ chu kỳ nhiệm vụ

Nói cách khác, tín hiệu PWM mã hóa tỷ lệ . Các tỷ lệ của trên để tắt là cần thiết để có được tất cả các thông tin; trên không thôi thì chưa đủ.

PPM không mã hóa tỷ lệ. Các hoạt động thời gian của tín hiệu (nó có thể là tích cực hay tiêu cực) được mã hóa một vị trí 'tuyệt đối', và chết thời gian của tín hiệu (cảm giác đối diện với vai trò tích cực) chỉ là 'điền vào thời gian'. Các chết thời gian có thể thay đổi đáng kể mà không thay đổi ý nghĩa của các thông tin trong tín hiệu. Ví dụ: một số 'động cơ sở thích kỹ thuật số' có thể hoạt động đáng tin cậy với thời lượng chết của tín hiệu trong khoảng từ 5ms đến hơn 20ms, hệ số 400%. Tuy nhiên, sẽ di chuyển với sự thay đổi trong thời gian tín hiệu hoạt động là 1%.

Một tín hiệu PWM thường là nguồn 'mã hóa'. Hãy nghĩ về tín hiệu PWM như một phần của toàn bộ công suất. Càng nhiều chu kỳ (và càng ít tắt) thì phần công suất càng lớn. Trên tất cả các chu kỳ là 100%, trên 60% (và do đó giảm 40%) là 60% năng lượng, trên 0% và tắt 100% là 0% năng lượng, v.v.

Như một ví dụ cụ thể, PWM có thể đang chạy ở tần số 200Hz hoặc khoảng thời gian 5ms. Tín hiệu công suất tối đa 50% hoặc 0,5 sẽ được bật trong 2,5ms và tắt trong 2,5ms.

Xung 2,5ms đó có thể được giải mã bởi một RC servo mong đợi tín hiệu PPM là 180 độ, nói.

Thay đổi tần số thành 1000Hz và do đó, chu kỳ trở thành 1ms. Tín hiệu 50% bây giờ sẽ là 0,5ms và tắt 0,5ms. Tín hiệu PWM đó vẫn mã hóa cùng thông tin công suất 50%.

Tuy nhiên, RC servo mong đợi xung PPM sẽ giải mã độ rộng xung đó thành một vị trí khác và thay đổi vị trí của nó, hoặc 'bỏ cuộc' và không theo dõi tín hiệu.


Tôi đã rất ngạc nhiên khi tôi không thể tìm thấy cái này trên ee.se, nhưng tôi đã tìm kiếm và không tìm thấy thứ gì phù hợp. Tui bỏ lỡ điều gì vậy?
xe cứu thương

Tôi nghĩ bạn đúng; dường như không có câu trả lời trước về chủ đề này. Gần nhất tôi có thể tìm thấy là Electronics.stackexchange.com/a/92381/2028 .
JYelton

1
@gbulmer đầu tiên giải thích của bạn là tuyệt vời. Liệu một cách khác để diễn tả điều tương tự có thể nói rằng PPM chỉ mã hóa thông tin theo độ rộng xung dương, trong khi đó, PWM sẽ mã hóa thông tin trong toàn bộ chu kỳ nhiệm vụ? Một gợi ý thân thiện với tất cả ý nghĩa tốt: có thể có một lỗi đánh máy ở đầu PPM so với PWM , cho biết ý nghĩa của nó PMWở đâu PWM.
Adam.at.Epsilon

1
@ Adam.at.Epsilon - Cảm ơn bạn rất nhiều, đó là tuyệt vời! Tôi đã đấu tranh để giải thích sự khác biệt và bạn đã 'đánh vào đầu'. Tôi phải ghé qua các cửa hàng NGAY BÂY GIỜ, tuy nhiên, tôi sẽ thêm nhận xét đáng yêu, rõ ràng, đáng yêu của bạn sau này. Cũng cảm ơn bạn rất nhiều vì đã phát hiện lỗi đánh máy.
xe cứu thương

1
@ Adam.at.Epsilon - Đã cập nhật. Tôi hy vọng nó rõ ràng. Cảm ơn một lần nữa vì sự giúp đỡ của bạn.
xe cứu thương

4

Các HS-645MG là một 'tương tự' servo, vì vậy bạn nên giữ tần số xung (tốc độ lặp lại) giữa 30Hz và 60Hz.

Mạch trong một servo tương tự bao gồm một bộ tạo xung bên trong có chiều rộng được điều khiển bởi nồi phản hồi (được kết nối với trục đầu ra). Nó so sánh xung tham chiếu này với xung lệnh đến, tạo ra xung 'lỗi' có độ rộng tỷ lệ với chênh lệch giữa vị trí được chỉ huy và vị trí hiện tại của servo. Xung khác biệt này sau đó được 'kéo dài' để tạo ra xung dài hơn cung cấp năng lượng cho động cơ theo hướng yêu cầu. Sau đó, động cơ quay trục đầu ra và nồi phản hồi cho đến khi xung tham chiếu bên trong khớp với xung lệnh đến.

Xung chênh lệch được kéo dài để tăng lượng thời gian mà động cơ được bật giữa các xung lệnh. Nếu tần số xung lệnh quá cao thì động cơ sẽ bị áp đảo và vượt quá vị trí mục tiêu của nó. Điều này sẽ khiến servo bị giật và có thể bị cháy!

tần số thấp hơn là an toàn, nhưng servo sẽ đáp ứng chậm hơn. Bạn thậm chí có thể giảm tần số xuống 0 (không có xung) và servo sẽ không cung cấp năng lượng cho động cơ của nó (điều này rất hữu ích để giảm mức tiêu thụ điện khi giữ một vị trí).

HS-645MG được chỉ định cho hành trình đầu ra là 90 ° khi được điều khiển bởi độ rộng xung từ 1,05ms đến 1,95ms. Tuy nhiên, mạch tương tự của nó sẽ chấp nhận phạm vi rộng hơn và giới hạn thực tế được đặt bằng các điểm dừng cơ học ở ~ 180 ° với độ rộng xung khoảng 0,6ms đến 2,4ms.

PPM vs PWM

Xung séc-vô một dạng của PWM, nhưng thông tin chỉ được mã hóa theo chiều rộng của xung (thường là từ 1ms đến 2ms, với '50% 'ở 1,5ms). Điều này tương đương với PWM 'bình thường' với tỷ lệ 5% ~ 10% ở 50Hz.

PPM (Điều chế xung POSATION) được sử dụng giữa máy phát và máy thu để gửi lệnh cho nhiều động cơ qua một dây. Xung nắm tay đánh dấu sự bắt đầu của một khung hình, xung tiếp theo là kết thúc của kênh servo 1 và bắt đầu của kênh 2, v.v ... Điều này tiếp tục cho đến khi tất cả các kênh được gửi, sau đó khoảng cách ít nhất là 2,5ms để đánh dấu kết thúc của khung. Các xung thường rộng khoảng 0,4ms. Nếu tốc độ khung hình là 50Hz và mỗi kênh có thể lên tới 2ms thì tối đa 8 kênh có thể được gửi một cách đáng tin cậy trong khung 20ms. Trước khi được gửi tới các servo, luồng xung này phải được giải mã thành các xung PWM 1 ~ 2ms riêng lẻ, với tốc độ lặp lại phù hợp với tốc độ khung hình của tín hiệu PPM.

Hầu hết các hệ thống điều khiển vô tuyến mô hình hiện tại sử dụng PCM trên không, và có thể không có bất kỳ tín hiệu PPM bên trong nào. Tuy nhiên, tất cả các máy thu đều tái tạo tín hiệu PWM 1 ~ 2ms cần thiết để lái một servo tiêu chuẩn. Một số có thể gửi các xung servo ở tốc độ khung hình cao hơn (ví dụ: 11ms) và sau đó bạn phải sử dụng các động cơ 'kỹ thuật số' có thể xử lý chính xác tần số cao hơn.


1
Giải thích tốt nhất về ưu / nhược điểm của tần số servo servo tôi đã tìm thấy
Blake Regalia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.