zl程序教程

您现在的位置是:首页 >  其它

当前栏目

运动桁架下压力信号采集与处理

处理 信号 采集 压力 运动
2023-09-11 14:15:20 时间

简 介: 本文对于桁架运动过程中对来自于压力传感器变换器输出的模拟信号进行采集,验证整个机械系统运动和信号采集处理方面的功能。

关键词 运动桁架压力传感器ESP32

信号采集
文章目录
信号控制与
采集平台
基本情况介绍
ESP32控制端口配置
无线远程调试
信号采集与滤波
软件
采集到的数据
信号分析
总 结

 

§01 号采集


  运动的桁架下的压力传感器经过MIK-BSQW信号变送之后便可以达到单片机信号采集的范围之内。
  前期的工作包括有:

1.1 信号控制与采集平台

1.1.1 基本情况介绍

  运动平台控制采用了ESP32平台,预置了MicroPython软件,可以通过WiFi进行远程程序下载与开发。相关的资料包括:

1.1.2 ESP32控制端口配置

  下图为ESP32外部接口,具体参照 ESP32-S模块转接板设计与实现
▲ 图1.1 ESP32外部接口

▲ 图1.1 ESP32外部接口

(1)步进电机控制

  桁架运动驱动 SAMSR步进电机 uiys DM542完成驱动,控制整个桁架需要三个信号:

桁架控制信号:
步进脉冲PUL:GPIO2
运动方向DIR:IO17
机械位置SWITCH:IO16

▲ 图1.2  DM542步进电机驱动模块

▲ 图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.3 有人虚拟串口软件

▲ 图1.1.4 Thonny MicroPython 开发IDE环境

▲ 图1.1.4 Thonny MicroPython 开发IDE环境

  经过测试,使用STM32Bootloader进行WiFi开发的时候出现下载程序困难。相比较而言,还是使用ThonnyWiFi开发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.1 压缩一本书的过程

▲ 图1.2.2 采集到的数据

▲ 图1.2.2 采集到的数据

▲ 图1.2.3 采集的数据

▲ 图1.2.3 采集的数据

▲ 图1.2.4 采集到的数据

▲ 图1.2.4 采集到的数据

1.2.3 信号分析

  在采集到的压力信号中,反映了桁架运动所产生的对于下层挤压物体的压力。

  在 采集到的信号中,出现了周期性的往下的尖脉冲,它的来源是什么?猜测有两个:

  • 一个是由桁架机械运动产生的固定的抖动;
  • 另外一个是外部周期电信号所产生的干扰。

  对于上述采集验证可以通过后期对比实验来加以区分。比如只是采集信号,不再输出步进电机的运动脉冲信号,可以判断该信号是否跟机械运动有关系。

 

  结 ※


  文对于桁架运动过程中对来自于压力传感器变换器输出的模拟信号进行采集,验证整个机械系统运动和信号采集处理方面的功能。


■ 相关文献链接:

● 相关图表链接: