加入交流群  

扫一扫,添加管理员微信
备注:参考设计,即可被拉入群
和也在搞设计小伙伴们碰一碰

收藏 

评论 

ohahaha 发布

【ART-Pi】智能窗户电机控制器扩展板+272650A

 
设计简介

早就耳闻RTT大名,但是一直没有机会接触。趁着这次机会,正好能够增加一项技能。据说RTT的软件包可以很方便的接入阿里云等平台,于是决定顺便抱着学习RTT的态度参加这次活动。 计划使用RT-Thread的软件包接入阿里云,并且控制推窗器推杆电机正反转,实现窗户智能化控制。实测之后发现AT8870能提供的电流还是太小,即便是在无负载的情况下也无法完全驱动推杆,所以视频演示只能用一个小电机来做了。有机会再做一个继电器版本的来控制推杆。

原本就设计了温湿度传感器,结果涂鸦第二期训练营正好同时开营,而且还是主推MCU开发模式,真是太巧了,和ART-Pi活动配合的天衣无缝。于是临时更改设计,预留了涂鸦模块的位置,一个板子参加两个训练营吧,两边侧重点不同。

本项目迭代了两个硬件版本。 第一版: L298N H桥芯片+钮子开关双电源切换+温湿度传感器+光照传感器+双光耦。 第二版: AT8870 H桥芯片,移除钮子开关,增加OLED接口和位置,移除光照传感器。移除一个光耦。增加三个按键。

1. 电源

因为电机需要24V输入,电源方案: 电源从扩展板输入24V,通过扩展板的板载TPS54331将24V转为5V,然后通过P1的+5V_USB引脚向ART-Pi供电。24电源DC口设计了过压、过流保护电路。 电源方案也有较大的改动,由于取消了原先的钮子开关,后来发现还是应该在5V增加一个防倒灌二极管,这样才能单独使用底板供电。于是飞了一个上去。 24-5V电源芯片介绍:

2. 电机驱动

电机驱动使用了单通道H桥电流控制电机驱动器AT8870。特点:

  • 宽电压供电,6.5V-38V
  • 低RDS(ON)电阻
  • PWM电流整流/限流
  • 支持低功耗休眠模式
  • 过温关断电路
  • 短路保护
  • 欠压锁定保护
  • 自动故障恢复
  • 3.6A峰值驱动输出,2A持续输出能力

原计划使用了电子推杆,直接给24V即可驱动,正负极换向即可反方向运动。结果测试过程中Boom了一个AT8870,看来AT8870驱动能力不够,所以demo改为驱动小电流的电机,用来拉个窗帘或者卷帘还是OK的。 AT8870.png最重要的是,当无底板的时候,也可以把它当作一个独立的电机驱动板来用!!

3. 雨滴检测

板子到了以后发现我选错了封装,用了一个1.5间距的排针...这个货就是比2.54mm间距的贵很多,手头还没有这个间距的排针。暂时就不做雨滴检测测试了。

5. 温湿度检测

没有使用常见的SHT31,而是使用TI的HDC1080DR,而且它更便宜啊。最终把它设计到板子右上角,通过槽孔隔离,底层通孔开窗,尽量减少板子自身发热对温度测量的影响。 image.png

5. 按键

  1. 关窗按键:按下会进入关窗操作(旋转电机),中间再按可以暂停,然后再按继续完成余下关窗操作。同时屏幕会显示正在关窗。
  2. 开窗按键:按下会进入开窗操作(反向旋转电机)。操作逻辑同上。同时屏幕会显示正在开窗。

6. OLED 显示

image.png 显示内容:

  • 时钟(使用了STM32H750的硬件RTC,使用了NTP功能定期同步时钟)。
  • 窗户状态
  • 开关状态
  • 实时天气(使用了高德天气API)
  • 室内温湿度(板载HDC1080提供)
  • 按键的时候提示正在开窗还是关窗 OLED驱动芯片为SSD1315,全局刷新模式。初始化代码和网上流行的的略有差别。

Note:

  • RTT和RTT Studio第一次接触,肝了好多天,终于一次性搞定所有代码。
  • 第一次尝试使用多页原理图。还算顺利。

原理图所有阻容均支持嘉立创SMT基础库。

blockdiagram.png

软件设计

  • 软件工程由RT-Thread Studio中创建。
  • 项目充分利用了RT-Thread的多线程特性,使用事件来实现线程之间的相互通讯。
  • 项目使用了RT-Thread自动初始化的特性,所以在main()中基本看不到其他初始化函数。
  • RT-Thread 版本: 4.0.3
  • RT-Thread Studio 版本: 2.0.0

此版本与涂鸦版本在软件上有很大的区别。天气信息获取、时钟同步、云平台等都有很大的不同,这个版本更多利用了RT-Thread操作系统自身的线程来访问网络以及相互协同工作。

关于时钟

