迪文科技论坛

 找回密码
 立即注册
搜索
查看: 853|回复: 0

【开源】“迪文杯”文理学院电子设计大赛获奖作品

[复制链接]

590

主题

173

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13067
发表于 2022-6-7 16:08:43 | 显示全部楼层 |阅读模式
“迪文杯”文理学院电子设计大赛优秀获奖作品展示


获奖作品一:基于EKT系列开发板的电源功率控制系统的设计



一、方案介绍
  

  基于EKT系列开发板的电源功率控制系统的设计,开发板控制至少五路外设,并且控制总功率负载。输出电压在3040V范围内连续调节电压,也能稳定电压为20V,功率3050W可调。电源功率控制系统主要有变压器模块、整流模块、boost升压模块以及辅助电源。软件资源包括资源初始化函数、ADC采样函数、PID算法、PWM输出等。实际工作中还包括电流的检测、电压的检测等等,并将其结果显示在EKT系列开发板上。除此之外本系统具有调整速度快,精度高,电压调整率低,负载调整率低,效率高等特点。

1.控制方法
  采用单片机产生PWM,控制开关的导通与截止。根据A/D后的反馈电压程控改变占空比,使输出电压稳定在设定值。负载电流在康铜丝上的取样经A/D后输入单片机,当该电压达到一定值时关闭开关管,形成过流保护。该方案主要由软件实现,通过控制算法可以精准调控。

2.稳压电源选择
  将boost输出电压为外设提供电源。分别做5V12V辅助电源的输入电压分别为AD8552构成的电压跟随器、继电器(DC12V)及IR2104构成的驱动供电。电路较方案一更加安全可靠,同时构成12V5V辅助电源复杂度仅仅略微提升。

3.总体方案
  通过变压器将市电(220V交流)减压,通过整流模块的到直流电压,再通过boost电路,调节PWM的值得到对应的电压。通过PWMboost电路调节,加入了开关电源大大提升了电路的效率,并且通过PID调节PWM的占空比可以对电压进行精准稳压。
、主要电路图

1.简要Boost电路
       Boost电路是一种开关直流升压电路,能够使输出电压高于输入电压。在电子电路设计当中算是一种较为常见的电路设计方式。对负载及辅助电源提供输入源

2.辅助电源
  开关电源一些辅助设施需要一个比较小的电源叫做辅助电源。此电路为AD8552构成的电压跟随器、继电器(DC12V)及IR2104构成的驱动等供电。
3.变压器与整流模块
  将220V交流电压变压为12V交流电压,再通过整流模块将交流电压转化为直流电压为boost电路提供输入源。

三、程序流程图

1 微处理器接口定义表
类型
I/O
功能
数量
备注
普通I/O
P2.0~P2.4
外设AD8552供电
6

ADC
ADC0ADC1
进行信息采集
2

PWM
PWM0
进行占空比的控制
1

四、理论计算
   
   由占空比DTon/(TonToff)=TonTs
       根据伏秒平衡原则,开通时电感电压*开通时间,即Vi*TON = (VO+Vd-Vi)*Toff
   当仅仅考虑到二极管的损耗时电感的平均电流:IL = (VO+VD)/Vi*IOILIL20%-40%
         U=Ldi/dtdi/dt=U/LL不变,所以电感电流变化速度与电压成正比。△IL =VL * t /L
   电感电流的纹波跟负载电流的大小没有关系,可得电感的取值范围L = Vi/((0.2~0.4)*f*Io)*(1-vi/(Vo+Vd))*Vi/Vo+Vd

五、实物制作与测试

  本设计首先通过multisim仿真,根据需求规格提取独立的功能点,确定测试范围,对独立功能进行分析,确定各独立功能的测试点,测试分析的基础上,进行测试后需要对测试的结果以及测试的数据等加以记录和分析总结,得到理论值与实际制作做对比提供了理论依据。实际制作完成了选题要求,也安全符合理论预期。

2 实验测试表

设定值
实测值
显示值
电流
1.25
1.23
1.25
电压
40.00
4005
40.04
功率
50w
51W
51W





获奖作品二:基于EKT系列开发板的消防巡检控制面板设计


