[经验] 基于单片机的PWM三相无刷直流电机控制系统

  [复制链接]

技术员

发表于 2016-1-6 11:18:06   7001 查看 279 回复 显示全部楼层 倒序浏览
分享
本帖最后由 fejlkel 于 2016-1-6 14:21 编辑

一个三相无刷直流电机驱动,通过霍尔传感器检测转子位置,霍尔值改变的次数检定速度测量,单片机的脉冲宽度调节(PWM)来调节速度来达到控制三相无刷直流电机的目的。

1.检测霍尔传感器的值可以判断出转子的位置,再使能相应的上下桥臂,则能驱动电机运动;若要让电机持续转动,则必须再次检测传感器值及使能相应的上下桥臂。这里采用的是将霍尔传感器输出的三根线相边的IO口配置成外部中断,并且为边沿触发,在中断函数中加入传感器检测与上下桥臂切换程序,如此电机就能持续运转了。


2.上桥臂的控制采用IO口置高低电平来控制上桥臂的通断,下桥臂则使用单片机内部集成的三路PWM波来控制,通过控制PWM波的占空比,可以实现对电机的调速了。实际测得,占空比与电机的速度成正比例关系,在PWM波频率为20KHz时,占空比增加1%,速度增加60rpm,并在占空比为53%时达到额定转速3000rpm(空载)。
3.速度测量则采用如下公式:电机每转一圈,霍尔值改变6次x5个周期=30次,记录边沿触发的中断次数N/30=电机转 过的圈数,设运转时间为t(s)则电机转速v=N/30/t*60 rpm。即动转时间为2s时,霍尔值改变次数即为速度值,单位rpm。

4.调速:给定速度,由电机驱动板自动由当前速度平滑过渡到给定速度。实际测试发现,速度变化量很大时,电机会有突然加速或减速时的冲击;因此,调速应有一个缓冲的过程。即加速或减速应以小步进缓慢增加或减少占空比来让速度渐渐达到最终值。



控制代码:
游客,如果您要查看本帖隐藏内容请回复

函数:void EXTI15_10_IRQHandler(u8 dir,u8 hall)
描述:霍尔传感器中断
参数:
返回:
*****************************************************************************************/
void EXTI15_10_IRQHandler(void)
{
    Hall_Conter++;
    if ((EXTI_GetITStatus(EXTI_Line11) != RESET)||(EXTI_GetITStatus(EXTI_Line12) != RESET)||(EXTI_GetITStatus(EXTI_Line15) != RESET))
    {

        if(Motor.State!=STOP)
        PWM_T_Int(Motor.Dir,Motor.Speed);
    }        
    EXTI_ClearITPendingBit(EXTI_Line11); //清除标志
    EXTI_ClearITPendingBit(EXTI_Line12); //清除标志
    EXTI_ClearITPendingBit(EXTI_Line15); //清除标志
}
/*****************************************************************************************
函数:void Test_Motor(u8 dir,u8 hall)
描述:电机控制
参数:
返回:
*****************************************************************************************/
void Test_Motor(void)
{
    while(1)
   {
        switch(Motor.State)
        {
            case STOP :
                Motor_Stop();
                break;
            case RUN :
                Motor_Start();
                Motor.State=FREE;
                break;
            default :
                break;
        }
   }
}




标签:PWM 单片机

技术员

发表于 2016-1-6 21:25:44  
谢谢分享,学习共勉
回复

举报

技术员

发表于 2016-1-6 23:46:03  

PCB在线计价下单

板子大小:

cm
X
cm

层数:

2

板子数量:

10

厚度:

1.6
看看 谢谢分享 找了这个好久了,是不是有什么模版啊?
回复

点赞 举报

技术员

发表于 2016-1-7 08:54:58  
感谢楼主分享
回复

举报

技术员

发表于 2016-3-2 08:55:53  
学习                                                     
回复

点赞 举报

发表于 2016-3-2 08:59:45  
厉害,学习一下啊
回复

举报

发表于 2016-3-2 20:41:18  
学习学习 共勉共勉~~~~~
回复

举报

等待验证会员

发表于 2016-3-4 21:33:47  
我来看看,这个写得怎么样
回复

点赞 举报

实习生

发表于 2016-3-7 00:02:58  
看看不错好东西不错好东西
回复

点赞 举报

实习生

发表于 2016-3-8 10:04:04  
厉害!!!终于找到了!!!!
回复

举报

实习生

发表于 2016-3-9 20:10:47  
这个可以看看.
回复

举报

实习生

发表于 2016-3-13 11:23:16  
看看 怎么样 大啊打底啊
回复

点赞 举报

实习生

发表于 2016-3-14 09:04:49  
不理解三相控制PWM交替输出
回复

点赞 举报

发表于 2016-3-14 09:16:29  
111111111111111111111111111111111111111111111111111111111111
回复

点赞 举报

技术员

发表于 2016-3-14 15:16:12  
回复才能看,那我就只能回复啊回复……
回复

点赞 举报

发表于 2016-3-15 16:41:54  
好东西,需要学习!!!!!!!!!!!!!!!!
回复

举报

技术员

发表于 2016-3-17 09:52:18  
参考这里学习一下
回复

举报

实习生

发表于 2016-3-17 09:54:23  
正好是所需,找了一阵子。谢谢分享
回复

点赞 举报

技术员

发表于 2016-3-17 15:17:38  
谢谢楼主分享!
回复

举报

实习生

发表于 2016-3-18 21:53:44  
看看,,,,,,,,,,
回复

举报

高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

我的提问

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区