标题:
基于stm32的ULN2033求助,电机在震,但是不转
[打印本页]
作者:
dididi1313
时间:
2019-12-19 21:04
标题:
基于stm32的ULN2033求助,电机在震,但是不转
我电机在震,但是不转怎么办呀,用一开始的程序能转起来,但是看了之后改进我的里面就不行,可以帮我看看嘛.步进电机c文件
#include "bujin.h"
#include "SysTick.h"
#define uint unsigned int
uint16_t phasecw[4] ={0x0800,0x0400,0x0200,0x0100};
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<112;j++);
}
void MOTO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD,&GPIO_InitStructure);
GPIO_ResetBits(GPIOD,GPIO_Pin_8 | GPIO_Pin_9 |GPIO_Pin_10 |GPIO_Pin_11 );
}
void Motorcw(uint speed)
{
uint8_t i=0;
{
for(i=0;i<4;i++)
{
GPIO_Write(GPIOD,phasecw[i]);
delay_ms(speed);
}
}
}
void MotorStop(void)
{
GPIO_Write(GPIOD,0x0000);
}
void Motorcw_angle(int angle,int speed)
{
int i,j;
j=(int)(angle/0.70312);
for(i=0;i<j;i++)
{
Motorcw(speed);
}
}
复制代码
主程序的
if(hum>=setup||shi>=setup)
{
led3=!led3;
beep=!beep;
Motorcw_angle(90,4);
data_pros();
}
else
{
data_pros();
}
}
复制代码
作者:
dididi1313
时间:
2019-12-19 21:06
一直在震,但是不会转,气死了
作者:
dididi1313
时间:
2019-12-20 08:37
有人会不
作者:
pcbboy
时间:
2019-12-20 08:48
看下速度是否太快启动不了。就是哪个延时。
作者:
dididi1313
时间:
2019-12-20 09:07
步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启
动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵
转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频
率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电
机转速从低速升到高速)。
刚刚看到这个,是因为这个吗
作者:
linzhiqi1
时间:
2019-12-20 10:03
main()
for(;;)
{
if(hum>=setup||shi>=setup)
{
led3=!led3;
beep=!beep;
Motorcw_angle(90,4);
data_pros();
}
else
{
data_pros();
}
}
}
主程序应该是的死循环
作者:
dididi1313
时间:
2019-12-20 11:07
pcbboy 发表于 2019-12-20 08:48
看下速度是否太快启动不了。就是哪个延时。
我没调过,电机能转,但是加到我的程序里,就不转只会震
作者:
dididi1313
时间:
2019-12-20 11:10
while(1)
{
key=KEY_Scan(0);
switch(key)
{
case KEY_UP: setup=setup+1;break;
case KEY_DOWN: setup=setup-1;break;
}
if(setup>=99)
{
setup=99;
}
i++;
if(i%20==0)
{
data_pros();
}
delay_us(10);
hum=humi/10;
shi=shidu/10;
if(hum>=setup||shi>=setup)
{
led3=!led3;
beep=!beep;
Motorcw_angle(90,4);
data_pros();
}
else
{
GPIO_SetBits(LED_PORT,LED_PIN);
data_pros();
}
}
复制代码
这个是主程序的while循环
作者:
dididi1313
时间:
2019-12-20 11:10
linzhiqi1 发表于 2019-12-20 10:03
main()
for(;;)
{
我发了个主程序的while循环 在楼下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1