目的/效果
讓步進電機? 正向轉90度,逆向轉90度
一,STC單片機模塊
二,步進電機?
?
2.2 什么是步進電機?
步進電機可以理解為:是一個按照固定步幅運動的“小型機器”。它與普通電機不同點在于,普通電機可以持續旋轉,而步進電機按照特定的步數或者角度來移動。它每次只能移動一定的距離或者旋轉一定的角度,運動更像是按照固定的步伐一步一步地走。這種特性讓步進電機在需要精確控制位置和速度的場景中非常有用,比如打印機、機器人、數控機床等。 ? ? ?
2.2.1 步進電機驅動板
步進電機的控制需要按照特定的順序激活線圈,以產生旋轉。驅動板充當了控制器的角色,它能提供正確的電流和順序來激活步進電機的各個線圈,使得它按照預期的方式運轉。步進電機的操縱需要精確的電流控制和時序激活,而驅動板能提供這種控制,讓步進電機按照設定的步數或角度進行精確的運動。用通俗的語言解釋一下就是,步進電機是個沒有“腦子”的機器,需要芯片(ULN2003)把單片機發送過來的電信息,轉化為步進電機能夠“處理”的脈沖信號,并作出相應處理。
靜態參數
相數:線圈的組數,兩相步進電機步距角一般為 1.8°,三相的步進電機步距角為 1.2°,相數越多步距角越小。
步距角:一個脈沖信號所對應的電機轉動的角度,這個步距角他不一定是電機實際工作的真正步距角,真正的步距角與驅動器的細分有關。
拍數:完成一個磁場周期性變化所需的脈沖數。
定位轉矩:電機在不通電狀態下,電機轉子自身的鎖定力矩(由磁場齒形的諧波以及機械誤差造成的)。
動態參數
步距角精度:步進電機轉動一個步距角度的實際值與理論值的誤差。用百分比表示:誤差/步距角 *100%。
失步:電機運轉的步數,不等于理論上的步數。也可以叫做丟步,一般都是因負載過大或者是頻率過快。
最大空載起動頻率:不加負載的情況下,能夠直接起動的最大頻率。
最大空載運行頻率:電機不帶負載的最高轉速頻率。
運行距頻特性:輸出轉矩與輸入脈沖頻率的關系,是電機選型的根本依據。要在該曲線之下才能保證運行時不丟步。
電機正反轉控制:改變通電順序而改變電機的正反轉。?
2.2.2 五線四相?
五線四相指的是它的線數和相數。在這個28BYJ48步進電機中,有五根線用于連接,四相則表示它具有四組線圈,每個線圈都能獨立控制。+為公共端,分A、B、C、D四相
?
?
?
分別給ABCD導通,電機就會轉。
單相激勵步進
每次通電產生磁性的相只有ABCD其中的一個
步序 | A | B | C | D | P1(HEX) |
1 | 1 | 0 | 0 | 0 | 0x08 |
2 | 0 | 1 | 0 | 0 | 0x04 |
3 | 0 | 0 | 1 | 0 | 0x02 |
4 | 0 | 0 | 0 | 1 | 0x01 |
?
P1=0x08;//A導通 Delay_ms(10);P1=0x04;//B導通Delay_ms(10);P1=0x02;//C導通Delay_ms(10);P1=0x01;//D導通Delay_ms(10);
雙相激勵步進
轉子卻被固定在兩個繞阻的極性中間
步序 | A | B | C | D | P1(HEX) |
1 | 1 | 1 | 0 | 0 | 0x0C |
2 | 0 | 1 | 1 | 0 | 0x06 |
3 | 0 | 0 | 1 | 1 | 0x03 |
4 | 1 | 0 | 0 | 1 | 0x09 |
P1=0x0C;//AB導通 Delay_ms(10);P1=0x06;//BC導通Delay_ms(10);P1=0x03;//CD導通Delay_ms(10);P1=0x09;//DA導通Delay_ms(10);
混合激勵驅動
雙相激勵的過程中,也可以在裝換相位時加一個關閉相位的狀態而產生走半步的現象,這將步進電機的整個步距角一分為二
步序 | A | B | C | D | P1(HEX) |
1 | 1 | 0 | 0 | 0 | 0x08 |
2 | 1 | 1 | 0 | 0 | 0x0C |
3 | 0 | 1 | 0 | 0 | 0x04 |
4 | 0 | 1 | 1 | 0 | 0x06 |
5 | 0 | 0 | 1 | 0 | 0x02 |
6 | 0 | 0 | 1 | 1 | 0x03 |
7 | 0 | 0 | 0 | 1 | 0x01 |
8 | 1 | 0 | 0 | 1 | 0x09 |
?
P1=0x08;//A導通 Delay_ms(10);P1=0x0C;//AB導通 Delay_ms(10);P1=0x04;//B導通Delay_ms(10);P1=0x06;//BC導通Delay_ms(10);P1=0x02;//C導通Delay_ms(10);P1=0x03;//CD導通Delay_ms(10);P1=0x01;//D導通Delay_ms(10); P1=0x09;//DA導通Delay_ms(10);
2.3 細分驅動
將步距角以電流分配方法進行細分化的技術。一般電機產品都會集成這種技術,使用時只需細分數即可實現。
原理:磁場強度和電流大小成正比。
如果Ia = Ib 那么轉子將停在相鄰兩個線圈的中間,如果電流不相等,轉子將停在電流較大的一側;通過改變輸入電流的比例,就可以比原來更小的步距角進行驅動;可進行超微小角度,更加平滑的運轉,有效地降低振動和噪音的驅動方法。?
2.4 通過數字信號控制旋轉位置和轉速。
控制定子繞組ABCD周期性、交替得電,進而控制步進電機一步一步的向前運動的這個控制器就是步進電機驅動器。
電機的旋轉位置只取決于脈沖個數,轉速只取決脈沖信號的頻率。
角位移=脈沖個數X步距角。
步進電機的步距角計算公式為:θ=360°/(Z×m×k)。其中,θ是步距角,Z是轉子齒數,m是定子繞組的對數,k是通電方式系數。對于單拍通電方式,k=1;對于單雙拍通電方式,k=2。1
另外,步距角也可以通過以下公式計算:θ=360°/(轉子齒數×運行拍數)。以常規二、四相,轉子齒為50齒電機為例,四拍運行時步距角為θ=360°/(50×4)=1.8°,八拍運行時步距角為θ=360°/(50×8)=0.9°。
請注意,步距角是步進電機運動的基礎,它取決于電機上的磁極總數,且步距角越小,運轉的平穩性越好。
2.5 適用場景? ? ?
步進電機有以下的三個特點:
其一是精準定位,步進電機能夠準確控制位置,適用于需要精確控制位置和速度的應用。
其二是固定步進,它能按照固定步幅移動,使其在需要確定性移動的應用中很有用。
其三是低速高扭矩:步進電機在低速和高扭矩方面表現出色,這讓它們在需要大力矩但不需要高速旋轉的場景中很有用。
故而根據以上的三個特性,可以用到那些項目里呢?舉幾個我曾接觸使用到步進電機的項目吧!同學們可以發揮自己的想象力哈哈哈... ? ? ? ?
智能窗簾? ? ? ? ?
打印機 ? ? ? ??
圖書館取書機器人的機械臂關節處的動力
三,創建Keil項目
詳細參考:51單片機STC89C52RC——創建Keil項目-CSDN博客
四,代碼?
完整代碼參考《https://gitee.com/oopxiajun/STC89C52》
main.c
#include <REGX52.H>
#include "Delay.h"
#include "key.h"
#include "StepMotor.h"
#include "LCD1602.h"
//模式 :1-正轉,2-反轉
int Model=1;
/*** 函 數:主函數* 參 數:無* 返 回 值:無*/
void main()
{ int step=0;LCD_Init();//順時針轉90度StemMotor_Run(1,90,1);Delay_ms(1000);//逆時針轉90度StemMotor_Run(2,90,2);while(1){ }
}
#include <REGX52.H>
#include "delay.h"
int StepTime = 1000;//steptime表示每步的時間
//八拍
unsigned char code Rotation[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};/*** 函 數:控制步進電機運行* 參 數:Step 轉速(單步暫停時長)Angle 角度(0-360)Direction 轉動方向(1-順時針,2-逆時針)* 返 回 值:無*/
void StemMotor_Run(int Step,int Angle,int Direction)
{int i=0;Angle=(int)(Angle/0.72);while((Angle--)>=0){if(Direction==1)//正轉{//每執行一次下面的循環,步進電機轉角0.72度 ,//步進電機運行1周,需執行500次下面的循環for(i=0;i<8;i++){P1=Rotation[i];//步距角0.09度,4000次轉一圈Delay_ms(Step);}}else if(Direction==2)//反轉{for(i=7;i>=0;i--){P1=Rotation[i];Delay_ms(Step);}} }
}
?
五,代碼編譯、下載到51單片機
代碼編譯請參考
《51單片機STC89C52RC——代碼編譯-CSDN博客》
代碼下載請參考
《51單片機STC89C52RC——STCAI-ISP代碼下載-CSDN博客》