应用例程:通过单片机A/D转换器读取模拟量


基本信息

基于STM32F103RCT6核心板,通过单片机自带的A/D转换器读取电位器的电压后,在OLED屏上显示出来。

视频下载

暂无

实验硬件

STM32F103RCT6核心板(1块)[ 购买 ]

CH340E通讯小板(1块)[ 购买 ]

Micro-USB通讯线(1根)[ 购买 ]

OLED屏SSD1306(1块)[ 购买 ]

可调电位器模块(1块)[ 购买 ]

电路参考

  • CH340E通讯小板通过Micro-USB通讯线连接到电脑。
  • CH340E通讯小板的GND连接核心板的GND、+5V连接核心板的V5、串口TX、RX分别连接STM32F103xC核心板的RX、TX。
    CH340E通讯小板GND----GNDP4端子STM32F103xC核心板
    +5V----5V
    TXD----RX
    RXD----TX
  • 液晶屏插入STM32F103xC核心板的P5端子。
    OLED屏SSD1306GND----GNDP5端子STM32F103xC核心板/td>
    VCC----V3
    D0----PB3
    D1----PB5
    RES----PD2
    DC----PA15
    CS----PC12
  • 可调电位器模块连接STM32F103xC核心板
    可调电位器模块OUT----PA4P1端子STM32F103xC核心板
    VCC----V3P3端子
    GND----GND

关键配置说明

添加蓝图Eio,添加Adc_Eio模块,在Channel节点下面添加A/D转换通道Channel0,设置硬件转换通道为ADC_Channel_4,对应的单片机管脚是PA4,设置转换速度为239.5个ADC时钟。

在信号滤波器中,可以设置数值换算和数字滤波参数。

数值换算:

  • 单片机自带的A/D转换器是12位精度,采样数据范围是0~4095,对应的电压是0~3.3V。这里设置乘数是3300,除数是4096,那么3.3V对应的读数就是:4095 x 3300 / 4096 = 3299。

数字滤波:

  • 第1级滤波是平均值滤波,每4次采样后求一次平均值
  • 第2级滤波是权重滤波,求出的平均值在当前结果的权重中占8/128,即1/16。
  • 第3级滤波是循环队列滤波,队列中记录64个最近的值,读数据时,求队列中所有数值的平均值。

在Eio_Fe中添加一个数据通道Channel0,操作的数据通道是Adc_Eio模块的Channel0。通道中读取的数据写入PLC变量AIW0。

在Application Editor中,创建一个Tiny LCD系统扩展K1,页面0中添加一个变量:

变量对应的PLC变量是AIW0,字符宽度是6位,带3位小数。

实验步骤

将配置上传到服务器,固件下载到STM32F103xC核心板后,将梯形图也下载到核心板;旋转电位器,观察OLED屏上显示电压的变化。

指令说明

相关下载