找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12372|回复: 13
打印 上一主题 下一主题
收起左侧

STM32直流电机电流、速度双闭环调速控制系统(vb上位机,单片机源码,视频)

  [复制链接]
跳转到指定楼层
楼主
这是我大三做的运动控制系统课程设计,对直流电机速度、电流双闭环pid控制,有程序源码,还有自己做的上位机,也包括源码,上位机可显示速度和电流曲线,并且可以设置速度,里面也有自己的设计文档,里面也有演示视频

制作出来的实物图如下:


拖动系统课程设计报告书

题目: 直流电机速度电流双闭环控制器设计


任务书
课题名称

闭环控制的PWM直流调速系统设计与实现

主要任务与
测评要求
随着社会的发展,各种智能化的产品日益走入寻常百姓家。为了实现产品的便携性、低成品以及对电源的限制,小型直流电机应用相当广泛。对直流电机的速度调节,可分为励磁控制法与电枢电压控制法两类。随着电力电子技术的进步,发展了许多新的电枢电压控制方法。其中,PWM斩波器进斩波调压的驱动装置与传统晶闸管驱动装置比较,具有下列优点:需用的大功率可控器件少,线路简单;调速范围宽:电流波形系数好,附加损耗小;功率因数高。可以广泛应用于现代直流电机伺服系统中。为抑制负载扰动,同时提高启动制动性能,闭环控制的PWM直流调速系统成为研究热点。

一、该同学的主要任务
1、查找文献,掌握直流电动机PWM调速的基本工作原理;
2、设计直流电动机双闭环调速系统,建立系统模型并进行仿真试验;
3、设计并调试基于51单片机的H桥驱动控制电路;
4、设计速度调节器算法,对闭环系统进行负载试验;

二、功能测评要求
1、能独立设置电机速度(按键设置或滑动变阻器设置或上位机设置);
2、能显示当前电机的实际速度(单位为:r/min);
3、能控制电机启动、停止、正反转、软启动和软制动;
4、给电机加载后,速度能迅速调节回给定值;
5、对电流能进行截止负反馈控制,抑制电流冲击。

三、提供波形数据:
1、不同速度下的PWM波形;
2、加载后的速度波形;

主要内容

本课题主要研究直流电动机的闭环控制的调压调速系统,采用PWM调压控制方案,该同学主要工作是双闭环调速系统建模与仿真,实际速度闭环PWM调速系统的设计与实现。

基本内容:
1、设计直流电动机双闭环调速系统总体方案;
2、建立系统数学模型,并设计电流调节器和转速调节器算法;
3、直流电机的控制电路、驱动电路、保护电路及其检测电路设计
4、 基于单片机的闭环调速系统软件程序设计;
5、分别对空载、负载和变给定工况进行调速系统实验与分析;
6、记录波形分析数据。


主要参
考资料

一、主要参考文献
1、电机原理与设计的matlab分析,戴文进,电子工业出版社;
2、电气传动的脉宽调制控制技术,吴守,机械工业出版社;
3、电力电子技术,浣喜明,高等教育出版社;
4、电动机的单片机控制,王晓明,北京航空航天出版社;
5、电机与拖动基础,李发海,清华大学出版社;


计划进度:

序号
内容
1
任务布置与介绍
2
系统总体方案设计
3
双闭环直流PWM调速系统建模
4
仿真调试与分析
5
硬件电路设计
6
硬件平台搭建与调试
7
软件程序设计
8
软件硬件联合调试
9
撰写课程设计报告
10
答辩
实习地点

15-212

指导教师
签    名


年   月   日



一、       双闭环调速系统1.1双闭环调速系统概述

在许多场合,为了充分发挥生产机械的效能,提高生产率,速度控制系统经常处于起动、制动、反转以及突加负载等过渡过程中,所以要求速度控制系统有较好的动态性能。

对高性能、静态的速度控制系统的要求是具有快速跟随特性(起制性)、较好的抗干扰性和高可可靠性(可瞬态过载但不过流)。因此引入了转速、电流双闭环调速系统。

转速负反馈和比例积分调节器的单闭环调速系统能够保证系统在稳定的条件下实现转速无静差调节。但是该控制系统也有自身的缺点,比如要求快速启动、突加负载动态速降等。

这种单闭环系统就难以满足要求,这是因为在单闭环调速系统中尚不能按要求来控制动态过程的电流和转速。为解决这一矛盾,电流截止负反馈环节,它与转速负反馈调速系统结合在一起,可以专门用来控制电流,从工作原理上分析,它只能是在超过临界电流值以后,才能靠强烈的负反馈作用限制电流的冲击,由于电流截止负反馈只能限制最大电流,电机转矩也随着电流减小而下降,使启动加速过程变慢,启动的时间也比较长,带电流截止负反馈单闭环调速系统。为了能够实现在允许条件下最快启动,依照反馈控制规律,验证与实践,采用转速、电流双闭环调速系统就能达到上述要求。

