4 Phase Step Motor

I there, this is my first contribution for mbed platform.

Both program and library where made for working with a 4 Phase stepper motor like 28BYJ-48 that you can get on ebay for $5

Firsts thing first,

The motor:

/media/uploads/XtaticO/stepper01.jpg

as you can see the motor comes with an ULN2003 (like H-Bridge) control board...it's very helpful for setting things up.

How it works

/media/uploads/XtaticO/28byj48_01.jpg

2 sets of 2 serial coils , when activated in a determinate sequence they make the motor turn.

Table of Sequences

/media/uploads/XtaticO/28byj48_02.jpg

As you can see in the table, you just have to activate the coils in binary order.

Schematic

/media/uploads/XtaticO/4phase_schem.png

Program and Library

Program here

Import programStepper_4

Working with a 4 Phase Step Motor like 28BYJ-45 or others

Library

Import librarysMotor

Library for 4 Phase Step Motor like 28BYJ-48

This program makes the motor turn 360º/180º clockwise/anticlockwise It also allows to change the motor speed...

Here's the test code:

Import program

00001 /*
00002 ############################################
00003 ##           sMotor v0.1 Test Program     ##
00004 ##          created by Samuel Matildes    ##
00005 ############################################
00006         ---- sam.naeec@gmail.com -----
00007 This library was made for 4-Phase Stepper Motors
00008 I don't take any resposability for the damage caused to your equipment.
00009 
00010 */
00011 
00012 #include "mbed.h"
00013 #include "sMotor.h"
00014 
00015 
00016 Serial pc(USBTX, USBRX);
00017 sMotor motor(p9, p10, p11, p12); // creates new stepper motor: IN1, IN2, IN3, IN4
00018 
00019 int step_speed = 1200 ; // set default motor speed
00020 int numstep = 512 ; // defines full turn of 360 degree
00021 //you might want to calibrate this value according to your motor
00022 
00023 
00024 int main() {
00025 
00026     //Credits
00027     printf("4 Phase Stepper Motor v0.1 - Test Program\r\n");
00028     printf("developed by Samuel Matildes\r\n");
00029     printf("\n\r");
00030 
00031     // Screen Menu
00032     printf("Default Speed: %d\n\r",step_speed);
00033     printf("1- 360 degree clockwise step\n\r");
00034     printf("2- 360 degree anticlockwise step\n\r");
00035     printf("3- 180 degree clockwise step\n\r");
00036     printf("4- 180 degree anticlockwise step\n\r");
00037     printf("5- Change Speed\n\r");
00038 
00039     while (1) {
00040 
00041         if (pc.readable()) { // checks for serial
00042 
00043             if (pc.getc()=='1')
00044                 motor.step(numstep,0,step_speed); // number of steps, direction, speed
00045 
00046             if (pc.getc()=='2')
00047                 motor.step(numstep,1,step_speed);
00048 
00049             if (pc.getc()=='3')
00050                 motor.step(numstep/2,0,step_speed);
00051 
00052             if (pc.getc()=='4')
00053                 motor.step(numstep/2,1,step_speed);
00054 
00055             if (pc.getc()=='5') {
00056                 printf("Current Speed: %d\n\r", step_speed);
00057                 printf("New speed: \n\r");
00058                 pc.scanf("%d",&step_speed); // sets new speed
00059             }
00060         }
00061     }
00062 }

I Hope it's useful for the community ;)


All wikipages