当前位置: 首页 > news >正文

深圳外贸公司网站建设公司排名/百度推广客户端

深圳外贸公司网站建设公司排名,百度推广客户端,免费wordpress平台,北京制作页面文章目录 1. 前言2. 问题描述3. 理论分析3.1 NSD8381如何连接电机3.2 S32K144和NSD8381的软件配置 4.测试验证4.1 测试环境4.2 测试效果4.3 测试记录 1. 前言 最近有客户在使用S32K144NSD8381驱动电子膨胀阀时,遇到无法正常驱动电子膨胀阀的情况。因为笔者也是刚开…

文章目录

    • 1. 前言
    • 2. 问题描述
    • 3. 理论分析
      • 3.1 NSD8381如何连接电机
      • 3.2 S32K144和NSD8381的软件配置
    • 4.测试验证
      • 4.1 测试环境
      • 4.2 测试效果
      • 4.3 测试记录

1. 前言

最近有客户在使用S32K144+NSD8381驱动电子膨胀阀时,遇到无法正常驱动电子膨胀阀的情况。因为笔者也是刚开始使用NSD8381,无法线上支持这类实际应用问题,所以让客户提供了一个电子阀,自己搭建环境进行测试。

2. 问题描述

客户电子膨胀阀的阀针安装位置比较隐蔽,需要通过注水观察水的流动情况,判断阀门是否打开关闭。之前也给客户提供了NSD8381的驱动代码,以及相关的文档说明,如下所示,

  • 基于S32K144驱动NSD8381

但是客户反馈,按照文档的步骤配置NSD8381之后,无论给CTRL1引脚发送多少脉冲,阀门始终无法关闭,即注水都会流出。

3. 理论分析

关于S32K144+NSD8381无法驱动电机的场景,主要有两种可能,一个是NSD8381的寄存器配置有误,或者NSD8381和电机的接线有问题。

针对NSD8381配置有误的可能性,客户有测试更改过NSD8381的步进电机模式(1/16细分改为1/2),运行电流(576mA更改1.3A)等参数,现象仍然一致,并且读了SPI的返回值,最高字节为0x80,说明寄存器配置有正确写入。

针对NSD8381和电机的连线,发现和NSD8381的时序不一致,详细情况如下描述。

3.1 NSD8381如何连接电机

客户的电子膨胀阀的运行时序如下左图,当前的NSD8381的输出引脚和电机的连线如下有图。

NSD8381连接电机

  • 从横轴看左上图,1到8为阀门关闭的相序,8到1为阀门打开的相序;
  • 从纵轴看左上图,1,2,3,4分别为电机四根引线的输入电平要求;
  • 右上图显示NSD8381和电机的连线情况为:OUTA1、OUTA2连接电机的1、3号引线,OUTB1、OUTB2连接电机的2、4号引线。

按照上图的连线方式,对应的NSD8381输出引脚需要的相序如下表格最右列。

接线方法1线圈电流方向

翻看NSD8381数据手册,1/2微步模式下的芯片的相序如下:

NSD8381-1/2微步-相序

为了让电机相序和NSD8381的相序一致,需要NSD8381和电机的接线方式修改,修改后的接线方式为:

  • OUTB1、OUTB2连接电机的1、3号引线,OUTA1、OUTA2连接电机的2、4号引线

按如上描述修改接线方式后,对应的NSD8381输出引脚需要的相序如下表格:

接线方法2线圈电流方向

另外,客户提供的电机参数表中,和驱动电路相关的参数如下红框所示:

电机参数

对应的驱动NSD8381配置为:

  • 供电电压为12系统;
  • 1/2微步模式下,CTRL1引脚的PWM频率在80-200Hz;
  • 1/2微步模式下,阀门从完全关闭到完全打开的PWM脉冲数为576,从完全关闭到打开阀门,需要38±15个PWM脉冲。

针对这些需求,需要基于前文《基于S32K144驱动NSD8381》分享的代码做一些修改。详细情况如下描述。

