PROTEUS仿真之直流电机的使用(速度方向控制)

1.直流电机在仿真中的名称及其驱动电路

(直流电机:MOTOR    电机驱动:L298)

2.接线图及其介绍

L298学过的应该都不陌生,一个双驱电机驱动IN1和IN2与ENA一起控制一个输出,IN2和IN1是方向引脚,ENA是速度控制引脚,通过引脚PWM的占空比来实现速度的控制。

  • 当IN1为低电平(0)且IN2为高电平(1)时,电机1会以一种方向旋转。

  • 当IN1为高电平(1)且IN2为低电平(0)时,电机1会以相反的方向旋转。

  • 当IN1和IN2同时为低电平(0)或同时为高电平(1)时,电机1会停止旋转或进入自由旋转状态。

(IN3,IN4和ENB和上述的使用是一样的,就不过多赘述了)

3.整体的原理图

在主控方面我选择了STM32F103R6,其次就是电机驱动模块,按键和OLED了

(原理图应该很详细了)

4.cubemx的配置

1)按键引脚(输出,上拉模式)

2)OLED引脚

3)电驱的方向引脚和PWM引脚

周期计算公式为=主频/(PSC+1)/(ARR+1)

占空比=(CCR+1)/(ARR+1)(CCR即Pulse)

5.代码的实现

1)电机控制模块

//mode:模式选择  0正转 1 反转
//speed:速度的设定,最低为0 最高为1000

void motor_countrol(int mode,int speed)
{
    if(mode==0)
    {
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,1);
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,0);
        TIM3->CCR1=1000-speed;
        
    }
    
    if(mode==1)
    {
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,0);
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,1); 
        TIM3->CCR1=1000-speed;        
    }
}

2)按键控制模块

uint8_t KEY_Scan(void)
{
    if(key0==0)
    {
        delay_ms(10);
        while(key0==0);
        delay_ms(10);
        return 0;      
    }
    else if(key1==0)
    {
        delay_ms(10);
        while(key1==0);
        delay_ms(10);
        return 1;      
    }
    else if(key2==0)
    {
        delay_ms(10);
        while(key2==0)
            delay_ms(10);
            return 2;
    }
    else
    return 20;
}

uint8_t mode=0;
int speed=500;

void key_motor(void)
{
    uint16_t key;
    key=KEY_Scan();
    

    if(key==0)
    {
        speed+=100;
        if(speed>=1000)
            speed=1000;
           
    }
    if(key==1)
    {
        speed-=100;
        if(speed<=0)
            speed=0;
           
    }  
    
    if(key==2)
    {
        mode=!mode;
    }
    
}

6.部分功能

TIM2定时器用不了,我也不太理解,所以我是采用的定时器3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值