Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
国民技术_N32G45x
PWM
舵机
【N32G457 】16路舵机控制板
发布于 2022-03-16 20:14:41 浏览:991
订阅该版
#一 应用背景 ##1 基本介绍 舵机控制在我们嵌入式开发过程中是经常能够用到的,舵机是执行机构里面又可控,精度又较高而且协议简单的一种。非常多的机器人、机械臂使用的舵机来进行执行功能。笔者在过去使用舵机时候,如果舵机比较少,可能会直接选Arduino使用舵机库或者在控制器上直接定时器输出一个波形控制。这样做方便快捷,但是具有两个痛点:一是能够控制的舵机数量比较少,二是如果舵机多了(甚至两个mg90)就必须使用外部供电,MCU不能负载舵机的工作电流。 ##2 目前研究及解决方案现状 针对于这种情况,目前市面上常见的解决方式有两种,一种是使用某包常见舵机控制板, 这种舵机控制板加个很贵,且资料不开源,(图1.1)最多支持你根据他的协议自己写串口控制程序。另一种是基于IIC协议的PCA9685芯片的舵机控制板(图1.2)。该控制板价格不算太贵,但是并没有控制芯片,所有的控制逻辑都需要在自己再写,集成度不高。针对这种情况,笔者设计了一款可以自行控制舵机按照既定时间,既定角度执行命令的舵机控制板。采用国民技术N32G457芯片为核心的舵机控制板,既可以二次开发,也可以链接最多16个舵机控制。 #二 实现功能 本作品可以完成从串口读取文件名;搜索sd卡对应文件,逐条读取动作命令line,控制16个舵机的保持角度和该line的持续时间的功能。可以支持脱机存储的动作命令文件1000个;每个动作文件最多支持65535个line;单个line最多支持10s保持时间。但目前只是实现了信号的输出,实际带16个舵机是带不起来的,需要自己设计一个可以给舵机供电的电源。 ##三 开发板和RT-Thread使用情况概述 本作品使用国民技术N32G457开发板,使用开发工具为RT-T Studio 2.1.5 使用rt-thread v4.0.2版本进行开发。 #四 硬件框架 本设计硬件架构比较简单,主要涉及到tf卡模块和额外的16个舵机,以及开启了一个用于上层控制的uart3,具体的连线方式可以从参考《N32G457VE_Pinmap.xlsx》,本次设计并没有改动,全部使用了开发板默认复用功能 #五 软件框架 本在软件架构上,实际使用了三个线程,PWM线程负责配置定时器,控制16个通道的PWM波。FILE线程负责访问tf卡,读取动作line。串口线程负责收集需要调用的动作组文件名。空闲线程和主线程在初始化完成后没有实际工作。 在内核间通信方面,使用了消息队列来进行线程间的通信 以调用编号002;txt的动作组文件为例,整个系统的工作过程如下: 首先在内存卡按照既定格式准备好002.txt文件。然后插好内存卡,开启我们的开发板,利用串口调试助手,发送命令5F5FAA002 其中后三位代表动作组文件名,所以这也代表着最多能调用1000个动作组文件,完全够用了。前面六位是私有命令格式,目前没有开发其他,仅仅写了完全相同才会认可这一条消息。串口接收到消息以后进行验证,符合命令格式把文件名传递给文件线程去进行读取。文件线程会首先读取该文件的第一行,第一行的最后会约定好要读取的line数目,如图要去读6条line。之后把每一个line中的70字节数据发送给pwm线程。Owm线程接到一个消息后进行转换和执行,每个line末尾的四位数是延迟时间,一般来说,读取是一定比执行要快的,所以文件线程可能已经读完了所有的line,并把它们发送出来的。Pwm线程就逐个line执行延时,然后再去读下一个消息块。这就是大概的工作流程 #六 整体图片 ![image.png](https://oss-club.rt-thread.org/uploads/20220317/ea78d23027318fb1853a7f35e3363cc5.png.webp) [说明文档.pdf](https://oss-club.rt-thread.org/uploads/20220316/5c6c42510c7f78af81b597c89a6b0839.pdf) [视频演示b站链接](https://b23.tv/HmaVsPi) [开源仓库地址](https://gitee.com/ohk1565494473/pwm16ctrl)
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
马里亚纳砖头
keep hungry keep cold
文章
2
回答
2
被采纳
0
关注TA
发私信
相关文章
1
玩iot camera笔记之3测试试用3路pwm
2
[已解决]PWM输出异常分析
3
给RT-Thread添加PWM驱动框架
4
关于rt-thread-3.1.0 pwm
5
关于rt-thread的PWM框架在stm32f103vf应用的疑问
6
rt-thread stm32 bsp adc pwm 外设适配好了吗
7
stm32f103ze 添加pwm 设备失败
8
【正点原子】潘多拉IoT-STM32L475开发板 用menuconfig 看不到PWM....
9
关于rtthread 4.0.0版本中pwm的初始化定时器寄存器读写问题
10
RT-Thread正点原子战舰V3使用PWM设备驱动没有输出
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
xiaorui
1
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部