发新帖本帖赏金 2596.00元(功能说明)我要提问
返回列表
打印

【MCU方案】+ 基于C2000系列运动控制平台的开发

[复制链接]
19430|233
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangmangui|  楼主 | 2015-7-21 23:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhangmangui 于 2015-7-21 23:41 编辑

本平台基于TMS320F2812来完成和实现所有功能,虽然以前在DSP 技术板块有过部分分享,本次将以整体平台为主进行详细讲解和全面分享,仅供喜欢TI MCU的朋友们学习和交流使用,希望有网友能够基于TI其他MCU(如TMS320F28335/F2837x)来完成功能更强大的运动控制平台,同时有很多不足之处还望大家多多指教。
   首先来介绍一下本系统中的控制对象—直流无刷电机和负载—磁粉制动器:
   普通直流电机的电枢在转子上,而定子产生固定不动的磁场。为了使直流电机旋转,需要通过换向器和电刷不断地改变电枢绕组中
电流的方向,使两个磁场的方向始终保持相互垂直,从而产生恒定的转矩驱动电机不断旋转。
       直流无刷电机为了去掉电刷,将电枢放到定子上去,而转子做成了永磁体,这样的结构正好与普通直流电动机相反。然而即使这样改变还不够,
因为定子上的电枢通入直流电以后,只能产生不变的磁场,电机依然转不起来。为了使电机的转子转起来,必须使定子电枢各相绕组不断地换向通电,
这样才能使定子磁场随着转子的位置在不断地变化,使定子磁场与转子永磁磁场始终保持90°左右的空间角,产生转矩推动转子旋转。



     直流无刷电机结构示意图

     直流无刷电机原理框图
    磁粉制动器是根据电磁原理和利用磁粉传递转矩的。磁粉制动器具有激磁电流和传递转矩基本成线性关系。在同滑差无关的情况下能够传递一定的转矩,具有响应速度快、结构简单、无污染、无噪音、无冲击振动节约能源等优点。是一种多用途、性能优越的自动控制元件。磁粉制动器广泛应用于各种机械中不同目的的制动、功率测试加载、放卷张力的控制等。磁粉制动器广泛用于缓冲起动、过载保护、调速、卷绕系统中收卷的张力控制等。
磁粉制动器的基本特性:
   (1)激磁电流—转矩特性:激磁电流与转矩呈良好线性关系,通过调节激磁电流可以无极控制转矩的大小。
   (2)转速—转矩特性:转矩与转速无关,保持定值。静力矩和动力矩没有差别。
   (3)负载特性:磁粉制动器的允许滑差功率,在散热条件一定时,是定值。其连续运行时,实际滑差需在允许滑差功率以内。使用转速高时,需降低力矩使用。



          磁粉制动器、磁粉离合器使用说明书.pdf (262.38 KB)

