如何使用NSD8381的堵转检测功能

原创 AutoFAE进阶之路 2025-03-23 12:29

目录:

  • 1.前言
  • 2.原理介绍
  • 3.功能实现
    • 3.1 相关寄存器介绍
    • 3.2 堵转配置流程
  • 4.测试情况
    • 4.1 堵转后不关闭PWM波
    • 4.2 堵转后关闭PWM波
    • 4.3 其他影响因素


1.前言

  • 基于S32K144驱动NSD8381

上篇文章(如上链接)介绍了如何基于S32K144驱动NSD8381,当时因为篇幅原因,没有介绍NSD8381的堵转检测功能。本文借助freemaster,让读者更方便地理解NSD8381的堵转检测功能。

2.原理介绍

纳芯微官网的步进电机驱动NSD8381调试指南[1]有介绍NSD8381的堵转检测功能,相关内容摘录如下:

堵转检测原理

上图左边是步进电机绕组的等效模型。当电机正常转动的时候,根据上图右边的公式可以得到电机绕组两侧的电压Vmotor。根据公式可得到电机的反电势BEMF,其中N为线圈的绕组数量,B代表磁场强度,A是被电机磁场所包围的面积,w是电机转动的角速度。

由公式可知,当流过电机的电流为零时,电机绕组两侧的电压是BEMF,即反电势电压。由公式可知,反电势电压和电机的角速度成正比,当电机堵转的时候,速度接近于零,此时反电势也接近于零。因此,可以利用检测绕组电流为零时的绕组电压来检测反电势。


补充说明:

如下图所示,以1/8微步为例,在一个正弦波周期内,A、B线圈分别有两次过零step。

1/8微步示例
1/8微步示例(NSD8381数据手册)

3.功能实现

3.1 相关寄存器介绍

堵转相关寄存器
堵转相关寄存器

上图标注都是和堵转检测相关的寄存器,说明如下:

  • CV_EN,用于开启NSD8381在四个过零step进行反电动势测量
  • PWM_FREQ_SEL[1:0] 和 CV_DELAY[4:0] ,前者配置调节电流的PWM的频率,后者设置在过零step之后多长时间进行采样。

PWM_FREQ_SEL[1:0] 使用默认值0x00,即使用20K的PWM调制频率,周期为50us;CV_DELAY[4:0]配置为7,那么NSD8381在过零step之后350us处采集反电动势。

  • CV_STALL_NUM[2:0] ,当采集的反电动势值连续不在[CVLLA; CVUL]的次数达到CV_STALL_NUM。就会将STA_1寄存器的STALL bit置1。
  • CV_REG_IND[1:0] ,用来指示上一次过零step的位置,从而去对应的CV寄存器读取电动势值。
  • STALL_HOLD_EN,用来设置检测堵住之后是否切换到HOLD模式。
  • CVA[9:0] 、CVB[9:0] 、CVC[9:0] 、CVD[9:0] ,用于保存读取的反电动势值。

以读取CVA[9:0]为例,计算公式为 

  • CVUL[9:0], 反电动势值比较的上限值。
  • CVLLB[9:0],反电动势值比较的下限警告值。
  • CVLLA[9:0],反电动势值比较的下限值。

3.2 堵转配置流程

摘录纳芯微官网介绍的堵转配置流程图如下:

NSD8381堵转配置


下面基于这套流程图进行介绍。

3.2.1 电机正常运行及数据测量

  1. 基于上篇文章的配置,让电机正常运行,测得的波形如下图,其中CH1为OUTA1引脚电压,CH2为OUTA2引脚电压,CH3为OUTA引脚电流。
正常运行时A线圈电压电流波形
正常运行时A线圈电压电流波形
  1. 放大电流过零点处的波形,发现在过零step后350us处采集反电动势电压是比较稳定,在0.2V左右。电流过零step处电压波形

3.2.2 软件配置相关寄存器

  1. 在NSD8381初始化代码中增加对CONFIG_5寄存器的配置,如下图红框所示。
CONFIG_5寄存器配置
CONFIG_5寄存器配置
  1. 在主循环中增加对CVA、CVB、CVC、CVD的读取,并基于CONFIG_5寄存器中的CV_REG_IND[1:0]判断当前反电动势的取值使用CVA、CVB、CVC、CVD的哪一个,实现这部分功能的代码如下。
Phase_Count = NSD8381drv_GetPH();

