你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【外网项目分享】STM32 Blue Pill 物联网扩展板(下)

[复制链接]
STMCU 发布时间:2019-3-1 17:05
【外网项目分享】STM32 Blue Pill 物联网扩展板(上)



STM32现在是家庭智能网格兼容


什么是家庭智能网格?

正如在家庭智能网格Hackaday项目中所描述的,它是一个物联网网格框架,使用树莓派的定制射频传感器和中继器。它是开放源码的,可以与MQTT和OpenHAB2连接。

mesh协议被设计得足够简单,这样您就可以在空闲时间自己理解并调试它,同时还具有实用的功能级别。在这个洪水网格项目日志中有关于网格协议的更多细节

STM32的硬件支持

  • RF节点:已经在使用github STM32 RF节点项目上可用的源代码运行
  • RF PIO:用于PIO伺服控制的github固件也是如此

STM32应用程序

  • 加热器:固态继电器的pwm控制
  • 嗅探器:不是真正的射频嗅探器,而是协议嗅探器,因为它忽略了格式,但仍然必须坚持一个通道,这有助于查看请求和确认调试。
  • uart接口:

                  射频狗收集广播到网格中的信息
                  使用确认将目标消息加入到特定节点。请注意,确认是从目标到源的网格宽度,而不是像增强的Shockburst那样从一点到另一点。
现在,正如我们在下面几节中所看到的,STM32带来了使用ARM mbed的可能性以及它所带来的一切。


容易使用网格函数与ARM mbed和现代c++

