Arduino UnoにデジタルPWMピンが6つしかない場合、最大12のサーボをどのようにサポートできますか?


8

よると、この

サーボライブラリは、ほとんどのArduinoボードで最大12モーター、Arduino Megaで最大48モーターをサポートします。Mega以外のボードでは、ライブラリを使用すると、ピンにサーボがあるかどうかに関係なく、ピン9および10のanalogWrite()(PWM)機能が無効になります。Megaでは、PWM機能を妨げることなく最大12個のサーボを使用できます。12〜23個のモーターを使用すると、ピン11および12のPWMが無効になります。

しかし、によると、この

デジタルI / Oピン14(そのうち6つはPWM出力を提供)

では、PWM出力を提供できるデジタルI / Oピンが6つしかない場合、Unoは6つ以上のサーボをどのように制御できますか?

回答:


4

私自身はソースを確認していませんが、これらのタイプの状況では、通常、割り込みタイマー1を使用します。これは、PWMモードではピン9および10に関連付けられていました。これにより、パルス幅変調を使用できない理由が説明されます。それらのピン。実際、組み込みのPWMオプションほど優れていませんが、デジタルピンの PWM は3つのタイマーのいずれかを使用できます


(ソース:bansky.net

出典

上の画像は、信号がサーボモーターに送信される方法を正確に説明しています。このような波形は、標準のPWMに似ています。サーボライブラリは、サーボのICがモーターとポテンショメーターでモーターの位置を調整するために使用できる波形に次数を変換できます。


1
それで、本質的にPWMをシミュレートしますか?それでは、PWMチャネルを備えたデジタルピンのポイントは何ですか?
user1265 14

@ user1265多かれ少なかれ...それはPWMを駆動するタイマーを使用しています。PWMのポイントに関しては、IIRC ATmega328にはPWMをより効率的にする回路があります。
匿名のペンギン

2
@ user1265、ハードウェアPWMは「無料」です。つまり、プログラムの残りの部分のパフォーマンスにはまったく影響しません(タイマーまたは少なくともその一部を拘束するだけです)。エミュレートされたPWMの割り込みルーチンのサービスは比較的コストがかかります。ただし、この場合、PWM周波数はたったの50Hzなので、これはそれほど悲惨ではありません(標準のArduino PWM周波数は31 / 62kHzです。たとえば、50Hzの照明アプリケーションでPWMを実行すると、おそらくちらつきがあります)。
microtherion 2014年

What is the point of the digital pins with PWM channels then?-はるかに高い周波数(最大8 MHz)と非常に正確なデューティサイクルを得ることができます。これを行うために割り込みに依存している場合、これは不可能です。
Nick Gammon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.