本项目使用了STM32H750的硬件RTC,通过NTP进行时钟同步。而且我发现了一个奇怪的现象,一旦我操作电机之后,drv_rtc.从里面的return mktime(&tm_new);会返回一个错误的数据,寄存器出来的值是对的,但是mktime返回的时间戳就不对了!后来我只好重写了一个函数:void app_read_rtc(struct tm *timeinfo),直接传指针进去,反正我不需要时间戳,我需要的是日期和时间。

关于天气

我实现了自动根据IP来查询本地天气。

天气免费API其实有很多,免费的比较推荐和风天气和高德。本项目最后采用了高德的免费天气API。使用的时候请自行使用源代码中的宏定义写入自己的API KEY。 关于天气归属地,我还是用了一个免费的API来获取IP地址的归属地,然后根据归属地自动获取当地天气,缺点是只能精确到市一级。代码中还可以自定义默认的归属地(本例中是余杭区),在归属地API无法获得信息情况下,根据默认的归属地查询天气。

关于阿里云

RT-Thread的一大特点是有各种软件包。但是阿里云的软件包虽然可以连上服务器,但是配网部分我的测试结果是那部分没有移植完成,如果启用了配网,是无法通过编译的。所以设备就无法通过阿里的“云智能”进行配网和绑定设备,无法接入智能生活平台使用。最后只能绕道使用阿里物联网平台和IoT Studio,做了一个手机H5页面来进行控制,速度响应会比app控制慢一些,但是仍然完成了本项目所需要的显示和控制。

关于OLED驱动和硬件I2C

一开始先尝试了RT-Thread的u8g2软件包,确实能很快驱动OLED屏幕。但是它使用了GPIO模拟I2C,却没有使用RT-Tread的软件I2C框架,而我的两个I2C设备都挂在这个I2C总线上,修改起来很麻烦。于是放弃软件I2C,改用硬件I2C,然后毫不意外遇上了传说中的STM32 I2C锁死问题,通过重新初始化解决。 驱动OLED遇到了很多问题,一开始使用局部刷新方式,但是会随机出现一些部分错位。然后改用全局刷新,却在开机的时候垂直错位4个bit。然后debug了很久,通过修改offset设置修复。但是发现运行久了还是会逐渐发生错位。这是一个很奇怪的现象,在其他芯片上没出现过这种问题。可能与I2C锁死的处理方式有关?需要进一步检查。

我还曾经尝试使用硬件I2C + DMA,折腾了2天之后才发现ART-Pi引出的I2C4只支持BDMA,而BMDA只能访问SRAM4,如果要使用DMA就要把buffer存放或者映射到SRAM4,这个...在CubeMX里面操作还比较麻烦,需要修改LD文件。于是暂时放弃。

关于HDC1080

HDC1080的调试也花了不少时间,最开始也曾经尝试使用RT-Thread的HDC1000软件包(与HDC1080兼容)。但是RTT注册了软件I2C1之后,软件包在初始化设备的时候却提示找不到i2c1。于是放弃。软件包使用了传感器框架反而使得初始化和访问变得很复杂。 改用硬件I2C之后,由于HAL进行了I2C读写封装,如果HDC1080直接使用HAL_I2C_MEM_Write()会导致测量命令发送失败,读取温湿度也失败。网上资料很少,最后终于从国外网友的一篇帖子里面找到灵感,解决了它的读取问题。

源文件简要说明:

├─applications
│  ├── amap_weather.c   //高德天气API相关
│  ├── amap_weather.h
│  ├── app_event.c      //事件和全局变量
│  ├── app_event.h
│  ├── app_oled_hwi2c.c     //OLED硬件I2C驱动
│  ├── app_window_control.c //电机控制相关
│  ├── linkkit_solo.c   //阿里云相关
│  ├── main.c
│  ├── oled.c           //OLED显示相关
│  ├── oledfont.h       //OLED字体相关
│  ├── oled.h
│  ├── sensor_hdc1080.c        //温湿度传感器相关
│  └── SConscript

|

Github地址

Github项目地址

图片

第二版实物 手机APP
2_1.jpg app.jpg

最后的建议

  1. 尽量还是做一个电机部分的电源隔离,否则可能会对OLED显示产生干扰。
  2. 如果不隔离,至少要增加一个扩展板5V输出防倒灌二极管。
  3. 如果使用推杆这类无需调速的应用,还是继电器最佳。
参考设计图片
×

