Làm thế nào Arduino Uno có thể hỗ trợ lên đến 12 servo nếu nó chỉ có 6 chân PWM kỹ thuật số?


8

Theo đó :

Thư viện Servo hỗ trợ tối đa 12 động cơ trên hầu hết các bo mạch Arduino và 48 trên Arduino Mega. Trên các bo mạch khác ngoài Mega, việc sử dụng thư viện sẽ vô hiệu hóa chức năng analogWrite () (PWM) trên các chân 9 và 10, cho dù có hay không có Servo trên các chân đó. Trên Mega, có thể sử dụng tối đa 12 servo mà không can thiệp vào chức năng PWM; sử dụng động cơ 12 đến 23 sẽ vô hiệu hóa PWM trên chân 11 và 12.

Tuy nhiên, theo điều này :

Chân I / O kỹ thuật số 14 (trong đó 6 cung cấp đầu ra PWM)

Vậy làm thế nào để Uno có thể điều khiển hơn 6 servo nếu nó chỉ có 6 chân I / O kỹ thuật số có thể cung cấp đầu ra PWM?

Câu trả lời:


4

Mặc dù tôi không tự nhìn vào nguồn, trong các loại tình huống này, họ thường sử dụng bộ định thời ngắt 1 , trong chế độ PWM sẽ được liên kết với chân 9 và 10. Điều này sẽ giải thích tại sao bạn không thể sử dụng điều chế độ rộng xung trên những chân đó. Trên thực tế, bạn có thể sử dụng bất kỳ một trong ba bộ định thời cho PWM trên bất kỳ chân kỹ thuật số nào, mặc dù nó không tốt như các tùy chọn được tích hợp trong PWM .


(nguồn: bansky.net )

( Nguồn )

Hình ảnh trên mô tả chính xác cách các tín hiệu được gửi đến mô tơ servo. Một dạng sóng như vậy tương tự như một chuẩn PWM. Thư viện servo có thể dịch một mức độ thành dạng sóng mà IC của servo sẽ có thể sử dụng để điều chỉnh vị trí của động cơ với động cơ và chiết áp.


1
Vì vậy, về cơ bản nó mô phỏng PWM? Điểm của các chân kỹ thuật số với các kênh PWM là gì?
dùng1265

@ user1265 Nhiều hơn hoặc ít hơn ... đó là sử dụng bộ định thời điều khiển PWM. Theo như quan điểm của PWM, IIRC ATmega328 có mạch để làm cho PWM hiệu quả hơn.
Chim cánh cụt vô danh

2
@ user1265, PWM phần cứng là "miễn phí", nghĩa là nó hoàn toàn không ảnh hưởng đến hiệu suất của phần còn lại của chương trình của bạn (nó chỉ liên kết với bộ đếm thời gian hoặc ít nhất là một phần của nó). Phục vụ các thói quen ngắt cho PWM được mô phỏng tương đối tốn kém. Tuy nhiên, trong trường hợp này, tần số PWM chỉ khoảng 50Hz, do đó, đây không phải là quá bi thảm (Tần số Arduino Arduino tiêu chuẩn là 31 / 62kHz, làm cho các ứng dụng chiếu sáng ở mức 50Hz có thể khá chập chờn).
microtherion

What is the point of the digital pins with PWM channels then?- bạn có thể nhận được tần số cao hơn nhiều (lên đến 8 MHz) và chu kỳ nhiệm vụ rất chính xác. Điều này là không thể khi bạn đang dựa vào một ngắt để làm điều này cho bạn.
Nick Gammon
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.