当前位置:首页 >> 营销/活动策划 >>

2011年全国大学生电子设计竞赛论文(F题)


2013 年全国大学生电子设计竞赛

简易照明线路探测仪(K 题) 【高职高专组】

2013 年 9 月 6 日





本文主要介绍了一种具有显示器的简易照明线路探测仪。通过对感应电流 的有无检测是否有电线, 通过电流的大小检测辨别电缆上负载功率的大小。其主 控芯片为 STM32F103,通过线圈感应导线的磁场再把磁转化为电(电生磁-磁生 电原理) ,我们通过 STM32F103 的 ADC 采样外部电压值,并且介绍了在调试过 程中的实时监控、宏观曲线分析和数据分析应用等调试手段。 文章着重介绍核心器件的选择、各部分电路、软件的设计和调试手段

关键词:ADC 采样

比较器 STM32F103

LCD 显示 电磁感应

I

Abstract
This paper describes a simple lighting circuit with a display detector. By detecting the presence or absence of induced current if wires, the current through the load on the cable size detection to identify the magnitude of power. Its master chip STM32F103, induction coil wire through the magnetic field and then into electricity (electric raw magnetism - magnetic electricity generating principle), we adopted the STM32F103 ADC sampling external voltage value, and describes the process of debugging real-time monitoring macro curve analysis and data analysis applications such as debugging tools. Article focuses on the core device selection, the various parts of circuits, software design and debugging tools Keywords: ADC Sample 、 Comparator 、 STM32F103 、 LCD Display 、 Electromagnetic induction

I





1 系统方案 .......................................................... 1 1.1 导线检测方案的论证与选择.......................................................................... 1 1.2 信号放大方案的论证与选择......................................................................... 1 1.3 显示方案的论证与选择..................................................................................1 1.4 MCU 控制系统的论证与选择 ....................................................................... 2 2 电路与程序设计 .................................................... 2 2.1 电路的设计...................................................................................................... 2 2.1.1 系统总体框图....................................................................................... 2 2.1.2 MCU 电路 ............................................................................................ 2 2.1.3 键盘管理电路...................................................................................... 3 2.1.4 显示系统电路...................................................................................... 4 2.1.5 线圈感应电路.....................................................错误!未定义书签。 2.1.6 电源电路............................................................. 错误!未定义书签。 2.1.7 信号放大电路.....................................................错误!未定义书签。 2.2 程序的设计...................................................................................................... 5 2.2.1 程序功能描述与设计思路................................................................... 5 2.2.2 程序流程图........................................................................................... 5 4 测试方案与测试结果 ................................................ 7 4.1 测试方案.......................................................................................................... 7 4.2 测试条件与仪器............................................................................................. 9 4.3 测试结果及分析............................................................................................. 9 4.3.1 测试结果(数据) .................................................................................... 9 4.3.2 测试分析与结论................................................................................. 10 附录 1:电路原理图 ................................................. 11 附录 2:源程序 ..................................................... 12

I

简易照明线路探测仪(K 题) 【高职高专组】
1 系统方案
本系统主要由导线检测模块、信号放大模块、MCU 控制模块、LCD 显示、电池组成, 下面分别论证这几个模块的选择。

1.1 导线检测方案的论证与选择
方案一:感应式测电笔,使用时将其检测探头靠近交流电源的导线即可检测出被测导线 是否有电,而不用直接接触相线。该测电笔还能快速查出导线断点的位置。 电路工作原理图

接通电源开关 S 后,则检测探头检测不到5OHz 交流电源信号,VF 处于导通状态, V2和 Vl 均截止,HA 不发声,VL 不发光。反之,在交流电的负半周时 VF 截止,Vl 和 V2 导通,HA 发出蜂鸣声,VL 闪烁发光。Vl 选用硅 PNP 晶体管;V2选硅 NPN 晶体管。VF 选 用3DJ6或 BFWll 型 N 沟道结型场效应晶体管。能测出导线的位置,但不能分辨出不同功 率的电线。 方案二:霍尔电流传感器,导线要穿过磁环内,不适宜使用。

