加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于STM32單片機(jī)電阻電容電感檢測儀設(shè)計

08/07 09:17
2162
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

(程序+原理圖+PCB+設(shè)計說明書)

原理圖PCB:Altium Designer

程序編譯器:keil 5

編程語言:C語言

設(shè)計編號:C0057

設(shè)計介紹

基于ARM的智能RLC測量儀采用STM32F103C8T6單片機(jī)作為整個設(shè)計的控制核心。系統(tǒng)通過由NE555定時器組成的RC振蕩器電容三點振蕩器,將對應(yīng)測量參數(shù)的振蕩頻率發(fā)送到STM32的計數(shù)端,通過STM32的定時和計數(shù),可以推算出相應(yīng)的測量頻率的大小,再經(jīng)過STM32單片機(jī)內(nèi)部邏輯程序分析計算后,將電路測量的數(shù)據(jù)結(jié)果以數(shù)字形式傳輸給LCD1602顯示模塊,進(jìn)行RLC測量的動態(tài)顯示。

這一設(shè)計實現(xiàn)了數(shù)字化的動態(tài)測量顯示,有效取代了傳統(tǒng)測量儀的復(fù)雜電路,實現(xiàn)了電子元件參數(shù)的智能測量、利用單片機(jī)的內(nèi)部分析和控制數(shù)據(jù)顯示,從而取得準(zhǔn)確性較高的RLC測量數(shù)據(jù)。

本設(shè)計基于STM32單片機(jī)進(jìn)行智能處理。根據(jù)使STM32單片機(jī)的外部按鈕控制測量電路的選擇,測量電阻Rx和電容Cx時,選用RC振蕩電路,通過NE555定時器產(chǎn)生對應(yīng)的頻率;測量電感Lx時,選擇電容三點振蕩電路,NE555定時器產(chǎn)生相應(yīng)的頻率,STM32對這些頻率進(jìn)行計數(shù)和定時,然后再進(jìn)行內(nèi)部計算分析,將電路測量的數(shù)據(jù)結(jié)果以數(shù)字形式傳輸給 LCD1602顯示模塊,進(jìn)行 RCL測量的動態(tài)顯示。RLC智能測量儀表系統(tǒng)的總體結(jié)構(gòu)主要包括:主測量電路,STM32控制電路,CD4052多路選擇開關(guān)電路,液晶顯示驅(qū)動電路和功能選擇按鈕電路。

已經(jīng)做出實物驗證程序,放心使用吧。不提供技術(shù)支持,要相信自己的動手能力,耐心調(diào)試,肯定是可以做出來的!!

實物圖(分別測量電阻電感電容):

測量電阻

在這里插入圖片描述

測量電感

在這里插入圖片描述

測量電容

在這里插入圖片描述

以下為本設(shè)計資料展示圖:

原理圖

在這里插入圖片描述

PCB

img

PCB(3D):

img

程序

在這里插入圖片描述

程序流程圖

image-20220825003134303

? 主程序作為整個軟件設(shè)計的核心,主要作用是當(dāng)好“一座橋梁”,它是每個子功能模塊互通的紐帶,從而完整的實現(xiàn)測量儀的需求。主要實現(xiàn)鍵盤輸入,數(shù)據(jù)采集,數(shù)據(jù)存儲和已存儲數(shù)據(jù)的計算和處理,調(diào)用各功能模塊進(jìn)行測量,找出待檢測的電阻值Rx、電容值Cx以及電感值Lx,并通過單片機(jī)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é)果

img

設(shè)計說明書

img

設(shè)計說明書主要內(nèi)容

? 本設(shè)計基于STM32單片機(jī)進(jìn)行智能處理。根據(jù)使STM32單片機(jī)的外部按鈕控制測量電路的選擇,測量電阻Rx和電容Cx時,選用RC振蕩電路,通過NE555定時器產(chǎn)生對應(yīng)的頻率;當(dāng)測量電感Lx時,待測電感Lx通過NE555定時器連接到電容的三點振蕩電路,導(dǎo)出頻率FL,然后STM32對這些頻率進(jìn)行計數(shù)和定時,然后再進(jìn)行內(nèi)部計算分析,使電阻電容電感的測量轉(zhuǎn)化為頻率的測量,然后由微控制器STM32處理測量結(jié)果并將其發(fā)送到 LCD1602液晶顯示器以進(jìn)行顯示。本論文的主要內(nèi)容如下:

? 分析并總結(jié)了被測元器件的重要參數(shù)及對元器件常用的檢測電路,通過比較選出合適的方法。RLC智能測量儀表系統(tǒng)的總體結(jié)構(gòu)主要包括:主要測量電路,STM32控制電路,CD4052多通道選擇開關(guān)電路,液晶顯示驅(qū)動電路和功能選擇按鈕電路。在硬件設(shè)計中詳細(xì)描述了電路原理圖。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)勢和需要改進(jìn)之處,以及自己在設(shè)計中所學(xué)到的知識總結(jié)。

資料清單

img

資料下載

  • 設(shè)計資料獲取聯(lián)系方式.doc

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
ATXMEGA192D3-MH 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, 9 X 9 MM, 1 MM HEIGHT, 0.50 MM PITCH, GREEN, MO-220VMMD, MLF-64
$5.62 查看
LPC4357FET256,551 1 NXP Semiconductors LPC4357FET256 - Dual-core Cortex-M4/M0, 1 MB Flash, 136 kB SRAM, 2 HS USB with on-chip PHY, Ethernet, LCD, CAN, AES, SPIFI, SGPIO, SCT BGA 256-Pin

ECAD模型

下載ECAD模型
$15.87 查看
MK70FN1M0VMJ12R 1 Freescale Semiconductor 32-BIT, FLASH, 120MHz, RISC MICROCONTROLLER, PBGA256, 17 X 17 MM, MAPBGA-256
暫無數(shù)據(jù) 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