差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
gimmickkouza:electronic_basic:6:1_servo_pwm [2024/06/20 01:35] matsuhachigimmickkouza:electronic_basic:6:1_servo_pwm [2024/06/21 18:12] (現在) – ★7-3へのインターナルリンク追加 lutamesta
行 149: 行 149:
 本項ではanalogWriteのサンプルコードもご用意しておりますので、後ほどご覧ください。 本項ではanalogWriteのサンプルコードもご用意しておりますので、後ほどご覧ください。
  
-<alert type="danger">ちなみにanalogWriteのOWM周波数は490Hzです。(約2ms)5番ピンと6番ピンで出すときだけ980Hz(約1ms)サーボモータのPWMよりずっとはやい周期で制御してます。</alert>+/*<alert type="danger">ちなみにanalogWriteのOWM周波数は490Hzです。(約2ms)5番ピンと6番ピンで出すときだけ980Hz(約1ms)サーボモータのPWMよりずっとはやい周期で制御してます。</alert>*/
  
 === PWMの基本2:サーボモータの場合 === === PWMの基本2:サーボモータの場合 ===
行 170: 行 170:
  
 === analogWriteのPWMとサーボモータのPWMって結局何がどう違うの? === === analogWriteのPWMとサーボモータのPWMって結局何がどう違うの? ===
-==analogWritePWM==+==analogWritePWM周期全体がデューティーサイクル==
 最初の図をもう一度出します。 最初の図をもう一度出します。
  
行 185: 行 185:
 {{:gimmickkouza:electronic_basic:6:6-1-pwm4.png?500|}} {{:gimmickkouza:electronic_basic:6:6-1-pwm4.png?500|}}
  
-PWM周期の全ての幅=デューティーサイクルの幅なので、極端な話、PWM周期の大半をHIGHにすることだってあります。 +PWM周期の全ての幅=デューティーサイクルの幅なので、PWM周期のすべて100%をHIGHにすることだってあります。
-(これは解説のための超極端な例です。実際にこんな出力をすることはないと思います……たぶん)+
  
-{{:gimmickkouza:electronic_basic:6:6-1-pwm5.png?500|}}+{{:gimmickkouza:electronic_basic:6:6-1-pwm7.png?500|}} 
 +/*<alert type="danger">ちなみにanalogWriteのOWM周波数は490Hzです。(約2ms)5番ピンと6番ピンで出すときだけ980Hz(約1ms)サーボモータのPWMよりずっとはやい周期で制御してます。 
 +Duty100%を使うこともありますよ!6-1-3_analogWrite.inoでint DUTY = 255;にしてるのがまさにそれ 
 +</alert>*/
  
-==サーボモータのPWM==+==サーボPWM周期のほんの部分がデューティーサイクル==
 analogWriteの図に対応するサーボモータのPWMの図も召喚してみましょう。 analogWriteの図に対応するサーボモータのPWMの図も召喚してみましょう。
  
行 198: 行 200:
 PWM周期のうちデューティーサイクル外の部分については、出力を操作することはありません。 PWM周期のうちデューティーサイクル外の部分については、出力を操作することはありません。
 デューティーサイクルの最小値~最大値の中で幅を指定することによって、サーボモータの動作が変わります。 デューティーサイクルの最小値~最大値の中で幅を指定することによって、サーボモータの動作が変わります。
 +  
 +==そもそも両者は速度感からして違うんじゃな==
 +SG90サーボのPWM周期は50Hz、つまり20msでした。
 +つまりこんな感じ。
 +
 +{{:gimmickkouza:electronic_basic:6:6-1-pwm8.png?500|}}
 +  
 +それに対して、analogWriteのPWM周期は490Hz、約2msです。
 +(ちなみに5番ピンと6番ピンで出すときだけは980Hz(約1ms)です)
 +つまり、analogWriteのPWMはサーボモータのPWMよりずっとはやい周期で制御しています。
 +先程のサーボの図にanalogWriteを足して速度感の違いを可視化してみると、こんな感じです。
 +
 +{{:gimmickkouza:electronic_basic:6:6-1-pwm9.png?500|}}
 +
      
 ==== サンプルコード解説 ==== ==== サンプルコード解説 ====
行 346: 行 362:
      
 ===== 6-1-2_Servo_library ===== ===== 6-1-2_Servo_library =====
 +{{youtube>PuH5LhkhHpY?large}}
 +  
 サーボモータはパルス幅を指定して動かすだけでなく、「ライブラリ」を使うことでもっと簡単に、直感的に動作させることができます。 サーボモータはパルス幅を指定して動かすだけでなく、「ライブラリ」を使うことでもっと簡単に、直感的に動作させることができます。
      
行 482: 行 500:
 Arduino UNO R4 Minima Digital-to-Analog Converter (DAC)(Arduino公式): Arduino UNO R4 Minima Digital-to-Analog Converter (DAC)(Arduino公式):
 https://docs.arduino.cc/tutorials/uno-r4-minima/dac/ https://docs.arduino.cc/tutorials/uno-r4-minima/dac/
 +  
 +またDACについてはこちらのページでまつはちさんが補足してくれています:[[gimmickkouza:electronic_basic:7:3-r3-r4|]]
 +
 </panel> </panel>