編集履歴一覧に戻る
nihsokのアイコン画像

nihsok が 2026年08月16日17時38分15秒 に編集

コメント無し

本文の変更

ユニポーラステッピングモーターの励磁モードによる特性の違いを比較する。 # 用いたもの - ステッピングモーター 28BYJ-48 5V - モータードライバ ULN2003(の搭載されているボード) - コントローラーとして ESP32 ステッピングモーターとモータードライバはAmazonで4個セット805円 ## 配線 モーターから5本まとめて出ている線はそのままモータードライバボードへつなぐ。 適当な電源から電源を供給 ++ESP32 devkit の VIN (5V)からだと、LEDは光るがモーターは動かなかったので外部電源が必要。++ || ESP32 | モーターコントローラ | |:--:|:---:|:---:| |青| GPIO13 | IN1 | |黄| GPIO12 | IN2 | |緑| GPIO14 | IN3 | |赤| GPIO27 | IN4 | # 実行 https://burariweb.info/electronic-work/arduino-learning/arduino-stepping-motor-control.html を参考に、1相励磁、2相励磁、1-2相励磁を試す。 プログラムを横着した都合で逆回転になっている。 ## 1相励磁 ```python from machine import Pin import utime pins = (Pin(13,Pin.OUT,value=0), Pin(12,Pin.OUT,value=0), Pin(14,Pin.OUT,value=0), Pin(27,Pin.OUT,value=0)) wait = 100 #ms def phase_1(step): code = [False,False,False,True,False,False,False] for _ in range(step): for t in range(4): for i in range(4): if code[i+t]: pins[i].on() else: pins[i].off() utime.sleep_ms(wait) phase_1(1000) ```

-

![1相](https://camo.elchika.com/34dc43987a1695413ed76db32ea4e94415d384d6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66336238363735322d663630612d343866342d613963622d3331306133646133386665322f33636434623062382d643530612d343463332d623337642d323939643933613461656266/)

+

![1相(クリックでGIF再生)](https://camo.elchika.com/34dc43987a1695413ed76db32ea4e94415d384d6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66336238363735322d663630612d343866342d613963622d3331306133646133386665322f33636434623062382d643530612d343463332d623337642d323939643933613461656266/)

## 2相励磁 ```python from machine import Pin import utime pins = (Pin(13,Pin.OUT,value=0), Pin(12,Pin.OUT,value=0), Pin(14,Pin.OUT,value=0), Pin(27,Pin.OUT,value=0)) wait = 100 #ms def phase_2(step): code = [True,False,False,True,True,False,False] for _ in range(step): for t in range(4): for i in range(4): if code[i+t]: pins[i].on() else: pins[i].off() utime.sleep_ms(wait) phase_2(1000) ```

-

![2相](https://camo.elchika.com/754e8db169e8f0412202cd56add717a195612239/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66336238363735322d663630612d343866342d613963622d3331306133646133386665322f66323864366236302d646135612d346564302d623135612d333330353636396237346461/)

+

![2相(クリックでGIF再生)](https://camo.elchika.com/754e8db169e8f0412202cd56add717a195612239/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66336238363735322d663630612d343866342d613963622d3331306133646133386665322f66323864366236302d646135612d346564302d623135612d333330353636396237346461/)

## 1-2相励磁 ```python from machine import Pin import utime pins = (Pin(13,Pin.OUT,value=0), Pin(12,Pin.OUT,value=0), Pin(14,Pin.OUT,value=0), Pin(27,Pin.OUT,value=0)) wait = 2 #ms def phase_12(step): code1 = [False,False,False,True,False,False,False] code2 = [True,False,False,True,True,False,False] for _ in range(step): for t in range(4): for i in range(4): if code2[i+t]: pins[i].on() else: pins[i].off() utime.sleep_ms(wait) for i in range(4): if code1[i+t]: pins[i].on() else: pins[i].off() utime.sleep_ms(wait) phase_12(1000) ```

-

![1-2相](https://camo.elchika.com/7c8b0592fac7800bd42e4285c0bc5253a6a519fb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66336238363735322d663630612d343866342d613963622d3331306133646133386665322f38336239336235632d313463342d346231352d383865632d383763333230663333643531/)

+

![1-2相(クリックでGIF再生)](https://camo.elchika.com/7c8b0592fac7800bd42e4285c0bc5253a6a519fb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66336238363735322d663630612d343866342d613963622d3331306133646133386665322f38336239336235632d313463342d346231352d383865632d383763333230663333643531/)

2回sleepを入れているので回転は遅くなっている。 # 感想

-

LEDで確認できるのはwait=50msくらいまで、それより短くするとLEDはほぼつけっぱなしになるが速度は上がる。1相励磁、2相励磁はwait=2msまでwait=1msだと動かず)、1-2相励磁はwait=1msでも動いた(2段階なので角速度は同じ) wait=2msくらいになるとモーターから出る音も気になる

+

LEDで確認できるのはwait=50msくらいまで、それより短くするとLEDはほぼつけっぱなしになるが速度は上がる。 1相励磁、2相励磁はwait=2msまでwait=1msだと動かず1-2相励磁はwait=1msでも動いた(2段階なので角速度は同じ) wait=2msくらいになるとモーターから出る音も気になる