1.2双闭环调速系统电路原理

如下图为转速、电流的双闭环调速系统的原理图。图中两个调节器ASR和ACR分别为转速调节器和电流调节器,二者串级连接,即把转速调节器的输出作为电流调节器的输入,在用电流调节器的输出去控制晶闸管整流器的触发装置。电流环在内,称之为内环;转速环在外,称之为外环。

两个调节器输出都带有限幅,ASR的输出限幅Uim决定了电流调节器ACR的给定电压最大值Uim,对就电机的最大电流,电流调节器ACR输出限幅电压Ucm限制了整流器输出最大电压值,限最小触发角a。

双闭环调速系统电路原理图

1.3双闭环调速系统动态结构图

双闭环调速系统的动态结构如下图所示,电流采样模块采用2欧姆的碳膜电阻,根据驱动的设计我们把碳膜电阻加在MOS管和GND相连的地方,因为电流不管换向与否碳膜电阻采样到的电流方向不变,所以给ADC采样带来了极大的方便,而且碳膜电阻功率比较大,当电机堵转导致电流比较大的时候不至于烧坏。

由编码器得到电机的转速,,通过编码器反馈脉冲信号,本次采用的编码器精度为344,电机转一圈产生344个脉冲。

双闭环调速系统的动态结构图

1.4双闭环算法结构实现

本次课程设计算法的实现分为如下几个部分ADC采样实现,中断脉冲计数,定时器计算速度,定时器产生两路PWM,通过这两路PWM占空比的差值调节电机的转速,一个串级PI调节器。

ADC采样开了一路采样,设置ARM采样转化时间为1微秒,设置PWM周期为5ms为了减小电流波动带来的采样误差我采集到10000个数字电压然后计算平均电压,采集到10000个点正好是两个PWM周期,计算值有效而且响应快速。中断系统配置成上升沿触发,当来一次脉冲count会加1,开启另外一个定时器50ms获取一次count的值,然后求的这50ms电机的转速,及时与设定速度调节,计算速度误差通过PI调节器调节速度和电流双闭环,PI调节器采用位置式写法,位置式PI需要注意的地方是一个积分饱和,如果不设定积分限制PI调节器会跑飞,带来很大的问题,外环PI调节器的积分限制我采用分级控制的方式,当速度误差大于500时设定积分限制为电机堵转时能够达到的最大电流积分限制设置为8000,根据pi参数计算的得出,当速度误差大于300时设定积分限制为5000,当速度误差小于300时,设定积分限制为2000最小,计算得到PID值为速度稳定是的ADC的值,这样设计的好处就是不但能减小系统的超调量而且能够加速系统的响应时间。


二、转速、电流双闭环调速系统电气设计2.1驱动电路设计

驱动电路的设计采用双路PWM,采用MOS管搭建H桥,采用2104芯片,芯片的IN端输入高电平时HO输出端输出高端平,左上角的MOS管导通,LO端输出低电平左下角MOS管关断,上下MOS管导通和关断够成互补,当芯片IN端输入低电平输出电平相反MOS管的导通关断相反。

驱动电路

2.2过流保护电路设计

过流保护的电路设计如下图所示,过流保护电路的功能当电机两端短路时继电器断开,电路断开不供电。当电机堵转时继电器也断开。过流保护电路设计如下:本电路设计的主要核心元件是比较器、555定时器、继电器。比较器的正向输入端设置一个比较电压,反向输入端输入采样电阻得到的电压,如果电机堵转或者电机两端短路会导致采样电阻的电压值变得很大,反向输入电压大于正向输入电压比较器输出低电平,555定时输出高电平,继电器采用常闭型当为高电平时继电器断开。通过电阻和电容的值设定555定时器的输出高电平时间。

2.3上位机控制系统设计

上位机的设计主要是为了显示速度和电流的变化曲线,蓝色线为实时速度的显示,红色线是设定速度的曲线显示,黑色线是电流变化的曲线,本次电流的值用ADC的值统一表示,本上位机的功能涵盖了所有电机控制的功能,可以通过上位机控制电机的正转、反转、和停止。基本的功能,同时还可以加速减速,每次按键加速或者减速10r,设定速度标度窗口输入所要标定的速度然后点击设置按钮,红色曲线便可按照设置的数值显示曲线,上面还有两个显示速度和电流具体数值的窗口。