if(Phase_Count == 0)
{
    Coil_Volt_A = NSD8381drv_ReadcoilBEMF(MCVA);
    printf("voltage of coil A  is %d\r\n", Coil_Volt_A);
    Coil_Volt_B = NSD8381drv_ReadcoilBEMF(MCVB);
    printf("voltage of coil B  is %d\r\n", Coil_Volt_B);
    Coil_Volt_C = NSD8381drv_ReadcoilBEMF(MCVC);
    printf("voltage of coil C  is %d\r\n", Coil_Volt_C);
    Coil_Volt_D = NSD8381drv_ReadcoilBEMF(MCVD);
    printf("voltage of coil D  is %d\r\n", Coil_Volt_D);
    /* Last coil BEMF voltage conversion store register
     * 00:CVA
     * 01:CVB
     * 10:CVC
     * 11:CVD
     * */

    if(NSD8381_ReadCVLUR() == 0x00)
    {
        Latest_Coil_Volt = Coil_Volt_A;
        printf("Latest voltage of coil is CVA:%d\r\n", Latest_Coil_Volt);
        Float_Coil_volt = ((float)Latest_Coil_Volt/1023)*28;
        printf("latest real voltage of coil is:%f V\r\n", Float_Coil_volt);
    }

}
elseif(Phase_Count == 16)
{
    Coil_Volt_A = NSD8381drv_ReadcoilBEMF(MCVA);
    printf("voltage of coil A  is %d\r\n", Coil_Volt_A);
    Coil_Volt_B = NSD8381drv_ReadcoilBEMF(MCVB);
    printf("voltage of coil B  is %d\r\n", Coil_Volt_B);
    Coil_Volt_C = NSD8381drv_ReadcoilBEMF(MCVC);
    printf("voltage of coil C  is %d\r\n", Coil_Volt_C);
    Coil_Volt_D = NSD8381drv_ReadcoilBEMF(MCVD);
    printf("voltage of coil D  is %d\r\n", Coil_Volt_D);
    /* Last coil BEMF voltage conversion store register
     * 00:CVA
     * 01:CVB
     * 10:CVC
     * 11:CVD
     * */

    if(NSD8381_ReadCVLUR() == 0x01)
    {
        Latest_Coil_Volt = Coil_Volt_B;
        printf("Latest voltage of coil is CVB:%d\r\n", Latest_Coil_Volt);
        Float_Coil_volt = ((float)Latest_Coil_Volt/1023)*28;
        printf("latest real voltage of coil is:%f V\r\n", Float_Coil_volt);
    }
}
elseif(Phase_Count == 32)
{
    Coil_Volt_A = NSD8381drv_ReadcoilBEMF(MCVA);
    printf("voltage of coil A  is %d\r\n", Coil_Volt_A);
    Coil_Volt_B = NSD8381drv_ReadcoilBEMF(MCVB);
    printf("voltage of coil B  is %d\r\n", Coil_Volt_B);
    Coil_Volt_C = NSD8381drv_ReadcoilBEMF(MCVC);
    printf("voltage of coil C  is %d\r\n", Coil_Volt_C);
    Coil_Volt_D = NSD8381drv_ReadcoilBEMF(MCVD);
    printf("voltage of coil D  is %d\r\n", Coil_Volt_D);
    /* Last coil BEMF voltage conversion store register
     * 00:CVA
     * 01:CVB
     * 10:CVC
     * 11:CVD
     * */

    if(NSD8381_ReadCVLUR() == 0x02)
    {
        Latest_Coil_Volt = Coil_Volt_C;
        printf("Latest voltage of coil is CVC:%d\r\n", Latest_Coil_Volt);
        Float_Coil_volt = ((float)Latest_Coil_Volt/1023)*28;
        printf("latest real voltage of coil is:%f V\r\n", Float_Coil_volt);
    }
}
elseif(Phase_Count == 48)
{
    Coil_Volt_A = NSD8381drv_ReadcoilBEMF(MCVA);
    printf("voltage of coil A  is %d\r\n", Coil_Volt_A);
    Coil_Volt_B = NSD8381drv_ReadcoilBEMF(MCVB);
    printf("voltage of coil B  is %d\r\n", Coil_Volt_B);
    Coil_Volt_C = NSD8381drv_ReadcoilBEMF(MCVC);
    printf("voltage of coil C  is %d\r\n", Coil_Volt_C);
    Coil_Volt_D = NSD8381drv_ReadcoilBEMF(MCVD);
    printf("voltage of coil D  is %d\r\n", Coil_Volt_D);
    /* Last coil BEMF voltage conversion store register
     * 00:CVA
     * 01:CVB
     * 10:CVC
     * 11:CVD
     * */

    if(NSD8381_ReadCVLUR() == 0x03)
    {
        Latest_Coil_Volt = Coil_Volt_D;
        printf("Latest voltage of coil is CVD:%d\r\n", Latest_Coil_Volt);
        Float_Coil_volt = ((float)Latest_Coil_Volt/1023)*28;
        printf("latest real voltage of coil is:%f V\r\n", Float_Coil_volt);
    }
}