整个运动控制平台硬件系统中,系统供电电路主要有DCDC模块构成,负责给各个电路模块提供工作电源,其输出电压有±15V,+12V,+5V,+3.3V。信号调理电路完成对各种传感器及采集回来的信号处理,主要包括霍尔电流传感器的模拟量信号、光电编码器的转速信号、给定控制开关量信号等,经调理电路后,使其各种信号的电平和幅值满足DSP控制器的要求;DSP主控电路以TMS320F2812为核心处理器,完成对各种信号的处理以及系统的闭环控制,并通过SCI接口实现控制器与上位机的通讯;恒流源为磁粉制动器提供电流,以便输出与电流成线性关系的扭矩。
TMS320F2812主控板设计:
TMS320F2812信号处理器集成了事件管理器(281x处理器)、ePWM、QEP电路、SCI通信接口、A/D转换模块、SPI外设接口、eCAN总线通信模块、看门狗、通用I/O口、PLL时钟模块、多通道缓冲串口、外部中断接口、存储器及其接口、内部集成电路(I²C)等多种外设单元,为功能复杂的控制系统设计提供了方便。
原理图: DSP2812_Bord.rar (34.72 KB)       SCHEMATIC1 _ DSP2812.PDF (66.36 KB)
PCB   : DSP2812_BORD_V1.0.rar (282.41 KB)
BOM表: DSP2812_BORD_BOM.rar (1.96 KB)
其他文件: 底层焊接辅助图.pdf (22.18 KB)     顶层焊接辅助图.pdf (32.29 KB)
桥式驱动器设计:
在电机驱动中,由于电流较大,上管都采用N型MOSFET。由于每个上管源极的电压是浮动的,因此上管的栅极驱动电压也必须浮置在源极的电压之上才能有效地开启上管。实现这种的方法有多种,如自举法、隔离电压法、脉冲变压器法、电荷泵法、载法驱动法等多种方法。本次设计采用电荷泵法来实现电压的浮动。
电荷泵的基本原理是通过电容对电荷的积累效应而产生高压,使电流由低电势流向高电势。随着集成电路的不断发展,基于低功耗,低成本的考虑,电荷泵在电路设计中的应用越来越广泛。由于H桥由4个N沟道功率MOSFET组成,如要控制各个MOSFET,各MOSFET的门极电压必须足够高于栅极电压。通常要使MOSFET完全可靠导通,其门极电压一般在10V以上,即Vgs>10V,对于H桥下桥臂,直接加10V以上的电压即可使其导通;而对于上桥臂,驱动电路必须能提供高于电源电压的电压,这就要求驱动电路中增设升压电路,提供高于栅极的电压。考虑到Vgs有上限要求,一般MOSFET导通时Vgs为10V~15V,也就是控制门极电压随栅极电压的变化而变化,即浮动栅驱动。因此在驱动控制电路中设计电荷泵电路,用于提供高于驱动电源电压的电压。
   实际电路中采用定时器555构成施密特触发器产生振幅为12V的方波,并构成一阶电荷泵,具体电路如下图所示,图中VDD为12V,VS为24V。
逻辑电路也就是对DSP输出的控制信号进行译码,以满足H桥的开关要求。本次设计采用快速逻辑门74HC系列完成,具体电路图如下图所示:
说明:(1)D1H与D1L为左桥臂的上下控制信号,D2H与D2L为右桥臂的上下控制信号。
     (2)Brake为高电平时表示刹车,D1H,D1L,D2H,D2L全为高电平。
     (3)Dir表示方向信号,即Dir为高电平正转,则Dir为低电平反转,但前提是Brake为低电平。
     (4)PWM1和PWM2表示分别控制正转和反转,通过占空比来控制电机转速。
          (5)驱动优点:在刹车的时候通过PWM1短路电机,这样在由正、反转变换时不会出现抖动。
