簡單介紹:
1. 步進電機:就是将電脈沖信号轉變為角位移或者線位移的 開環控制 電機
2. 開環控制:即開環控制系統,就是不降控制的結果回報回來影響目前控制的系統。 所謂開環:就是沒有回報
3. 四相八拍:也叫做半步:A---AB---B---BC---C---CD---D---DA,再次從頭循環。四相四拍:A---B---C---D,循環
4. 四相:指步進電機中有四組線圈,八拍:指的是四組線圈的通電時序。
附上簡單正轉驅動的代碼:此代碼是 正轉的簡單驅動 ,如果要反轉:隻需要将第二個函數中case 語句執行的順序改為:
8--->7--->6--->5--->4--->3--->2--->1--->8.......
//I/O口 1
#define STEP_1_H P11 = 1 //高電平
#define STEP_1_L P11 = 0 //低電平
//I/O口 2
#define STEP_2_H P12 = 1
#define STEP_2_L P12 = 0
//I/O口 3
#define STEP_3_H P13 = 1
#define STEP_3_L P13 = 0
//I/O口 4
#define STEP_4_H P14 = 1
#define STEP_4_L P14 = 0
uint8 motor_state = 0; //步進電機的狀态
uint8 rotate_speed = 0;
uint16 motor_cnt = 0; //計數
void Step_Motor_Driver(void)
{
if (++ motor_cnt >= rotate_speed) //多少秒執行一次下面switch語句
{
motor_cnt = 0;
switch (motor_state)
{
case 0:
STEP_1_L;
STEP_2_L;
STEP_3_L;
STEP_4_L;
break;
case 1: //對應 A
STEP_1_H;
STEP_2_L;
STEP_3_L;
STEP_4_L;
motor_state = 2;
break;
case 2: //對應 AB
STEP_1_H;
STEP_2_H;
STEP_3_L;
STEP_4_L;
motor_state = 3;
break;
case 3: //對應 B
STEP_1_L;
STEP_2_H;
STEP_3_L;
STEP_4_L;
motor_state = 4;
break;
case 4: //對應 BC
STEP_1_L;
STEP_2_H;
STEP_3_H;
STEP_4_L;
motor_state = 5;
break;
case 5: //對應 C
STEP_1_L;
STEP_2_L;
STEP_3_H;
STEP_4_L;
motor_state = 6;
break;
case 6: //對應 CD
STEP_1_L;
STEP_2_L;
STEP_3_H;
STEP_4_H;
motor_state = 7;
break;
case 7: //對應 D
STEP_1_L;
STEP_2_L;
STEP_3_L;
STEP_4_H;
motor_state = 8;
break;
case 8: //對應 DA
STEP_1_H;
STEP_2_L;
STEP_3_L;
STEP_4_H;
motor_state = 1;
break;
default:
break;
}
}
}