28BYJ48 DC 5V 4-フェーズ5線式ステッピングモータとULN2003ドライバボード
これも去年の春に購入したまま眠っていたパーツです。中国直送で200円前後で購入できます。
便利なライブラリを見つけて動かしてみたという段階です。通常のstepperライブラリではなく、AccelStepperというライブラリを使うことでハーフステップで滑らかに駆動することができます。28BYJ-48モーターでの使い方は42Botsの記事に従いました。
回転数は1000pps(およそ15rpm)が上限で、それ以上はトルクが小さくなり指でシャフトをつまむと止まってしまいます。
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 |
//http://42bots.com/tutorials/28byj-48-stepper-motor-with-uln2003-driver-and-arduino-uno/ //Yes. It also helps that I've done the experiment with a fragment of mirror on the motor shaft, // a laser pointer, and a bit of tape on the wall, confirming the 4096 and refuting the 4048. #include <AccelStepper.h> #define HALFSTEP 8 // Motor pin definitions #define motorPin1 8 // IN1 on the ULN2003 driver 1 #define motorPin2 9 // IN2 on the ULN2003 driver 1 #define motorPin3 10 // IN3 on the ULN2003 driver 1 #define motorPin4 11 // IN4 on the ULN2003 driver 1 // Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48 AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4); void setup() { stepper1.setMaxSpeed(1000.0); stepper1.setAcceleration(500.0); stepper1.setSpeed(2000); stepper1.moveTo(40760); }//--(end setup )--- void loop() { //Change direction when the stepper reaches the target position if (stepper1.distanceToGo() == 0) { stepper1.moveTo(-stepper1.currentPosition()); } stepper1.run(); } |