差分

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

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
gimmickkouza:electronic_basic:6:1_servo_pwm [2024/06/19 00:09] – ◆◆◆要確認依頼箇所:PWMの解説を図を作ってやってみました。これでOKかどうかチェックをお願いします。 それ以外は全部修正済 lutamestagimmickkouza:electronic_basic:6:1_servo_pwm [2024/06/21 18:12] (現在) – ★7-3へのインターナルリンク追加 lutamesta
行 148: 行 148:
 例えばLEDの明るさを変化させたり、DCモータの回転速度を変えたりすることができます。 例えばLEDの明るさを変化させたり、DCモータの回転速度を変えたりすることができます。
 本項ではanalogWriteのサンプルコードもご用意しておりますので、後ほどご覧ください。 本項ではanalogWriteのサンプルコードもご用意しておりますので、後ほどご覧ください。
 +
 +/*<alert type="danger">ちなみにanalogWriteのOWM周波数は490Hzです。(約2ms)5番ピンと6番ピンで出すときだけ980Hz(約1ms)サーボモータのPWMよりずっとはやい周期で制御してます。</alert>*/
  
 === PWMの基本2:サーボモータの場合 === === PWMの基本2:サーボモータの場合 ===
行 168: 行 170:
  
 === analogWriteのPWMとサーボモータのPWMって結局何がどう違うの? === === analogWriteのPWMとサーボモータのPWMって結局何がどう違うの? ===
-==analogWritePWM==+==analogWritePWM周期全体がデューティーサイクル==
 最初の図をもう一度出します。 最初の図をもう一度出します。
  
行 183: 行 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の図も召喚してみましょう。
  
行 196: 行 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|}}
 +
      
 ==== サンプルコード解説 ==== ==== サンプルコード解説 ====
行 344: 行 362:
      
 ===== 6-1-2_Servo_library ===== ===== 6-1-2_Servo_library =====
 +{{youtube>PuH5LhkhHpY?large}}
 +  
 サーボモータはパルス幅を指定して動かすだけでなく、「ライブラリ」を使うことでもっと簡単に、直感的に動作させることができます。 サーボモータはパルス幅を指定して動かすだけでなく、「ライブラリ」を使うことでもっと簡単に、直感的に動作させることができます。
      
行 480: 行 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>
      
行 490: 行 513:
 analogWriteのPWMについてもう一度おさらいしておきたい方は、本ページを上の方~~~までスクロールしてください。 analogWriteのPWMについてもう一度おさらいしておきたい方は、本ページを上の方~~~までスクロールしてください。
 講師はとても親切なのでインターナルリンクも貼っておきますよ。**親切なので。** 講師はとても親切なのでインターナルリンクも貼っておきますよ。**親切なので。**
-[[gimmickkouza:electronic_basic:6:1_servo_pwm:PWMの仕組み|]]+[[gimmickkouza:electronic_basic:6:1_servo_pwm#PWMの仕組み|]]
  
 /*<alert type="danger">サーボモータのページなのにanalogWriteでの制御が登場するのが気になるので一言ほしいです /*<alert type="danger">サーボモータのページなのにanalogWriteでの制御が登場するのが気になるので一言ほしいです