tag 标签: 精准度

相关博文
  • 热度 11
    2014-11-29 10:11
    1156 次阅读|
    0 个评论
    300瓦以下的小功率马达适合以MCU做为控制方案,在各家MCU硬件规格差异化日渐缩小之下,软件演算设计就显得相形重要,若能掌握MCU控制各种直流马达的软件设计原则,将能大幅提升马达控制的精准度。 运作在300瓦(W)以下的小功率马达被广泛应用于各类应用,例如汽车系统、打印机、复印机、碎纸机、玩具、工厂自动化、测试设备、机器人技术、航空航天与军工等。最流行的小功率马达类型是直流(DC)马达、无刷直流马达(BLDC)和步进马达。马达的产量大致与功率大小成反比,量产的小功率马达数量远远高于大功率马达数量。 专用于马达控制的数字信号处理器(DSP)设计主要在满足大型脱机式马达的需求。脱机马达通常为交流(AC)感应或无刷直流马达,运行在110-480VAC和1/4-100马力(HP)。专用于马达控制的DSP,对于小功率马达控制系统来说,成本太高。 本文提供使用微控制器(MCU)控制各类马达的软件范例。虽然这些范例相对简单,但其针对各类马达提供有效的解决方案。一个传统的马达控制系统通常要求额外特性并具有更高的复杂度。这些软件范例能够做为开发更复杂马达驱动系统的基础。 借助软件演算 DC有刷马达功耗下降 DC马达在小功率马达中是最常见和最便宜的。在本文中,DC马达主要指的是有刷换向永磁直流马达。 DC马达的特性使其成为变速系统中最简单易使用的马达。DC马达的转矩-速度特性如图1所示,DC马达的非负载速度与马达电源电压成线性关系。驱动稳定扭矩负载、线性负载或指数负载的DC马达的电压-速度特性也是连续的、正斜率的和可预测的,因此,在大多数情况下,使用开放回路控制系统是可行的。简单地改变通过马达的电压,任何人都能够控制马达的速度。脉宽调变(PWM)能够用于改变马达供电电压,加载到马达的平均电压与PWM工作周期比成正比例关系(这里忽略马达电感和不连续运行导致的次要影响)。 图1 DC马达特性 这里提供一个以MCU控制DC马达的简单例子。在这个范例中,使用模拟数字转换器(ADC)读取电位器的位置信息,并使用PCA 8位PWM模式输出对应的PWM信号(图2)。 图2 DC马达驱动电路 单个N通道功率金属氧化物半导体场效晶体管(MOSFET)Q1用于驱动DC马达。功率MOSFET应当根据特定的马达电压和电流需求进行选择。飞轮二极管的D1跨接到DC马达。当MOSFET关闭时,电流通过马达自感继续流动,MOSFET漏极电压将上升到超过马达电源电压的一个二极管压降,然后,电流经由飞轮二极管继续流动。 大多数低压马达驱动电路利用萧特基功率整流器实现飞轮二极管,萧特基整流器具有较低的正向电压和极短的反向恢复时间。这两者在马达驱动应用中都是非常重要的参数因子。 功率MOSFET由反向闸极驱动器驱动。F300的端口引脚默认配置为输入引脚,并且启用弱的100k上拉电阻。在端口被配置而且交叉开关器和周边启用之前,端口引脚一直保持高电平。当复位接脚保持低电平时,端口接脚也会被配置为弱上拉启用的输入接脚。透过使用反向驱动器,功率晶体管在预设状态下处于关闭状态。如果使用非反相器驱动,10k下拉电阻应当端口引脚和接地。 为使用3伏特(V)微控制器,闸极驱动器应当具有3V相容的输入电平临界值。如果马达电压在5-15V之间,闸极驱动器能够直接切断马达电源电压。如果马达电压超过15V,分开的闸极驱动器电源电压是需要的,通常为5V或者12V。当采用低于10V的闸极驱动器电源电压时,应当使用逻辑电平功率MOSFET。 软件实现非常简单。main()函数初始化频率、端口和周边,然后进入while(1)回路。在while(1)中使用avgADC()函数读取电位器电压值,然后输出这个值到8位PWM。 PORT_Init()函数配置端口输入/输出(I/O)、周边、?用数位交叉开关器。在这里,为8位PWM?用端口引脚,为闸极驱动器?用推挽式输出引脚。 系统频率SYSCLK被配置运行在24.5MHz最大速率,这允许8位PWM可配置为160奈秒(ns)频率周期和24kHz频率。 ADC0_Init()函数配置ADC为查询模式。ADC增益设定为1,并且为ADC频率选择1MHz保守频率。重要的是,这里也要初始化电压参考,配置ADC使用VDD满量程。 函数readADC()采用查询模式读取电压值一次,并返回ADC值。函数avgADC()调用readADC()函数,并且返回六十四个采样值的平均值。平均化ADC读数可以最小化噪声影响,减少PWM输出抖动。 当使用PCA 8位PWM模式时,在CEX0输出0x00值对应到100%的工作周期比;输出0xFF值对应到0.39%的工作周期比,0%的工作周期比可以透过清除PCA0CPM0 SFR中的ECOM0位来实现。 当使用反向驱动器时,这种关系是相反的。在MOSFET闸极驱动器上,0x00值对应到0%的工作周期比,0xFF值对应到99.6%的工作周期比为了简单起见,本文中所有使用8位PWM的软件范例都仅限于使用99.6%PWM。 在一些情况下,100%的工作周期比是可取的,100%工作周期比将有效的消除开关损耗。由于MOSFET从不会关闭,因此在MOSFET上没有开关损耗,在二极管上也没有损失,唯一的功率损耗是功率MOSFET中的传导损耗。如果马达预计在大部分时间里都处于全速运作,100%的最大工作周期比是合理的。100%的工作周期比,可以经由清除PCA0CPM0 SFR中的ECOM0位来实现。 MCU软件襄助 永磁DC马达更适于反转应用 永磁DC马达通常被用于须要反转马达方向的应用中。为了反转旋转方向,须要反转马达上电压的极性。这须要使用H桥电路(图3),H桥电路有四个晶体管。当在正方向驱动马达时,Q4打开,PWM信号应用于晶体管Q1。在反方向上驱动马达,Q3打开,PWM信号应用于晶体管Q2。在这个范例中,下部的晶体管被用于PWM速度控制;上部的晶体管被用于转向,使用这种拓扑结构,可以在两个方向上提供变速控制。 图3 DC马达全桥电路 在图3中,N通道功率MOSFET被用于低压侧晶体管,P通道功率MOSFET被用于高压侧晶体管。对于驱动20V以下的DC马达来说,利用互补功率MOSFET是非常符合成本效益的。如图3所示,低压侧闸极驱动器带有反相器;而高压侧闸极驱动器没有反相器。闸极驱动器极性被选择,以确保当端口引脚在弱上拉?动的重置配置模式下,功率晶体管处于关闭状态。 该范例软件建构在基本范例代码上。主回路现在包括一个if语句检查反转开关SW1的状态。当反转按键被按下,PWM停止运作,同时所有P0输出也同样被禁止。当按键释放后,马达将反转方向。范例软件中的初始化函数类似于DC有刷马达控制,只是除了增加额外的推挽式输出引脚配置之外。 调用reverse()函数反转马达方向。标志位Fwd用于保存马达状态,Fwd位被切换用于判断哪些输出须要启动。 反转马达还存在一个潜在的问题。当反转开关SW1被按下时,马达可能由于马达惯性而继续旋转一段时间。当马达正在转动时,它将产生与马达速度成比例关系的反向电动势;如果马达停止旋转之前反向按键被释放,马达反向电动势将透过上部晶体管而短路,如下所述。 参考图4,假设开始时Q4处于打开状态,马达正在正方向上旋转;假设马达正在运行,并且反向电动势大约为6V。现在反转开关被按下,所有四个晶体管被关闭,马达右侧将比左侧高约6V;然后开关释放,打开Q3,马达左侧被上拉到电源电压,马达的反向电动势必透过Q4的内部二极管而短路。 图4 DC马达反转危害 最终的结果是,马达停止,在马达机械惯性中储存的所有能量被注入Q4。反转过程中很容易损坏上部晶体管,在一些具有较大摩擦力负载的应用中,一个固定延迟时间可以确保马达有足够时间停止。而在其他应用中,马达可能须要花费几秒钟才完全停止,这个问题的通用解决方案,如图4所示。 软件防护法助力 DC马达反转控制更安全 这个用于DC马达的软件范例基于第二个范例,提供软件防护方法。为了安全的反转DC马达,我们须要判断马达是否还处于运转中。 确定马达是否仍然处于旋转状态的简单而有效方法,是测量跨接在马达端子上的电压差。ADC能够被配置,去测量模拟多路选择器中的任意两个输入引脚上的差动电压。可程序设计的窗口检测器也可以用于判断差动电压是否属于默认极限。在这个范例软件中,如果差动马达电压在100毫秒(ms)内保持在满量程的3%以下,那么马达即开始反转。具备电压感应功能的DC马达驱动的硬件实现,类似于在马达端子上分别添加两个电阻分压器(图5)。 图5 带有电压感应能力的DC马达驱动 主回路已经被改进用来检测马达是否停止。detectStop()函数首先配置ADC去测量差动电压,ADC和窗口检测器都适用于查询模式。如果ADC值在默认窗口范围内,那么计数器增加。使用实现10ms延迟的定时器T0设置采样时间,任何在窗口之外的采样值将重置定时器,退出while回路之前,它将使用十个连续的采样值;返回到主回路之前,detectStop()函数将重新配置ADC去测量速度电位器。 凭借软件算法 无刷直流马达变速控制性能大增 无刷直流马达提供一些传统有刷换向DC马达所没有的优点。电子和传感器有效的替代电刷角色,提供更长的寿命,减少维护操作,并且没有电刷噪声。正确整流的无刷直流马达的扭矩-速度特性完全相同于如图1所示的DC马达,因此,无刷直流马达展现出与DC马达相同的满足需求的质量,非常适用于变速控制。这个范例为使用霍尔效应传感器控制马达换向的无刷直流马达,提供简单的开放回路控制,无刷直流马达的速度使用简单的电位器控制。在这种方式下的无刷直流马达控制的特点,类似于经典DC马达控制范例。 这个范例的硬件实现如图6所示。马达由六个功率晶体管驱动,构成三相桥式结构。下部的晶体管Q1-3是N通道功率MOSFET;上部的三个晶体管是P通道功率MOSFET。这样就简化闸极驱动器管理,此外,互补闸极驱动器的使用使得在预设状态下,功率晶体管处于关闭状态。 图6 无刷DC马达驱动 霍尔效应传感器有开集电极输出,需要上拉电阻。检查马达规格确保霍尔效应传感器是适合配置的,开集电极输出通常是3V兼容的,然而,霍尔效应传感器也需要一个偏置电源,通常须要超过3V。在大多数系统中,霍尔效应传感器能够关闭马达电源电压,或者闸极驱动器电源电压。 使用断点调变软件可能会将马达和MOSFET置于不良状态。当MCU遇到一个断点时,引脚被及时的有效冻结,而且可以留下PWM输出处于启动状态。这里推荐的流程是在进行单步调变或者使用断点之前,一直断开马达电源连接。BLDC马达在跨越绕组时,将会满电压失速。BLDC马达失速电流仅仅与绕组的内阻相关,这很可能损坏功率MOSFET。 PORT_Init()函数对交叉开关器和输出引脚分配进行设置。额外的控制引脚为3-相控制而设置为推挽式输出,为读取霍尔传感器而设置为输入。 可程序设计计数器数组时基采用160ns,启动计数器。然而,模块0模式SFR没有初始化为8位PWM。在霍尔效应位置被确定之前,没有马达驱动被?用。 main()函数首先初始化相关资源,设置start标志位。主回路首先使用hallPosition()函数检测霍尔效应传感器的位置。如果start标志位被设置或者霍尔位置已经改变,马达透过调用commutate()函数进行换向。接下来,速度输入被读取,速度设置被写入PWM输出。 hallPosition()函数在错误状态时返回0,这发生在霍尔效应输入全为高或全为低时。如果错误发生,主回路经过调用coast()函数使所有输出无效;起始位也在错误条件发生时置位,而迫使换向发生在下一个合法的霍尔位置读数时。 readHalls()函数在霍尔效应输入端口引脚上读取,并且去除霍尔效应编码抖动,该函数等待三个连续的相同读数。当霍尔编码正在改变时,这种方式降低错误读数的可能性。 hallPosition()首先透过上面描述的readHalls()函数读取霍尔效应编码。霍尔编码模式被储存在常量数组hallPattern[]中。为了匹配霍尔效应编码,一个带有后递减的单行for回路被用于寻找对应的索引。hallPosition()函数如果发现一个匹配的模式,则返回1-6中的一个值;如果没有发现匹配,hallPosition()函数返回0值。 commutate()函数用来在启动时初始化输出,当霍尔位置改变时改变输出状态,并且在检测到霍尔错误后重新启动马达。commutate()函数首先禁止PWM和上部的晶体管,然后,它才使用从hallPosition()函数中获得的索引。 对于霍尔效应模式或者整流模式来说,没有统一的标准。请参阅你所使用之特定马达制造商所提供的数据手册,依据制造商的资料手册仔细查核两种模式。同时,也请检查霍尔效应模式和整流模式之间的通信,必要时请改变两种模式之间的位移。
  • 热度 17
    2014-11-25 23:06
    1375 次阅读|
    0 个评论
    300瓦以下的小功率马达适合以MCU做为控制方案,在各家MCU硬件规格差异化日渐缩小之下,软件演算设计就显得相形重要,若能掌握MCU控制各种直流马达的软件设计原则,将能大幅提升马达控制的精准度。 运作在300瓦(W)以下的小功率马达被广泛应用于各类应用,例如汽车系统、打印机、复印机、碎纸机、玩具、工厂自动化、测试设备、机器人技术、航空航天与军工等。最流行的小功率马达类型是直流(DC)马达、无刷直流马达(BLDC)和步进马达。马达的产量大致与功率大小成反比,量产的小功率马达数量远远高于大功率马达数量。 专用于马达控制的数字信号处理器(DSP)设计主要在满足大型脱机式马达的需求。脱机马达通常为交流(AC)感应或无刷直流马达,运行在110-480VAC和1/4-100马力(HP)。专用于马达控制的DSP,对于小功率马达控制系统来说,成本太高。 本文提供使用微控制器(MCU)控制各类马达的软件范例。虽然这些范例相对简单,但其针对各类马达提供有效的解决方案。一个传统的马达控制系统通常要求额外特性并具有更高的复杂度。这些软件范例能够做为开发更复杂马达驱动系统的基础。 借助软件演算 DC有刷马达功耗下降 DC马达在小功率马达中是最常见和最便宜的。在本文中,DC马达主要指的是有刷换向永磁直流马达。 DC马达的特性使其成为变速系统中最简单易使用的马达。DC马达的转矩-速度特性如图1所示,DC马达的非负载速度与马达电源电压成线性关系。驱动稳定扭矩负载、线性负载或指数负载的DC马达的电压-速度特性也是连续的、正斜率的和可预测的,因此,在大多数情况下,使用开放回路控制系统是可行的。简单地改变通过马达的电压,任何人都能够控制马达的速度。脉宽调变(PWM)能够用于改变马达供电电压,加载到马达的平均电压与PWM工作周期比成正比例关系(这里忽略马达电感和不连续运行导致的次要影响)。 图1 DC马达特性 这里提供一个以MCU控制DC马达的简单例子。在这个范例中,使用模拟数字转换器(ADC)读取电位器的位置信息,并使用PCA 8位PWM模式输出对应的PWM信号(图2)。 图2 DC马达驱动电路 单个N通道功率金属氧化物半导体场效晶体管(MOSFET)Q1用于驱动DC马达。功率MOSFET应当根据特定的马达电压和电流需求进行选择。飞轮二极管的D1跨接到DC马达。当MOSFET关闭时,电流通过马达自感继续流动,MOSFET漏极电压将上升到超过马达电源电压的一个二极管压降,然后,电流经由飞轮二极管继续流动。 大多数低压马达驱动电路利用萧特基功率整流器实现飞轮二极管,萧特基整流器具有较低的正向电压和极短的反向恢复时间。这两者在马达驱动应用中都是非常重要的参数因子。 功率MOSFET由反向闸极驱动器驱动。F300的端口引脚默认配置为输入引脚,并且启用弱的100k上拉电阻。在端口被配置而且交叉开关器和周边启用之前,端口引脚一直保持高电平。当复位接脚保持低电平时,端口接脚也会被配置为弱上拉启用的输入接脚。透过使用反向驱动器,功率晶体管在预设状态下处于关闭状态。如果使用非反相器驱动,10k下拉电阻应当端口引脚和接地。 为使用3伏特(V)微控制器,闸极驱动器应当具有3V相容的输入电平临界值。如果马达电压在5-15V之间,闸极驱动器能够直接切断马达电源电压。如果马达电压超过15V,分开的闸极驱动器电源电压是需要的,通常为5V或者12V。当采用低于10V的闸极驱动器电源电压时,应当使用逻辑电平功率MOSFET。 软件实现非常简单。main()函数初始化频率、端口和周边,然后进入while(1)回路。在while(1)中使用avgADC()函数读取电位器电压值,然后输出这个值到8位PWM。 PORT_Init()函数配置端口输入/输出(I/O)、周边、?用数位交叉开关器。在这里,为8位PWM?用端口引脚,为闸极驱动器?用推挽式输出引脚。 系统频率SYSCLK被配置运行在24.5MHz最大速率,这允许8位PWM可配置为160奈秒(ns)频率周期和24kHz频率。 ADC0_Init()函数配置ADC为查询模式。ADC增益设定为1,并且为ADC频率选择1MHz保守频率。重要的是,这里也要初始化电压参考,配置ADC使用VDD满量程。 函数readADC()采用查询模式读取电压值一次,并返回ADC值。函数avgADC()调用readADC()函数,并且返回六十四个采样值的平均值。平均化ADC读数可以最小化噪声影响,减少PWM输出抖动。 当使用PCA 8位PWM模式时,在CEX0输出0x00值对应到100%的工作周期比;输出0xFF值对应到0.39%的工作周期比,0%的工作周期比可以透过清除PCA0CPM0 SFR中的ECOM0位来实现。 当使用反向驱动器时,这种关系是相反的。在MOSFET闸极驱动器上,0x00值对应到0%的工作周期比,0xFF值对应到99.6%的工作周期比为了简单起见,本文中所有使用8位PWM的软件范例都仅限于使用99.6%PWM。 在一些情况下,100%的工作周期比是可取的,100%工作周期比将有效的消除开关损耗。由于MOSFET从不会关闭,因此在MOSFET上没有开关损耗,在二极管上也没有损失,唯一的功率损耗是功率MOSFET中的传导损耗。如果马达预计在大部分时间里都处于全速运作,100%的最大工作周期比是合理的。100%的工作周期比,可以经由清除PCA0CPM0 SFR中的ECOM0位来实现。 MCU软件襄助 永磁DC马达更适于反转应用 永磁DC马达通常被用于须要反转马达方向的应用中。为了反转旋转方向,须要反转马达上电压的极性。这须要使用H桥电路(图3),H桥电路有四个晶体管。当在正方向驱动马达时,Q4打开,PWM信号应用于晶体管Q1。在反方向上驱动马达,Q3打开,PWM信号应用于晶体管Q2。在这个范例中,下部的晶体管被用于PWM速度控制;上部的晶体管被用于转向,使用这种拓扑结构,可以在两个方向上提供变速控制。 图3 DC马达全桥电路 在图3中,N通道功率MOSFET被用于低压侧晶体管,P通道功率MOSFET被用于高压侧晶体管。对于驱动20V以下的DC马达来说,利用互补功率MOSFET是非常符合成本效益的。如图3所示,低压侧闸极驱动器带有反相器;而高压侧闸极驱动器没有反相器。闸极驱动器极性被选择,以确保当端口引脚在弱上拉?动的重置配置模式下,功率晶体管处于关闭状态。 该范例软件建构在基本范例代码上。主回路现在包括一个if语句检查反转开关SW1的状态。当反转按键被按下,PWM停止运作,同时所有P0输出也同样被禁止。当按键释放后,马达将反转方向。范例软件中的初始化函数类似于DC有刷马达控制,只是除了增加额外的推挽式输出引脚配置之外。 调用reverse()函数反转马达方向。标志位Fwd用于保存马达状态,Fwd位被切换用于判断哪些输出须要启动。 反转马达还存在一个潜在的问题。当反转开关SW1被按下时,马达可能由于马达惯性而继续旋转一段时间。当马达正在转动时,它将产生与马达速度成比例关系的反向电动势;如果马达停止旋转之前反向按键被释放,马达反向电动势将透过上部晶体管而短路,如下所述。 参考图4,假设开始时Q4处于打开状态,马达正在正方向上旋转;假设马达正在运行,并且反向电动势大约为6V。现在反转开关被按下,所有四个晶体管被关闭,马达右侧将比左侧高约6V;然后开关释放,打开Q3,马达左侧被上拉到电源电压,马达的反向电动势必透过Q4的内部二极管而短路。 图4 DC马达反转危害 最终的结果是,马达停止,在马达机械惯性中储存的所有能量被注入Q4。反转过程中很容易损坏上部晶体管,在一些具有较大摩擦力负载的应用中,一个固定延迟时间可以确保马达有足够时间停止。而在其他应用中,马达可能须要花费几秒钟才完全停止,这个问题的通用解决方案,如图4所示。 软件防护法助力 DC马达反转控制更安全 这个用于DC马达的软件范例基于第二个范例,提供软件防护方法。为了安全的反转DC马达,我们须要判断马达是否还处于运转中。 确定马达是否仍然处于旋转状态的简单而有效方法,是测量跨接在马达端子上的电压差。ADC能够被配置,去测量模拟多路选择器中的任意两个输入引脚上的差动电压。可程序设计的窗口检测器也可以用于判断差动电压是否属于默认极限。在这个范例软件中,如果差动马达电压在100毫秒(ms)内保持在满量程的3%以下,那么马达即开始反转。具备电压感应功能的DC马达驱动的硬件实现,类似于在马达端子上分别添加两个电阻分压器(图5)。 图5 带有电压感应能力的DC马达驱动 主回路已经被改进用来检测马达是否停止。detectStop()函数首先配置ADC去测量差动电压,ADC和窗口检测器都适用于查询模式。如果ADC值在默认窗口范围内,那么计数器增加。使用实现10ms延迟的定时器T0设置采样时间,任何在窗口之外的采样值将重置定时器,退出while回路之前,它将使用十个连续的采样值;返回到主回路之前,detectStop()函数将重新配置ADC去测量速度电位器。 凭借软件算法 无刷直流马达变速控制性能大增 无刷直流马达提供一些传统有刷换向DC马达所没有的优点。电子和传感器有效的替代电刷角色,提供更长的寿命,减少维护操作,并且没有电刷噪声。正确整流的无刷直流马达的扭矩-速度特性完全相同于如图1所示的DC马达,因此,无刷直流马达展现出与DC马达相同的满足需求的质量,非常适用于变速控制。这个范例为使用霍尔效应传感器控制马达换向的无刷直流马达,提供简单的开放回路控制,无刷直流马达的速度使用简单的电位器控制。在这种方式下的无刷直流马达控制的特点,类似于经典DC马达控制范例。 这个范例的硬件实现如图6所示。马达由六个功率晶体管驱动,构成三相桥式结构。下部的晶体管Q1-3是N通道功率MOSFET;上部的三个晶体管是P通道功率MOSFET。这样就简化闸极驱动器管理,此外,互补闸极驱动器的使用使得在预设状态下,功率晶体管处于关闭状态。 图6 无刷DC马达驱动 霍尔效应传感器有开集电极输出,需要上拉电阻。检查马达规格确保霍尔效应传感器是适合配置的,开集电极输出通常是3V兼容的,然而,霍尔效应传感器也需要一个偏置电源,通常须要超过3V。在大多数系统中,霍尔效应传感器能够关闭马达电源电压,或者闸极驱动器电源电压。 使用断点调变软件可能会将马达和MOSFET置于不良状态。当MCU遇到一个断点时,引脚被及时的有效冻结,而且可以留下PWM输出处于启动状态。这里推荐的流程是在进行单步调变或者使用断点之前,一直断开马达电源连接。BLDC马达在跨越绕组时,将会满电压失速。BLDC马达失速电流仅仅与绕组的内阻相关,这很可能损坏功率MOSFET。 PORT_Init()函数对交叉开关器和输出引脚分配进行设置。额外的控制引脚为3-相控制而设置为推挽式输出,为读取霍尔传感器而设置为输入。 可程序设计计数器数组时基采用160ns,启动计数器。然而,模块0模式SFR没有初始化为8位PWM。在霍尔效应位置被确定之前,没有马达驱动被?用。 main()函数首先初始化相关资源,设置start标志位。主回路首先使用hallPosition()函数检测霍尔效应传感器的位置。如果start标志位被设置或者霍尔位置已经改变,马达透过调用commutate()函数进行换向。接下来,速度输入被读取,速度设置被写入PWM输出。 hallPosition()函数在错误状态时返回0,这发生在霍尔效应输入全为高或全为低时。如果错误发生,主回路经过调用coast()函数使所有输出无效;起始位也在错误条件发生时置位,而迫使换向发生在下一个合法的霍尔位置读数时。 readHalls()函数在霍尔效应输入端口引脚上读取,并且去除霍尔效应编码抖动,该函数等待三个连续的相同读数。当霍尔编码正在改变时,这种方式降低错误读数的可能性。 hallPosition()首先透过上面描述的readHalls()函数读取霍尔效应编码。霍尔编码模式被储存在常量数组hallPattern[]中。为了匹配霍尔效应编码,一个带有后递减的单行for回路被用于寻找对应的索引。hallPosition()函数如果发现一个匹配的模式,则返回1-6中的一个值;如果没有发现匹配,hallPosition()函数返回0值。 commutate()函数用来在启动时初始化输出,当霍尔位置改变时改变输出状态,并且在检测到霍尔错误后重新启动马达。commutate()函数首先禁止PWM和上部的晶体管,然后,它才使用从hallPosition()函数中获得的索引。 对于霍尔效应模式或者整流模式来说,没有统一的标准。请参阅你所使用之特定马达制造商所提供的数据手册,依据制造商的资料手册仔细查核两种模式。同时,也请检查霍尔效应模式和整流模式之间的通信,必要时请改变两种模式之间的位移。
  • 热度 18
    2012-4-12 17:27
    1443 次阅读|
    0 个评论
    作者: Pete Semig 和 Collin Wells , 德州仪器 (TI) 本系列文章将介绍电流检测相关内容,阅读之后,您会牢固掌握电流检测的许多基础知识,了解电流检测所使用的一些器件,知道如何计算某种解决方案的精确度以及印制电路板 (PCB) 布局和问题检修的一些指导原则。本文将为您详细介绍影响某种解决方案精确度的一些规范。这些规范包括输入补偿电压 (Vos)、共模抑制比 (CMRR) 和电源抑制比 (PSRR)。   精确度 分流器测量的系统精确度会受到许多误差源的影响,其中一些如表1 所示。方程式1 表明了极端系统精确度情况。 其中,Sworst-case (%) 为每个误差源的误差贡献度。但是,一种更为实际的系统精确度计算方法是,将无关联误差写成一个和的平方根 (RSS),如方程式2 所示。   由于表1 所列大部分误差均为输入参考 (RTI),因此我们最好是就输入方面来对精确度进行讨论。参考器件输入的误差乘以器件增益,得到其对输出的影响程度。   输入补偿电压 输入补偿电压一般为影响某种解决方案精确度的最大因素。它的定义是“一个必须施加于输入端之间以强制静态DC 输出电压为零或者其他规定电平的DC 电压”。 放大器的理想Vos 为0V。但是,工艺差异和器件设计限制等原因,会导致Vos 不为零。   所有输入参考误差均根据理想分流器电压计算得到。理想分流器电压应为负载电流和理想电阻器值的乘积。系统中,标称负载电流为5A,理想关联电阻器值为1mΩ,则器件Vos 规范的误差贡献程度计算方法如方程式3 所示。假设我们决定使用INA170,其最大Vos 规范为1mV。 要想减小这种误差,我们有两种方法:增加Rshunt 电阻,或者降低Vos (max)。增加Rshunt 电阻方法是否可行,取决于成本、电路板空间或者功耗情况。另外,我们也可以尝试找到一种具有更低Vos 的替代器件。   最后,需要注意的是,负载电流与误差成反比关系。在我们的例子中,标称负载电流为5A 时,计算得20%。如果系统负载电流减少,则Vos 规范产生的有效误差增加。因此,设计人员应在最小负载电流下计算极端误差。   共模抑制比 在介绍CMRR 以前,我们需要重新复习一下输入共模电压知识。本系列文章的第一篇便对此进行了讨论,放大器的输入共模电压为两个输入端的共用平均电压。尽管这样说确实没有错,但最好还是将分流器电压同共模电压区分开来。通过定义Vid(差动输入电压),可以达到这个目标。在电流检测应用中,它还可以被看作是分流器电压。图1显示了输入共模电压的另一种定义,其使用了差动输入电压。图1还再次提出了差模增益 (Adm) 的概念。差动放大器的理想输出为差动输入电压和差模增益的乘积。   图1共模电压另一种定义 CMRR 可影响电流检测解决方案的精确度。它是器件共模信号抑制能力的度量标准。这很重要,因为共模信号会以差动信号的形式出现在器件中,从而降低解决方案的精确度。   CMRR 通常在产品产品说明书中以线性刻度 (µV/V) 或者对数刻度 (dB) 单位表明。如果单位是dB,则极端值为最小值。如果单位为µV/V,则极端值为最大值。   要想计算器件CMRR 规范产生的误差,我们需要:产品说明书列出的极端CMRR规范、产品说明书规范表的共模电压测试条件(Vcm-pds)以及系统的共模电压(Vcm-sys)。   例如,假设系统共模电压为50V (Vcm-sys),并且分流器电压标称为5mV。我们使用INA170 计算误差,其极端CMRR 规范为100dB (min),Vcm-pds=12V。   由于规范单位为dB,我们需要将其转换为线性刻度,如方程式4 所示。   现在,我们来计算误差,如方程式5 所示。   想要降低CMRR 带来的误差贡献值,我们有两种方法:增加分流器电压,或者选择一个拥有更好CMRR 性能的器件。改变Vcm-sys 通常并非为一种可行的方法,因为具体应用决定了它的大小。   这样处理CMRR 的目的是,让读者能够迅速和有效地理解其如何影响测量的精确度 。   电源抑制比 PSRR 是电源电压变化引起Vos 变化程度的一种测量方法。PSRR 所产生误差的计算方法与CMRR 类似。   要想计算器件PSRR 规范所产生的误差,我们需要:产品说明书的极端PSRR规范、产品说明书规范表的电源电压测试条件 (Vs-pds) 以及在系统中为器件供电的电源电压 (Vs-sys)。   例如,INA170 的极端PSRR 规范为10µV/V(最大),且Vs-pds=5V。如果器件实际电源电压为30V (Vs-sys),则PSRR所产生的误差可以利用方程式6 计算得到。就前面的几个例子而言,我们假设分流器电压为5mV。     要想降低PSRR 带来的误差贡献值,我们有两种方法可以使用:增加分流器电压,或者选择一个PSRR 性能更高的器件。改变Vcm-sys 通常并非为一种可行的方法,因为具体应用决定了它的大小。   本例中,PSRR 单位已经指定为µV/V。如果该值单位指定为dB,则在使用方程式6 以前必须将其转换为线性刻度。   其他误差 一些规范,例如:增益误差和分流电阻器容差等,通常会以百分比的形式出现。这使得精确度计算更加简单。   表1 还列出了Vos 漂移和变化。输入补偿电压漂移可测量温度变化带来的Vos 变化。这种规范一般为:   但是,输入补偿电压变化则并不那么简单。输入补偿电压变化测量的是时间变化带来的Vos 变化情况。我们通常可以在产品说明书中看到这种规范,并且其仅为估计值。准确估计这种变化的一种方法是,知道10 年内器件Vos 的变化,不会大于器件的最大Vos 规范。这种变化是器件初始Vos 规范之外的变化。   综合计算 如前所述,综合误差的各个方面,便可知道系统的总体精度。只需将每一项相加,便得到极端误差,而以RSS 方式将它们结合起来就得到一个更加准确的结果。   就本文所列举的Vos、CMRR 和PSRR 例子而言,极端精确度为67.4%,如方程式7 所示。 使用RSS 方式综合各个误差,得到更准确的精确度为78.03%,如方程式8 所示。     总结 本文介绍了电流检测精确度概念,它与Vos、CMRR 和PSRR 等规范有关。文中所举例子,说明了在某个具体应用中如何计算这些规范所产生的误差。另外,我们还简单介绍了如增益误差、分流器容差和Vos 漂移与变化等其他误差。本系列文章的最后一篇将讨论电流检测PCB 布局和问题检修指导原则。   参考文献 1、《如何理解运算放大器的各种规范》,作者:Karki,刊发于1998 年 TI《白皮书:SLOA011》 2、《运算放大器:设计与应用》,作者:Tobey, Graeme, Huelsman,刊发于1971年《McGraw-Hill》 3、《运算放大器与模拟集成电路设计》,作者Franco,刊发于2001年《McGraw-Hill》第3 版。  4、《简单运算放大器:基础到实际应用》,作者:Frederiksen,刊发于1988年《McGraw-Hill》修订版。 如欲了解电流检测应用的更多详情,敬请访问 TI E2E 社区高精度放大器论坛: www.ti.com/e2e-ca   作者简介 Peter Semig 现任 TI 高精度线性产品部应用工程师,主要负责差动放大器、仪表放大器和分流监视器的技术支持。 Peter 毕业于密歇根州立大学 (东兰辛) ( Michigan State University, East Lansing, Michigan) ,获电子工程理学士学位和硕士学位。如果您对本文有疑问,请发送电子邮件至 ti_petersemig@list.ti.com 。   Collin Wells 现任 TI 高精度线性产品部应用工程师,主要负责工业产品和应用的技术支持。 Collin 毕业美国得克萨斯大学达拉斯分校 (University of Texas, Dallas, Texas) ,获电子工程理学士学位。