以下桥式总体电路是参考了网友的分享,有使用验证过,其中VDD为12V,VS为24V,VCC为5V;而D1H、D1L、D2H、D2L与电机驱动逻辑电路对应相连。除去前面讨论过的电荷泵电路之外,就是信号放大电路和功率驱动H桥电路,从图中我们不难看出上桥的信号放大电路和下桥的有所不同,并且上下桥同时送入的控制信号,到达H桥时上桥需要的时间较多,这就是硬件带来的死区时间。
关于具体原理还望各位多多分析,多多交流,其中主要包括H桥部分电路,半桥驱动电路,吸收电路(RC,RCD,C),串联补偿等,参考图如下所示:
压控恒流源电路设计(面对强大的负载磁粉制动器,使用中效果不好,容易使其抱死):
压控恒流源是系统的重要组成部分,它的功能是用电压来控制电流的变化,由于系统对输出电流大小和精度的要求比较高,所以选好压控恒流源电路显得特别重要。
电路原理图如下图所示。该恒流源电路由运算放大器、大功率场效应管Q1、采样电阻R2、负载电阻RL等组成。
由于DSP输出的控制信号为3.3V,为了能使DAC0832正常工作,需要将DSP输出的控制信号放大为5V,这个过程是有图中三极管Q2通过上拉完成的,电路也存在不足,因为通过此电路就会将DSP输出的控制信号取反,这会给程序编写带来不便。
DAC0832的参考电压是由LM336-2.5V提供的,这样DAC0832转换过程中的参考电压Vref=2.5V,输出电压通过运算放大器LM358之后,就有如下的关系式(期中D表示DSP输出的控制数字量):
Vout = +2.5VDC (1 + R2/R3)(D/256)
电路中调征管采用大功率场效应管IRF540。采用场效应管,更易于实现电压线性控制电流,既能满足输出大电流的要求,也能较好地实现电压近似线性地控制电流。因为当场效应管工作于饱和区时,漏电流Id近似为电压Ugs控制的电流。即当Ud为常数时,满足:Id=f(Ugs),只要Ugs不变,Id就不变。
在此电路中,R5为取样电阻,采用康铜丝绕制(阻值随温度的变化较小),阻值为0.25欧。运放采用OP07作为电压跟随器,UI=Up=Un,场效应管Id=Is(栅极电流相对很小,可忽略不计) 所以Io=Is= Un/R2= UI/R2。正因为Io=UI/R2,电路输入电压UI控制电流Io,即Io不随RL的变化而变化,从而实现压控恒流源。
光电耦合电路设计:
由于光耦合器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。又由于光耦合器的输入端属于电流型工作的低阻元件,因而具有很强的共模抑制能力。本次设计中采用高速光耦6N137,它的发光二极管正向电流为0-250uA时,光敏管不导通;发光二极管正向压降为1.2-1.7V(典型1.4V),正向电流6.3-15mA,光敏管道通。其使用目的主要有两个:
(1)保护DSP芯片,因为DSP芯片的灌电流能力很小,只有4mA左右,所以需要加光耦以确保整体系统的稳定工作。
(2)增强驱动能力,由于DSP直接输出的电压为3.3V,驱动电流也很小,不足以驱动后级电路。
根据系统整体设计的需要,共设计了两种光电耦合电路,一种用于DSP输出控制信号和驱动器之间的隔离;另一种用于光电编码器输出的正交编码信号和DSP之间的隔离。
DSP输出控制信号和驱动器之间的隔离电路如图3-5-1所示,电路的输入信号峰峰值为3.3V,通过光耦隔离转换之后的控制信号峰峰值为5V,这样既增加了驱动能力,也能够和驱动器前端的逻辑门电路匹配。
光电编码器输出的正交编码信号和DSP之间的隔离电路如下图所示,电路输入信号为光电编码器输出的正交编码信号,其峰峰值为5V,经过光耦6N137之后输出峰峰值为5V的信号,经过电阻R2、R3、R4的分压调节作用,最终送入74HC14峰峰值为3.3V的正交编码信号,通过74HC14 CMOS反向器整形之后,为了能够得到DSP直接可以处理的信号,需要74HC14的供电电压为3.3V,这样输出的正交编码信号峰峰值也为3.3V,就直接可以送入DSP进行处理。为了确保出现意外情况使送入DSP的信号峰峰值过高,在74HC14输出的信号和DSP之间串联一个小阻值电阻,用来阻抗匹配。
注意:使用74HC14进行信号整形,为了输出3.3V的QEP信号,所以74HC14需要3.3V供电,但是芯片的输入信号峰峰值不能超过3.3V。当然更好的选择是使用TI的电平转换芯片。
过流保护模块电路设计:
为了确保系统安全工作,系统中必须要有保护环节,控制系统中一般都添加了过流、过压、过载、欠压和过热等的保护。本次设计中只采用了过流保护,设计中的过流是指当负载过大引起的过流和控制不当使H桥上下桥臂同时导通导致电源短路产生的过流,这两种情况都会使保护电路工作,继电器断开驱动器母线的链接,DSP输出的两路PWM波变为高阻态,这样就会避免由于H桥上电流过大而烧坏MOS管的情况发生。
过流保护的整体过程包括两部分。一部分为母线电流大小的采集,这部分包括传感器电流的采集,采集电流信号并转换为对应电压信号,电压信号与DSP中ADC模块的线性关系匹配;另一部分为继电器驱动,控制信号控制继电器断开母线连接,即断开供电电路。两部分模块电路分别如下图所示。
继电器并联二极管电路主要是为了保护晶体管等驱动元器件。当图中晶体管VT由导通变为截止时,流经继电器线圈的电流将迅速减小,这时线圈会产生很高的自感电动势与电源电压叠加后加在VT的c、e两极间,会使晶体管击穿,并联上二极管后,即可将线圈的自感电动势钳位于二极管的正向导通电压,此值硅管约0.7V,锗管约0.2V,从而避免击穿晶体管等驱动元器件。并联二极管时一定要注意二极管的极性不可接反,否则容易损坏晶体管等驱动元器件。
速度反馈和采集:
运动控制平台中设计了速度闭环控制,所以要求采集速度的精度要高,也就是光电编码器的线数要高,精度还与控制电机的减速比要关系,减速比越高说明电机运动一周送出的脉冲个数就越多。本系统中采用了HEDSS-500-B的光电编码器和减速比为1:19的MAX直流无刷电机,所以电机转动一周就有9500个脉冲送入DSP的正交编码模块(QEP)中进行速度的计算。
最详细的事件管理器资料: DSP2812EV管理器.rar (3.16 MB)