!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。

 
相关器件
器件 类型 描述 数据手册
1206B475K500NT 贴片电容 精度:±10% 容值:4.7uF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
CC0603KRX7R9BB104 贴片电容 精度:±10% 容值:100nF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
CL10B822KB8NNNC 贴片电容 精度:±10% 容值:8.2nF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
CL10B122KB8NNNC 贴片电容 精度:±10% 容值:1.2nF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
CL10C100JB8NNNC 贴片电容 精度:±5% 容值:10pF 额定电压:50V 温漂系数(介质材料):C0G 材质:C0G 点击下载
CL10A226MQ8NRNC 贴片电容 精度:±20% 容值:22uF 额定电压:6.3V 温漂系数(介质材料):X5R 材质:X5R 点击下载
CC0603KRX7R9BB104 贴片电容 精度:±10% 容值:100nF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
CC0603KRX7R9BB104 贴片电容 精度:±10% 容值:100nF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
DV221M050G105ETR 贴片型铝电解电容 容值:220uF 精度:±20% 额定电压:50V 105℃,Low impedance 点击下载
CL10A106KP8NNNC 贴片电容 精度:±10% 容值:10uF 额定电压:10V 温漂系数(介质材料):X5R 材质:X5R 点击下载
HX15001-4A 线对板/线对线连接器 俗称: ZH1.5 点击下载
XH-2A 线对板/线对线连接器 针脚数:2 连接器类型:针座 触头类型:公形引脚 间距:0.098"(2.50mm) 系列:XH 点击下载
BZT52C27 稳压二极管 精度:- 稳压值(典型值):27V 反向漏电流:100nA @ 18.9V 最大功率:500mW 27V,0.5W 点击下载
SMBJ33CA TVS二极管 极性:Bidirectional 峰值脉冲电流(10/1000us):11.3A 箝位电压:53.3V 击穿电压(最小值):36.7V 反向关断电压(典型值):33V VBR=36.7V VC=53.3V IPP=11.3A 双向 点击下载
SS54 肖特基二极管 直流反向耐压(Vr):40V 平均整流电流(Io):5A 正向压降(Vf):550mV @ 5A 40V,5A,VF=0.55V@5A 点击下载
M7 通用二极管 直流反向耐压(Vr):1kV 平均整流电流(Io):1A 正向压降(Vf):1.1V @ 1A 点击下载
826629-2 排针排母 针脚数:2 连接器类型:排针 排数:1 触头类型:公形引脚 间距:0.100"(2.54mm) 排针 2P 2.54mm 点击下载
KF300-5.0-2P 螺钉式接线端子 点击下载
MT-0-103-A101-M200-RS+PJ 钮子开关 点击下载
SMMS0630-6R8M 功率电感 精度:±20% 额定电流:- 直流电阻(内阻):- 电感值:6.8uH 6.8uH/5.1A/44.3mΩ,一体成形大电流金属磁屏蔽功率电感 点击下载
19-217/GHC-YR1S2/3T 发光二极管 照明颜色:绿色 主波长/色坐标:520~535nm 色温 - CCT(K):- 点击下载
19-217/BHC-ZL1M2RY/3T 发光二极管 照明颜色:蓝色 主波长/色坐标:465~475nm 点击下载
WJ128V-5.0-2P 螺钉式接线端子 点击下载
杜邦2.54-1P 压线端子胶壳 针位数:1 排数:1 系列:- 公母:- 间距:0.059"(1.50mm) 行距:- 点击下载
0603WAF2000T5E 贴片电阻 阻值(欧姆):200 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0603WAF3303T5E 贴片电阻 阻值(欧姆):330K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0603WAF6802T5E 贴片电阻 阻值(欧姆):68K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0603WAF3002T5E 贴片电阻 阻值(欧姆):30K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0603WAF3001T5E 贴片电阻 阻值(欧姆):3K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0603WAF1002T5E 贴片电阻 阻值(欧姆):10K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0603WAF2002T5E 贴片电阻 阻值(欧姆):20K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0603WAF3300T5E 贴片电阻 阻值(欧姆):330 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0603WAF4701T5E 贴片电阻 阻值(欧姆):4.7K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
0603WAF1001T5E 贴片电阻 阻值(欧姆):1K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
1206W4F100LT5E 贴片电阻 阻值(欧姆):0.1 精度:±1% 功率:1/4W 温度系数:±800ppm/°C 点击下载
HDC1080DMBR 温湿度传感器 湿度范围:0 ~ 100% RH 温度范围:- 精度:±2% RH 传感器类型:Humidity, Temperature 输出类型:I²C HDC1080是一款数字温、湿度传感器,工作电压2.7V至5.5V,IIC接口。 点击下载
TPS54331DR DC-DC芯片 可输出电流:3A 开关工作频率:570kHz 输出类型:Adjustable 输出电压的路数:1 功能类型:Step-Down 输出配置:Positive 点击下载
HJ-Wifi-IPEX1-1.13-L110mm 天线 点击下载
TLP521-2GBSM 光耦 输入类型:- 通道数目:2 隔离电压:5300Vrms 产品类型:晶体管输出 - 点击下载
L298N 电机驱动 双全桥驱动IC 点击下载
BH1750FVI-TR 环境光传感器 数字16-bit I2C串行输出,环境光传感器,工作电压:2.4V~3.6V 点击下载
TS-KG01T-ART43F 轻触开关 点击下载
SMD2920B200TF/24 PTC自恢复保险丝 材料类型:- 最大电压:24V 跳断电阻值(Max):125mΩ 跳闸电流:4A 最大动作时间:5s 点击下载
群聊设计,与管理员及时沟通

欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。

 
查找数据手册?

EEWorld Datasheet 技术支持

论坛推荐 更多
更新时间2024-11-09 07:05:23

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

EEWORLD参考设计中心

站点相关: TI培训 德州仪器(TI)官方视频课程培训

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

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