一、方案简介

      通过迪文屏的主控单元连接温湿度传感器,火焰传感器,烟雾传感器,水位传感器,扬声器等等外设来实现消防巡检面板的功能。即火焰传感器控制屏幕闪烁,烟雾传感器实现通过扬声器报警,有低,中,高三个报警等级,水位传感器在水量缺乏时实现预水警功能,电话通知操作员加水。

二、实现功能

1.可修改密码,可电话通知消防员
2.报警时,语音鸣叫,屏幕闪烁。
3.支持操作员,管理员两个模式,可修改操作员密码
4.管理员可修改报警阈值大小
5.支持中,低,高三个报警等级
6.支持水量缺乏预水警功能

三、数据过程

AD采集传输至烟雾传感器的部分实现代码
u16 Smog_init(void) //初始化校准函数
{
u16 value=0;
float vol;
u16 ppm;
value = ADC_Read_avg(ADC_CHANNEL_2,10); //读到的AD值,将读到的数据累加到sum
ppm = ((float)value/65525)*1000;
return ppm;
}
u16 WaterSensor(void)
{
u16 water_val;
u16 AD_Value;
AD_Value=(ADC_Read_avg(ADC_CHANNEL_1,10));
water_val=((float)AD_Value/65525)*1000;
return water_val;

演示视频链接:https://www.bilibili.com/video/BV1ZF411G7Gv/

获奖作品三:基于EKT系列开发板的消防巡检控制面板设计


一、方案介绍

  针对家庭住房消防报警的实时监测,设计了一款基于迪文屏EKT40A结合结合温湿度传感器、烟雾传感器、红外火焰探头、液位传感器的消防报警监测系统。用户不仅可以通过电脑监控界面,对整个家庭环境进行实时监控,还可以利用无线通讯及时了解紧急情况。

二、硬件与软件设计

1.测量原理框架
  系统以迪文屏EKT40AOS内核为控制核心,将烟雾传感器的05 V电压信号转换成 03.3 V,并将模拟信号通过 AD 转换得到数值信号,然后在迪文屏的单独CPU核(OS CPU)中进行数值处理测温探头采用 Pt100Pt1000)自适应探头,电子模拟开关控制测温探头Pt100Pt1000之间的切换,测量电路采用三线制接法消除导线电阻,数据通过测温电路进行放大和滤波后传输到迪文屏最后将各参数值在液晶屏上显示,并进行实时监控报警。

2.硬件介绍
      采用迪文智能屏做显控和主控,配套使用温湿度传感器,烟雾传感器,液位传感器,红外火焰传感器。

3.软件设计
1)采用迪文DGUS_V7624软件,零代码即可实现功能丰富的界面显示

  (2)消防报警系统实现的功能
实现烟雾浓度、环境温度、火焰有无、水量多少实时变化数据的显示;
支持多种报警显示和提示音,支持与移动终端远程通讯。
迪文屏采用C语言进行程序模块化编写,包括初始化子程序、烟雾浓度采样程序、温湿度采样程序、红外火焰信号采样程序、数据处理程序、键值处理程序、LCD屏显程序、通讯驱动程序等系统程序流程如图所示。
  (3)无线通讯
  在无线通讯方面,采用华为的 MG323 模块进行无线通讯。该模块支持4种频段,工作电压为 3.34.8 V,正常工作温度为-20 ℃70 ℃。可以使用 3 AT 命令进行初始化以及获取动态 IP 地址,支持短 信、语音和 GPRS,数据传输稳定,具有很高的实用性。 用户可手动拨打电话,进行消防报警操作




获奖作品四:基于EKT系列开发板的红外测温及热成像方案


一、方案介绍
  
   基于EKT系列开发板的红外测温与热成像功能,进行了各单元电路方案的比较论证及确定,系统以迪文科技EKT040作为控制核心,通过非接触红外点阵测温模块MLX90640采集环境温度信息从而实现热成像。系统具有较稳定的显示,检测速率快的特点。