打赏榜单

21ic小喇叭 打赏了 3.00 元 2015-07-24

相关帖子

沙发
zhangmangui|  楼主 | 2015-7-21 23:50 | 只看该作者
     软件部分确实做得比较烂,主要是使用现在大家都不使用的VB搞的,主要是不会QT的使用,不过这是我的目标,软件就直接给大家分享源代码,供大家参考。


3个子目录,用于配置波特率,用于自动波特率检测(2812你随便设置一个波特率会发送AA会被自动检测出来),用于最佳频率检测(主要针对不同的驱动板)



源代码:
VB程序.rar (43.04 KB)

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 2588.00 元 2015-08-25

评论
21小跑堂 2015-8-25 11:14 回复TA
秀出我的TI MCU方案奖发到这里~~ 
板凳
zhangmangui|  楼主 | 2015-7-21 23:57 | 只看该作者
电机速度采集:
运动控制平台整体系统中设计了速度闭环控制,需要传感器精确检测被控制对象的瞬时信息,进行误差校正。测速装置是运动系统中的重要装置,其速度分辨能力的高低是实现高精度,大范围速度测量的重要因素。对于不同的控制系统,所选择的测速装置以及测速方法也会有所不同,所以应根据实际系统的要求,选择不同的测试方法以满足系统要求。
(1)基于光电编码器电机测速方法的分析
控制理论中基于光电编码器的电机测速方法常见的有以下四种方案:M法、T法、M/T法、变M/T法,下面就此四种方案进行比较和分析其优缺点。
方案一:M法(又叫定时测角法)是在规定的时间间隔T内,测量编码器所产生的脉冲数m1来获得被测速度值。该方法的问题是计时准确计数不准确,所以此方法的检测过程在极端情况下会产生±1个转速脉冲的误差,则相对误差为1/m1,当被测装置转速较高时,m1将会较大,故只有在电机转速较高时才会有较高的测量精度。所以M法只适用于高速测量场合。
方案二:T法(又叫定角测时法)是相邻两个脉冲的时间间隔来确定被测速度的方法。该方法是计数准确计时不准确,此方法在极端会产生±1个高频脉冲周期。因此T法在低速测量(相邻转速脉冲间隔时间较大)时才会有较高的精度。
方案三:M/T法是同时测量检测时间和此检测时间内转速脉冲的个数来确定被测速度。由于转速脉冲的频率远小于高频脉冲的频率,因此如果用转速脉冲信号的上升沿/下降沿来同步计数器的起止,在预定的测速时间内,转速脉冲信号的计数值将为整数(无误差) ,只有高频时钟脉冲会产生士1个周期的误差,因其很小,影响可以忽略,所以M /T法可适用于测量高、低速的场合,且具有较高的测速精度,检测时间不宜过长。虽然M /T法测速可满足一些快速性要求不高的速度伺服控制的要求,它具有宽的调速范围、高精度和高分辨率的特点,但对于快速响应的伺服系统,M /T法在低速运行时,会使检测时间过分加长,这是速度闭环所不能忍受的。M/T具有较高的检测精度,但在低速状态下检测时间过长,无法满足控制系统的快速响应。
方案四:变M/T法是指测速过程中,不仅测取的测速脉冲与高频时钟脉冲随电机的转速不同而变化,而且测量时间T也是变化的。所以变M/T法相比较其它三种测速方法在高速、低速时都具有较高的测量精度,而且响应速度快,在闭环控制系统中具有较高的使用价值。
增量式PID参考代码:
typedef struct PID
{
      int SetPoint;     //设定目标Desired Value
       long SumError;      //误差累计
       double Proportion;  //比例常数
       double Integral;    //积分常数
       double Derivative;  //微分常数
       int LastError;    //Error[-1]
       int PrevError;    //Error[-2]
}PID;
static PID sPID;         //定义PID类型的变量sPID
static PID *sptr=&sPID;  //指针sptr指向sPID
/**************************************************
Initialize PID Structure   PID参数初始化
**************************************************/
void InitPID(void)
{
      sptr->SumError=0;
       sptr->LastError=0;   //Error[-1]
       sptr->PrevError=0;   //Error[-2]
       sptr->Proportion=0;  //比例常数
       sptr->Integral=0;    //积分常数
       sptr->Derivative=0;  //微分常数
       sptr->SetPoint=0;
}
/*************************************************
  增量式PID计算
  ************************************************/
