飞特STS3315基本使用方法

2024-09-07 11:52

本文主要是介绍飞特STS3315基本使用方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

宁天道/FeelECH

01-介绍

串口总线舵机,可以通过一根线将多个舵机串联在一起,一个串口线片可以控制所有的舵机。

内带闭环,可以自定义舵机移动的最大速度,加速度,

可以修改各种模式,满足各种各样的需求,步进模式,

可控最多7.5圈稳定闭环转动

需要USB/TTL调试版

通过入手教程学习

数据单位和指令内容等在内存表中可以看

其他长相的也行

默认波特率1000000

电压6-8.4

02-上位机调试内容

0-连接上位机

使用USB与调试版连接时,然后和舵机通信时,需要将ZX和USB引脚短接,其他调试版应该也有类似的需求,注意一点

1-设计扭矩

仅限夹取相同物品(相同质量的物品)且需提前设定好“扭矩限制”百分比,如果是多次夹取质量体积不固定的物品,无法判定舵机需要输出的扭矩值,可能会损坏物体或舵机出现过载卸力等情况。

以串口舵机为例,串口舵机具备“扭矩限制”百分比输出可控。当物体的重量需要舵机输出 1kg 的力且能维持物品夹取不掉落又不损伤物体。

我们可以通过以下操作实现:假设堵转扭矩为 10kg.cm,在 16 地址“扭矩限制”中输入 100(表示 10kg 的 10%即 1kg 输出),即可实现 1kg 的力去夹取物品,但同时速度也会变慢。


舵机输出轴是按照公斤每厘米计算的,如 20kg.cm 就是输出轴中心 1CM 处最大负重 20kg,如装上摆臂后,摆臂长度是 10CM,那么摆臂末端所能负重最大是 2kg,舵机在最大负载下寿命及短,需保证在额定负载下,会延长舵机使用寿命,一般堵转的三分一是额定扭矩,那么上述说的 20kg.cm,额定就是约为 6.5kg 以下,2kg 就是 0.65kg 以下。

2-观察最大速度

3-修改舵机ID

4-修改波特率

还有一部分,看上手手册去吧

03-基本调度(无DMA)(自行移植版本v0.1)

1-写逻辑

这是一个发送指令的函数

int	syncReadPacketTx(uint8_t ID[], uint8_t IDN, uint8_t MemAddr, uint8_t nLen)
{uint8_t checkSum;uint8_t i;rFlushSCS();syncReadRxPacketLen = nLen;checkSum = (4+0xfe)+IDN+MemAddr+nLen+INST_SYNC_READ;writeByteSCS(0xff);writeByteSCS(0xff);writeByteSCS(0xfe);writeByteSCS(IDN+4);writeByteSCS(INST_SYNC_READ);writeByteSCS(MemAddr);writeByteSCS(nLen);for(i=0; i<IDN; i++){writeByteSCS(ID[i]);checkSum += ID[i];}checkSum = ~checkSum;writeByteSCS(checkSum);wFlushSCS();syncReadRxBuffLen = readSCS(syncReadRxBuff, syncReadRxBuffMax);return syncReadRxBuffLen;
}
int writeByteSCS(unsigned char bDat)
{if(wLen<sizeof(wBuf)){wBuf[wLen] = bDat;wLen++;}return wLen;
}//将数据指令逐个写入缓冲区//写缓冲区结束,将其阻塞发送
void wFlushSCS()
{if(wLen){Uart_Send(wBuf, wLen);wLen = 0;}
}
void Uart_Send(uint8_t *buf , uint16_t len)
{HAL_UART_Transmit(UART_InitStructure, buf, len, HAL_MAX_DELAY);
}

2-读逻辑

先发送指令,之后立刻进入阻塞式接收方式(那我DMA是不是也可以仿照这种模式)

int readSCS(unsigned char *nDat, int nLen)
{return Uart_Read(nDat, nLen, IOTimeOut);
}
int16_t Uart_Read(uint8_t *buf , uint16_t len, uint32_t timeout)
{if(HAL_UART_Receive(UART_InitStructure, buf, len, timeout)==HAL_OK){return len;}else{return 0;}
}

接收到数据后,直接下一步进入结算

	for(i=0; i<sizeof(ID); i++){//接收ID[i]同步读返回包if(!syncReadPacketRx(ID[i], rxPacket)){continue;//接收解码失败}STS_Group[i]->position = syncReadRxPacketToWrod(15);//解码两个字节 bit15为方向位,参数=0表示无方向位STS_Group[i]->speed = syncReadRxPacketToWrod(15);//解码两个字节 bit15为方向位,参数=0表示无方向位HAL_Delay(10);}

04-DMA版本(v1.1)

有些缺陷,在scan和set间最少间隔一毫秒

在sts_api.h中有详细的调用方案

1-写逻辑

在开始发送的时候关闭DMA传输,在结束发送的时候重新开启,此时的效果和缓冲区模式类似

//只在内部
void Uart_DMA_Send_Stop(void)//开始写缓冲区时,关闭,并清空缓冲区
{HAL_UART_DMAStop(&UART_InitStructure);//直接关闭串口全部DMA,可能有问题,//	或许可以通过全局变量加个保护
}//只在内部
void Uart_DMA_Send_Start(uint8_t *buf , uint16_t len){//写完缓冲区后,打开发送DMAHAL_UART_Transmit_DMA(&UART_InitStructure, buf, len);//使用DMA发送数据
}

2-读逻辑

开启串口空闲中断

在完成指令的发送后,立刻打开DMA接收,之后读函数就结束,在串口空闲中断进入的时候,进行数据的计算

问题:

01-串口空闲中断只在接收完一帧数据后,没有继续接收数据时才会进入,发送结束不会激活。

02-一开始这个逻辑时不能用的,但在给malloc前加入了(uint8_t*)后就可以用了,不知道为什么,观察到没有的时候,其数据一直是0且只有一位。加入后,也只有一位,但数据为ff

这篇关于飞特STS3315基本使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144991

相关文章

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断