二、方案设计
  
    通过基本图像显示控件实现画点功能,将MLX90640传回数据进行量化处理,为了产生一副数字图像,需要把连续(空间坐标连续+幅值连续)的感知数据转化为数字形式。如下所示:

        对图像空间坐标的离散化,它决定了图像的空间分辨率。用一个网格把待处理的图像覆盖,然后把每一小格上模拟的图像的各个亮度取平均值,作为该小格中点的值。对图像幅度坐标的离散化,它决定了图像的幅度(灰度级)分辨率。对图像中像素灰度值频繁出现的灰度值范围,量化间隔取小一些,而对那些像素灰度值极少出现的范围,则量化间隔取大一些。基于统计特性:对图像中像素灰度值频繁出现的灰度值范围,量化间隔取小一些,而对那些像素灰度值极少出现的范围,则量化间隔取大一些。对一幅图像,当量化级数一定时,采样点数对图像质量有着显著的影响。采样点数越多,图像质量越好; 当采样点数减少时,图上的块状效应就逐渐明显。对图像处理的时候,采用双线性插值,用四个最临近位置上的灰度值估计给定位置的灰度值,如下图所示

三、系统理论分析与计算

1.MLX90640理论分析
对于MLX90640数据计算方法如下:


<5A5A-0206-6E0E-690E-5A0E-XXXX-050E-8D0E-D540>
Byte0~ Byte1---0x5A0x5A 表示帧头;
Byte2~ Byte3---0x02806 表示数据量=0x06*256+0x02=1538 个温度数据(包括目
标数据和 MLX90640 自身温度数据)
Byte4~ Byte1539---表示上图中 768 个点的温度数据,输出顺序一次为
(Col 1,Row 1)à(Col 32,Row 1)à (Col 1,Row 2)à(Col 32,Row 2)à
(Col 1,Row XX)à(Col 32,Row XX)à(Col 1,Row 24)à(Col 32,Row 24)

2.MLX90640数据计算演示

数据解析如图所示



四、电路与程序设计
1.程序设计框图

演示视频链接:https://www.bilibili.com/video/BV1ot4y1n7by/  


获奖作品五:基于EKT系列开发板的在线UPS系统设计



一、方案介绍

  本系统由KBU1010的桥式整流电路、24V备用电源、电源切换电路、LM5118升压模块、EG1198降压模块、逆变电路、ADC采样电路、EKT080B组成,能实现供电切换、监控检测、监控系统运行状态等功能;供电切换的同时保持输出电压稳定不变。
二、电路设计

1.全波桥式整流电路
  滤波电容的耐压,对于全波整流电路,要求滤波电容器的耐压要大于整流电路输入交流电压的最大值。又因其后级有稳压电路,该电容容值可选择范围选择较宽,故选择470μF100V耐压的极性电容。
图3.1 全波桥式整流电路

2.直流供电即时切换电路
    D1为续流二极管,使电流平缓地变化,防止继电器内部电感两端会产生突变电压,产生感应电压击穿或者烧毁其他元器件;此处选择耐压值大于36V1N5399
二极管D2D3防止反接,并起隔离作用,应选择散热较好,耐压值在36V及以上的肖基特二极管,1N54061N5408SS510C均会因过热烧毁短路。
继电器在备用电源作用的同时切断二极管D2,提高效率。
3.2 直流供电即时切换电路

3.基于LM5118的升压电路
     本系统升压电路选择LM5118驱动并控制的Boost升压电路,系统输入交流电压有效值为29~43V,输出电压幅值约为45V,留取一定的裕量,开关管耐压需高于70V。开关过程中,输出最大电流为2A,故开关管选择耐压值为100V,连续漏极电流150ALM5118,可满足电流、电压应力需求。简化电路图如图3.3所示。
3.3  LM5118升压电路

4.基于SPWM技术的逆变电路
      逆变电路选用单相全桥逆变方式、基于SPWM技术实现。可通过芯片外围电路对芯片进行硬件编程,也可以通过串口通信对芯片内部寄存器进行读写配置操作。电路输出交流电压峰值近似为30V,单相全桥逆变电路最大输出交流幅值为其直流母线电压的一半,因此开关管耐压值需要大于60V,故选用耐压值100V,平均整流电流达到5A的肖基特二极管。
3.4 逆变电路

三、测试方案与数据分析

1.测试条件与仪器
1)测试仪器及型号
1 测试仪器清单
序号
仪器名称
型号
指标
数量
1
数字示波器
MDO-2204ES
200MHz
1
2
直流电源
GPD-3303D
30V/3A
1
3
变压器
TDGC
1KVA
1