int PIDCalc(int NextPoint)
{
      register int iError,PID_end;       //当前误差
       iError=sptr->SetPoint-NextPoint;   //增量计算
      PID_end=sptr->Proportion * iError - sptr->Integral*sptr->LastError+sptr->Derivative*sptr->PrevError;
                                          //计算E[k]项,E[k-1]项,E[k-2]
       sptr->PrevError=sptr->LastError;
       sptr->LastError=iError;            //存储误差,用于下次计算
       return(PID_end);                   //返回增量值
}

使用特权

评论回复
地板
zhangmangui|  楼主 | 2015-7-21 23:59 | 只看该作者
源代码分享:
sportctr_code.rar (432.86 KB)

开发环境:CCS3.3

使用特权

评论回复
5
zhangmangui|  楼主 | 2015-7-22 00:17 | 只看该作者
本帖最后由 zhangmangui 于 2015-7-22 21:55 编辑

调试测试视频,其中关于曲线的连贯性显示做的不好,最佳驱动频率不能自动测试出来,还需要手动测试,
自动 波特率检测第一次会失败,总之还有很多问题,作为显示版还有很多需要改进的地方。

http://v.youku.com/v_show/id_XMTI5MDM3MDY0NA==.html?from=y1.7-1.2
视频上传     


使用特权

评论回复
6
北斗stone| | 2015-7-22 09:24 | 只看该作者
楼主还在读研吗?

使用特权

评论回复
7
zhangmangui|  楼主 | 2015-7-22 10:51 | 只看该作者
北斗stone 发表于 2015-7-22 09:24
楼主还在读研吗?

在北漂啊

使用特权

评论回复
8
zhangmangui|  楼主 | 2015-7-22 10:53 | 只看该作者
个人爱好 学习c2000

使用特权

评论回复
9
wangch_sh| | 2015-7-22 11:32 | 只看该作者
顶一个。

使用特权

评论回复
10
U201015703| | 2015-7-22 17:06 | 只看该作者
我顶。。。:hug:

使用特权

评论回复
11
憨八龟| | 2015-7-22 17:55 | 只看该作者
好帖子  顶一下咯

使用特权

评论回复
12
zhangmangui|  楼主 | 2015-7-22 21:58 | 只看该作者
视频已上传  感兴趣的请查看

使用特权

评论回复
13
edishen| | 2015-7-22 22:03 | 只看该作者
在哪儿可以看到视频呢

使用特权

评论回复
14
edishen| | 2015-7-22 22:04 | 只看该作者
楼主很用心哦

使用特权

评论回复
15
edishen| | 2015-7-22 22:06 | 只看该作者
edishen 发表于 2015-7-22 22:03
在哪儿可以看到视频呢

不好意思,在5楼有看到

使用特权

评论回复
16
小木欧尼| | 2015-7-22 22:10 | 只看该作者
zhangmangui 发表于 2015-7-22 00:17
调试测试视频,其中关于曲线的连贯性显示做的不好,最佳驱动频率不能自动测试出来,还需要手动测试,
自动  ...

视频还真是VB,现在用的人很少

使用特权

评论回复
17
小木欧尼| | 2015-7-22 22:11 | 只看该作者
楼主很用心,这么好的资料,果断留了

使用特权

评论回复
18
小木欧尼| | 2015-7-22 22:11 | 只看该作者
赞一个

使用特权

评论回复
19
lijiabaobei| | 2015-7-22 22:15 | 只看该作者
edishen 发表于 2015-7-22 22:06
不好意思,在5楼有看到

视频好快哦

使用特权

评论回复
20
lijiabaobei| | 2015-7-22 22:15 | 只看该作者
zhangmangui 发表于 2015-7-22 21:58
视频已上传  感兴趣的请查看

楼主辛苦了,顶一个

使用特权

评论回复
发新帖 本帖赏金 2596.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎进入【TI DSP 论坛】 & 【DSP 技术】           TI忠诚粉丝!

935

主题

26376

帖子

589

粉丝