站内搜索
发作品签到
专业版

#训练营#跟随立创训练营学习简易示波器制作

工程标签

1.2k
0
0
0

简介

跟随立创训练营:简易数字示波器项目,学习从硬件设计、软件设计到产品制作的整套流程

简介:跟随立创训练营:简易数字示波器项目,学习从硬件设计、软件设计到产品制作的整套流程
简易数字示波器训练营

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-03-05 08:43:46更新时间:2024-04-03 18:00:07

描述

使用GD32最小系统开发板作为核心,随训练营进度一同学习制作简易数字示波器!正好手边有一些用得上的贴片元件,就索性在原设计基础上,将元件尽可能贴片化,同时为了能进入进阶区,使用CD4052模拟开关将手动换挡改为自动换挡,根据输入信号的幅值自动切换到适合的档位。

先上一组立创EDA的3D效果图及实物图,看看全程通过立创EDA设计的所见即所得的惊人效果。

立创EDA的3D效果图:

实物图:

微信图片_20240401093630

通过这次训练营的学习我希望能对产品设计制造一整套流程有所了解,下面通过我的描述,让大家了解我的学习过程,验收我的学习成果并指正我的错误!

我理解电子产品设计流程:

第一步进行需求分析。我们要做的是简易数字示波器,那么就需要确定一个简易数字示波器的几个构成单元;

  1. 供电部分;
  2. 输入信号采集;
  3. 数据处理;
  4. 人机交互。

第二步针对需求逐步进行硬件设计。这里因为是跟随训练营一同学习并进行设计,就做一个简单展示及介绍。

(1)输入信号采集。

输入信号采集通过模拟前端处理电路实现,模拟前端处理电路又由输入交直流耦合切换电路、输入信号衰减电路以及信号调理电路所组成。

输入交直流耦合切换电路:(完全复刻训练营电路)

输入信号衰减电路:(更改原设计,采用CD4052模拟开关)

信号衰减是通过电阻串联分压实现,我在这里设计为三级分压电路(×1、×0.1和×0.01)

CD4052模拟开关,直接查阅芯片数据手册(这是一个很重要的东西!可以理解为产品说明书,所有需要的一切信息都能在其中找到),电路同样采用手册中的经典电路。

这里将手册中的真值表截取出来(真值表很有用!涉及程序逻辑和芯片控制)

信号调理电路:(完全复刻训练营电路)

到此,输入信号采集电路就基本完成,但是作为示波器,我们不仅要测出信号的电压,还需要测量信号的频率,所以训练营提供的硬件电路中还有测频电路。

(2)比较器测频电路。

(3)数据处理电路。(GD32最小系统)

这一部分,我理解为整个硬件系统的核心,往前对接前端信号采集电路采集转换之后的电压及频率数据;往后对接显示屏、指示灯及按钮等人机交互硬件。

因训练营开营导致开源项目所使用的GD32最小系统板脱销,原计划使用STM32F103C8T6最小系统板作为核心板,但巧合开营活动留言评论抽盲盒抽到GD32核心板(泼天富贵),故最终还是使用GD32最小系统板做核心板。

秀一波活动盲盒内容:

核心板实物:

微信图片_20240403133824

信仰之尺:

微信图片_20240403133832

GD32核心板电路:

(4)人机交互(复刻训练营电路)

(5)供电电路

我把供电电路放在整个硬件设计的最后部分,只有前面所有功能电路确认之后,供电电路才能良好设计,通过前面各功能模块确认,我们整个硬件所需电源包括:+5V、-5V及+3.3V。

其中:+3.3V可以通过GD32核心板已有5V转3.3V实现,故可以不用额外设计。

+5V通过USB供电可得,故仅需设计开关电路及-5V电压电路。训练营中也有提供,复刻过来如下:

第三步编写单片机程序。因为使用了训练营同款GD32核心板,所以也就偷懒用了官方提供的开源程序,仅增加了模拟开关CD4052控制及自动换挡逻辑代码。

首先,创建CD4052控制代码文件(.C及.H文件)

#include "CD4052.h"

#include "led.h"

 

/*-----------------------------------

*   函数内容:初始化CD4052通道选择引脚

*   函数参数:无

*   返回值:  无

-----------------------------------*/

void Init_CD4052_GPIO(void)

{

    //使能时钟

rcu_periph_clock_enable(RCU_GPIOA);

    //设置输出模式,不上下拉

    gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, CD4052_A0);

    //设置输出模式,不上下拉

    gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, CD4052_A1);

    //设置输出类型,推挽输出,50Mhz

gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, CD4052_A0);

    //设置输出类型,推挽输出,50Mhz

    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, CD4052_A1);

    //默认CD4052的Y2路导通

CD4052_Channel(Y0);

}

 

/*------------------------------

*   函数内容:切换CD4052导通通道

*   函数参数:无

*   返回值:  无

------------------------------*/

void CD4052_Channel(uint8_t value)