stm32单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"
  6. #include "timer.h"
  7. #include "UserConfiguration.h"
  8. #include "UserFunction.h"
  9. #include "lcd.h"
  10. #include "exti.h"
  11. #include "adc.h"
  12. #include "PID_Current.h"
  13. //PWM输出实验  
  14.         
  15. u32 spd_now=0;
  16. u32 set_spd=3300,set_vol=300,PwmOne_Set,adcx;
  17. float av;

  18. enum
  19. {
  20.         flag_add,flag_minus,flag
  21. }FLAG_SPEED;
  22. enum
  23. {
  24.         flag_zheng,flag_fan,flag_stop
  25. }FLAG_DIR;

  26. int main(void)
  27. {               
  28. //        u8 i=0,key;
  29.          
  30.         delay_init();                     //延时函数初始化         
  31.         KEY_Init();
  32.         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  33.         uart_init(9600);         //串口初始化为9600
  34.          LED_Init();                             //LED端口初始化
  35.         Adc_Init();                                  //ADC初始化            
  36.          TIM1_PWM_Init(4999,71);         
  37.         
  38.         EXTIX_Init();
  39.         LCD_Init();
  40.          
  41.         POINT_COLOR=RED;
  42.         TIM3_Int_Init(9999,719);
  43.                         
  44.         FLAG_DIR=flag_zheng;   //开始是正转
  45.         FLAG_SPEED=flag;
  46.         while(1)
  47.   {   
  48.                  
  49.         
  50.         
  51.                        
  52.           //  UserPIDCurrentControl(set_vol) ;
  53.                 av=adcx*3.3/4096;
  54.                 LCD_ShowxNum(130,100,spd_now,8,16,0);    //nowspd;时时速度
  55.                 LCD_ShowxNum(130,130,set_spd,8,16,0);    //设定速度
  56.                 LCD_ShowxNum(130,160,3600,8,16,0);    //电机最大速度
  57.                 LCD_ShowxNum(130,190,adcx,8,16,0);           
  58.                 LCD_ShowxNum(130,230,av*1000,8,16,0);
  59.                 LCD_ShowxNum(130,250,PwmOne_Set,8,16,0);
  60.                 LCD_ShowString(50,160,100,12,16,"Max_Speed:");         
  61.                 LCD_ShowString(50,100,100,12,16,"Now_Speed:");
  62.                 LCD_ShowString(50,130,100,12,16,"Set_Speed:");        
  63.                 LCD_ShowString(50,190,100,12,16,"ADC:");        
  64.                 LCD_ShowString(50,230,100,12,16,"Voltage:");        
  65.                 adcx=Get_Adc_Average(ADC_Channel_2,10000);
  66.                  //按键设置标量速度
  67.                  
  68.                  if(FLAG_SPEED==flag_add)
  69.                         {
  70.                                 FLAG_SPEED=flag;
  71.                                 set_spd+=10;    //加速
  72.                         }
  73.                         else if(FLAG_SPEED==flag_minus)
  74.                         {
  75.                                 FLAG_SPEED=flag;
  76.                                 set_spd-=10;    //减速
  77.                         }
  78.                         if(set_spd>=3600)
  79.                         {
  80.                                 set_spd=3600;
  81.                         }
  82.                         if(set_spd<=0)
  83.                         {
  84.                                 set_spd=0;
  85.                         }
  86.                

  87.         }

  88. }

复制代码
vb上位机源码如下:

所有资料51hei提供下载:
直流电机双闭环控制-.rar (11 MB, 下载次数: 358)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏11 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:104779 发表于 2018-8-26 12:26 | 只看该作者
为何下载后解压不了????提示无压缩文件
回复

使用道具 举报

板凳
ID:337376 发表于 2018-8-26 19:39 | 只看该作者
谢谢分享&#128516;
回复

使用道具 举报

地板
ID:236898 发表于 2018-10-20 14:23 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
ID:424022 发表于 2018-11-10 12:53 | 只看该作者
学习学习
回复

使用道具 举报

6#
ID:242969 发表于 2018-12-18 11:58 | 只看该作者

学习学习
回复

使用道具 举报

7#
ID:478002 发表于 2019-2-19 10:22 | 只看该作者
感谢大神,学习一波
回复

使用道具 举报

8#
ID:383300 发表于 2019-4-3 14:12 | 只看该作者
谢谢分享
回复

使用道具 举报

9#
ID:502029 发表于 2019-4-3 22:35 | 只看该作者
为什么下载后只要一个vb文件
回复

使用道具 举报

10#
ID:383300 发表于 2019-4-18 15:02 | 只看该作者

可以分享一下吗
回复

使用道具 举报

11#
ID:371737 发表于 2019-6-30 12:12 | 只看该作者
学习学习
回复

使用道具 举报

12#
ID:282095 发表于 2019-6-30 13:39 | 只看该作者
资源不错
回复

使用道具 举报

13#
ID:482316 发表于 2019-9-25 11:40 | 只看该作者
感谢楼主分享
回复

使用道具 举报

14#
ID:366517 发表于 2020-3-23 20:34 | 只看该作者
我想问一下用的是哪一款驱动芯片啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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