5715|0

38

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【Silicon Labs BG22-EK4108A 蓝牙开发评测】 IV. 创建工程:通过蓝牙控制直流电机 [复制链接]

  本帖最后由 zhang1gong 于 2022-1-19 23:36 编辑

通过几天阅读资料恶补(Silicon Labs公司的资料:《UG103.14: Bluetooth® LE Fundamentals》《UG438: GATT Configurator User’s Guide for Bluetooth® SDK v3.x》《UG118: Bluetooth® Profile Toolkit Developer's Guide》等),算是对GATT、SSv5(Simplicity Studio 5)IDE环境下采用范例程序作为模板,并充分利用SSv5提供的工具后生成的程序架构有了基本的了解,准备在此基础上做一个通过蓝牙控制直流电机的工程。

 

1 基本思路

在各种电机中,直流电动机的控制(调速)相对简单:只要控制加到直流电机电枢上的平均电压就可进行调速(电机为恒定励磁)。BG22-4108A评估板引出了PWM接口(PB4)(其实可以用几乎任意管脚输出PWM信号,我用PB4管脚只是为了与评估板的设计一致),用PWM信号作为电机驱动电路的控制信号,通过改变PWM信号占空比(即每一开关周期的脉冲宽度),就可以改变驱动电路输出的直流电压平均值,达到调速的目的。

 

我做的工程打算实现最基本两种控制:电机的启动、停止控制和转速的调整。

 

2 创建工程

最终实现的工程中,BG22-4108A评估板将作为一个独立的部件实现BLE服务端(Service)功能,因此,选择范例工程“Bluetooth - SoC Empty”作为模板显然是十分合适的。在“EXAMPLE PROJECTS & DEMOS”标签中选择“Bluetooth - SoC Empty”创建工程,改个自己工程的名字。SSv5提供了强有力的工具,可以自动生成初始化代码(初始化代码往往繁琐、乏味且很容易犯错),并可提供一些基本的与MCU内的基本部件操作、管脚行为相关的代码,大大减轻编程工作量,我们应该充分利用这些工具。工程创建完成后,打开“xxx.slcp”(xxx为工程名),应用SSv5提供的工具做编程的准备工作。

 

1)配置软件部件、管脚

安装并配置PWM输出所需的软件部件“PWM”:Selected Module:TIMER1;CC0:PB04(BG22-EK4108A评估板上的PB4连接到“PWM”接口);OUTPUT channel:channel 0。为了通过串口输出调试信息,对比“soc blinky”范例工程,安装“IO Stream: USART(vcom)(使能其中的“Convert \n to \r\n”可以解决PC端显示换行不回车的问题)”(Services-IO Stream下)、“Log”(Application-Utility下)。软件部件配置完成后,可以进到“PIN Tool”中查看管脚的总体配置,并核实软件部件配置中涉及到管脚的部分是否正确。

 

 

 

2)配置GATT

改设备名字为自己所需的;添加一个Service,命名为“PWM”;在这Service下添加两个Characteristic,分别命名为“PWM Duty”(用于接收占空比数据)和“PWM Start”(用于接收电机启动、停止命令),设置其属性为“读”和“写”,设置ID分别为为“pwm_duty”和“pwm_start”便于编程时引用。

 

 

3)添加代码

添加的代码全部在“app,c”中。主要包括在文件前部添加‘#include "sl_pwm_instances.h"’,因为随后要在app.c中添加SSv5自动生成的PWM操作相关代码;最重要的是要在“sl_bt_on_event(sl_bt_msg_t *evt)”函数中添加所需的通过GATT中的Service接收数据的代码。为了便于在程序运行过程中观察其运行状态,在适当的位置添加诸如“app_log_info("Connection opened.\n");”“app_log_info("Duty Ratio = %d%%.\n", data_recv);”的语句,通过评估板的模拟串口向PC端发送信息,在PC端就可以通过模拟终端看到相应的信息了。

 

 

3 运行结果

编译、修改直至无错误,下载并运行。在PC端打开模拟终端;在手机上打开蓝牙,运行“nRF Connect”app,可以看到新生成的自己蓝牙设备:

 

连接设备后可看到“Unknown Service”以及下面的两个“Unknown Characteristic”,根据UUID可知,这正是新添加的服务。

 

 

通过对应的Characteristic向评估板写入信息,分别用来改变PWM的占空比和启动、停止电机。连接、断开设备或写入数据时,可在模拟终端上看到相应的信息。

 

 

为了驱动电机,临时搭了个简单的驱动电路,找了个带减速机构的电机,便于看清转速的变化。电机低速和高速的视频:

 

 

 

 

4 小结

“磨刀不误砍柴工”,花点儿时间阅读相关文献很重要。

逐渐熟悉SSv5后,越来越觉得这个开发环境不错。

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表