1.机器鱼的舵机舵机制作分享
2.PCA9685:I2C转16路PWM,助力你的源码源代系统
3.聆思CSK6 视觉AI开发套件试用头肩、手势识别体验与PWM舵机控制
4.Dynamixel伺服舵机控制
5.各种PID控制算法及C代码总结
6.自动饮水机代码
机器鱼的舵机舵机制作分享
本文示例将实现R样机机器鱼胸鳍灵活上下摆动的功能。
本样机采用舵机模块进行仿生机器鱼结构设计。源码源代
在这个示例中,舵机舵机我们使用了以下硬件,源码源代android源码导入请大家参考:
电路连接:将舵机连接在Bigfish扩展板的舵机舵机D4端口。
运动功能实现方面,源码源代我们采用了Arduino 1.8.编程环境。舵机舵机
下面提供一个机器鱼胸鳍上下摆动的源码源代参考例程(fishQi.ino),实验效果可参考演示视频。舵机舵机
此外,源码源代我们还提供了一个机器鱼鱼尾摆动的舵机舵机参考例程(fishTail.ino),您可以尝试调整舵机摆动角度参数,源码源代使机器鱼尾灵活摆动。舵机舵机
程序源代码及样机3D文件资料内容详见“机器鱼-概述”。
PCA:I2C转路PWM,助力你的系统
PCA是一种主要用作I2C转路PWM的集成电路,适用于舵机控制、LED颜色控制等。其控制精度在Hz的控制频率下,脉宽为0.5ms~2.5ms,具备位分辨率(级),具体精度计算需参考相关资料。
PCA有两种封装形式:TSSOP与HVQFN,各有相应的引脚排列。每个引脚的功能描述如下图所示。引脚A0-A5共同决定器件地址,由于有6个引脚参与,分布指标源码因此可有个不同的器件地址。除了LED All Call address (E0h)和Software Reset address (h)外,实际可用地址为个,理论上,1个I2C接口可控制多达路PWM。器件地址的设置示意图如下图所示。默认情况下,若A0-A5全部接地,则器件地址为0x。
默认状态下,上电复位后,寄存器地址默认值为0,具体寄存器地址及其用途见下图。重点关注以下寄存器:模式设置寄存器、PWM通道寄存器与占空比设置、PWM周期(频率)寄存器与周期(频率)设置。
在使用模式设置寄存器时,需注意以下事项:首先介绍MODE1寄存器,其功能如下图所示。在配置模式时,特别关注MODE2寄存器的各位功能,如图所示。
PWM通道寄存器的设置如下图所示,每个通道有4个寄存器,每个寄存器图解如图所示。在设置PWM占空比时,首先配置舵机,例如ON < OFF情况。视频源码版特殊情况下,PWM周期大于定时器一次计数时,配置ON>OFF情况。
配置PWM频率时,一般采用内置晶振,频率为MHz。通过配置PRE_SCALE寄存器来调整频率,其与PWM频率的关系见下图。若使用内置晶振,取osc_clock=,update_rate=(舵机控制频率Hz)。
推荐硬件设计时,确保OE引脚接低电平以确保IC使能。若连接LED灯,则推荐连接方式如下图所示。
软件设计部分,Micro:bit平台采用TypeScript(JavaScript的超类)进行底层开发,提供基本操作方法及其思路。日后再更新C、C++及其它平台(STM、Linux树莓派、Arduino等)的操作方法。Micro:bit驱动PCA的源代码提供,注意源代码中的时间为us,与教程中的ms不同。
树莓派平台采用Python驱动PCA,首先安装Python和smbus库。Python代码如下所示,ecs源码分析保存文件名为pca.py,命令行进入该文件所在的路径,运行该Python脚本。执行命令后,即可控制舵机从0度转到度,再从度转到0度。
聆思CSK6 视觉AI开发套件试用头肩、手势识别体验与PWM舵机控制
聆思科技与极术社区联合组织的CSK6视觉AI开发套件活动已让《酷电玩家》带来了深度的开发体验。本次分享针对AI识别应用与PWM舵机控制两大功能进行全面介绍,并通过步骤分解详述实现过程。环境搭建
首先,通过官方文档指引,在环境搭建部分完成以下步骤:下载Git并安装,安装lisa zep工具以初始化CSK6 SDK开发环境,然后进行开发环境验证。获取源码
操作中使用Git获取Sample项目与SDK到本地环境,可自动完成初始化。AI案例体验
通过VSCODE打开项目结构,其中prj.conf文件是工程配置的关键。更改配置CONFIG_WEBUSB=n至CONFIG_WEBUSB=y,以便在后续测试阶段使用PC工具预览功能。接下来,完成固件编译与烧录,并通过USB接口烧录至CSK6开发板。安装与调试工具
工具预览使用Edge浏览器加载csk_view_finder_spd/src目录下index.html页面。完成Windows系统驱动安装,确保CSK6 USB端口能被系统识别。PWM舵机控制
对于引脚定义与设备树概念,排位分销源码开发者在.sdk\zephyr\dts文件中获取详细信息。选择适合的PWM通道与引脚(例如GPIOB , GPIOB 等),并在主程序中配置PWM控制与舵机驱动代码。总结
上述步骤涵盖CSK6视觉AI开发套件的基本操作,从环境搭建、代码获取到AI应用体验与PWM舵机控制实现。结合头肩识别与坐标信息,进一步实现动态头肩跟踪功能成为可能。完整代码实现与进阶功能探索请参阅官方文档。Dynamixel伺服舵机控制
舵机,作为一种电机执行器,具备角度持续变化与保持输出的特性。我最早接触舵机是在制作固定翼模型飞机时,利用KT泡沫板裁剪、热熔胶固定机身,安装无刷电机在机头,以及两翼和尾翼上的舵机,分别控制副翼和航向。当时由于是学生,预算有限,常用的是9克SG塑料舵机和银燕ESMAII,它们轻便、成本低且适合小型负载。这类舵机通过单片机输出PWM信号控制,但资源消耗高,不适合精细控制的机器人。
AX-A伺服舵机是更高级的选择,它具备精准的位置和速度控制、柔性驱动、状态反馈、系统报警、总线通讯与分布式控制等特点。本文将以Dynamixel AX-A伺服舵机为例,使用STMF控制器,详细讲解其控制原理、方法与代码,适用于Dynamixel其他系列舵机。
AX-A的通讯协议需要通过总线将多个不同ID的舵机连接,控制器发送指令包至舵机,舵机反馈状态包回传。指令包格式包括帧头、ID、长度、执行指令码、附加信息与校验码。配置USART3作为串口,设置波特率为,广播ID(0xFE)用于设置舵机波特率。指令包由帧头、ID、长度、指令码(0x)、写入地址(0x)与目标值(0x)组成,通过计算校验码确保通信准确性。设置函数BaudRateSetup()实现波特率同步。
为了知道每个舵机的ID,可以采用广播ID(0xFE)进行ID设置,通过读写EEPROM区地址3的ID条目来定制ID值。设置函数SetID()使用类似方法实现,包含ID地址、写入值与校验码。指示灯设置函数SetLED()通过RAM区地址的值控制指示灯状态。
完成舵机配置后,通过硬件电路连接,包括USART3的PB与舵机data线、3S航模电池供电。主函数调用配置函数后,指示灯由熄灭变为红色常亮,表明波特率和ID设置成功。
AX-A舵机有两种工作模式:轮子模式与关节模式。轮子模式实现°无限旋转,关节模式则在设定角度内运动。通过代码实现这两种模式的切换,展示舵机的灵活性与控制能力。
完整示例代码包含头文件和源代码,具体实现步骤请参考数据手册与以上介绍,编写功能丰富的控制函数。
各种PID控制算法及C代码总结
PID控制算法总结 PID控制算法是工业应用中的基石,简单却强大。本文详尽介绍了各种PID控制的C代码实现,从基础原理到实际应用,包括:纯物理意义:PID控制通过误差信号调节输出,包括比例、积分和微分三个环节。
应用实例:尤其适用于直流电机调速,通过编码器反馈,实现精密控制。
功能模块:如无刷FOC控制、有刷电机控制、舵机控制等,具备能量回收、电流缓冲控制等特性。
硬件配置:包括主控板、驱动板、电源板等,以及通信接口和传感器支持。
代码实现:包含双霍尔FOC、无感FOC、编码器FOC源码,以及远程调试APP和通信接口代码。
参数整定:通过调整比例Kp、积分Ki和微分Kd,平衡响应速度、精度与动态性能。
进阶技巧:如积分分离、抗饱和控制、梯形积分和变积分策略,提高系统的稳定性和响应速度。
智能PID:模糊PID在非线性系统中的应用,利用模糊规则智能调节控制器参数。
通过一系列的C语言代码,无论是初学者还是经验丰富的工程师,都能掌握并应用PID算法进行高效控制。自动饮水机代码
自动饮水机是一种智能化设备,可以自动控制水的输送和消耗,为人们带来了极大的便利。下面是一种可能的自动饮水机代码:#include //加载Servo库来控制水龙头舵机
Servo waterTap; //定义龙头舵机对象
#define sensorPin A0 //定义水位传感器引脚
#define highWaterLevel //定义高水位线
#define mediumWaterLevel //定义中水位线
#define lowWaterLevel //定义低水位线
void setup() {
pinMode(sensorPin, INPUT); //设置传感器引脚为输入模式
waterTap.attach(9); //将龙头舵机连接至9号引脚
void loop() {
int waterLevel = analogRead(sensorPin); //从传感器读取水位
if (waterLevel>= highWaterLevel) { //高水位,不供水
waterTap.write(0); //关闭水龙头
}
else if (waterLevel = mediumWaterLevel) { //中水位,慢供水
waterTap.write(); //开启水龙头至度
delay(); //延迟1s
waterTap.write(0); //关闭水龙头
delay(); //延迟s
}
else if (waterLevel = lowWaterLevel) { //低水位,快供水
waterTap.write(); //开启水龙头至度
delay(); //延迟0.5s
waterTap.write(0); //关闭水龙头
delay(); //延迟s
}
else { //水不足,不供水
waterTap.write(0); //关闭水龙头
代码的作用是通过水位传感器读取水桶中的水位,根据不同的水位线来控制龙头舵机的开启和关闭。当水位高于高水位线时,龙头舵机不供水;当水位在高水位线和中水位线之间时,龙头舵机慢供水,每秒钟开启一次,持续1秒钟;当水位在中水位线和低水位线之间时,龙头舵机快供水,每秒钟开启一次,持续0.5秒钟;当水位低于低水位线时,龙头舵机不供水。
毕业设计竞赛选题推荐 | 鸿蒙嵌入式物联网应用之智能垃圾桶项目实战(含文档及源码)
智能垃圾桶项目案例,采用华清远见鸿蒙基础套餐(Hi鸿蒙开发板)+雷达控制模块(含舵机)作为硬件平台。项目功能设计如下:
1. **感应功能**:通过红外感应或微波感应技术,当有物体或手靠近感应区时,盖子自动开启,离开后自动关闭,实现无需手动或脚踩操作。
2. **卫生与环保**:减少细菌传播,避免异味和蚊虫滋生,降低环境污染,通过自动关闭功能减少能耗。
项目实现内容包括:人体与垃圾桶的距离感知、OLED显示屏状态显示、人体靠近时自动开启盖子,远离时自动关闭。
技术点涉及:人体距离感知技术、OLED显示屏驱动、智能设备自动化控制。
项目整体框架:硬件平台搭建、传感器与执行器连接、软件编程实现功能。
硬件平台:FS-Hi鸿蒙开发板,配备丰富的板载资源与拓展模块,支持鸿蒙系统。
开发板优势:适用于物联网教学、学生毕设、个人学习及竞赛,配套教程、视频课程与项目案例。
项目源码与文档领取:添加小元老师微信号(yyzlab),获取智能垃圾桶项目完整配套文档及源码,还有鸿蒙物联网开发板相关资料。