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