单片机pwm调速原理_单片机控制电机转速

(22) 2024-10-04 17:01:01

文章目录

  • 一、主要功能
  • 二、硬件资源
  • 三、软件设计
    • 1、主机程序
  • 四、实验现象
  • 联系作者

一、主要功能

本项目使用Proteus8仿真51单片机控制器,使用L298N电机模块、数码管模块、按键模块、LED指示灯模块等。

系统运行后,数码管显示电机当前运行档位和速度。
可通过按键K4启动与停止,按键K1加速、按键K2减速,按键K3换向;
档位可在1-5挡。
最终可实现:
按键功能:具有加速、减速、正转、反转、启动和停止;
显示功能:数码管显示档位、电机转速;
指示功能:LED指示电机正转、反转;
测速功能:使用霍尔传感器实现电机测速;
电机驱动:L298N驱动直流电机;


二、硬件资源

1、51单片机核心模块
2、L298N电机驱动模块
3、数码管显示模块
4、按键模块
5、LED电路


三、软件设计

1、主机程序

/* 作者:嗨小易(:) */ //功能引脚定义 sbit ZZ_LED=P2^0; sbit FZ_LED=P2^1; //定义结构体 _sys_ctrl sys_ctrl; //系统参数设定 void sys_parm_set(void) { 
    u8 key=0; key=key_scan(0); //开启/停止 if(key==KEY4_PRESS) { 
    sys_ctrl.run=!sys_ctrl.run; if(sys_ctrl.run) { 
    TR1=1;EX0=1; if(sys_ctrl.dir==0){ 
   ZZ_LED=0;FZ_LED=1;} else { 
   ZZ_LED=1;FZ_LED=0;} } else { 
    TR1=0;EX0=0; ZZ_LED=1;FZ_LED=1; } dc_motor_dir_ctrl(sys_ctrl.dir); dc_motor_sta(sys_ctrl.run); } //当处于运行状态时才能调速、切换方向 if(sys_ctrl.run==1) { 
    //加速 if(key==KEY1_PRESS) { 
    sys_ctrl.gear++; if(sys_ctrl.gear>5)sys_ctrl.gear=1; pwm_set_duty_cycle(sys_ctrl.gear*20); } //减速 else if(key==KEY2_PRESS) { 
    sys_ctrl.gear--; if(sys_ctrl.gear<1)sys_ctrl.gear=5; pwm_set_duty_cycle(sys_ctrl.gear*20); } //换向 else if(key==KEY3_PRESS) { 
    sys_ctrl.dir=!sys_ctrl.dir; if(sys_ctrl.dir==0){ 
   ZZ_LED=0;FZ_LED=1;} else { 
   ZZ_LED=1;FZ_LED=0;} dc_motor_dir_ctrl(sys_ctrl.dir); } } } //采集数据显示 void sys_data_show(void) { 
    u8 buf[4]; while(sys_ctrl.run==1) { 
    //测速完成 if(sys_ctrl.sta==1) { 
    sys_ctrl.sta=0; sys_ctrl.cnt=0; EX0=1;//打开计数  } buf[0]=gsmg_code[sys_ctrl.gear%10]|0x80; // buf[1]=gsmg_code[sys_ctrl.speed/100]; buf[1]=0; buf[2]=gsmg_code[sys_ctrl.speed%100/10]; buf[3]=gsmg_code[sys_ctrl.speed%100%10]; smg_display(buf,1); break; } } //应用控制系统 void appdemo_show(void) { 
    ENA=0; SMG_A_DP_PORT=0; sys_parm_init();//系统参数初始化 exti0_init(); time1_init(); pwm_init(0XFF,0XD1,100,0);//初始时,PWM占空比为0 dc_motor_dir_ctrl(sys_ctrl.dir);//默认正转 pwm_set_duty_cycle(sys_ctrl.gear*20);//占空比40% while(1) { 
    sys_parm_set(); sys_data_show(); } } 

四、实验现象

B站演示视频:https://space.bilibili.com/

单片机pwm调速原理_单片机控制电机转速 (https://mushiming.com/)  第1张

单片机pwm调速原理_单片机控制电机转速 (https://mushiming.com/)  第2张

单片机pwm调速原理_单片机控制电机转速 (https://mushiming.com/)  第3张


联系作者

B站演示视频:https://space.bilibili.com/
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

THE END

发表回复