原理圖PCB:Altium Designer
程序編譯器:keil 5
編程語言:C語言
設(shè)計編號:C0057
設(shè)計介紹
基于ARM的智能RLC測量儀采用STM32F103C8T6單片機作為整個設(shè)計的控制核心。系統(tǒng)通過由NE555定時器組成的RC振蕩器和電容三點振蕩器,將對應(yīng)測量參數(shù)的振蕩頻率發(fā)送到STM32的計數(shù)端,通過STM32的定時和計數(shù),可以推算出相應(yīng)的測量頻率的大小,再經(jīng)過STM32單片機內(nèi)部邏輯程序分析計算后,將電路測量的數(shù)據(jù)結(jié)果以數(shù)字形式傳輸給LCD1602顯示模塊,進行RLC測量的動態(tài)顯示。
這一設(shè)計實現(xiàn)了數(shù)字化的動態(tài)測量顯示,有效取代了傳統(tǒng)測量儀的復(fù)雜電路,實現(xiàn)了電子元件參數(shù)的智能測量、利用單片機的內(nèi)部分析和控制數(shù)據(jù)顯示,從而取得準確性較高的RLC測量數(shù)據(jù)。
本設(shè)計基于STM32單片機進行智能處理。根據(jù)使STM32單片機的外部按鈕控制測量電路的選擇,測量電阻Rx和電容Cx時,選用RC振蕩電路,通過NE555定時器產(chǎn)生對應(yīng)的頻率;測量電感Lx時,選擇電容三點振蕩電路,NE555定時器產(chǎn)生相應(yīng)的頻率,STM32對這些頻率進行計數(shù)和定時,然后再進行內(nèi)部計算分析,將電路測量的數(shù)據(jù)結(jié)果以數(shù)字形式傳輸給 LCD1602顯示模塊,進行 RCL測量的動態(tài)顯示。RLC智能測量儀表系統(tǒng)的總體結(jié)構(gòu)主要包括:主測量電路,STM32控制電路,CD4052多路選擇開關(guān)電路,液晶顯示驅(qū)動電路和功能選擇按鈕電路。
已經(jīng)做出實物驗證程序,放心使用吧。不提供技術(shù)支持,要相信自己的動手能力,耐心調(diào)試,肯定是可以做出來的??!
實物圖(分別測量電阻電感電容):
測量電阻
測量電感
測量電容
以下為本設(shè)計資料展示圖:
原理圖
PCB
PCB(3D):
程序
程序流程圖
? 主程序作為整個軟件設(shè)計的核心,主要作用是當好“一座橋梁”,它是每個子功能模塊互通的紐帶,從而完整的實現(xiàn)測量儀的需求。主要實現(xiàn)鍵盤輸入,數(shù)據(jù)采集,數(shù)據(jù)存儲和已存儲數(shù)據(jù)的計算和處理,調(diào)用各功能模塊進行測量,找出待檢測的電阻值Rx、電容值Cx以及電感值Lx,并通過單片機STM32處理結(jié)果在1602液晶顯示屏顯示,軟件設(shè)計的操作流程圖如圖4-2。
main函數(shù)
#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(); //延時函數(shù)初始化
NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
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);
}
}
測量結(jié)果
設(shè)計說明書
設(shè)計說明書主要內(nèi)容
? 本設(shè)計基于STM32單片機進行智能處理。根據(jù)使STM32單片機的外部按鈕控制測量電路的選擇,測量電阻Rx和電容Cx時,選用RC振蕩電路,通過NE555定時器產(chǎn)生對應(yīng)的頻率;當測量電感Lx時,待測電感Lx通過NE555定時器連接到電容的三點振蕩電路,導(dǎo)出頻率FL,然后STM32對這些頻率進行計數(shù)和定時,然后再進行內(nèi)部計算分析,使電阻電容電感的測量轉(zhuǎn)化為頻率的測量,然后由微控制器STM32處理測量結(jié)果并將其發(fā)送到 LCD1602液晶顯示器以進行顯示。本論文的主要內(nèi)容如下:
? 分析并總結(jié)了被測元器件的重要參數(shù)及對元器件常用的檢測電路,通過比較選出合適的方法。RLC智能測量儀表系統(tǒng)的總體結(jié)構(gòu)主要包括:主要測量電路,STM32控制電路,CD4052多通道選擇開關(guān)電路,液晶顯示驅(qū)動電路和功能選擇按鈕電路。在硬件設(shè)計中詳細描述了電路原理圖。RLC測量儀器的軟件設(shè)計主要是應(yīng)用模塊化結(jié)構(gòu)設(shè)計編寫相關(guān)的程序模塊。智能RLC儀表的軟件設(shè)計可分為四個模塊,即:主程序模塊,中斷采樣程序模塊,自動轉(zhuǎn)換范圍程序模塊,顯示程序模塊和數(shù)據(jù)處理程序模塊[5]。介紹RCL測量儀系統(tǒng)軟硬件的調(diào)試。根據(jù)測量結(jié)果,獲得了RLC測量儀器的精度,并研究了測量誤差??偨Y(jié)了智能RLC測量儀的優(yōu)勢和需要改進之處,以及自己在設(shè)計中所學(xué)到的知識總結(jié)。