【银杏科技ARM+FPGA双核心应用】MicroPython系列十七:ADC实验

[复制链接]
719|0
 楼主| 如意不如意 发表于 2020-7-22 18:30 | 显示全部楼层 |阅读模式
本帖最后由 如意不如意 于 2020-7-22 18:30 编辑

一、实验目的
使用MicroPython ADC获取iCore3电压值、电流值,并通过串口发送给电脑。

二、实验设备及平台
  • iCore3双核心板点击购买
  • Micro USB线
  • 电脑

三、实验原理
STM32内部集成三个12位ADC,iCore电源经过分压电阻或者直接接入STM32的ADC通道,输入电流经过高端电流检测芯片ZXCT1009F输入到ADC的输入通道内,从而实现电源监控功能。
电压监控硬件连接示意图如下所示:
fetch.php?media=icore3:icore3_micropython_17_1.jpg

电压计算公式为:
VCC = (1 + R1 / R2) * ADC_IN
将R1=49.9K、R2=10K代入得:
VCC = (1 + 49.9K / 10K) * ADC_IN = 6 * ADC_IN
电流监控硬件连接示意图如下所示:
fetch.php?media=icore3:icore3_micropython_17_2.jpg

由ZXCT1009F原理可知:
ADC_IN = 0.01 * (VCC - LOAD) * R2
通过R1的电流:
I = 100 * ADC_IN / R1 / R2
将R1=0.02、R2=10K代入得:
I = ADC_IN / 2

四、实验步骤
  • 用数据线将iCore3的USB-OTG口与电脑相连;
  • 打开PYBFLASH磁盘,将代码包中的main.py文件替换到PYBFLASH的main.py,弹出磁盘;
  • 用数据线将iCore3的USB-UART口与电脑相连,将供电跳帽选择为UART供电,将iCore3重新上电,代码运行;
  • 打开串口调试器,选择端口号COM8(具体请在此电脑右击→管理→设备管理器中查看),波特率9600,数据位8,停止位1,校验位None。点击打开串口进行连接;

五、实验现象
串口调试器接收到iCore3发送来的电压、电流数据。
fetch.php?media=icore3:icore3_micropython_17_3.jpg

六、实验程序
  1. # main.py -- put your code here!
  2. from pyb import ADC, Pin, UART, delay  #导入库

  3. #定义串口4对象,波特率9600
  4. U4 = UART(4,9600)
  5. #创建AD电压监控对象
  6. adcV = ADC(Pin('C4'))
  7. #创建AD电流监控对象
  8. adcI = ADC(Pin('C5'))

  9. #求平均值函数,传入列表,返回平均值
  10. def av(l):
  11.     num = 0
  12.     for i in l:
  13.         num += i
  14.     return(num/len(l))

  15. #循环采集AD并通过串口发送
  16. while  True:
  17.     V = []    #创建列表
  18.     I = []
  19.     for i in range(2000):    #采样2000次,取平均值,减少数值波动幅度
  20.         V.append(adcV.read())
  21.         I.append(adcI.read())
  22.         delay(1)             #每2s发送一次数据

  23.     U4.write('\r\nHello! I am iCore3!\r\n')
  24.     #iCore3的基准电压为2.48V,精度为12位4096,数值保留两位小数
  25.     U4.write('ADV:'+str(round(av(V)*2.5/4096*6,2))+'V\r\n')       #发送电压值
  26.     U4.write('ADI:'+str(round(av(I)*2.5/4096/2*1000,2))+'mA\r\n') #发送电流值



代码包.zip (1 KB, 下载次数: 1)


您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

66

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部