新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于MSPM0G3507的非接触门禁控制系统

基于MSPM0G3507的非接触门禁控制系统

作者:lulugl 时间:2025-01-20 来源:EEPW 收藏

1   项目简介

本文引用地址:https://www.eepw.com.cn/article/202501/466478.htm

在一些特殊的场所,比如传染病病房、手术室等需要严格区分污染区与非污染区的场景,对于非接触来替换一些按键等,就非常有意义。本项目是通过手势传感器来控制隔离门禁的案例。

控制端在正常接收到门禁端的状态信息后,获门禁位置信息,同步显示到OLED 屏上。当手势传感器捕捉到指定动作后,通过CAN 总线发送手势指令。

门禁端在启动后执行自检,将起点到终点的位置检测好,并把运行一次的时间打包通过CAN 总结发送出来。门禁端在接收到指令后,与本身的位置相结合,执行相应的指令。通过PWM 来产生指定频率的脉冲驱动步进电机,通过DIR 高低电平设置来改变电机运行方向,通过滑台来实现门禁的打开与关闭功能。

实现功能,手势向上,关闭门禁,手势向下,打开门禁,手势下压,急停。

2   硬件结构图

1737348244363568.png

1.1 Bom表(写明器件型号);

image.png

1.2 软件开发:

【开发平台】

Code Composer Studio Version: 12.7.0.00007

【外设的配置】

本项目主要的外设由IIC、PWM、CAN 来驱动。

1.1.1 IIC 的配置

配置为1M 的速率,同时开启收接中断,配置发送与接收的缓冲区。

1737349319860761.png

1.1.2 PWM的配置

选择pwm0,以及通道0 为输出,配置输出1KHz的输出波形,占空比50%。

配置输出的IO为PB0

1737349419733440.png

1.1.3 CAN的配置

配置仲裁速率为250K,数据传输速率为2M。

1737349454208931.png

选择RX为PA13,TX为PA12

1737349495484449.png

保存后生成工程。

【公共代码】

CAN发送与接收代码

1.CAN接收中断函数的实现:

image.png

代码中如果有CAN 的数据接收,则更新接收标志

gServiceInt。

在主循环中判断接收接收标志位,如果为真则调用数据处理函数

image.png

image.png

在数据处理函数中,如果是门禁端,则判断是否为命令的ID,如果是则根据命令设置电机运行方向:

image.png

image.png

在控制端则对接收的ID 进行判断,并进行数据解析:

image.png

image.png

CAN发送:

在进入主循环中,先对CAN的数据进行初始化:

image.png

image.png

【PWM】

在pwm代码方面只需要启动或者关闭定时器就行了。

image.png

image.png

【IIC 驱动】

在工程中添加i2c 的驱动封装i2c_app.c/h

1737349808208842.png

这个驱动封装了读写两个驱动,可实现与硬件低层的解耦。具体代码见附件。

1737349838768886.png

【OLED】

使用公有的OLED 驱动库,只需要封装OLED_WR_Byte 即可实现驱动的移植。

image.png

手势传感器有现成的驱动库,我这里只需要添加iic的读写驱动即可。

【PAJ7620 手势传感器】

PAJ7620 移植驱动,与OLED 一样也只需要重写读写函数即可以完成驱动的移植

image.png

image.png

以上是主要代码的介绍。

【程序流程图】

门禁端

image.png

控制端

1737350048469611.png

3   项目总结

本项目主要是在利用Ti 的G3507 这颗优秀的MCU 来实现特殊环境下的无接触的门禁控制,可以实现多点对一点控制,一对多的数据交互。

整个项目的亮点就是G3507 拥有80M 主频, 搭载了FDCAN 高速总线, 可以轻松实现多个MCU 的组网,相比传感的485 的总线组网有质的提升,FDCAN 总线可以实现多对多的组网。同时这个MCU还有高速的IIC 总线,可以实现一路IIC 驱动多个如OLED、PAJ7620 的外设。

同时使用了G3507 的PWM 外设,可以精准的驱动步进电机。实现如门禁等电机控制场景。

(本文来源于《EEPW》



评论


相关推荐

技术专区

关闭