在这里,我们可以从RF uart接口中找到充当RF加密狗的代码片段。在github上完成文件
//nRF Modules 1:Gnd, 2:3.3v, 3:ce,  4:csn, 5:sck, 6:mosi, 7:miso, 8:irq
RfMesh hsm(&rasp,           PC_15, PA_4, PA_5,   PA_7,  PA_6,    PA_0);
void rf_broadcast_catched(uint8_t *data,uint8_t size)
{
    switch(data[rfi_pid])
    {
        case rf_pid_0xF5_alive:
...
int main()
{
   hsm.init(CHANNEL);
   hsm.setNodeId(NODEID);
   hsm.attach(&rf_broadcast_catched,RfMesh::CallbackType::Broadcast);
...

  • 提供监听和发送的通道,这个通道是可以更改的,目前网格是在单个通道上运行的,这是根据通道集群和通道交换得来的特性。
  • 通过广播连接到一个网格事件

这里,我们有一个节点应用程序的代码片段,它使用公认的对等消息。在github上完成文件
void rf_message_to_me(uint8_t *data,uint8_t size)
{
    if(data[rfi_pid] == rf_pid_heat)
    {
        heat_val = data[4];//heat_val payload : Size Pid  SrcId TrgId  HeatVal CRC
...
main()
{
   hsm.init(CHANNEL);
   hsm.setNodeId(NODEID);
   hsm.attach(&rf_message_to_me,RfMesh::CallbackType::Message);
...

  • 附件是一个消息类型。
  • 由于节点id已经提供给了mesh驱动程序,因此只提供与目标节点id匹配的消息。
  • 确认传输也由网格驱动程序处理。

给自己弄个j-Link

像专业人员一样调试

  • 因为将低成本flasher和使用ST-Link和co混用,导致我我错失了调试得良好机会,
  • 为了获得ARM-M0和RF的单SoC,我不得不开始使用RE,所以我必须有一个闪烁器和调试器
  • 请注意,将ST- link更新为J-Link OB并将其与ST组件以外的组件一起使用是错误的。
  • 所以我决定用j-Link EDU

为什么是j-Link EDU ?

没有必要为诸如“它就是奏效的!”这样的理由争论太多。,这是真的,我试过了,也兼容了所有严肃开放的IDE,所以让我们更专注于比较

与ST-Link相比,j-Link提供的VTref输入可以感知目标电压,因此可以使用它自动化脚本。

注意,埃杜是相对便宜(60€)使用仅供爱好者和教育,但有一个对于皮层M更便宜的EDU-mini(16€)。

EDU比mini有更高的下载速度,支持更多的CPU变体。

它可以控制电源高达300毫安5V完全关闭目标,这是非常重要的测试自动化,因为它不同于复位。

它有一个虚拟UART,而不是从ARM cortext中提升,但是您可以使用外部UART保持您的ARM程序不被修改,并将其连接到调试器的外部插脚。

所以你可以试用,调试器,电源控制,电压传感和UART

segger设备的安全性正在提高,所以您不必担心在SW更新之后克隆会停止工作。

从这里去哪里

我将开始更新我的脚本和环境使用j-Link edu,我将打破与ST-Link实用程序的兼容性。

我将评估调试器接口Ecpilse和segger特定的

我将开始使用python包装调试接口,使其快速且可访问

感觉无刷直流速度和位置控制

实验设置
  • PS4操纵杆非常适用同时操纵多个变量,适用于实验,触摸板增加了位置参考的可能性。
  • 这里的树莓派不是BLDC控制所需要的,而是作为游戏杆的界面,加上它的开发环境更适合编程。
  • 虽然射频节点板内置了USB接口,但是USB软件集成起来比较复杂,而且使用内存,所以UART还有时间进行实验。USB到UART的连接也可以达到同样的效果。
  • RFPIO板用于伺服电机控制而不是无刷直流电动机,但它是一个很好的无刷直流电动机实验平台,因为它公开了PWM输出并具有无线电连接。
  • 无线电连接在这里用处不大,但它实际上是和非常重要的隔离介质之间的测试PC机和电机测试台。这种优势在这里没有使用,只是因为电源已经调节了电流。

注意安全:

使用带有实验控制器的普通电池是危险的,可能会导致测试台着火。使用保险丝、限流电源或可靠的控制器。

  • 一个便宜的逻辑分析仪在使用的模式下,与Saleae logic SW一起工作,这是一个伟大的和经济的分析组合。
  • 来自eBay的L6234D使用了一个商业化的模块,但是这个模块没有提供太多的选项,因为所有的支持都是连接在一起的,并且没有感应电阻。所以这只能在开电压回路中控制。

演示

这个演示中有趣的部分不是第一次旋转bldc的革命,而是:

  • 在不同的环境中集成这么多小的SW协议
  • 通过直接操纵多个变量并在逻辑分析仪上观察脉冲,人们可以感受到无刷直流电动机是如何工作的

开环控制:BLDC =步进电机

  • 在不考虑转子位置的情况下,改变每个线圈的电压总是可能的。
  • 如果电压不足以处理扭矩,这肯定会导致步骤的缺失。正如在BLDC中步骤是巨大的一样,错过它们会造成伤害,并且不会被忽视。
  • 解决的办法是增加电压,但是你浪费的能量不是转矩,而是保持电机的位置。由于没有反作用力,电机处于静止状态时,电流要大得多。
  • 在这里使用的无刷直流电动机消耗约50毫安,转速很少每秒和高达180毫安在停止位置与7.2伏特。

控制参数

每一个关于BLDC控制的新视频或图表都能让我理解更多的东西,这就是为什么尽管互联网上有大量的文档和教程,为什么不添加另一个简单的视图。

  • 速度在应用下一个电角度位置之前作用于延迟,注意最大命令更新频率小于pwm信号频率,否则无效(图中两者的比例不相同)。
  • 电压增加了脉冲宽度。虽然这里只显示了一个pwm信号,但是这3个信号的宽度脉冲都是成比例地增大和减小的。
  • 从软件的角度来看,这个位置甚至更简单,因为你只需要根据手指在触控板上的移动比例增加或减少电角度。每个角度的正弦信号被用来定义相应电桥的脉冲宽度。
软件

抱歉把源代码作为图片,但源代码插件是如此菜了,代码几乎无法阅读,所以我保持VSCode的颜色。

神奇的地方就是,角度为int,让它更简单,我甚至不使用一个合适的单位作为放射微粒或学位,而256°256/360单位适合表窦porecessed一旦和存储为查找。


当M3以72MHz运行时,对浮点数的实时计算花费了7.2 us,而这里的查找函数只花费了大约1 us,所以对于50 us pwm周期= 20 KHz(最大控制刷新率)来说,这仍然是值得的。


请注意,L6234D可以高达150千赫从死开关时间的观点。


我使用mbed-os作为开发环境,为什么要这么复杂的使用它呢?
PwmOut pwm1;

pwm1 = 1;

这很利于开箱即用的配置和初始化。它可以为您做任何事情,从cmsis HAL api调用到计算应该将哪些引脚分配给哪些替代函数。它配置pwm模式,所有堆栈都要经过赋值运算符的重载,这会使函数时间从微秒变为毫秒。

这就是为什么寄存器的直接使用是围绕一条指令的。

信号

  • 我们可以在逻辑分析仪上看到中心对齐的pwm信号。
  • 注意,频率显示为10khz,而不是上面提到的20khz,这是正确的,因为将两个脉冲粘在一起可以将变化减少一半。


结论

一旦你同时控制了速度和电压,你就能更好地了解电机什么时候停了,什么时候没踩踏板,你可以按住它,施加更高的电压,看它什么时候能克服施加的扭矩。这不是科学,但是可以让你更加随意的处理其他科学公式。

下一步是查看扭矩控制回路,然后可能是反电动势监控,为BLDC设计一个特定的扩展板,并在面向现场的控制视频前进行冥想。但可以肯定的是,对于我的倒立摆移动机器人的计划来说,这种控制已经足够了。

即将到来&创意

带有传感器的射频节点已经启动并运行,RFPIO已经启动并运行,是时候考虑下一步应该做什么了。

  • 超声制图采用多种低成本HC-SR04或05

             实验见hello_超声样本。
             扩展板应该为多个超声波传感器提供准备就绪的连接输出
  • BLDC:经过很长时间的犹豫和反射后,一个严重的跳跃机器人操场不能绕过电机控制

             使用L6234 PowerSo20模块或稍后一些较低的电流L6234直接浸在同一块板上。
  • 只使用伺服:x24引脚和x12伺服的RFPIO双使用不是只使用伺服的最优尺寸,也许另一种最优的布图对于一些疯狂的多伺服项目会更方便。



来源>>
收藏 评论0 发布时间:2019-3-1 17:05

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版