方案三:线圈感应,原理简单既能测出导线的位置,也能测出不同功率的导线。 方案一不能分辨不同功率的导线,方案二要导线穿过磁场,方案三可以测导线位置 和分辨出不同的导线。综合以上三种方案,选择方案三。

1.2 信号放大方案的论证与选择
方案一:LM386,我们采用 LM386 典型放大电路,此电路简单且易达到放大倍数。 方案二:分立放大,此电路麻烦不易调试。 综合以上两种种方案,选择方案二。

1

1.3 显示方案的论证与选择
方案一:数码管显示,由于本题要求实时显示输出信号的类型、幅度、频率和频率步进 值等,而数码管不能显示字符。 方案二:LED 点阵显示,LED 点阵显示虽然能显示字符和数字,但显示效果不好,且不 易编程。 方案三:LCD 液晶显示,LCD 液晶不但能显示字符和数字,而且显示效果较好,容易编 程实现。 综上分析采用第三种方案,可以显示字符和数字,方便,也有颜色填充功能。

1.4 MCU 控制系统的论证与选择
方案一:89C52 内置 8 位中央处理单元、256 字节内部数据存储器 RAM、8k 片内程序 存储器(ROM)32 个双向输入/输出(I/O)口、驱动 FTF 彩屏难实现。 方案二:STM32F103 是 32 为芯片,112 个通用引脚,3 个 12 位 ADC,一个 FSMC 接口, 通过 FSMC 驱动 LCD。 通过对系统的综合设计考虑以及外设的要求,我们最终选择了 STM32F103 这款功能 更完善,速度更高的单片机。

电路与程序设计
2.1 电路的设计
2.1.1 系统总体框图 系统总体框图如图 3.11 所示,

线 圈 感 应模块

信号放 大模块 STM32F10 3

LCD 显示 模块 内部 AD 采样

电压比较 器

图 3.11

系统总体框图

2.1.2 MCU 电路 系统硬件以 STM32F103 单片机为核心,STM32F103 是一种低功耗、高性能 32 位 微控制器。
2

图 3.12

控制电路原理图

2.1.3 键盘管理电路 ZLG7289A 是一片具有串行接口的,可同时驱动 8 为共阴式数码管的智能显示驱 动芯片,该芯片同时还可连接多达 64 键的矩阵键盘,单片机即可完成 LED 显示,键盘 接口的全部功能。

3

图 3.13 键盘管理电路原理图 2.1.4 显示系统电路 本系统采用的是 ILI9325 为控制器的 TFT 液晶显示屏, 分辨率为 240X320, 能达 到 26 万色,本系统采用 STM32F103 对其进行驱动,在通过主控制器的串口与之进行通 信,实时显示数值。

图 3.14 2.1.5 线圈感应电路

显示系统电路

2.1.6 电源电路 本系统采用 7.2V 的镍镉电池对整个系统进行供电.下图经转换为 3.3V 给单片机供 电电路。

4

2.1.7 信号放大电路 图 3.18 电源电路

3.2 程序的设计
3.2.1 程序功能描述与设计思路 1、程序功能描述 根据题目要求软件部分主要实现键盘的设置、 数据的显示和被测的灯名, 显示方格 还有时间的显示。 1)键盘的设置部分:通过键盘设启动开始和停止测试。 2)数据的显示部分:显示当前所用时间、灯名、方格号。 3)帆板转角的稳定部分:利用工业上常用的 PID 控制算法来稳定帆板转角。 2、程序设计思路 根据题目要求实现键盘控制风扇风力以及帆板转角,故设定了风力模式和角度模 式。在风力模式下,用按键直接调整风扇的转速。在角度模式下,用按键调整设定角度 再利用 PID 控制算法对角度进行控制, 进而给出风扇转速的控制量再通过 PID 控制算法 对风扇转速进行稳定,从而实现稳定的帆板转角控制。同时,为了测试方便设定 45°角 的一键锁定模式,锁定之后进行声光提示。 3.2.2 程序流程图 1、主程序流程图如图 3.22
初始化

