单片机控制电机


Time:2023-06-01 07:51:15

关于单片机控制电机的问题,我们总结了以下几点,给你解答:

单片机控制电机


单片机控制电机

STM32控制步进电机

电机方面主要包括控制运动、加减速、限位。下面介绍一下在电机控制方面的心得,由于对于电机的控制不需要很精确,并且自身能力有限,相比于大牛有很大的差距。

实现功能

主要是控制滑块的运动,开始运动时需要加速,当稳定在最高速度时匀速运动,检测到下端限位信号时,开始减速直到停止,然后进行反向加速,匀速,检测到上端限位时停止运动。

加速——匀速——减速——停止——反向——加速——匀速——停止

硬件部分

本次电机为两相四线步进电机,两相:电机有两个线圈(绕组),四线:电机有四根线,一般是A+ A- B+ B-。有些电机不会标注出线的极性,其实可以用万用表测,短接的就是同一个绕组,或者短接之后电机转动很费力,也代表是同一个绕组。

驱动

电机的运动需要较大的电流,这取决于电机本身和负载,所以通常需要驱动芯片。而且驱动芯片可以实现许多附加的功能,包括细分、休眠、保护等。本次采用的是DRV8825驱动芯片模块。模块的介绍图如图所示:

引脚介绍:

ENABLE/:使能引脚,高电平停止工作,低电平正常工作;M0-M2:代表细分,最大可以达到32细分,这部分可以参考datasheet;RESET/ 、SLEEP/:低电平会休眠和复位,因此电机正常工作时,两个引脚接高电平;STEP:最重要的引脚,通过单片机给这个引脚PWM信号,控制电机运动;DIR:0和1控制电机方向;VMOT:供电引脚,一般用12-20V就可以了;B2-A1:接电机四根线;FAULT/:接高电平工作;光电限位

光电限位采用的反射型,型号为sy1200,感应距离为1-4mm,当没有遮挡时,输出低电平;有遮挡时,代表有光反射回来,输出高电平;测试过程中,发现最好采用白色的平面反射,效果更好。

3软件部分

软件主要就是通过stm32输出PWM脉冲,脉冲的频率决定了电机的速度。

PWM通过定时器产生,决定频率的主要是arr重装载值,以及psc预分频值。最终输出的PWM频率为72000k/(arr*psc)。

加减速

由于需要做到加减速,也就意味着PWM的频率是改变的,因此arr的值需要改变。参考网上对于加减速的一些方法:主要有T型加减速和S型加减速,实现方法有公式法或者查表法。由于公式法比较麻烦,就直接采用了查表法。所以根据需要的频率,计算出不同频率下的arr值,写到数组里,就可以实现频率的改变。不过这种方法下,频率的改变是根据时间做线性或者S型变化,这种方法对吗?还是根据步数来改变?

S型加减速:

T型加速就是匀加速,固定加速度。S型加速需要根据公式计算,详细说明如下:

其中Fcurrent代表某个点的频率:Fmin代表最小频率;Fmax代表最大频率;Flexible为S曲线区间系数,越大代表压缩的最厉害,中间(x坐标0点周围)加速度越大;越小越接近匀加速。理想的S曲线的取值为4-6;num:频率点/2;

例如想要从1kHz加速到40kHz,中间经过40个点,Fmin=1kHz,Fmax=40kHz,num=40/2=20,最后通过excel计算出各个频率值,可以发现在末端的加速是非常缓慢的,中间加速比较大。问题就是,初始速度并不是1khz了,它取决于系数的取值,取6时,初始速度就越小。

软件中实现:

采用定时器3输出PWM脉冲,定时器2用于计数中断(更精确的控制可以通过定时器2来计算出给出多少个脉冲,也就是电机运动的步数,那样的话就可以精确控制电机运动,形成开环反馈)

欢迎的大家关注微信公众号【零基础玩嵌入式】和我们一起学习嵌入式知识点击下方了解更多即可加入嵌入式技术交流群交流群

单片机控制电机转速


单片机控制电机转速

单片机驱动mos管,用PWM控制,调节占空比 可 改变 马达转速。
用pwm
一. 带注释软件清单 ;==========使用单元设定========== //..................................使用单元设定 dis0 equ 30h dis1 equ 31h dis2 equ 32h dis3 equ 33h led equ 34h tm1 equ 35h; tm2 equ 36h; intv bit 37h;中断标志 thx equ 38h;定时脉宽高电平 cishu equ 39h first bit 41h; 检测加减是否第一次按下 set1 bit 42h setz0 equ 43h;设定当前设定值setz0~setz3 setz1 equ 44h setz2 equ 45h setz3 equ 46h tm3 equ 47h; 循环次数单元 jia1 bit 48h; 单步加标志 lianjia bit 49h; 连加标志 jian1 bit 50h; 单步减标志 lianjian bit 51h; 连减标志 setdata equ 52h; 设定速度暂存单元 realdata equ 53h; 实测速度暂存单元 yk1 equ 54h; 上次输出数据暂存单元 kp equ 56h;比例系数 ki equ 57h;积分系数 ek equ 58h;设定值和实测值的差值 ek1 equ 59h;上次的ek值 output equ 60h; ek2 equ 61h;ek-ek1的值 onpress bit 62h;判定enter键是否弹起标志 tms equ 63h;闪烁时长 shan bit 64h; 闪烁标志 ;==========主程序========== org 0000h sjmp main org 0013h;外部中断1入口地址 ajmp inx1 org 001bh;定时器t1中断入口地址 ajmp itx1 org 0070h main: mov sp,#70h;设定堆栈指针入口地址 acall init;调用初始化程序 m1: jb set1,flash;当前为设置状态则跳到闪烁显示模块 acall disp; 否则为一般显示 sjmp nextt flash: acall disp1 nextt: acall delay;调用按键延时程序 acall m2;调用按键程序 djnz cishu,m1;第隔100ms刷新一下实测值 mov cishu,#20 acall control;调用控制调速模块 sjmp m1 //==========初始化模块========== init:mov dptr,#0fd00h ;设置pa、pb为输出口,pc为输入口 mov a,#03h movx @dptr,a mov tmod,#21h ;定时器/计数器t1为方式2,定时器/计数器t0为方式1 mov tl0,#00h ; 定时器/计数器t0赋初值#00h mov th0,#00h mov thx,#0bbh ;输出单元赋初值#0bbh,即脉冲高电平宽度 mov th1,thx mov tl1,thx setb tr1 ;启动定时器/计数器t1 setb tr0 ; 启动定时器/计数器t0 setb et1 ;允许定时器/计数器t1溢出中断 setb ex1 ;允许外部中断1中断 setb it1 ;选择边沿触发 setb ea ;cpu开中断 setb 07h; setb shan clr 11h;检测是否成功 mov led,#7fh

单片机控制电机正反转


单片机控制电机正反转

用单片机控制直流电机的正反转,停转如图:

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存滑色照储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业雨要就普信控制领域广泛应用。

参考资料:


本文拓展问题:

单片机控制电机正反转单片机控制电机正反转程序单片机控制电机正反转原理单片机控制电机驱动实验单片机控制电机转速原理单片机控制电机