原理图PCB:Altium Designer
程序编译器:keil 5
编程语言:C语言
设计编号:C0057
设计介绍
基于ARM的智能RLC测量仪采用STM32F103C8T6单片机作为整个设计的控制核心。系统通过由NE555定时器组成的RC振荡器和电容三点振荡器,将对应测量参数的振荡频率发送到STM32的计数端,通过STM32的定时和计数,可以推算出相应的测量频率的大小,再经过STM32单片机内部逻辑程序分析计算后,将电路测量的数据结果以数字形式传输给LCD1602显示模块,进行RLC测量的动态显示。
这一设计实现了数字化的动态测量显示,有效取代了传统测量仪的复杂电路,实现了电子元件参数的智能测量、利用单片机的内部分析和控制数据显示,从而取得准确性较高的RLC测量数据。
本设计基于STM32单片机进行智能处理。根据使STM32单片机的外部按钮控制测量电路的选择,测量电阻Rx和电容Cx时,选用RC振荡电路,通过NE555定时器产生对应的频率;测量电感Lx时,选择电容三点振荡电路,NE555定时器产生相应的频率,STM32对这些频率进行计数和定时,然后再进行内部计算分析,将电路测量的数据结果以数字形式传输给 LCD1602显示模块,进行 RCL测量的动态显示。RLC智能测量仪表系统的总体结构主要包括:主测量电路,STM32控制电路,CD4052多路选择开关电路,液晶显示驱动电路和功能选择按钮电路。
已经做出实物验证程序,放心使用吧。不提供技术支持,要相信自己的动手能力,耐心调试,肯定是可以做出来的!!
实物图(分别测量电阻电感电容):
测量电阻
测量电感
测量电容
以下为本设计资料展示图:
原理图
PCB
PCB(3D):
程序
程序流程图
主程序作为整个软件设计的核心,主要作用是当好“一座桥梁”,它是每个子功能模块互通的纽带,从而完整的实现测量仪的需求。主要实现键盘输入,数据采集,数据存储和已存储数据的计算和处理,调用各功能模块进行测量,找出待检测的电阻值Rx、电容值Cx以及电感值Lx,并通过单片机STM32处理结果在1602液晶显示屏显示,软件设计的操作流程图如图4-2。
main函数
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "timer.h"
#include "usart1.h"
#include "LCD1602.h"
#include "key.h"
#include "exti.h"
#include "string.h"
#include "stdio.h"
u8 mode = 2;
void keyscan()
{
u8 key;
key = KEY_Scan(0);
if(key == 1)
{
mode = 1;
LED1 = 0;
LED2 = 1;
LED3 = 1;
CD4052_B = 0;//电容档
CD4052_A = 0;
LCD_Write_String(0,0," MEASURE Cx ");
LCD_Write_String(0,1," 00000.0pF ");
}
if(key == 2)
{
mode = 2;
LED1 = 1;
LED2 = 0;
LED3 = 1;
CD4052_B = 0;//电阻档
CD4052_A = 1;
LCD_Write_String(0,0," MEASURE Rx ");
LCD_Write_String(0,1," 0000.000K ");
}
if(key == 3)
{
mode = 3;
LED1 = 1;
LED2 = 1;
LED3 = 0;
CD4052_B = 1;//电感档
CD4052_A = 0;
LCD_Write_String(0,0," MEASURE Lx ");
LCD_Write_String(0,1," 000000uH ");
}
}
extern unsigned long RX2;
extern float CZ;
extern float LZ;
int main(void)
{
unsigned int count;
delay_init(); //延时函数初始化
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
delay_ms(300);
KEY_Init();
LED_Init();
CD4052_Init();
LCD_Init(); // 1602初始化
EXTIX_Init();
CD4052_B = 0;//电阻档
CD4052_A = 1;
LED1 = 1;
LED2 = 0;
LED3 = 1;
LCD_Write_String(0,0," MEASURE Rx ");
LCD_Write_String(0,1," 0000.000K ");
TIM2_Int_Init(999,7199); //定时器初始化,定时100MS
while(1)
{
keyscan();
if(count++ > 100)
{
if(mode == 1)//显示电容值
{
LCD_Write_Char(4,1,(long)CZ/100000+'0');
LCD_Write_Char(5,1,(long)CZ%100000/10000+'0');
LCD_Write_Char(6,1,(long)CZ%10000/1000+'0');
LCD_Write_Char(7,1,(long)CZ%1000/100+'0');
LCD_Write_Char(8,1,(long)CZ%100/10+'0');
LCD_Write_Char(10,1,(long)CZ%10+'0');
}
if(mode == 2)//显示电阻值
{
LCD_Write_Char(3,1,RX2/1000000+'0');
LCD_Write_Char(4,1,RX2%1000000/100000+'0');
LCD_Write_Char(5,1,RX2%100000/10000+'0');
LCD_Write_Char(6,1,RX2%10000/1000+'0');
LCD_Write_Char(8,1,RX2%1000/100+'0');
LCD_Write_Char(9,1,RX2%100/10+'0');
LCD_Write_Char(10,1,RX2%10+'0');
}
if(mode == 3)//显示电感值
{
LCD_Write_Char(4,1,(long)LZ/100000+'0');
LCD_Write_Char(5,1,(long)LZ%100000/10000+'0');
LCD_Write_Char(6,1,(long)LZ%10000/1000+'0');
LCD_Write_Char(7,1,(long)LZ%1000/100+'0');
LCD_Write_Char(8,1,(long)LZ%100/10+'0');
LCD_Write_Char(9,1,(long)LZ%10+'0');
}
}
delay_ms(1);
}
}
测量结果
设计说明书
设计说明书主要内容
本设计基于STM32单片机进行智能处理。根据使STM32单片机的外部按钮控制测量电路的选择,测量电阻Rx和电容Cx时,选用RC振荡电路,通过NE555定时器产生对应的频率;当测量电感Lx时,待测电感Lx通过NE555定时器连接到电容的三点振荡电路,导出频率FL,然后STM32对这些频率进行计数和定时,然后再进行内部计算分析,使电阻电容电感的测量转化为频率的测量,然后由微控制器STM32处理测量结果并将其发送到 LCD1602液晶显示器以进行显示。本论文的主要内容如下:
分析并总结了被测元器件的重要参数及对元器件常用的检测电路,通过比较选出合适的方法。RLC智能测量仪表系统的总体结构主要包括:主要测量电路,STM32控制电路,CD4052多通道选择开关电路,液晶显示驱动电路和功能选择按钮电路。在硬件设计中详细描述了电路原理图。RLC测量仪器的软件设计主要是应用模块化结构设计编写相关的程序模块。智能RLC仪表的软件设计可分为四个模块,即:主程序模块,中断采样程序模块,自动转换范围程序模块,显示程序模块和数据处理程序模块[5]。介绍RCL测量仪系统软硬件的调试。根据测量结果,获得了RLC测量仪器的精度,并研究了测量误差。总结了智能RLC测量仪的优势和需要改进之处,以及自己在设计中所学到的知识总结。