差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
gimmickkouza:electronic_basic:6:1_servo_pwm [2024/06/19 00:13] – ◆◆◆要確認依頼箇所:PWMの解説を図を作ってやってみました。これでOKかどうかチェックをお願いします。 それ以外は全部修正済 lutamesta | gimmickkouza:electronic_basic:6:1_servo_pwm [2024/06/21 18:12] (現在) – ★7-3へのインターナルリンク追加 lutamesta | ||
---|---|---|---|
行 148: | 行 148: | ||
例えばLEDの明るさを変化させたり、DCモータの回転速度を変えたりすることができます。 | 例えばLEDの明るさを変化させたり、DCモータの回転速度を変えたりすることができます。 | ||
本項ではanalogWriteのサンプルコードもご用意しておりますので、後ほどご覧ください。 | 本項ではanalogWriteのサンプルコードもご用意しておりますので、後ほどご覧ください。 | ||
+ | |||
+ | /*<alert type=" | ||
=== PWMの基本2:サーボモータの場合 === | === PWMの基本2:サーボモータの場合 === | ||
行 168: | 行 170: | ||
=== analogWriteのPWMとサーボモータのPWMって結局何がどう違うの? === | === analogWriteのPWMとサーボモータのPWMって結局何がどう違うの? === | ||
- | ==analogWriteのPWM== | + | ==analogWriteはPWM周期全体がデューティーサイクル== |
最初の図をもう一度出します。 | 最初の図をもう一度出します。 | ||
行 183: | 行 185: | ||
{{: | {{: | ||
- | PWM周期の全ての幅=デューティーサイクルの幅なので、極端な話、PWM周期の大半をHIGHにすることだってあります。 | + | PWM周期の全ての幅=デューティーサイクルの幅なので、PWM周期のすべて100%をHIGHにすることだってあります。 |
- | (これは解説のための超極端な例です。実際にこんな出力をすることはないと思います……たぶん) | + | |
- | {{: | + | {{: |
+ | /*<alert type=" | ||
+ | Duty100%を使うこともありますよ!6-1-3_analogWrite.inoでint DUTY = 255; | ||
+ | </ | ||
- | ==サーボモータのPWM== | + | ==サーボはPWM周期のほんの部分がデューティーサイクル== |
analogWriteの図に対応するサーボモータのPWMの図も召喚してみましょう。 | analogWriteの図に対応するサーボモータのPWMの図も召喚してみましょう。 | ||
行 196: | 行 200: | ||
PWM周期のうちデューティーサイクル外の部分については、出力を操作することはありません。 | PWM周期のうちデューティーサイクル外の部分については、出力を操作することはありません。 | ||
デューティーサイクルの最小値~最大値の中で幅を指定することによって、サーボモータの動作が変わります。 | デューティーサイクルの最小値~最大値の中で幅を指定することによって、サーボモータの動作が変わります。 | ||
+ | |||
+ | ==そもそも両者は速度感からして違うんじゃな== | ||
+ | SG90サーボのPWM周期は50Hz、つまり20msでした。 | ||
+ | つまりこんな感じ。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | それに対して、analogWriteのPWM周期は490Hz、約2msです。 | ||
+ | (ちなみに5番ピンと6番ピンで出すときだけは980Hz(約1ms)です) | ||
+ | つまり、analogWriteのPWMはサーボモータのPWMよりずっとはやい周期で制御しています。 | ||
+ | 先程のサーボの図にanalogWriteを足して速度感の違いを可視化してみると、こんな感じです。 | ||
+ | |||
+ | {{: | ||
+ | |||
==== サンプルコード解説 ==== | ==== サンプルコード解説 ==== | ||
行 344: | 行 362: | ||
===== 6-1-2_Servo_library ===== | ===== 6-1-2_Servo_library ===== | ||
+ | {{youtube> | ||
+ | |||
サーボモータはパルス幅を指定して動かすだけでなく、「ライブラリ」を使うことでもっと簡単に、直感的に動作させることができます。 | サーボモータはパルス幅を指定して動かすだけでなく、「ライブラリ」を使うことでもっと簡単に、直感的に動作させることができます。 | ||
行 480: | 行 500: | ||
Arduino UNO R4 Minima Digital-to-Analog Converter (DAC)(Arduino公式): | Arduino UNO R4 Minima Digital-to-Analog Converter (DAC)(Arduino公式): | ||
https:// | https:// | ||
+ | |||
+ | またDACについてはこちらのページでまつはちさんが補足してくれています:[[gimmickkouza: | ||
+ | |||
</ | </ | ||