运动桁架下压力信号采集与处理
简 介: 本文对于桁架运动过程中对来自于压力传感器变换器输出的模拟信号进行采集,验证整个机械系统运动和信号采集处理方面的功能。
关键词
: 运动桁架,压力传感器,ESP32
§01 信号采集
在运动的桁架下的压力传感器经过MIK-BSQW信号变送之后便可以达到单片机信号采集的范围之内。
前期的工作包括有:
1.1 信号控制与采集平台
1.1.1 基本情况介绍
运动平台控制采用了ESP32平台,预置了MicroPython软件,可以通过WiFi进行远程程序下载与开发。相关的资料包括:
1.1.2 ESP32控制端口配置
下图为ESP32外部接口,具体参照 ESP32-S模块转接板设计与实现 。
▲ 图1.1 ESP32外部接口
(1)步进电机控制
桁架运动驱动 SAMSR步进电机 uiys DM542完成驱动,控制整个桁架需要三个信号:
-
桁架控制信号:
-
步进脉冲PUL
:GPIO2
运动方向DIR
:IO17
机械位置SWITCH
:IO16
▲ 图1.2 DM542步进电机驱动模块
(2)模拟信号采集
来紫玉 压力传感器变送器MIK-BSQW 的模拟信号由ESP32的模拟端口采集。 ESP32 MicroPython 模拟采集端口 包括有Pin32 ~ 39。下面使用其中的GPIO36(转接板的PIN3(从左往右数))。根据 ESP32模块的MicroPython的基本实验 对ESP32 ADC的测试,可以看到 ESP32的ADC在输入信号 0 ~ 2.5V之内的输出呈现比较好的线性关系。使用 ADC.ATTN_6DB 对外部信号衰减后进行采集,输入电压范围是 0 ~ 2V。
1.1.3 无线远程调试
通过WiFi模块进行无线远程编程控制,可以方便在实验室中完成运行桁架的控制与数据采集,降低控制引线布局、电源供给以及信号干扰。
分别使用有人虚拟串口软件 将WiFi UDP的无线访问映射成串口,进而可以在Thonny软件中访问到该虚拟串口,完成软件开发。
▲ 图1.1.3 有人虚拟串口软件
▲ 图1.1.4 Thonny MicroPython 开发IDE环境
经过测试,使用STM32Bootloader
进行WiFi
开发的时候出现下载程序困难。相比较而言,还是使用Thonny
在WiFi
开发MicroPython
程序开发中表现良好。
1.2 信号采集与滤波
1.2.1 软件
开辟了全局数组,对于每毫秒采集到的ADC进行存储。
from machine import Pin,PWM,Timer,ADC
import time
led = Pin(5, Pin.OUT)
pulse = Pin(2, Pin.OUT)
dir = Pin(17, Pin.OUT)
limit = Pin(16, Pin.IN)
pulse.on()
dir.on()
adc = ADC(Pin(36))
adc.atten(ADC.ATTN_6DB)
STEP_MOTOR_NUMBER = 0
TimerCount = 0
def timerISR(t):
global STEP_MOTOR_NUMBER
global pulse,dir,limit,led,TimerCount
global adc,adcdim,adcpoint,adcnum
TimerCount += 1
if TimerCount >= 100:
TimerCount = 0
if led.value() > 0:
led.off()
else: led.on()
if STEP_MOTOR_NUMBER == 0: return
if STEP_MOTOR_NUMBER > 0:
dir.on()
if limit.value() == 0:
STEP_MOTOR_NUMBER = 0
return;
STEP_MOTOR_NUMBER -= 1
pulse.off()
pulse.on()
elif STEP_MOTOR_NUMBER < 0:
dir.off()
pulse.off()
pulse.on()
STEP_MOTOR_NUMBER += 1
if adcpoint < adcnum:
adcdim[adcpoint] = adc.read()
adcpoint += 1
tim0 = Timer(0)
tim0.init(period=1, mode=Timer.PERIODIC, callback = timerISR)
adcnum = 1024
adcdim = [0]*adcnum
adcpoint = 0
adcrefresh = 0
while True:
keys = input('Input:')
if keys.replace('-', '').isdigit():
number = int(keys)
STEP_MOTOR_NUMBER = number
abspoint = 0
abcrefresh = 1
absnum = abs(number)
while True:
time.sleep_ms(100)
if abcrefresh > 0:
if adcpoint >= absnum or adcpoint >= adcnum:
abcrefresh = 0
print(adcdim[:absnum])
print('\r\n')
time.sleep_ms(200)
1.2.2 采集到的数据
下图是进行压缩一本书的过程,采集所得到的压力传感器的数值。
▲ 图1.2.1 压缩一本书的过程
▲ 图1.2.2 采集到的数据
▲ 图1.2.3 采集的数据
▲ 图1.2.4 采集到的数据
1.2.3 信号分析
在采集到的压力信号中,反映了桁架运动所产生的对于下层挤压物体的压力。
在 采集到的信号中,出现了周期性的往下的尖脉冲,它的来源是什么?猜测有两个:
- 一个是由桁架机械运动产生的固定的抖动;
- 另外一个是外部周期电信号所产生的干扰。
对于上述采集验证可以通过后期对比实验来加以区分。比如只是采集信号,不再输出步进电机的运动脉冲信号,可以判断该信号是否跟机械运动有关系。
※ 总 结 ※
本文对于桁架运动过程中对来自于压力传感器变换器输出的模拟信号进行采集,验证整个机械系统运动和信号采集处理方面的功能。
■ 相关文献链接:
- 利用ESP32驱动控制步进电机驱动器:MS2806
- 山社电机: SAMSR -外部接口测试
- 压力传感器变送器读取数据测试:MIK-BSQW
- ESP32-S模块转接板设计与实现
- 基于USR-WiFi模块的 ESP32,ESP8266 Thonny调试器
- 利用WiFi模块实现MicroPython远程开发
- ESP32 MicroPython 模拟采集端口
- ESP32模块的MicroPython的基本实验
● 相关图表链接:
相关文章
- Java基础__Java中异常处理那些事
- 【Python3网络爬虫开发实战】3.1.2-处理异常
- redis队列处理文件并发(日志处理)
- PL/SQL异常处理(原创)
- 部署在SAP ABAP服务器上的SAP UI5应用的JavaScript文件,是如何被SAP UI5 repository handler处理的
- Android输入法弹窗导致背景变形处理
- 2种图像增强方法:图像点运算和图像灰度化处理
- 【自然语言处理】Python基于逻辑回归模型进行电影评论情感分析项目实战
- RabbitMQ --- 直连交换机 【 同步操作,等到消费者处理完后返回处理结果 】
- 全网多种方法解决由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求路由),服务器无法或不会处理当前请求的错误
- 自己定义Application的未捕获异常处理
- Linux系统下SSH服务启动失败故障处理
- Java 异常处理
- 关于c#:如何在不同的命名空间中处理相同的类名?
- Linux- 系统随你玩之--文本、字符串处理摸金校尉--RE
- 交换机关于进出报文VLAN标记的处理方式