完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
博主在这里给出如何通过正点原子的STM32板来实现这种轮毂电机的控制,本篇博客主要分为两个部分,分别是产品使用的相关介绍和STM32控制方法。
一、产品使用的相关介绍 按照官方给出的说明,轮毂电机主要是通过三相电机线与驱动板连接,在连接的顺序上并不重要,当改变其中任意两条线的接线后,电机便可以实现反转。轮毂电机是通过驱动板驱动的,驱动板与轮毂电机之间主要通过三相电机线连接,下图是驱动板上的三个控制端口,分别是调速端口,刹车端口和正反转端口。 1 调速——黄线 黄线主要用于调速,这里需要输入0-5V的模拟电压,可以实现轮毂电机的0-100%转速的变换。如果只是用单片机上的PWM输出,在控制电机的时候并不稳定,容易出现电机速度不稳定的情况,刚开始博主使用的是STM32上的口直接输出PWM给电机驱动板,因此博主又在淘宝上购买了一块PWM转电压模块,链接如下: 链接: https://m.tb.cn/h.4KjQg4x?sm=852a89. 这种模块可以将单片机上0-3.3v的PWM输出转换为0-10v的模拟电压输出,但是这种模块的供电电压有要求,一般在12v-30v之间,模块的PWM输出端的GND和PWM输入端的GND相接。 再将PWM转电压输出模块的PWM输出端与轮毂电机驱动板的PWM输入端相连,通过给入单片机输出PWM信号时,轮毂电机就可以按照给定的参数运行了。 2刹车——红线 轮毂电机刹车控制端默认给高电平,STM32端的普通I/O口的高电平就可以满足轮毂电机刹车控制端的需求,这里默认给刹车控制端高电平,一般不需要去改变。 3正反转——黑线 轮毂电机正反转黑线通过开关量控制,单片机端输出低电平给正反转控制端,就可以控制电机的正反转。这里博主经过实验,轮毂电机正反转控制端的的通断可以转换为高低电平的变换。给高电平时相当于短路,电机正转;给低电平时,电机反转。 二、STM32控制方法 在用stm32板进行调试时,要将驱动板的GND端、STM32板的GND和PWM转电压模块的GND端都连在一起,使得他们都是供地的,如果不是供地,电机在控制时不能正常控制。 1 STM32控制代码 main.c文件 #include "control.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "timer.h" int main(void) { delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 CONTROL_Init(); //LED¶Ë¿Ú³õʼ»¯ TIM3_PWM_Init(1000,71); STOP=0; BACK=1; while(1) { TIM_SetCompare2(TIM3,950); } } timer.h文件 #ifndef __TIMER_H #define __TIMER_H #include "sys.h" void TIM3_PWM_Init(u16 arr,u16 psc); #endif timer.c文件 #include "timer.h" #include "control.h" #include "usart.h" void TIM3_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); TIM_TimeBaseStructure.TIM_Period = arr; TIM_TimeBaseStructure.TIM_Prescaler =psc; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_Cmd(TIM3, ENABLE); } control.h文件 #ifndef __CONTROL_H #define __CONTROL_H #include "sys.h" #define STOP PGout(9)// PB5 #define BACK PGout(10)// PE5 void CONTROL_Init(void); #endif control.c文件 #include "control.h" void CONTROL_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOG, &GPIO_InitStructure); GPIO_SetBits(GPIOG,GPIO_Pin_9|GPIO_Pin_10); } 2 实物接线 具体的实物接线如下图,这边主要是博主自己在调试过程中的接线。 2 运行效果 运行效果如上图所示,这样,关于83轮毂电机的调试就完成了。 |
|
|
|
只有小组成员才能发言,加入小组>>
2435 浏览 0 评论
9100 浏览 4 评论
36773 浏览 19 评论
5026 浏览 0 评论
24745 浏览 34 评论
1529浏览 2评论
1745浏览 1评论
2195浏览 1评论
1554浏览 0评论
525浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:45 , Processed in 1.460194 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号