1.pwm?输输出??Դ??
2.聆思CSK6 视觉AI开发套件试用头肩、手势识别体验与PWM舵机控制
3.STM32F103正点原子学习笔记系列——高级定时器
4.FOC控制库MCSDK5.4.4梳理(1)——SVPWM
pwm?出源??Դ??
PCA是一种主要用作I2C转路PWM的集成电路,适用于舵机控制、代码LED颜色控制等。输输出其控制精度在Hz的出源控制频率下,脉宽为0.5ms~2.5ms,代码giqci溯源码具备位分辨率(级),输输出具体精度计算需参考相关资料。出源
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代码如下所示,保存文件名为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,燕窝溯源码cciccloud以便在后续测试阶段使用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舵机控制实现。结合头肩识别与坐标信息,进一步实现动态头肩跟踪功能成为可能。完整代码实现与进阶功能探索请参阅官方文档。STMF正点原子学习笔记系列——高级定时器
高级定时器简介:TIM1/TIM8包含位递增、递减、中心对齐计数器(0至),具备位预分频器(分频系数1至)。它们用于触发DAC与ADC,并在更新事件、触发时间、输入捕获、输出比较时产生中断/DMA请求。高级定时器提供4个独立通道,用于输入捕获、输出比较、输出PWM及单脉冲功能。高级定时器能够根据外部信号控制,支持编码器和霍尔传感器电路。此外,它们具备重复计数器功能、可编程的互补输出、断路输入以实现用户自定义的安全配置。
高级定时器框图展示其内部结构,包括计数器、预分频器、中断控制单元、通道配置、输出控制等关键组件。
高级定时器输出指定个数PWM实验通过设置重复计数器RCR实现。除最后一个PWM输出外,其余PWM输出仅需配置RCR值,更新事件会在RCR+1次溢出时触发。
高级定时器输出指定个数PWM实验原理:确保在进行PWM输出时,将MOE(输出使能)设置为1,并在TIMx_BDTR寄存器中配置互补输出功能。在初始化函数中调用相关HAL库函数配置定时器实例、预分频器、重复计数器值等关键参数。然后配置GPIO和定时器中断,开启PWM输出。通过中断函数,根据需要触发更新事件,并控制PWM计数器。
课堂源码与例程的区别在于,课堂源码通过调用HAL库中断处理函数并进入回调函数,而例程直接在中断函数内进行用户代码编写,跳过了HAL库的中断处理流程。
高级定时器输出比较模式实验涉及PWM周期由ARR决定,占空比固定为%,相位由CCRx控制。配置相关HAL库关键结构体实现输出比较模式,包括初始化定时器实例、配置比较模式、输出极性、比较值等,通过设置定时器的比较寄存器值来控制PWM占空比。
高级定时器互补输出带死区控制实验包括H桥应用,通过增加死区时间控制避免元器件延迟导致的输出冲突。设置MOE为1开启输出,配置死区时间、刹车功能和输出空闲状态,实现互补输出和死区控制。
高级定时器PWM输入模式实验涉及通道1和通道2的使用,通过TIM3CH2输出PWM,将PWM输入到TIM8CH1进行测量。配置采样频率、PSC和ARR以确保准确的测量结果,并通过HAL库函数实现输入捕获功能。中断服务函数负责读取计数器值和捕获事件。
FOC控制库MCSDK5.4.4梳理(1)——SVPWM
本文将深入探讨FOC控制库MCSDK5.4.4中的关键步骤——SVPWM,即空间矢量脉宽调制。从理论到代码实践,我们将逐步揭示如何通过PWMC_SetPhaseVoltage函数将目标电压Uout转化为实际的PWM占空比。虽然网络上多是SVPWM原理的理论讲解,但实际代码应用的讲解并不多见。本文将结合实际代码,结合个人理解,帮助你理解SVPWM算法的工作原理。空间矢量合成与区域划分
如图所示,UVW三相电压以红色、绿色和蓝色表示,合成矢量为黑色。电机的三相电压在空间上相隔度。通过建立αOβ坐标系,可以解析三相电流的关系,进而推导出电压分解的表达式,得出相电压与母线电压的关系。六个扇区划分与PWM计算
将电压分解为六个扇区,每个区域对应不同的PWM占空比计算。例如,当wY和wZ为负值时,目标矢量位于扇区5。通过计算空间矢量作用时间,理解SVPWM波形的7段式结构,如第6扇区的0-4-5-7-5-4-0模式。合成不失真条件
为了保证不失真,合成的电压不能超过2*Udc/3与Udc/sqrt(3)之间的限制。当合成电压达到最大值时,需要确保Uref等于Udc/sqrt(3),这是SVPWM算法设计的关键点。代码实现与总结
通过上述分析,我们可以理解SVPWM的完整过程,从理论到实际代码的转换。FOC库中的定时器中心对齐模式对计算占空比至关重要。理解算法背后的原理,不仅限于使用,还能帮助我们灵活地解决产品问题。希望本文能对研究SVPWM原理的读者有所帮助。进一步的代码研究可参考链接:FOC5.4源代码