3.2.3 回读正常运行和堵转时的反电动势

  1. 使用串口查看变量的变化趋势比较困难,笔者增加了FreeMaster工程方便查看,如下图所示。
Freemaster界面
Freemaster界面

关于Freemaster的使用,可以参考如下文章:

  • FreeMASTER快速入门
  1. 从上图中可以看出,正常运行时回读到的反电动势电压在0.55V到0.6V之间,和示波器抓取到的数值(0.2V)有些差异,这里使用芯片回读值。同时可以看到手动堵转时的反电动势仍有0.2V左右,主要是手指无法让电机完全停止转动。

  2. 基于上图得到的数据,我们将CVLLA和CVLLB都设置为0x0A,对应的电压在0.27V左右,处于0.2V和0.5V之间。CVUL采用默认值0x3FF,对应电压28V。对应代码配置如下:

堵转阈值设置
堵转阈值设置
  1. 在主循环中增加对STA_1寄存器的STALL bit读取,用于判断是否发生堵转事件,若发生则关闭PWM波。
STALL标志读取
STALL标志读取
  1. 同时也在按键SW2的触发功能中增加清除错误状态。
SW2触发功能
SW2触发功能

4.测试情况

4.1 堵转后不关闭PWM波

堵转后不关闭PWM波,对应的FreeMaster界面动图如下。可以看到手动堵转后,过零点的反电动势明细下降很多。

4.2 堵转后关闭PWM波

堵转后关闭PWM波,对应的FreeMaster界面动图如下。当手动堵转后,NSD8381的STA_1寄存器对应的STALL bit(下图底部的变量Stall_Flag)被置位,电机停止运行。

4.3 其他影响因素

实际测试发现,NSD8381的供电电压、电机的温度、电机运行方向对获取的反电动势值都有影响。在实际项目应用时,需要结合产品的工作环境,模拟多种环境去测试电机正常运行时和堵转时的反电动势,设置合适的CVLLA、CVLLB、CVUL。

参考资料
[1] 

步进电机驱动NSD8381调试指南: https://www.novosns.com/technical-articles-385


