打印
[活动专区]

[RISC-V应用邀请赛]基于CH32V103的便携式GFRP缺陷检测仪

[复制链接]
8946|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Litthins 于 2021-9-30 23:17 编辑
首届RISC-V MCU创新应用邀请赛参赛作品,《基于CH32V103的便携式GFRP缺陷检测仪》

检测仪基于南京沁恒CH32V103微控制器设计,采用CH9141蓝牙模块实现无线数据传输。仪器以玻璃纤维增强材料损伤检测和健康评估为典型应用场景,可有效检出普通绝缘材料外壁和带绝缘包覆层的金属材料外壁的常见浅表损伤,如胶合脱粘、鼓泡、渗水等典型形式。仪器采用3D打印双色喷漆外壳,外观如下图所示。
目前电容成像技术广泛采用交流激励方案。该方案一般包含激励信号源、微弱信号放大器、正交锁相器、信号采样及PC后处理;系统体积大,接线繁复不便携带。传统电容式无损检测探头,其设计容值一般在pF级,工作时信号动态变化范围小,对信号调理电路的要求高,接地屏蔽难度大、传输线寄生电容干扰的问题,也使其现场应用受到限制。本方案使用电容数字转换器AD7745替换交流激励方案中较复杂的信号处理系统,在牺牲部分穿透性能的条件下,解决了传统电容式无损检测探头易受环境干扰的问题。系统结构简图如下图所示。
仪器采用两节AA电池供电,通过BOOST芯片XT1861获得3.3V系统电压。搭配4个LED状态指示灯,分别用以提示电源状态、程序运行状态、蓝牙状态和调试状态。系统从中转节点接收用户指令,采集探头信号和环境温度信息(可选)并将相关信息上传到服务器,数据在Web网页端完成渲染和可视化。主要电路原理图如下图所示(关机状态电源PMOS未完全关断,待查)。
串口空闲中断有助于接收不定长字符串,配置很简单,看代码。
void BLE_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

/* USART1 Tx A9 Rx A10 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);

/* GPIO Init */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);

USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;

USART_Init(USART1, &USART_InitStructure);
USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

USART_Cmd(USART1, ENABLE);
}
3D打印喷漆:尝试组装零件,修配,喷漆后定位孔柱体积变大,用锉刀修了PCB。
实物动图:当前正通过CH9141与中转节点交换数据。左侧是仪器内部系统,正中心主控MCU为CH32V103;左上方绿色蓝牙是新版CH9141模块;右侧为USB串口转接蓝牙(CH330N+CH9141,原理图去年分享过了,感兴趣的朋友可以找找看)。蓝色部分是旧版CH9141模块,新旧模块在引脚定义上稍有不同,体现为RELOAD引脚从7脚改动到1脚,这点需要注意。
仪器开机后,中转节点有10秒时间连接蓝牙。若蓝牙超时未连接,则默认进入调试模式,此时仪器外壳DBG信号灯常亮。核心调度程序负责对用户命令进行判断,并调用下级子程序实现预定的功能。调度程序在主main()函数中while循环内以轮询的方式执行。用户命令以中断方式接收,中断内对全局标志变量进行修改。调度程序通过对标志变量进行检查,确认是否产生响应。部分流程见下图。
文字描述不直观,使用串口助手查看中转节点接收的数据,图示为只传输探头采样信号(无温度信息)的情况。
LabVIEW测试界面:用浅层玻璃钢圆孔对系统进行测试,试样为两层结构,上层包覆透明有机玻璃模仿浅表隐藏缺陷。图中左侧为试样,右侧为探头信号可视化界面,上方为动态波形显示,下方为立体成像图形。
网页操作界面:服务器端使用Flask框架实现,通过浏览器访问网页获取操作界面。界面如下图所示,个人觉得这个配色还是很不错的。界面左侧为参数控制,右侧为信号波形。
总结:CH32V产品文档很详细,参考官方开发板设计了新系统,画PCB加调试,整个流程很顺利。CH32V使用串口空闲中断接收不定长数据的实现方式极为简单,这一特性使系统在处理AT指令时更加方便,而且RXNE和IDLE标志位甚至不需要特意清除。CH9141蓝牙模块一直在用,新旧两个版本都用过,AT指令很简洁,上手也是非常快,推荐有条件的同学积极尝试!



使用特权

评论回复
沙发
两只袜子| | 2021-10-1 19:02 | 只看该作者
外形设计有特色啊哈哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

74

帖子

8

粉丝