久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于stm32F103的ULN2003步進電機驅動 源程序
[打印本頁]
作者:
someAD
時間:
2021-6-8 04:57
標題:
基于stm32F103的ULN2003步進電機驅動 源程序
一、本次使用的硬件
開發板:stm32f103c8t6核心板
電機:ULN2003 步進電機擴展板+普通42電機
二、簡單原理及代碼
1.原理
四相步進電機有兩種運行方式 1.四相四拍;2.四相八拍。
拍數
指電機轉過一個齒距角所需脈沖數,通俗的來講拍數指的是步進電機運行時每轉一個齒距所需的脈沖數。以四相電機為例,有四相單四拍運行方式即A-B-C-D-A,有四相四拍運行方式即AB-BC-CD-DA-AB,有四相八拍運行方式即 A-AB-B-BC-C-CD-D-DA-A。
轉動
給四個管腳一定頻率的脈沖即可使其轉動,脈沖頻率越快,轉動越快。反之轉動越慢,脈沖次數越多,轉動角度越大。
實現方式
使用最簡單的延時控制脈沖,將數據放在數組內通過for循環發給驅動模塊。不使用定時器或者復雜的計算,能實現短時間內將電機驅動起來。
2.主要函數
main.c
#include "delay.h"
#include "sys.h"
#include "stdio.h"
#include "motor.h"
//IN4: PB9 d
//IN3: PB8 c
//IN2: PB7 b
//IN1: PB6 a
int main(void)
{
Moto_Init(); //電機
delay_init(); //延時函數初始化
while(1)
{
Motor_Ctrl_Direction_Angle(1,180);//正轉180度
delay_ms(500);
Motor_Ctrl_Direction_Angle(0,90);//反轉90度
}
}
簡單的執行正轉180度,然后反轉90度。中間的delay_ms()按需要修改,但是注意如果delay_ms()太短可能出現卡頓現象。因為執行上一個轉動角度的任務需要一定的時間。所以要合理修改。
motor.c
#include "motor.h"
#include "delay.h"
unsigned short phasecw[4] ={0x0200,0x0100,0x0080,0x0040};// D-C-B-A 反轉
unsigned short phaseccw[4]={0x0040,0x0080,0x0100,0x0200};// A-B-C-D 正轉
/***************************************************/
// 電機模塊與單片機連接引腳
//IN4: PB9 d
//IN3: PB8 c
//IN2: PB7 b
//IN1: PB6 a
void Moto_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 ;//引腳按著INT1順序接就行了
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_ResetBits(GPIOB,GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_8 |GPIO_Pin_9 );
}
引腳初始化的函數
,可以按照自己所需使用的引腳進行修改。
void MotoRcw(void) //反轉
{
int i;
for(i=0;i<4;i++)
{
GPIO_Write(GPIOB,phasecw[ i]);
delay_ms(3);
}
}
正轉函數
,修改 delay_ms()即可以改變轉動速度,反轉函數依然同樣操作。
void Motor_Ctrl_Direction_Angle(int direction, int angle)
{
u16 j;
if(direction == 1)
{
for(j=0;j<64*angle/45;j++)
{
MotoRccw();//正轉
}
MotorStop();//停止
}
else
{
for(j=0;j<64*angle/45;j++)
{
MotoRcw();//反轉
}
MotorStop();//停止
}
}
控制電機轉動角度函數
direction為方向變量,輸入1為正轉,0為反轉。
angle為角度變量,可為0-360具有實際意義。
**注意:
j<64*angle/45
這一句是轉動一度的數學公式,是根據這個步進電機本身的轉子數計算出來的.
程序:
步進電機驅動程序.7z
(180.49 KB, 下載次數: 277)
2021-6-8 14:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
cidiy-biu
時間:
2021-8-10 09:02
怎樣控制它停止呢
作者:
someAD
時間:
2021-8-10 15:34
cidiy-biu 發表于 2021-8-10 09:02
怎樣控制它停止呢
void MotorStop(void) //停止
{
GPIO_Write(GPIOB,0x0000);
}
作者:
someAD
時間:
2021-8-10 15:35
cidiy-biu 發表于 2021-8-10 09:02
怎樣控制它停止呢
源代碼里面有一個停止函數
作者:
zyluglugl
時間:
2021-8-11 07:02
學習了,感謝樓主的分享,希望繼續分享好的成果!
作者:
顧惜朝mio
時間:
2021-9-8 15:22
有原理圖嘛
作者:
littleflybear
時間:
2022-3-5 22:18
怎么調節轉動的速度呢?
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩欧美三区
|
日韩精品国产一区
|
精品国产乱码久久久久久88av
|
在线中文字幕视频
|
欧美视频在线一区
|
成人免费视频视频
|
成人午夜小视频
|
免费午夜视频
|
三级免费观看
|
中文字幕亚洲一区
|
国产精品视频久久久
|
国产一级片免费观看
|
视频在线观看网站免费
|
日本美女一级片
|
日本xxxx69
|
超碰免费在线播放
|
成人在线国产
|
亚洲成人免费
|
久久久久久网
|
欧洲色综合
|
色妞综合网
|
中文在线字幕观看
|
www.亚洲国产
|
17c国产精品一区二区
|
av第一页
|
深夜福利视频网站
|
天天射天天操天天干
|
成人爽a毛片一区二区免费 www.欧美精品
|
国产福利91精品一区二区三区
|
91调教视频
|
wwwav在线
|
一区二区免费在线观看
|
久久综合国产
|
97在线免费
|
91亚洲国产成人久久精品网站
|
午夜精品久久久久久久久久蜜桃
|
涩涩在线
|
aa久久
|
午夜激情影院
|
国产成年妇视频
|
天天操操操操
|