目次
はじめに
モーターを使った作品を作ろうと思ったのですが、モーターの種類を自分が理解できていないことに気づきましたので、改めて記事にしました。
リンク
リンク
リンク
モーターの比較
3つのモータの特徴をまとめました
| 種類 | 得意なこと | 苦手なこと | 制御の難易度 | 追加部品 | 代表例 |
| DCモータ | とにかく簡単に回す/速度制御(PWM) | 角度・位置決めは苦手 | ★☆☆ | MOSFET、Hブリッジ、ダイオード | 扇風機、ポンプ ミニ四駆 |
| サーボモーター (RCサーボ) | 角度指定・その角度を保持 | 連続回転は専用品が必要 | ★★☆ | 特になし 電源は別でとる | ラジコンの操舵 ロボットの関節 |
| ステッピングモーター | 何ステップ回したか=位置 (オープンループで位置決め) | 負荷が重いと脱調(ズレても気づかない) | ★★★ | ドライバ必須 | 3Dプリンタ、カメラスライダー |
動作原理
DCモータ:電圧(平均)=回転の強さ
DCモータは基本、電気を入れると回ります。
速度を変えたいときは PWM(オン/オフの割合)で平均電圧を変えるのが定番です。
ただし、GPIOに直結はNG。モータは大電流+逆起電力(サージ)が出ます。
そのため トランジスタ/MOSFET+保護目的のダイオードが基本セットになります。
サーボモータ:「目標角度」と「今の角度」を比べて勝手に合わせる
RCサーボの構成部品は以下です。(結局DCモータが入っていますが)
- 小型DCモータ
- 減速ギヤ
- 角度を読む部品(ポテンショメータ)
- 制御回路
これらで、角度フィードバックしてくれます。
制御は50Hz(周期20ms)のPWMで、パルス幅(1〜2ms付近)が角度になります。
ステッピングモータ:コイルを順番にONして“カクカク”回す
内部のコイルに順番に電流を流して回します。
「何パルス(何ステップ)動かしたか」を数えることで位置が分かる、という発想です。
こちらもGPIO直結はNGで、ドライバ必須です(電流が大きい)
使い分けの実戦ルール
DCモータを選ぶべきケース
- 扇風機・ポンプ・車輪など「回ればOK」
- 速度制御ができればOK(PWM)
- コスト・部品点数を最小にしたい
サーボモータを選ぶべきケース
- 0〜180°のように角度で決めたい
- 負荷が変わっても「狙った角度に戻したい」(フィードバックが効く)
注意:サーボは電源が弱いとガタつきやすいので、Picoの5Vから取るより別5V電源+GND共通が安定
ステッピングモータを選ぶべきケース
- 一定量だけ正確に動かす(例:毎回「10mm送る」)
- 3Dプリンタ/CNCのように、位置決めを繰り返す
- 低速トルクが欲しい(ギヤ付きも強い)
注意:負荷が重いと脱調してズレます(ズレても気づかない)。必要ならリミットスイッチ(原点)やエンコーダで対策が必要になる。
サンプルコード
PWMで制御する方法を紹介します。過去に紹介したものはリンクを張っておきます。
DCモーター
(外部電源 +Vmotor) ----+----[ DC Motor ]----+----(MOSFET Drain)
| |
+----|<|-------------+
Flyback diode
(カソードを+側)
(MOSFET Source) ---------------------------- (GND)
(Pico GND) --------------------------------- (GND) ※共通GND
(Pico GPx PWM) --[100Ω]--(Gate)
(Gate) --[100kΩ]--(GND) ※プルダウン
from machine import Pin, PWM
from time import sleep
pwm = PWM(Pin(16)) # GP16 -> MOSFET Gate
pwm.freq(20000)
pwm.duty_u16(0)
def set_speed(percent: int):
percent = max(0, min(100, percent))
pwm.duty_u16(int(65535 * percent / 100))
# 0%→100%→0%
while True:
for s in range(0, 101, 5):
set_speed(s)
sleep(0.1)
for s in range(100, -1, -5):
set_speed(s)
sleep(0.1)サーボモータ
メカエレ Blog | 電子工作とライフ…


SG90サーボモーターをRaspberry Pi Picoで制御|PWMで角度を自在に
GPIOピンとPWM制御でSG90サーボモーターを動かす基本回路とコードを丁寧に解説。初心者でも真似できる1歩ガイドです。
ステッピングモータ
メカエレ Blog | 電子工作とライフ…


Raspberry Pi Picoでステッピングモーターを制御|基礎と応用を図解
Raspberry Pi Picoとステッピングモーターを安全に接続して、PWMやドライバ制御で自在に動かす方法を図解付きで丁寧に解説
混乱ポイントしやすいポイント
PWMという言葉は同じでも、中身が違います
DCモータ:PWMのデューティで速度を変える
サーボモータ:PWMのパルス幅(1〜2ms)で“角度”を指定する
ステッピングモータ:PWMというよりパルス列(何回打ったか)で“どれだけ動いたか”を決める
まとめ
ミニ四駆からEV、ロボットまでモータが使われている製品は無数にあります。仕組みを理解して楽しく使いましょう。次は手持ちのDCモータを動かしてみます。(電池つなぐだけ??)
リンク
リンク
リンク
コメント