{

    switch(value)

    {

        case 0:

//Y0通道,将控制脚A0,A1均置0

            gpio_bit_reset(GPIOA,CD4052_A0);

gpio_bit_reset(GPIOA,CD4052_A1);

//控制对应灯变化

CLose_LED(led2);

CLose_LED(led3);

            break;

 

        case 1:

//Y1通道,将控制脚A0置1,A1置0

            gpio_bit_set(GPIOA,CD4052_A0);

gpio_bit_reset(GPIOA,CD4052_A1);

//控制对应灯变化

Open_LED(led2);

CLose_LED(led3);

            break;

 

case 2:

//Y2通道,将控制脚A0置0,A1置1

            gpio_bit_reset(GPIOA,CD4052_A0);

gpio_bit_set(GPIOA,CD4052_A1);

//控制对应灯变化

CLose_LED(led2);

Open_LED(led3);

            break;

 

  case 3:

//Y3通道,将控制脚A0置1,A1置0

            gpio_bit_set(GPIOA,CD4052_A0);

gpio_bit_set(GPIOA,CD4052_A1);

//控制对应灯变化

Open_LED(led2);

Open_LED(led3);

            break;

 

        default:

            break;

    }

}

 

(.H文件)

#ifndef __CD4052_H

#define __CD4052_H

 

#include "gd32e23x.h"

#include "systick.h"

#include <stdio.h>

 

#define CD4052_A0 GPIO_PIN_8

#define CD4052_A1 GPIO_PIN_9

 

 

enum

{

    Y0=0,

    Y1=1,

Y2=2,

Y3=3,

};

void Init_CD4052_GPIO(void);

void CD4052_Channel(uint8_t value);

 

#endif

其次,在主程序中加入自动换挡逻辑及调用CD4052程序。

第四步电路焊接。设计完硬件电路之后,我们就可以通过嘉立创下单助手制作采购电路板及所需电气元件。当我们开展软件设计同时,就可以陆续收到物料并着手开始焊接电路。

第五步软件烧录及电路调试。到这一步开始,我们的硬件已经焊接完成,给单片机烧写程序后就可以组装到我们简易数字示波器的硬件电路上,并开始调试验证设计是否符合功能。(这一步考验的就是我们模电、数电电路分析基础)

到了这一步最高境界就是调试→炸板,一直调试一直炸!!!(玩笑而已)

下面我来介绍几个我调试过程中踩过的雷:

第一个:PCB绘制封装错误

我为什么莫名奇妙放了一张点灯的图片,因为我的板子通电之后,三个灯(电源红灯,及两个人机交互绿灯)没有一个亮!就这个一个简单的点灯电路,我一度怀疑我的手艺退化了(虽然满手都是烙铁烫的疤)。后来不信邪的我把PCB板上的三盏灯换了三圈,还是一个都不亮!最后因为库存贴片LED数量告急,我只能尝试将 LED正负极对调焊接,然后它就亮了!!!

不是世上有鬼,也不是我手艺退化,那一定是哪里有问题。最终,我结合反焊LED后能点亮,并查询PCB设计图纸后发现,我用的LED封装引脚和上面的丝印反的!丝印误导了我。

罪魁祸首:

第二个:元件焊接短路(最容易炸板的问题)

大多调试炸板都是因为元件短路,如果不是设计错误导致,那就最有可能是后期电路焊接导致,这次训练营我居然也有元件焊接短路的情况,看来我是真的手艺退化了!

我又把-5V电路专门贴出来,是因为通电,修复LED灯问题后,我逐个测量电源模块输出,3.3V有,+5V有,很好!-5V只有-1.23V!漂亮!又出问题了。

这里我复刻的训练营开源的电路,同时查询XD7660后发现,这就是手册中的经典电路。外围元件也不多,但是就是出了问题!只能拿出电路常用的万能表,逐个元件进行测量,最后通过万能表的蜂鸣器档测量发现,C3电容被我焊短路了!

微信图片_20240403100330

重新焊接C3电容后,-5V(实际-4.2V)终于有了!好了,我们又成功了一步!

第三个:自己的设计,自己的制作,要有最基本的自信!

这个影响最大,也最深远!熬心灵鸡汤都会,但是还是要适当喝喝!这次训练营我吃的最大的苦就是没有做到这句话。因为前面一次两次电路板出故障(好在没炸板),导致我都开始自我怀疑了。在使用示波器表笔接入后,我发现我的1.8寸小屏上只有一条直线。

随着心里咯噔一下,我直接认为又有哪里虚焊,花一天时间测量,又花一天时间重新焊了一版(导致我现在有了两个数字示波器),最后效果还是一条直线。

然后我放弃了,暴饮暴食一顿后,突然想起来!我用的是CD4052模拟开关,好像没有调用!

改程序,烧录单片机,通电,接入信号!它有了,一个标准的1KHz方波出现了!我成功了!

微信图片_20240403115918

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
WeChat_20240403135021.mp4
0
2
GD32E230C8T6.zip
7
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航