ステッピングモータを購入してみました。ラズパイからPythonで制御しています。
オシロスコープで波形取得するまで確認した旨を紹介します。
ステッピングモータをラズパイで制御して、波形まで確認してみた
ステッピングモータを購入してみました。ラズパイからPythonで制御しています。
オシロスコープで波形取得するまで確認した旨を紹介します。
1-2相制御(ハーフステップ駆動)を確認できました。
ステッピングモータとドライバ
今回はラズベリーパイからステッピングモータを制御しています
- ラズベリーパイ…ラズパイ4
- ステッピングモータ…28BYJ48
- モータドライバ…ULN2003AN
Amazonで簡単に購入できるモータとドライバでテストしました。
オシロスコープで波形確認
ラズベリーパイからはPythonでステッピングモータの制御をしています。
ラズパイからドライバまでの各信号4本を、オシロスコープで確認しています。
オシロスコープは下記で紹介しているRIGOLの趣味向けの4ch品を使用しています。
オシロスコープの使い方!初めての人向けに多くの測定事例を紹介
Pythonのプログラム
使ったPythonのテストプログラムは下記です。
ラズパイのGPIO17,18.27.22を使用しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import RPi.GPIO as GPIO import time # Pin configuration in1 = 17 in2 = 18 in3 = 27 in4 = 22 # Initialize GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(in1, GPIO.OUT) GPIO.setup(in2, GPIO.OUT) GPIO.setup(in3, GPIO.OUT) GPIO.setup(in4, GPIO.OUT) # Stepper motor sequence step_sequence = [ [1, 0, 0, 0], [1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 1, 1], [0, 0, 0, 1], [1, 0, 0, 1] ] def set_step(w1, w2, w3, w4): GPIO.output(in1, w1) GPIO.output(in2, w2) GPIO.output(in3, w3) GPIO.output(in4, w4) def move_motor(steps, delay): for _ in range(steps): for step in step_sequence: set_step(step[0], step[1], step[2], step[3]) time.sleep(delay) try: while True: move_motor(64, 0.01) # Set the number of steps and delay time.sleep(1) # Wait for 1 second except KeyboardInterrupt: print("Exiting program") finally: GPIO.cleanup() |
ステッピング周波数と回転速度
今回は2パターンで確認しています。ステッピングモータ(28BYJ-48)のスペックとしては下記です。
- ステップ数:フルステップ約5.625°
- ギア比: 約64:1
データシートとしては下記秋月電子のサイトのものがあります。
https://akizukidenshi.com/catalog/g/g113256/
ステッピング周波数=12.5Hz
一つ目のパターンは、1ステップのdelay=0.01sとしています。
move_motor(64, 0.01) # Set the number of steps and delay
1シーケンスが8ステップありますので、ステッピング周波数は1/(0.01x8)=12.5Hzとなります。
(下の波形の右下のFreq(周波数)も≒12.5Hzとなっています)
1シーケンスのモータ回転角度としては64x8ステップ(512ステップ)動かしています。
ステップ数とギア比を考慮すると、512x5.625/64=45°動きます。
(1回転(360°)動かすのに4096ステップ必要です。)
1ステップ=0.01s(100Hz)のため、1秒あたり100/4096≒0.0244回転です。
RPM(1分換算)にすると1.47RPMでした。
テスト動画を見て貰えれば分かりますが、非常にゆっくりです。
ステッピング周波数=125Hz
2つ目のパターンは、1ステップのdelay=0.001sとしています。
move_motor(64, 0.001) # Set the number of steps and delay
データシート上、Max response frequency が1000ppsなので限界に近いようです。
波形上の周波数(Freq)でも≒125Hzとなっています。
- ステッピング周波数…125Hz *1/(0.001x8)=125Hz
ステッピングモータを制御したテスト動画
下記動画はステッピングモータの動作・波形を確認したものです。
最初にオシロスコープを繋がずに単体で動作確認しています。
ドライバボードのLEDがステッピング周波数により、高速点滅していることが分かります。
次にステッピング周波数12.5Hzをオシロスコープを繋いで確認しています。
ステッピングモータ動作としてはゆっくりです。
アップしていくと1-2相制御(ハーフステップ駆動)の波形が確認できています。
最後にステッピング周波数125Hzで確認しています。
まとめ
ステッピングモータを購入してみました。ラズパイからPythonで制御しています。
オシロスコープで波形取得するまで確認した旨を紹介しました。
簡単にステッピングモータを動かせますので、是非皆様もテストしてみてください。
コメント