#训练营#ESP32数字示波器 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 #训练营#ESP32数字示波器

简介:ESP32S2作为主控的双通道1Msps采样率,带电池充电和供电的示波器

开源协议: MIT License

(未经作者授权,禁止转载)

已参加:简易数字示波器训练营

创建时间: 2024-03-04 20:28:11
更新时间: 2024-03-31 01:59:21
描述

特点介绍

  • 双通道,可同时采样
  • 采用2颗独立的ADCS7476AIMF/NOPB ADC芯片,最高采样率1Msps
  • ESP32s2为主控
  • 搭载板载天线,后续可增加PC通过WIFI充当上位机的功能
  • 板载3.7v锂电池充电、供电模块,通过TypeC口进行充电,可独立通过电池供电
  • 板载CH340X串口芯片,可通过TypeC口直接烧录程序
  • 输出口: PWM*1、I2C*1、或者GPIO*3, 可供后期扩展使用
  • 电子开关切换AC/DC耦合和1x/5x切换
  • 拥有4x轻触开关,2x旋钮编码器开关,目前用于调正PWM输出占空比和频率,以及耦合方式、量程切换,后期可更新更多功能

实现原理

使用电子开关替代训练营案例中的物理拨码开关

耦合方式和量程切换的开关,训练营采用了物理拨码开关。物理开关整体并不够优雅,而且由于开关必须靠近示波器探针接口,会大幅限制开关摆放的位置,不利于外壳设计,因此替换成了电子开关。
示波器探头的电压不固定,且可能产生负压的情况,因此只能使用信号继电器作为电子开关,并采用一个nmos管对继电器进行开关

使用1条SPI总线实现2颗独立ADC芯片的同时采样

可以直接使用SPI的2线数据模式(DIO),将MISO和MOSI都用于读取,2条数据线分别对应一颗ADC芯片,进行同时读取。但是按照此设置进行读取,收到的数据会是a、b两颗芯片逐比特交替的情况:
收到的是: abababababababababab 这样的32比特数据,但是需要拆成aaaaaaaa bbbbbbbb,这样的2个16bit数据
为了避免使用for循环逐比特处理(感觉太慢了),因此采用了2个lut查询表直接查询得到(具体请看源码)

使用方法和源码编译方法

示波器使用

右侧的2个编码开关,上方的一个为PWM输出占空比调节,下方为PWM输出调节频率
上方4个轻触开关,从左往右前两个分别为耦合方式切换和1x/5x切换,剩余的按钮目前未使用,预留给后期升级

源码编译

本示波器项目软件使用ESP32 IDF框架编写,直接使用IDF进行编译和烧录即可,界面部分使用LVGL绘制

制作过程中遇到的问题

通过PC烧录程序后运行正常,但是拔掉USB线重启机器后无法运行程序

这个的原因主要是因为对CH340X芯片的不熟悉,其中控制下载模式和普通模式切换的#DTR信号,跟芯片数据手册中的示例不一样,示例为STM32的,BOOT引脚极性跟ESP32相反,导致启动默认进入烧录模式,无法正常启动
 
该问题已在最新版工程中修复

ADC芯片工作异常

该问题是掉入了该芯片的数据手册的坑里了,数据手册中提到SPI发送协议为按照LSB的顺序逐比特发送,但是按照此顺序解析出来的电压由于比特顺序颠倒,导致采样数据完全随机,一度以为芯片故障。
 
最后反复排除快要放弃之前想到是否有可能是比特顺序的原因,重新按照MSB顺序重新读取和解码一切恢复正常。

电源开关开关时会产生频繁闪屏开关机

电源开关采用了自锁开关,开关过程中信号会多次在开启和关断之间切换,该开关通过一个pmos管控制电池的输出。该PMOS栅极直接连接自锁开关,忘记添加电容导致开关切换时供电不稳定
 
该问题新版本已修复
设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
序号 文件名称 下载次数
1

示波器项目.mp4

3
2

源码.zip

12
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP