基于STM32的新西达电调和无刷电机
本文采用硬件有 A2212/10T 1400KV无刷电机 正点原子F103开发板
以及新西达30A电调
如图:
硬件结构大致如上,由于电调只能调节无刷电机的转速。因此我把正点原子的PWM的实验改了下,可以通过按键来调节无刷电机的转速的快慢同时还可以观察LED灯的亮度。有兴趣的大佬们可以继续改进下去。献上代码
下面展示一些。
int main(void)
{
u16 led0pwmval=500;
vu8 key=0;
u8 dir=1;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
KEY_Init();
IIC_Init() ;
TIM3_PWM_Init(1999,71);
while(1)
{
key=KEY_Scan(0);
if(KEY0 == 0)
{if(dir)led0pwmval=led0pwmval+20;
else led0pwmval=led0pwmval-20;
if(led0pwmval>900)dir=0;
if(led0pwmval==20)dir=1;
TIM_SetCompare2(TIM3,led0pwmval);
}
}
}
上面是main里面的代码。按键只是用来改变PWM波的输出占空比。下面再发个LED的
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //ʹÄÜPB,PE¶Ë¿ÚʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 ¶Ë¿ÚÅäÖÃ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 Êä³ö¸ß
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_Init(GPIOE, &GPIO_InitStructure); //ÍÆÍìÊä³ö £¬IO¿ÚËÙ¶ÈΪ50MHz
GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 Êä³ö¸ß
}