是否有按键按下



是 根据按键操作 进行相应的参数调整

传感器采样 角度信息 数据处理并进行 风扇转速调整 进行屏幕显示 数据刷新

图 3.22

主程序流程图
5

2、角度、转速双闭环控制子程序流程图如图 3.23

图 3.23 角度、转速双闭环控制子程序流程图 3、键盘子程序流程图如图 3.24

外部中断

读取按键值 并对按键值进行处理

退出中断
图 3.24 键盘子程序流程图 4、速度控制子程序流程图,如图 3.25
定时10ms

读取外部计数脉冲值

速度PID进行调整

结束

图 3.25 速度控制子程序流程图

6

4 测试方案与测试结果
4.1 测试方案
4.1.1 硬件测试 通过示波器对电机测速反馈电路进行测试,其波形如下图 4.11 所示:

图 4.11 脉冲方波 完全达到要求,可以应用。 通过万用表对传感器模块电压值进行测量数据如下表所示 电压档信号测试结果好下表所示: 信号值 显示 0° 2.45 10° 2.42 20° 2.41 30° 2.34 40° 2.27 50° 2.16 60° 2.05 (单位/V) 70° 1.92

完全达到要求,可以应用。 4.1.2 软件仿真测试 (1)在线调试工具 BDM 是 MC9S12XS128 单片机常用的调试手段,在每一部分程序调试通过后,对所 有子程序进行整合,编写出完整的主程序,在 CodeWarrior 界面完成程序编译后,通过 BDM 工具,将程序下载到 MC9S12XS128 微处理器中,然后进行小车的调试。BDM 的优点 是入门简单、可观察参数全面,特别适用于软硬件静态调试设计阶段;缺点是必须与 PC 时刻保持有线连接,不能够用于小车的动态调试阶段,整体界面如图 4.12。

7

图 4.12 CodeWarrior IDE V5.9.0 调试界面

(2)MATLAB 的仿真 MATLAB 对于数据的处理统计分析能力较强, 故多作为数据的静态分析使用。 MATLAB 做曲线拟合界面如图 4.13 所示:

图 4.13 MATLAB 曲线拟合界面 8

3、硬件软件联调 无线串口调试工具 为了解决在调试过程中能够更清晰明确的看出数据变化,我们应用了一套无线的 调试工具。用 nRF24L01 无线数据传输模块作为数据的传输。把数据通过串口传输电脑 上,再利用所做的 LabVIEW 上位机界面或者是 MATLAB 所做的上位机界面来作为整个小 车监控的一个手段。 LabVIEW 对于数据的实时处理能力较强,故多作为实时动态监控使用。LabVIEW 上 位机界面如图 4.31 所示:

图 4.31

LabVIEW 上位机界面

4.2 测试条件与仪器
测试条件:经多次检查,仿真电路和硬件电路与系统原理图完全相同,并且检查 无误,硬件电路无虚焊,同时测试时保持无风状态。 测试仪器:高精度的数字毫伏表,数字示波器,数字万用表,直角三角板,量角 器。

4.3 测试结果及分析
4.3.1 测试结果(数据) 角度 距离 10cm 7cm 15° 15 16 30° 31 33 45° 44 47 60° 61 64 时间 ( s) 2.1 1.2
9

9cm 11cm 13cm 15cm

15 14 13 12

32 29 27 27

45 44 43 42

62 60 59 57

1.5 2.2 3.1 4.0

4.3.2 测试分析与结论 根据上述测试数据,可以清楚地看出不同的距离、不同的风力、不同的风速的数 据对比,由此可以得出以下结论: 1、电机驱动方案和电机很重要,一般的电机驱动方案和直流电机很难把帆板吹到 60°;如果减轻帆板重量则抖动很厉害;如果连杆太粗糙角度不好控制。 2、闭环调速系统很必要,完整的闭环系统(在电机和电源工作范围内)不在乎距 离和偏向角度的问题。 3、数据处理手段多样,不但要有实施监控的,还有整体宏观曲线,同时数据的分 析与拟合等多种手段。 综上所述,本设计达到设计要求。