3.2 S32K144和NSD8381的软件配置

  1. 因为需要计算PWM的脉冲数,所以需要增加PWM计数功能。代码修改如下。
  • 增加FTM2通道5的中断使能;
 FTM_DRV_EnableInterrupts(INST_FLEXTIMER_PWM1, FTM_CHANNEL5_INT_ENABLE);
  • 增加对应的中断处理函数,在里面增加PWM计数功能;
volatile uint16_t PWM_Count = 0;void FTM2_Ch4_Ch5_IRQHandler(void)
{PWM_Count++;FTM_DRV_ClearStatusFlags(INST_FLEXTIMER_PWM1,FTM_CHANNEL5_FLAG);
}
  1. 需要将PWM的频率修改为200Hz,修改下图形化配置即可。

PWM频率200Hz

  1. NSD8381的初始化函数中,需要修改步进电机模式为1/2微步,修改如下红框,即对CONFIG3寄存器赋值0x9B00。

NSD8381初始化

  1. 在while(1)循环中,增加如下功能:
  • 增加PWM计数处理逻辑,以及和PH[5:0]寄存器值的获取,用于判断NSD8381是否处于1/2微步模式,以及达到预定的PWM脉冲后,停止CTRL1引脚的脉冲输入。

  • 增加按键按下处理逻辑,按下SW2,将CTRL2引脚拉低(DIR为0),输入PWM波到CTRL1引脚;按下SW3,将CTRL2引脚拉高(DIR为1),输入PWM波到CTRL1引脚。

  • 如果希望电机整体功耗降低,可以增加Hold模式,当电机停止转动,开启Hold模式,此时消耗的电流远远小于RUN模式的电流。

对应的代码如下:

    while(1){Phase_Count = NSD8381drv_GetPH();/* 励磁速度,80-200pps(每秒钟的脉冲数)* 开阀脉冲数38±15PS,全开脉冲576* *//* 测试步进电机模式是否正确配置,1/2微步的时候,PWM计数4,PH[5:0]计数0b100000,即32*/if(PWM_Count == 4){printf("PWM Count is %d\r\n", PWM_Count);printf("Phase Count is %d\r\n", Phase_Count);}if(PWM_Count == 576){NSD8381drv_HOLDM_En(ENABLE);FTM_DRV_DeinitPwm(INST_FLEXTIMER_PWM1);printf("PWM Count is %d\r\n", PWM_Count);printf("Phase Count is %d\r\n", Phase_Count);PWM_Count = 0;}/* SW2 press */if(SW2_Press_Flag){SW2_Press_Flag = false;printf("SW2 press!\r\n");/* Increment phase counter, clockwise */NSD8381drv_CTRL2_Dir(clockwise);/* Hold mode -> Run mode */NSD8381drv_HOLDM_En(DISABLE);/* FTM2 CH5 use PWM mode,freq:200Hz */FTM_DRV_InitPwm(INST_FLEXTIMER_PWM1, &flexTimer_pwm1_PwmConfig);}/* SW3 press */if(SW3_Press_Flag){SW3_Press_Flag = 0;printf("SW3 press!\r\n");/* decrement phase counter, counter-clockwise */NSD8381drv_CTRL2_Dir(counter_clockwise);/* Hold mode -> Run mode */NSD8381drv_HOLDM_En(DISABLE);/* FTM2 CH5 use PWM mode,freq:200Hz */FTM_DRV_InitPwm(INST_FLEXTIMER_PWM1, &flexTimer_pwm1_PwmConfig);}}

关于其中几个函数的实现,如下所示:

/* read phase counter */
uint32_t NSD8381drv_GetPH(void)
{uint32_t Rsult;CONFIG3Reg[0] = (uint8_t)(0x85U);Parity_check(CONFIG3Reg);SPI_Send(CONFIG3Reg, StatReg_Result);StatReg_Result[2] &= 0x7F;Result = (uint32_t)(StatReg_Result[2] >> 1);return Result;
}/*set NSD8381 CONFIG_3 HOLD_EN bits*/
void NSD8381drv_HOLDM_En(FunctionalState_TypeDef EN)
{if(EN==ENABLE){CONFIG3Reg[1]|=NSD8381_HOLDM;   //0x40}else{CONFIG3Reg[1]&=(uint8_t)(~NSD8381_HOLDM);}CONFIG3Reg[0] = (uint8_t)(0x05U);CONFIG3Reg[2]&=(uint8_t)(0xFE);Parity_check(CONFIG3Reg);SPI_Send(CONFIG3Reg, CtrlReg_Result);
}/* set NSD8381 CTRL2 pin level when used for dir status* 0: Increment phase counter, clockwise* 1: decrement phase counter, counter-clockwise* */
void NSD8381drv_CTRL2_Dir(DirStatus_TypeDef EN)
{PINS_DRV_WritePin(NSD8381_CTRL2_PORT, NSD8381_CTRL2_PIN, EN);
}

4.测试验证

4.1 测试环境

整个测试的环境如下图:

NSD8381驱动电子膨胀阀

4.2 测试效果

实际的测试效果如下视频,

  • 当按下SW2时,阀门完全关闭,此时注入水不会流出;
  • 接着按下SW3,阀门完全打开,注入水会加速流出。

NSD8381驱动电子膨胀阀

4.3 测试记录

实际测试时串口打印的数据如下图,

  • 第一个操作的寄存器的高8bit返回值为0x40,因为有reset事件;如果第一个操作的寄存器高8bit返回值为0x00,可能是NSD8381还没初始化完成,建议在EN引脚拉高后,延迟200us再发送SPI命令给NSD8381​。
  • 当PWM计数为4时,对应的PH[5:0]为0x32,即0b100000,和相序表一致,说明处于1/2微步模式。
  • 使用250Hz的PWM波,也可以正常驱动该电磁阀,说明该电机兼容性比参数表更好。
  • 使用HOLD模式时的电流远小于RUN模式,有助于降低NSD8381的功耗。

相关文章:

【技术支持案例】使用S32K144+NSD8381驱动电子膨胀阀

文章目录 1. 前言2. 问题描述3. 理论分析3.1 NSD8381如何连接电机3.2 S32K144和NSD8381的软件配置 4.测试验证4.1 测试环境4.2 测试效果4.3 测试记录 1. 前言 最近有客户在使用S32K144NSD8381驱动电子膨胀阀时,遇到无法正常驱动电子膨胀阀的情况。因为笔者也是刚开…...

第二期:集成电路(IC)——智能世界的微观建筑大师

嘿,小伙伴们!👋 我是你们的老朋友小竹笋,一名热爱创作和技术的工程师。上一期我们聊了聊AI芯片,这次我们要深入到更微观的层面,来探究集成电路(IC)的世界。准备好一起探索了吗&#…...

基于物联网的区块链算力网络,IGP/BGP协议

目录 基于物联网的区块链算力网络 IGP/BGP协议 IGP(内部网关协议) BGP(边界网关协议) 内部使用ISP的外部使用BGP的原因 一、网络规模和复杂性 二、路由协议的特性 三、满足业务需求 四、结论 基于物联网的区块链算力网络 通 过 多个物联网传感器将本地计算…...

每日一题~960 div2 A+B+C(简单奇偶博弈,构造,观察性质算贡献)

A题意: N 长的数组。 一次操作: 最开始的mx 为零。 选出一个数(使得这个数>mx) ,之后将mx 更新为这个数,将这个数置为零。 不能做这个操作的,输。 问是否有先手赢的策略。有的话,输出yes 否则no 当时一…...

音视频入门基础:H.264专题(17)——FFmpeg源码获取H.264裸流文件信息(视频压缩编码格式、色彩格式、视频分辨率、帧率)的总流程

音视频入门基础:H.264专题系列文章: 音视频入门基础:H.264专题(1)——H.264官方文档下载 音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…...

Aboboo一些操作

常用快捷键⌨ 快捷键/操作方式 功能 鼠标中键/Esc 进入/退出全屏 空格/Tab 暂停/恢复播放 左/右箭头 快退/快进 Ctrl-左/右箭头 30秒快退/快进 Alt-左/右箭头 60秒快退/快进 Ctrl-Alt-左/右箭头 播放速率调节 PageUp/PageDown 上一句/下一句 上下箭头/滚轮 …...

获取行号LineNumberReader

(每日持续更新)jdk api之LineNumberReader基础、应用、实战-CSDN博客...

python数据结构与算法

0.时间复杂度和空间复杂度 快速判断算法时间复杂度:算法运行时间 1.确定问题规模n 2.循环减半 logn 3.k层关于n的循环 n^k 空间复杂度:评估算法内存占用大小 使用几个变量 O(1) 使用长度为n的一维列表 O(n&#xff09…...

大数据学习之Flink基础(补充)

Flink基础 1、系统时间与事件时间 系统时间(处理时间) 在Sparksreaming的任务计算时,使用的是系统时间。 假设所用窗口为滚动窗口,大小为5分钟。那么每五分钟,都会对接收的数据进行提交任务. 但是,这里有…...

C++基础语法:友元

前言 "打牢基础,万事不愁" .C的基础语法的学习."学以致用,边学边用",编程是实践性很强的技术,在运用中理解,总结. 以<C Prime Plus> 6th Edition(以下称"本书")的内容开展学习 引入 友元提供了一种特别的方式,访问对象私有数据. 友元有三…...

【大模型系列】Video-LaVIT(2024.06)

Paper&#xff1a;https://arxiv.org/abs/2402.03161Github&#xff1a;https://video-lavit.github.io/Title&#xff1a;Video-LaVIT: Unified Video-Language Pre-training with Decoupled Visual-Motional TokenizationAuthor&#xff1a;Yang Jin&#xff0c; 北大&#x…...

【总结】nacos作为注册中心-应用启动失败:NacosDiscoveryProperties{serverAddr=‘127.0.0.1:8848‘……

问题现象 启动springboot应用时报错&#xff0c;能够读取到nacos配置&#xff0c;但是使用nacos作为注册中心&#xff0c;应用注册到nacos失败。 应用配置bootstrap.properties如下&#xff1a; # 应用编码&#xff0c;安装时替换变量 spring.application.namedata-center #…...

C语言——数组和排序

C语言——数组和排序 数组数组的概念数组的初始化数组的特点 排序选择排序冒泡排序插入排序 二分查找 数组 数组的概念 数组是一组数据 &#xff1b; 数组是一组相同类型的数据或变量的集合 &#xff1b; 应用场景&#xff1a; 用于批量的处理多个数据 &#xff1b; 语法&…...

QEMU 新增QMPHMP指令【原文阅读】

文章目录 0x0 QEMU原文0x10x11 How to write monitor commands0x12 Overview0x13 Testing 0x20x21 Writing a simple command: hello-world0x22 Arguments 0x30x31 Implementing the HMP command 0x40x41 Writing more complex commands0x42 Modelling data in QAPI0x43 User D…...

【Linux】全志Tina配置屏幕时钟的方法

一、文件位置 V:\f1c100s\Evenurs\f1c100s\tina\device\config\chips\c200s\configs\F1C200s\sys_config.fex 二、文件内容 三、介绍 在此处可以修改屏幕的频率&#xff0c;当前为21MHz。 四、总结 注意选择对应的屏幕的参数&#xff0c;sdk所支持的屏幕信息都在此文件夹中…...

探索WebKit的CSS表格布局:打造灵活的网页数据展示

探索WebKit的CSS表格布局&#xff1a;打造灵活的网页数据展示 CSS表格布局是一种在网页上展示数据的强大方式&#xff0c;它允许开发者使用CSS来创建类似于传统HTML表格的布局。WebKit作为许多流行浏览器的渲染引擎&#xff0c;提供了对CSS表格布局的全面支持。本文将深入探讨…...

信号的运算

信号实现运算&#xff0c;首先要明确&#xff0c;电路此时为负反馈电路&#xff0c;当处于深度负反馈时&#xff0c;可直接使用虚短虚断。负反馈相关内容可见&#xff1a;放大电路中的反馈_基极反馈-CSDN博客https://blog.csdn.net/qq_63796876/article/details/140438759 一、…...

Vue3知识点汇总

创建项目 npm init vuelatest // npm create vitelatestVue文件结构 <!-- 开关&#xff1a;经过语法糖的封装&#xff0c;容许在script中书写组合式API --> <!-- setup在beforeCreate钩子之前自动执行 --> <script setup><!-- 不再要求唯一根元素 -->…...

C++设计模式--单例模式

单例模式的学习笔记 单例模式是为了&#xff1a;在整个系统生命周期内&#xff0c;保证一个类只能产生一个实例&#xff0c;确保该类的唯一性 参见链接1&#xff0c;链接2 #include <iostream> #include <mutex>using namespace std;/*懒汉模式&#xff1a;只有在…...

数据驱动未来:构建下一代湖仓一体电商数据分析平台,引领实时商业智能革命

1.1 项目背景 本项目是一个创新的湖仓一体实时电商数据分析平台&#xff0c;旨在为电商平台提供深度的数据洞察和业务分析。技术层面&#xff0c;项目涵盖了从基础架构搭建到大数据技术组件的集成&#xff0c;采用了湖仓一体的设计理念&#xff0c;实现了数据仓库与数据湖的有…...

学习JavaScript第五天

文章目录 1.HTML DOM1.1 表单相关元素① form 元素② 文本输入框类和文本域&#xff08;input 和 textarea&#xff09;③ select 元素 1.2 表格相关元素① table 元素② tableRow 元素&#xff08;tr 元素&#xff09;③ tableCell 元素 &#xff08;td 或 th&#xff09; 1.3…...

pythonGame-实现简单的坦克大战

通过python简单复现坦克大战游戏。 使用到的库函数&#xff1a; import turtle import math import random import time 游戏源码&#xff1a; import turtle import math import random import time# 设置屏幕 screen turtle.Screen() screen.setup(800, 600) screen.tit…...

不太常见的asmnet诊断

asm侦听 [griddb1-[ASM1]-/home/grid]$ srvctl config asm ASM home: <CRS home> Password file: OCR/orapwASM Backup of Password file: OCRDG/orapwASM_backup ASM listener: LISTENER ASM instance count: 3 Cluster ASM listener: ASMNET1LSNR_ASM[rootdb1:/root]# …...

双指针-【3,4,5,6,7,8】

第三题&#xff1a;快乐数 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/happy-number/算法思想&#xff1a; 1.每个…...

react Vant中如何获取步进器的值

在React中使用Vant&#xff08;一个轻量、可靠的移动端Vue组件库&#xff0c;虽然原生是为Vue设计的&#xff0c;但如果你在使用的是React版本的Vant&#xff0c;比如通过某些库或框架桥接Vue组件到React&#xff0c;或者是一个类似命名的React UI库&#xff09;&#xff0c;获…...

Windows下Git Bash乱码问题解决

Windows下Git Bash乱码问题解决 缘起 个人用的电脑是Mac OS&#xff0c;系统和终端编码都是UTF-8&#xff0c;但公司给配发的电脑是Windows&#xff0c;装上Git Bash在使用 git commit -m "中文"时会乱码 解决 确认有以下配置 # 输入 git config --global --lis…...

HTML5 + CSS3

HTML 基础 准备开发环境 1.vscode 使用 新建文件夹 ---> 左键拖入 vscode 中 2.安装插件 扩展 → 搜索插件 → 安装打开网页插件&#xff1a;open in browser汉化菜单插件&#xff1a;Chinese 3.缩放代码字号 放大,缩小&#xff1a;Ctrl 加号&#xff0c;减号 4.设…...

NFTScan | 07.22~07.28 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.07.22~ 2024.07.28 NFT Hot News 01/ 数据&#xff1a;NFT 系列 Liberty Cats 地板价突破 70000 MATIC 7 月 22 日&#xff0c;据 Magic Eden 数据&#xff0c;NFT 系列 Liberty C…...

24年第三届钉钉杯大学生大数据挑战赛

...

探索分布式光伏运维系统的组成 需要几步呢?

前言 随着光伏发电的不断发展&#xff0c;对于光伏发电监控系统的需求也日益迫切&#xff0c;“互联网”时代&#xff0c;“互联网”的理念已经转化为科技生产的动力&#xff0c;促进了产业的升级发展&#xff0c;本文结合“互联网”技术提出了一种针对分散光伏发电站运行数据…...