评论 (0)
  • 精益管理的理念和思维是源于日本的丰田模式,虽然精益管理有很多有效而丰有智慧的思想和方法,但在欧美企业要应用精益也并不容易,始终东西方的文化、人民习性都会存在着一点差异。不过,客观来说,精益管理是其优缺点的,以下,优思学院[1]综合吉朱·安东尼(Jiju Antony)教授《中小企业精益六西格玛》一书中的研究略作说明。精益的优点以下是精益生产系统的一些优点(Schonberger,2008):1)积极的劳动力效应。精益战略往往基于员工的主动性,那些从事实际工作的员工才是改善工作的最具创造力的人员。
    优思学院 2025-03-21 15:09 25浏览
  • 在智能终端设备快速普及的当下,语音交互已成为提升用户体验的关键功能。广州唯创电子推出的WT3000T8语音合成芯片,凭借其卓越的语音处理能力、灵活的控制模式及超低功耗设计,成为工业控制、商业终端、公共服务等领域的理想选择。本文将从技术特性、场景适配及成本优势三方面,解析其如何助力行业智能化转型。一、核心技术优势:精准、稳定、易集成1. 高品质语音输出,适配复杂环境音频性能:支持8kbps~320kbps宽范围比特率,兼容MP3/WAV格式,音质清晰自然,无机械感。大容量存储:内置Flash最大支
    广州唯创电子 2025-03-24 09:08 110浏览
  • 人形机器人产业节奏预估:2024年原型机元年,2025年小规模量产元年。当宇树科技H1人形机器人以灵动的手部动作在春晚舞台上演创意融合舞蹈《秧Bot》,舞出"中国智造"时,电视机前十几亿观众第一次深刻意识到:那个需要仰望波士顿动力的时代正在落幕。*图源:宇树科技短短数周后,宇树G1机器人又用一段丝滑的街舞在网络收割亿级播放量,钢铁之躯跳出赛博朋克的浪漫。2月11日,宇树科技在其京东官方旗舰店上架了两款人形机器人产品,型号分别为Unitree H1和G1。2月12日,9.9万元的G1人形机器人首批
    艾迈斯欧司朗 2025-03-22 21:05 89浏览
  • 核心板简介创龙科技 SOM-TL3562 是一款基于瑞芯微 RK3562J/RK3562 处理器设计的四核 ARM C ortex-A53 + 单核 ARM Cortex-M0 全国产工业核心板,主频高达 2.0GHz。核心板 CPU、R OM、RAM、电源、晶振等所有元器件均采用国产工业级方案,国产化率 100%。核心板通过 LCC 邮票孔 + LGA 封装连接方式引出 MAC、GMAC、PCIe 2.1、USB3.0、 CAN、UART、SPI、MIPI CSI、MIPI
    Tronlong 2025-03-24 09:59 103浏览
  • 文/Leon编辑/cc孙聪颖‍去年,百度公关部副总裁璩静的争议言论闹得沸沸扬扬,最终以道歉离职收场。时隔一年,百度的高管又出事了。近日,“百度副总裁谢广军女儿开盒孕妇”事件登上热搜,持续发酵,引起网友对百度数据安全性的怀疑。3月19日晚间,百度正式发布声明,表示坚决谴责窃取和公开他人隐私的网络暴力行为,同时强调,百度内部实施匿名化、假名化处理,经查验,泄露数据并非来自百度,而是海外的社工库,“当事人承认家长给她数据库”为不实信息,针对相关谣言百度已经向公安机关报案。然而,并非所有网友都对这份声明
    华尔街科技眼 2025-03-21 21:21 70浏览
  • 近年来,随着半导体产业的快速发展和技术的不断迭代,物联网设备种类繁多(如智能家居、工业传感器),对算力、功耗、实时性要求差异大,单一架构无法满足所有需求。因此米尔推出MYD-YT113i开发板(基于全志T113-i)来应对这一市场需求。米尔基于全志T113-i核心板及开发板part 01  T113-i芯片及OpenAMP简介T113-i芯片简介T113-i由两颗ARM A7 、一颗C906(RISC-V)和一颗DSP(HIFI 4)组成。C906(RISC-V核)特性:主频
    米尔电子嵌入式 2025-03-21 16:28 30浏览
  • 很多时候我们会以价值来衡量一个人或一件事,也很容易以成败来论定其价值;所谓胜者为王败者为寇,同样的一个人,在成功时是一种评价,如若失败,所得到的又是另一种评断。古训有云:「不以成败论英雄」,成败得失只是一时的胜负,决定胜败的因素很多,无论人、事、时、地、物,都能影响最后的结果,然而结果却不一定是真正最终的价值论断。好比历史上名垂千古的楚汉之争,刘邦最终得胜,开国立业成为汉高祖,然而,刘邦的为人处事、风格操守或是韬略能力,真的就强于项羽吗?其实,刘邦若无萧何、韩信等人鼎力相辅,若非民心一面倒向刘邦
    优思学院 2025-03-21 12:08 27浏览
  • 今年全国两会期间,“体重管理”和“育儿”整体配套政策引发了持久广泛关注。从“吃”到“养”,都围绕着国人最为关心的话题:健康。大家常说“病从口入”,在吃这件事上,过去大家可能更多是为了填饱肚子,如今,消费者从挑选食材到厨电都贯彻着健康的宗旨,吃得少了更要吃得好了。这也意味着在新消费趋势下,谁能抓住众人的心头好,就能带起众人的购买欲望,才能在新一轮竞争中脱颖而出。作为家电行业的风向标,在2025年中国家电及消费电子博览会(AWE)上,这两个话题也被媒体和公众频繁提及。深耕中国厨房三十余年的苏泊尔再次
    华尔街科技眼 2025-03-22 11:42 46浏览
  • 在人工智能与物联网技术蓬勃发展的今天,语音交互已成为智能设备的重要功能。广州唯创电子推出的WT3000T8语音合成芯片凭借其高性能、低功耗和灵活的控制方式,广泛应用于智能家居、工业设备、公共服务终端等领域。本文将从功能特点、调用方法及实际应用场景入手,深入解析这款芯片的核心技术。一、WT3000T8芯片的核心功能WT3000T8是一款基于UART通信的语音合成芯片,支持中文、英文及多语种混合文本的实时合成。其核心优势包括:高兼容性:支持GB2312/GBK/BIG5/UNICODE编码,适应不同
    广州唯创电子 2025-03-24 08:42 87浏览
  • 在科技飞速发展的今天,视频监控领域对于高清、稳定、多功能解码芯片的需求与日俱增。现在,一款具有划时代意义的解码芯片——XS9922B 震撼登场,它将为车载监控、倒车影像等应用场景带来全新的变革体验。多协议支持,高清标清一网打尽,XS9922B 作为一款 4 通道模拟复合视频解码芯片,拥有强大的协议兼容性。它不仅支持 HDCCTV 高清协议,让你轻松捕捉高清画面的每一个细节,还兼容 CVBS 标清协议,满足不同设备和场景的多样化需求。无论是 720P/1080P 的高清制式,还是 960H/D1
    芯片徐15652902508 2025-03-21 13:58 20浏览
  • 无论你是刚步入职场的新人,还是已经有几年经验的职场老手,培养领导力都是职业发展中一个至关重要的环节。拥有良好的领导能力不仅能让你从人群中脱颖而出,也能让你在团队中成为一个值得信赖、富有影响力的核心成员。什么是领导力?领导力并不仅仅意味着“当老板”或者“发号施令”。它更多地是一种能够影响他人、激发团队潜能,并带领大家实现目标的能力。一位优秀的领导者需要具备清晰的沟通能力、解决问题的能力,以及对人心的深刻理解。他们知道如何激励人心,如何在压力下保持冷静,并能在关键时刻做出正确的决策。如何培养领导力?
    优思学院 2025-03-23 12:24 66浏览
  • 文/Leon编辑/cc孙聪颖‍“无AI,不家电”的浪潮,正在席卷整个家电行业。中国家电及消费电子博览会(AWE2025)期间,几乎所有的企业,都展出了搭载最新AI大模型的产品,从电视、洗衣机、冰箱等黑白电,到扫地机器人、双足机器人,AI渗透率之高令人惊喜。此番景象,不仅让人思考:AI对于家电的真正意义是什么,具体体现在哪些方面?作为全球家电巨头,海信给出了颇有大智慧的答案:AI化繁为简,将复杂留给技术、把简单还给生活,是海信对于AI 家电的终极答案。在AWE上,海信发布了一系列世俱杯新品,发力家
    华尔街科技眼 2025-03-23 20:46 58浏览
  • 文/郭楚妤编辑/cc孙聪颖‍在人工智能与实体经济深度融合的时代浪潮中,究竟何种 AI 产品,方能切实契合用户对美好未来的向往与期待?3 月 20 日,备受全球瞩目的中国家电及消费电子博览会(AWE2025)于上海新国际博览中心盛大开幕。展会首日,长虹重磅推出首款治愈系 AI TV、客餐厅 PRO 共享空调,以及面向低空经济领域的通信模组等一系列创新产品。这一举动充分展现了长虹在家电领域全面推进 AI 化的坚定决心,以及为低空经济等新兴产业提供有力科技支撑的硬核实力 。“首发” 新品,领航用户价值
    华尔街科技眼 2025-03-21 21:13 44浏览
  • 在智慧城市领域中,当一个智慧路灯项目因信号盲区而被迫增设数百个网关时,当一个传感器网络因入网设备数量爆增而导致系统通信失效时,当一个智慧交通系统因基站故障而导致交通瘫痪时,星型网络拓扑与蜂窝网络拓扑在构建广覆盖与高节点数物联网网络时的局限性便愈发凸显,行业内亟需一种更高效、可靠与稳定的组网技术以满足构建智慧城市海量IoT网络节点的需求。星型网络的无线信号覆盖范围高度依赖网关的部署密度,同时单一网关的承载设备数量有限,难以支撑海量IoT网络节点的城市物联系统;而蜂窝网络的无线信号覆盖范围同样高度依
    华普微HOPERF 2025-03-24 17:00 82浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