
Altium Designer畫的L298N直流電機與步進電機可編程驅動控制模塊電路原理圖和PCB圖如下:(51hei附件中可下載工程文件)
簡要說明: 一、尺寸:長88mmX寬67mmX高35mm
二、主要芯片:L298N、光電耦合器
三、工作電壓:輸入電壓(5V~30V)輸入電壓的大小由被控制電機的額定電壓決定。
四、可驅動直流(5~30V之間電壓的直流電機或者步進電機)
五、最大輸出電流2A (瞬間峰值電流3A)
六、最大輸出功率25W
七、特點:
1、具有信號指示
2、轉速可調
3、抗干擾能力強
4、具有續流保護
5、可單獨控制兩臺直流電機
6、可單獨控制一臺步進電機
7、PWM脈寬平滑調速(可使用PWM信號對直流電機調速)
8、可實現正反轉
9、采用光電隔離
10、P3口全部引出
11、四位LED燈指示
12、四位按鍵輸入(可以對AT89S52單片機編程實現任何控制)
最大特點:可以對AT89S52單片機編程實現任意控制被控的直流電機或者步進電機。
注意啦:提供例程(附帶原理圖以及說明!) 【標注圖片】 【步進電機接線圖】 【直流電機接線圖】 實例一:步進電機的控制實例 步進電機是數字控制電機,它將脈沖信號轉變成角位移,即給一個脈沖信號,步進電機就轉動一個角度,因此非常適合于單片機控制。步進電機可分為反應式步進電機(簡稱VR)、永磁式步進電機(簡稱PM)和混合式步進電機(簡稱HB)。 一、步進電機最大特點是: 1、它是通過輸入脈沖信號來進行控制的。 2、電機的總轉動角度由輸入脈沖數決定。 3、電機的轉速由脈沖信號頻率決定。 二、步進電機的驅動電路 根據控制信號工作,控制信號由單片機產生。(或者其他信號源) 三、控制步進電機的速度 如果給步進電機發一個控制脈沖,它就轉一步,再發一個脈沖,它會再轉一步。兩個脈沖的間隔越短,步進電機就轉得越快。調整單片機發出的脈沖頻率,就可以對步進電機進行調速。(注意:如果脈沖頻率的速度大于了電機的反應速度,那么步進電機將會出現失步現象)。 四、此板驅動步進電機測試程序 
說明:以AT89S52單片機控制單元,C語言編程! 【測試程序】 - /********************************************************************
- 匯誠科技
- 實現功能:正轉_反轉_減速_加速程序
- 使用芯片:AT89S52 或者 STC89C52
- 晶振:11.0592MHZ
- 編譯環境:Keil
- 作者:zhangxinchun
- 淘寶店:匯誠科技
- *********************************************************************/
- #include<reg52.h>
- /*------宏定義------*/
- #define uchar unsigned char
- #define uint unsigned int
- /*****P1.0=A ;P1.1=B ;P1.2=A' ; P1.3=B'****/
- /*******************************正轉數組**************************************************/
- code unsigned char runz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04}; //兩相四線八拍工作方式
- /*******************************反轉數組**************************************************/
- code unsigned char runf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05}; //兩相四線八拍工作方式
- uchar keycan=0; //鍵值
- int y=15;//定義轉動速度,數值越大電機轉速越慢反之則快
- sbit P2_0=P2^0;//正轉按鍵
- sbit P2_1=P2^1;//反轉按鍵
- sbit P2_2=P2^2;//電機減速
- sbit P2_3=P2^3;//電機加速
- /********************************************************************
- 延時函數
- *********************************************************************/
- void delay(i)//延時函數
- {
- uchar j,k;
- for(j=0;j<i;j++)
- for(k=0;k<250;k++);
- }
- /********************************************************************
- 正轉運行函數
- *********************************************************************/
- void zrun()// 正轉運行
- {
- uchar z;
- for(z=0;z<8;z++)
- {
- P1=runz[z];
- delay(y);
- }
- }
- /********************************************************************
- 反轉運行函數
- *********************************************************************/
- void frun()// 反轉運行
- {
- uchar z;
- for(z=0;z<8;z++)
- {
- P1=runf[z];
- delay(y);
- }
- }
- /********************************************************************
- 主函數
- *********************************************************************/
- main()
- {
- while(1)
- {
- if(P2_0==0) //如果電機正轉按鍵按下
- {
- keycan=1; //鍵值等于1
- }
- if(P2_1==0) //如果電機反轉按鍵按下
- {
- keycan=2; //鍵值等于2
- }
- switch (keycan)
- {
- case 1: zrun(); //鍵值等于1 正轉
- break;
- case 2: frun(); //鍵值等于2 反轉
- break;
- }
- if(P2_2==0) // 電機減速
- {
- y+=2;
- }
- if(P2_3==0) // 電機加速
- {
- y-=2;
- }
- }
- }
復制代碼
實例二:直流電機的控制實例 使用直流/步進兩用驅動器可以驅動兩臺直流電機。分別為M1和M2。引腳A,B可用于輸入PWM脈寬調制信號對電機進行調速控制。(如果無須調速可將兩引腳接5V,使電機工作在最高速狀態,既將短接帽短接)實現電機正反轉就更容易了,輸入信號端IN1接高電平輸入端IN2接低電平,電機M1正轉。(如果信號端IN1接低電平, IN2接高電平,電機M1反轉。)控制另一臺電機是同樣的方式,輸入信號端IN3接高電平,輸入端IN4接低電平,電機M2正轉。(反之則反轉),PWM信號端A控制M1調速,PWM信號端B控制M2調速。可參考下圖表: 五、此板驅動直流電機測試程序 
【測試程序】 - /********************************************************************
- 匯誠科技
- 實現功能:直流電機調試程序
- 使用芯片:AT89S52 或者 STC89C52
- 晶振:11.0592MHZ
- 編譯環境:Keil
- 作者:zhangxinchun
- *********************************************************************/
- #include<reg52.h>
- #define uchar unsigned char//宏定義無符號字符型
- #define uint unsigned int //宏定義無符號整型
- sbit P2_0=P2^0;//M1啟動
- sbit P2_1=P2^1;//M1停止
- sbit P2_2=P2^2;//M2啟動
- sbit P2_3=P2^3;//M2停止
- sbit P1_0=P1^0;//M1
- sbit P1_1=P1^1;//M1
- sbit P1_2=P1^2;//M2
- sbit P1_3=P1^3;//M2
- /********************************************************************
- 延時函數
- *********************************************************************/
- void delay(uchar t)//延時程序
- {
- uchar m,n,s;
- for(m=t;m>0;m--)
- for(n=20;n>0;n--)
- for(s=248;s>0;s--);
- }
- /********************************************************************
- 主函數
- *********************************************************************/
- main()
- {
- while(1)
- {
- if(P2_0==0){delay(3);if(P2_0==0)//M1啟動
- {
- P1_0=1;
- P1_1=0;
- }}
- if(P2_1==0){delay(3);if(P2_1==0)//M1停止
- {
- P1_0=1;
- P1_1=1;
- }}
- if(P2_2==0){delay(3);if(P2_2==0)//M2啟動
- {
- P1_2=1;
- P1_3=0;
- }}
- if(P2_3==0){delay(3);if(P2_3==0)//M2停止
- {
- P1_2=1;
- P1_3=1;
- }}
- }
- }
復制代碼
【圖片展示】 【應用舉例】 |