2)软件开发环境
     EKT系列开发板、前期自行设计使用模块:整流、升降压、逆变、电源切换模块
2.系统测试
测试方案:首先将市电220V接入变压器测试输出是否为36V交流电压,后将36V交流电压接入整流电路测试输出是否到达预期值,其次测试逆变电路输出和升降压电路输出是否正确,最后测试输出是否为30V
3.测试结果及分析

2 测试结果

输入电压/V
输出电压/V
变压器电路
220
36
整流电路
36
47.972
升降压电路
47.972
45
逆变电路
45
30
备用电源切换电路
24
30

四、设计总结
  
  我们的系统方案是将市电220V经变压器、整流电路、升降压电路、逆变电路、电源切换电路后输出30V电压。第一步测试变压器部分,第二步测试整流电路部分,第三步测试升降压电路,第四步测试逆变电路部分,最后测试备用电源切换部分。测试发现经变压器电路后输出为36V,经整流电路后输出48V,经升降压电路输出为45V,经逆变电路后输出为30V

演示视频链接:https://www.bilibili.com/video/BV1M3411g78e/


获奖作品六:基于EKT系列开发板的在线UPS系统设计



一、方案介绍
  
  本系统由全波桥式电路、24V备用电源、电源切换电路、LM5122升压模块、EG1198降压模块、逆变电路、ADC采样电路、EKT080B开发板等组成,能实现供电切换、监控检测、监控系统运行状态等功能;有赖于可靠的逆变电路,供电切换的同时保持输出电压稳定不变,不同条件下输出电压均能满足题目要求。

二、电路设计

1.全波桥式整流电路
  滤波电容的耐压,对于全波整流电路,要求滤波电容器的耐压要大于整流电路输入交流电压的最大值。又因其后级有稳压电路,该电容容值可选择范围选择较宽,故选择470μF100V耐压的极性电容。
3.1 全波桥式整流电路

2.直流供电即时切换电路
     D1为续流二极管,使电流平缓地变化,防止继电器内部电感两端会产生突变电压,产生感应电压击穿或者烧毁其他元器件;此处选择耐压值大于36V1N5399
二极管D2D3防止反接,并起隔离作用,应选择散热较好,耐压值在36V及以上的肖基特二极管,1N54061N5408SS510C均会因过热烧毁短路。
继电器在备用电源作用的同时切断二极管D2,提高效率。
3.3  LM5122升压电路

4.基于SPWM技术的逆变电路
      逆变电路选用单相全桥逆变方式、基于SPWM技术实现。可通过芯片外围电路对芯片进行硬件编程,也可以通过串口通信对芯片内部寄存器进行读写配置操作。
电路输出交流电压峰值近似为30V,单相全桥逆变电路最大输出交流幅值为其直流母线电压的一半,因此开关管耐压值需要大于60V,故选用耐压值100V,平均整流电流达到5A的肖基特二极管。
3.4 逆变电路

三、测试方案与数据分析

1.测试条件与仪器
1测试仪器及型号
4.1 测试仪器清单
序号
仪器名称
型号
指标
数量
1
数字示波器
MDO-2204ES
200MHz
1
2
直流电源
GPD-3303D
30V/3A
1
3
变压器
TDGC
1KVA
1
4
万用表
UNI-T
40V~/40V-
1

2软件开发环境
KeilEKT系列开发板。

2.系统测试方案
      首先检查电路是否连接正确;接入220V50Hz市电后,检查变压器是否输出36V交流电压,后将36V交流电压接入整流电路测试输出是否达到预期值并记录分析,再测试逆变电路输出和升降压电路输出是否达到预期值并记录分析,最后测试输出是否达到题目要求并记录分析。
4.2 系统输出电压测试图

3.测试结果

3.1测试结果

4.3.1 各模块测试结果

输入
输出
变压器(V)
220
36.01
整流电路(V)
36.01
48.562
备用电源切换电路(V)
24(备用电源)/48.562
24(备用电源)/48.13
升降压电路(V)
24(备用电源)/48.13
46.3
逆变电路(V)
46.3
30.01
EG1198降压模块
(辅助电源)(V)
46.3
15.00

