1.��� Դ��
2.机器鱼的舵机舵机制作分享
3.PCA9685:I2C转16路PWM,助力你的源码源码系统
4.Dynamixel伺服舵机控制
5.各种PID控制算法及C代码总结
��� Դ��
智能垃圾桶项目案例,采用华清远见鸿蒙基础套餐(Hi鸿蒙开发板)+雷达控制模块(含舵机)作为硬件平台。舵机舵机项目功能设计如下:
1. **感应功能**:通过红外感应或微波感应技术,源码源码当有物体或手靠近感应区时,舵机舵机盖子自动开启,源码源码aapt源码位置离开后自动关闭,舵机舵机实现无需手动或脚踩操作。源码源码
2. **卫生与环保**:减少细菌传播,舵机舵机避免异味和蚊虫滋生,源码源码降低环境污染,舵机舵机通过自动关闭功能减少能耗。源码源码
项目实现内容包括:人体与垃圾桶的舵机舵机距离感知、OLED显示屏状态显示、源码源码人体靠近时自动开启盖子,舵机舵机远离时自动关闭。
技术点涉及:人体距离感知技术、OLED显示屏驱动、智能设备自动化控制。
项目整体框架:硬件平台搭建、传感器与执行器连接、软件编程实现功能。
硬件平台:FS-Hi鸿蒙开发板,配备丰富的havok源码板载资源与拓展模块,支持鸿蒙系统。
开发板优势:适用于物联网教学、学生毕设、个人学习及竞赛,配套教程、视频课程与项目案例。
项目源码与文档领取:添加小元老师微信号(yyzlab),获取智能垃圾桶项目完整配套文档及源码,还有鸿蒙物联网开发板相关资料。
机器鱼的制作分享
本文示例将实现R样机机器鱼胸鳍灵活上下摆动的功能。
本样机采用舵机模块进行仿生机器鱼结构设计。
在这个示例中,我们使用了以下硬件,请大家参考:
电路连接:将舵机连接在Bigfish扩展板的D4端口。
运动功能实现方面,我们采用了Arduino 1.8.编程环境。
下面提供一个机器鱼胸鳍上下摆动的参考例程(fishQi.ino),实验效果可参考演示视频。
此外,我们还提供了一个机器鱼鱼尾摆动的参考例程(fishTail.ino),您可以尝试调整舵机摆动角度参数,使机器鱼尾灵活摆动。
程序源代码及样机3D文件资料内容详见“机器鱼-概述”。androidglide源码
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。
默认状态下,nestable源码上电复位后,寄存器地址默认值为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代码如下所示,保存文件名为pca.py,命令行进入该文件所在的路径,运行该Python脚本。执行命令后,即可控制舵机从0度转到度,再从度转到0度。
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算法进行高效控制。