10

附录 1:电路原理图
主控原理图

主控 PCB

11

附录 2:源程序
/***************************************************** This program was produced by the CodeWarrior IDE V5.9.0 Automatic Program Generator Copyright 1993-2007 Freescale Semiconductor,Inc. This program was edited by the EditPlus V2.12. Project : TestIntegral Version : V1.0 Date : 2011-9-3 Author : 付保俊&王杰&郑三江 Company : Electrical Make & Repair Center Comments: 整版测试系统,用键盘改变速度。 Chip type : MC9S12XS128MAA Program type : Application Bus Clock frequency : 40.000000 MHz *****************************************************/ //**************用户变量******************* #define CHANGE_NON 0 #define CHANGE_ANGLE 1 #define CHANGE_DUTY 2 #define ONE_KEY 3 //节奏 extern unsigned int beat_Sensor=0,beat_Display=0,beat_ect=0,beat_send=0; //ECT data unsigned int ect_data=0,speedSet=0; unsigned int keyTemp; unsigned int g_keyNum=0,g_keyDownFlag=0; unsigned int g_angle=20,g_anglePID=0,g_duty=20; unsigned int g_changeMode=0; unsigned int g_runMode=CHANGE_DUTY; unsigned int g_displayTimeCnt=0; unsigned int g_displayClrCnt=0; unsigned char TxBuf[13]={0}; unsigned int g_colorTimeCnt=0; unsigned int g_colorCnt=0; unsigned int g_soundlightFlag=0; #include"include.h" void init(void) { Init_PLL(); //初始化 PLL
12

Init_ATD(); Init_PIT(); Init_PID_Data(); Init_ECT(); Init_LCD5110(); Init_KeyINT(); ZLG7289_init(); Init_PWM(); Init_SCI(); PORTB|=0X08;