以上数据均为多次测量值的平均值。
4.3.2 调整率测试表格
系统输入
0.1A
1A
29V
34V
系统输出电压
30.01V
30.01V
30.01V
30.00V

以上数据均为多次测量值的平均值。

4.程序代码
主函数主要实现控制、采集、调整功能,代码如下:
u8 SUI_101A_Get(u8 adder){
        u8 t=20;
        u8 rxlen=0;
        u8 i=0;
        u8 sum=0;
        u8 n=0;
        u8 CmdTxBuf[]={0x55,0x55,0x01,0x02,0x00,0x00,0xAD};
        CmdTxBuf[2]=adder;
        UART_MAX_LEN=0;
        CmdTxBuf[6]=CmdTxBuf[0]+CmdTxBuf[1]+CmdTxBuf[2]+CmdTxBuf[3]+CmdTxBuf[4]+CmdTxBuf[5];//重新计算校验和
        Uart2_SendBuf(CmdTxBuf,7);
        delay_ms(10);                 //等待10ms,等待数据返回
        while(t){
                t--;
                rxlen=uart2_rx_sta;
                sys_delay_ms(30);                //等待30ms,连续超过30ms没有接收到一个数据,则认为接收结束
                if((rxlen==uart2_rx_sta)&&(rxlen!=0)){//接收到了数据,且接收完成了
                        if(rxlen==(uart2_buf[5]+7)){
                                //数据长度正确
                        }
                        else{
                                return 3;//异常,数据长度错误
                        }
                        sum=0;
                        rxlen-=1;//除去校验位的长度
                        for(i=0;i<rxlen;i++){
                                sum+=uart2_bufa[rxlen];
                        }
                        if(sum==uart2_buf[rxlen]){//校验和正确
                                Vrms=(double)(((u32)uart2_buf[6] <<24)|((u32)uart2_buf[7] <<16)|((u32)uart2_buf[8] <<8)|((u32)uart2_buf[9] <<0))/1000.0;
                                Irms=(double)(((u32)uart2_buf[10]<<24)|((u32)uart2_buf[11]<<16)|((u32)uart2_buf[12]<<8)|((u32)uart2_buf[13]<<0))/1000.0;
                                PActive=(double)(((u32)uart2_buf[14]<<24)|((u32)uart2_buf[15]<<16)|((u32)uart2_buf[16]<<8)|((u32)uart2_buf[17]<<0))/1000.0;
                                n=18;
                        PowerFactor=(double)(s32)(((s32)uart2_buf[n++]<<24)|((s32)uart2_buf[n++]<<16)|((s32)uart2_buf[n++]<<8)|((s32)uart2_buf[n++]<<0))/10000.0;
                                Frequency=(double)(((u32)uart2_buf[n++]<<24)|((u32)uart2_buf[n++]<<16)|((u32)uart2_buf[n++]<<8)|((u32)uart2_buf[n++]<<0))/1000.0;
                                W_KWH=(double)(((u32)uart2_buf[n++]<<24)|((u32)uart2_buf[n++]<<16)|((u32)uart2_buf[n++]<<8)|((u32)uart2_buf[n++]<<0))/10000.0;
                        }
                        else{//数据校验错误
                                return 1;
                        }
                        break;
                }
        }
        if(t==0){//接收超时,超过100ms未接收到数据
                return 2;
        }
//        printf(" | V:%10.05f | I:%10.05f | P:%10.05f | PF:%10.05f | F:%10.05f | W:%10.05f |\r\n",Vrms,Irms,PActive,PowerFactor,Frequency,W_KWH);
        return 0;
}                                       
void main(void)
{
        InitCPU();
        StartTimer(1,50);
        Init_Rtc();
        Uart2_Init(9600;//初始化串口2波特率为9600
//        ssd2828_init();
        while(1)
        {
                delay_ms(1);
                count++;
                if(count>1000)
                        {
                                if(SUI_101A_Get(1)==0){//SUI0101A测量值读取

                                Write_Dgus(2000,Vrms);
                                Write_Dgus(2000,Frequency);
                                Write_Dgus(2000,Irms);
                                Write_Dgus(2000,PActive);
        }
}
}






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-5-11 21:47 , Processed in 0.046084 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表