基于STC8G2K64S4单片机控制直流电机

基于STC8G2K64S4单片机控制直流电机

#前言

本文从硬件和软件两方面介绍了使用STC8G2K64S4单片机控制直流电机的方法

之前说了怎么控制步进电机,这次来说怎么控制直流电机,可能在更多时候直流电机用的更多些。步进电机相比直流电机更稳定,速度控制和旋转角度控制更精准,不会受惯性影响。直流电机的话操作简单,转速快而且比步进电机轻很多。只能说各有各的优点吧,按需选择使用

硬件方面

电机我买的某宝的得科家的电机,规格12V450转,还蛮好用的。直流电机主要是两个端口,一个正极一个负极,接到电机驱动板上,接下来说说驱动板

驱动板用的也是某宝上买的,这个很多一搜就有。我买的规格是支持电压7V~24V,双路电机接口,每路额定输出电流7A,使能信号可外接PWM。

电机接口1和2分别可以控制两个电机,直接和电机的正负极相接,电源接口则是接12V锂电池,控制信号灯电源指示灯亮时说明正常工作了 控制信号接口竖着两排,一排分别控制一个电机。五个接口都接单片机的引脚

GND和5V就不细说了,都接在主板上

EN端是使能端接,通过输出高低电平“1”和“0”来控制电机的转和停止,高电平转,低电平不转。这也是输出PWM脉冲的端口

两个IN端是方向控制端,通过输出高低电平“1”和“0”来控制转向IN1输出“0” IN2输出“1”和IN1输出“1” IN2输出“0”两个组合来控制电机的正反转

当然不用驱动板也能控制,那样只能控制正反转和旋转停止。用驱动就能控制速度了

软件方面

在keil里进行程序设计。直流电机也是我最开始学单片机时的例程,我这里就不说我自己写的笨蛋脉冲了,直接用逐飞的库函数。

代码如下:

sbit IN1=P15        //定义P15为IN1
sbit IN2=P16        //定义P16为IN2
sbit P17            //定义P17为EN

void main()
{
    DisableGlobalIRQ();		    //关闭总中断
	
	board_init();			//初始化内部寄存器,勿删除此句代码。
	pwm_init(PWM1_P17, 1000, 0);        //初始化pwm端口
	
	EnableGlobalIRQ();        //开启总中断
	
  while(1)
	{	
        P15=0;
        P16=1;        //方向选择

		pwm_duty(PWM1_P17, 1500);        //输出pwm波
    }
}

因为直流电机是通过改变占空比来改变速度,所以选择函数pwm_duty来改变步进电机的速度。直流电机频率一般都是1000,这是固定的,在前面初始化的时候就给了值。

占空比我给1500,实际所需的转速就要自己调参数了,每个电机还是有不同的,所以调速是个艰辛的过程

本人小白,有问题交流讨论,虚心受教

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值