//初始化 ATD 角度测量 //初始化 PIT //初始化 PID //编码器 //液晶显示 //按键 //按键 //电机驱动

} void main(void) { /* put your own code here */ unsigned char addrX=0,addrY=0; unsigned int ADValue=0; unsigned int SendCnt=0; float a; float hudu; float jiaodu; init(); addrX=0; addrY=0; Display_String_LCD5110(&addrX,&addrY,"Current Angle:"); addrX=0; addrY=2; Display_String_LCD5110(&addrX,&addrY,"PWM Duty:"); EnableInterrupts; for(;;) { if (beat_Sensor>=10)//350ms 采集一次 控制一次 {beat_Sensor=0; Process_ATD_Value(&ADValue); a=(float)(double)((ADValue/12.4-170)/80); if (a<0)a=0; if (a>1) a=1.0; hudu=acos(a); jiaodu=(float)(hudu*180/3.14); jiaodu=DataFilter((unsigned int)jiaodu); switch (g_runMode) { case CHANGE_ANGLE: g_anglePID=angle_PID_Con(g_angle,(unsigned int)jiaodu); if (g_anglePID>80) {g_anglePID=80; } if (g_anglePID<=20) { speedSet=0.086*g_anglePID*g_anglePID-0.04*g_anglePID+72.5;
13

}else if (g_anglePID<=25)//由于角度偏低故进行*个脉冲的修正 {speedSet=0.092*g_anglePID*g_anglePID-3.32*g_anglePID+138.42;}else if (g_anglePID<=50)//由于角度偏低故进行 7 个脉冲的修正 {speedSet=0.092*g_anglePID*g_anglePID-3.32*g_anglePID+138.42+10; } else {speedSet=0.092*g_anglePID*g_anglePID-3.32*g_anglePID+138.42; } M_PWM_Data=Motor_PID_Con(speedSet,ect_data); if (M_PWM_Data>=240)//限制%80 占空比{M_PWM_Data=240; } if (!g_angle) {M_PWM_Data=0; } Set_MOTOR(M_PWM_Data);//设置电动机速度 break; case CHANGE_DUTY: break; case ONE_KEY: g_anglePID=angle_PID_Con(g_angle,(unsigned int)jiaodu); if (g_anglePID>80) { g_anglePID=80; } if (g_anglePID<=20) { speedSet=0.086*g_anglePID*g_anglePID-0.04*g_anglePID+72.5; }else if (g_anglePID<=25)//由于角度偏低故进行*个脉冲的修正 { speedSet=0.092*g_anglePID*g_anglePID-3.32*g_anglePID+138.42; }else if (g_anglePID<=50)//由于角度偏低故进行 7 个脉冲的修正 { speedSet=0.092*g_anglePID*g_anglePID-3.32*g_anglePID+138.42+10; }else { speedSet=0.092*g_anglePID*g_anglePID-3.32*g_anglePID+138.42; } M_PWM_Data=Motor_PID_Con(speedSet,ect_data); if (M_PWM_Data>=200)//限制%80 占空比 { M_PWM_Data=200; } Set_MOTOR(M_PWM_Data);//设置电动机速度 if (!g_soundlightFlag&&((jiaodu>=40)&&(jiaodu<=50))) { g_soundlightFlag=1; TxBuf[0]=(unsigned char)5; TxBuf[1]=(unsigned char)0; TxBuf[2]=(unsigned char)0; TxBuf[3]=(unsigned char)~5;
14

for (SendCnt=0;SendCnt<4;SendCnt++) { while(!(SCI0SR1&0x80)); SCI0DRL=TxBuf[SendCnt]; } } if (g_soundlightFlag&&((jiaodu<40)||(jiaodu>50))) { g_soundlightFlag=0;//消除声光提示 TxBuf[0]=(unsigned char)6; TxBuf[1]=(unsigned char)0; TxBuf[2]=(unsigned char)0; TxBuf[3]=(unsigned char)~6; for (SendCnt=0;SendCnt<4;SendCnt++) { while(!(SCI0SR1&0x80)); SCI0DRL=TxBuf[SendCnt]; } } break; } } if (beat_Display>=500)//500ms 显示一次 { beat_Display=0; Display_Acsii_Senser_LCD5110(0,1,(unsigned int)jiaodu); Display_Acsii_Senser_LCD5110(25,1,g_anglePID);//取小数点儿后一位 Display_Acsii_Senser_LCD5110(50,1,g_angle); Display_Acsii_Senser_LCD5110(0,3,g_duty); Display_Acsii_Senser_LCD5110(25,3,ect_data); Display_Acsii_Senser_LCD5110(50,3,speedSet); Display_Acsii_Senser_LCD5110(0,5,g_runMode); Display_Acsii_Senser_LCD5110(50,5,ADValue); } if ((g_displayTimeCnt>=500)&&g_changeMode) { switch (g_changeMode) { case CHANGE_ANGLE: addrX=0; addrY=0; Display_String_LCD5110(&addrX,&addrY," "); break; case CHANGE_DUTY:
15

addrX=0; addrY=2; Display_String_LCD5110(&addrX,&addrY," break;

");

} } if ((g_displayTimeCnt>=1000)&&g_changeMode) { g_displayTimeCnt=0; switch (g_changeMode) { case CHANGE_ANGLE: addrX=0; addrY=0; Display_String_LCD5110(&addrX,&addrY,"Current Angle:"); break; case CHANGE_DUTY: addrX=0; addrY=2; Display_String_LCD5110(&addrX,&addrY,"PWM Duty:"); break; } if (g_displayClrCnt==10) { g_displayClrCnt=0; g_changeMode=CHANGE_NON; } } if (g_keyDownFlag)//if key down do it { g_keyDownFlag=0; g_displayClrCnt=0;//有按键时清除闪烁计时 switch (g_changeMode) { case CHANGE_ANGLE: switch (g_keyNum) { case 0: g_angle=10*g_keyNum;//角度 break; case 1: g_angle=10*g_keyNum;//角度 break; case 2:
16

g_angle=10*g_keyNum;//角度 break; case 3: g_angle=10*g_keyNum;//角度 break; case 4: g_angle=10*g_keyNum;//角度 break; case 5: g_angle=10*g_keyNum;//角度 break; case 6: g_angle=10*g_keyNum;//角度 break; case 12: g_angle--;//占空比 break; case 13: g_angle++;//占空比 break; } if (g_angle>80) { g_angle=80; } break; case CHANGE_DUTY: switch (g_keyNum) { case 0: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 1: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 2: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 3: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值
17

break; case 4: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 5: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 6: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 7: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 8: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 9: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 10: g_duty=10*g_keyNum;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 12: g_duty--;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; case 13: g_duty++;//占空比 PWMDTY3=(250*g_duty)/100;//PWMDTY01 置初值 break; } if (g_duty>100) { g_duty=100; } break; }
18

19


赞助商链接
相关文章:
2011年全国大学生电子设计竞赛论文(F题)_图文
2011年全国大学生电子设计竞赛论文(F题)_营销/活动策划_计划/解决方案_实用文档。2013 年全国大学生电子设计竞赛 简易照明线路探测仪(K 题) 【高职高专组】 ...
2011全国大学生电子设计竞赛论文_C题_智能小车(含程序)
2011全国大学生电子设计竞赛论文_C题_智能小车(含程序)_电子/电路_工程科技_专业资料。智能小车(含程序 全国大学生电子设计竞赛 2011 年 智能小车(C 题) 【本科...
2011年全国大学生电子设计竞赛论文A题电源类
2011年全国大学生电子设计竞赛论文A题电源类_电子/电路_工程科技_专业资料。2011...取 Ts=1/f, f=25KHZ,当 D 取 1/3 时,可求得: L≥RTs(1-D)/2=20...
2011年全国大学生电子设计竞赛论文
2011年全国大学生电子设计竞赛论文_电子/电路_工程科技_专业资料。本文档是基于单片机的简易电阻测试仪的设计,并设计出实物,在2011年全国大学生电子设计竞赛中荣获...
2015年全国大学生电子设计竞赛F题数字频率计设计论文
2015年全国大学生电子设计竞赛F题数字频率计设计论文_电子/电路_工程科技_专业资料。数字频率计设计原理及思路比较 2015 年全国大学生电子设计竞赛 数字频率计(F 题...
2011全国大学生电子设计竞赛论文-C题-智能小车(含程序)
2011全国大学生电子设计竞赛论文-C题-智能小车(含程序) - 全国大学生电子设计竞赛 2011 年 智能小车(C 题) 【本科组】 2011 年 9 月 3 日 摘 要 关键 ....
全国大学生电子设计竞赛论文
全国大学生电子设计竞赛论文_电子/电路_工程科技_专业资料。国家一等奖2007 年全国大学生电子设计竞赛 设计论文 题目: 电动车跷跷板( 题目: 电动车跷跷板(F 题) 编...
2011年全国大学生电子设计大赛A题论文--开关电源
2011 年全国大学生电子设计大赛 2011 年全国大学生电子设计大赛论文 【本科组】 开关电源模块并联供电系统设计报告 2011 年 9 月 3 日 设计摘要:本作品是基于被...
2011年全国大学生电子设计竞赛综合测评题论文报告
2011年全国大学生电子设计竞赛综合测评题论文报告_调查/报告_表格/模板_应用文书。2011年全国大学生电子设计竞赛综合测评题今日推荐 157...
2015年全国大学生电子设计竞赛A题论文
2015年全国大学生电子设计竞赛A题论文_电子/电路_工程科技_专业资料。2015年“...1.2.3 控制系统的论证与选择 方案一:以 STM32F130VCT6 单片机作为主控制...
更多相关标签: