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

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

基于STM32與ATT7022E多功能電力監(jiān)測(cè)儀設(shè)計(jì)

07/29 10:16
3608
服務(wù)支持:
技術(shù)交流群

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

虛擬商品不可退

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

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

本設(shè)計(jì)是基于STM32與ATT7022E多功能電力監(jiān)測(cè)儀的電路方案設(shè)計(jì)
程序編譯器:keil 5
編程語(yǔ)言:C語(yǔ)言
騰訊文檔】C0016 網(wǎng)盤鏈接

近年來(lái)隨著我國(guó)國(guó)民經(jīng)濟(jì)的高速發(fā)展,先進(jìn)嵌入式處理器技術(shù)、微電子技術(shù)及測(cè)控技術(shù)也得到了快速發(fā)展 ,為了適應(yīng)新形勢(shì)的發(fā)展和需求,政府對(duì)智能電網(wǎng)的不斷推進(jìn),對(duì)電力監(jiān)測(cè)儀的實(shí)時(shí)性、可靠性、精確性,提出了更高的要求。

傳統(tǒng)電力監(jiān)測(cè)儀廣泛采用AD+MCU模式,即外部模數(shù)A/D轉(zhuǎn)換芯片與8位、 16位單片機(jī)進(jìn)行對(duì)三相電網(wǎng)數(shù)據(jù)進(jìn)行采集,存在許多的弊端,如芯片功能單一,需要進(jìn)行外圍擴(kuò)展諸多器件,軟件程序算法復(fù)雜,測(cè)量精度不高等問題。

而以DSP+MCU雙CPU模式,很好的解決了復(fù)雜數(shù)據(jù)的處理問題,但存在開發(fā)成本過高,且造成MCU資源的一定浪費(fèi)。

本系統(tǒng)通過采用高性能 32位ARMCortex-M3內(nèi)核為處理器STM32F103ZE作為主控芯片與多功能高精度的三相電能專用計(jì)量芯片ATT7022E ,使系統(tǒng)整體硬件的設(shè)計(jì)更加簡(jiǎn)潔,與以往電力監(jiān)測(cè)儀系統(tǒng)處理性能力得到明顯提高,同時(shí)也降低程序算法復(fù)雜度。

原理圖(提供PDF):
在這里插入圖片描述

模塊底板原理圖(提供PDF):

在這里插入圖片描述

PCB(提供PDF):

在這里插入圖片描述

模塊底板PCBS(提供PDF):

在這里插入圖片描述

源程序:

//
///文件:main.c
///說明:
///用途:系統(tǒng)入口函數(shù)
///版本:Alpha0.0
/
/
#include “sys.h”
#include “delay.h”
#include “db_timer.h”
#include “db_init.h”
#include “db_usart.h”
#include “includes.h”
#include “db_amme.h”
#include “ucos_ii.h”
#include “sd_lcd.h”

OS_MEM * ptr;
//u8 ReadAmmeterData_sec; //

u32 CpuID[3];
u32 OldID[3]={0x05DCFF30,0x3132594D,0x51048325};//u32 OldID[3]={0x05D9FF37,0x33325943,0x43228423}
/*******/
//說 明:UCOSII任務(wù)函數(shù)聲明區(qū)
/
/
//SingleBurner:創(chuàng)建UCOSII的啟動(dòng)任務(wù)
#define START_TASK_PRIO 30 //開始任務(wù)的優(yōu)先級(jí),最低
#define START_STK_SIZE 128 //開始任務(wù)堆棧的長(zhǎng)度
OS_STK START_TASK_STK[START_STK_SIZE]; //開始任務(wù)堆??臻g
void start_task(void *pdata); //開始任務(wù)的聲明

//SingleBurner:創(chuàng)建UCOSII的主任務(wù)
#define MAIN_TASK_PRIO 6 //主任務(wù)的優(yōu)先級(jí)
#define MAIN_STK_SIZE 1024 //主任務(wù)堆棧的長(zhǎng)度
OS_STK MAIN_TASK_STK[MAIN_STK_SIZE]; //主任務(wù)堆??臻g
void main_task(void *pdata); //主任務(wù)的聲明
//SingleBurner:創(chuàng)建UCOSII的RTC任務(wù)
#define RTC_TASK_PRIO 4 //RTC任務(wù)的優(yōu)先級(jí)
#define RTC_STK_SIZE 512 //RTC任務(wù)堆棧的長(zhǎng)度
OS_STK RTC_TASK_STK[RTC_STK_SIZE]; //RTC任務(wù)堆??臻g
void rtc_task(void *pdata); //RTC任務(wù)的聲明
OS_EVENT * sem_rtc; //RTC信號(hào)量指針

/****************************/
//函數(shù)名:main()
//說 明:主函數(shù)
//參 數(shù):系統(tǒng)入口
//返回值:無(wú)返回
/
/

int main(void)
{
SCB->VTOR = FLASH_BASE;
System_Init(); //底層初始化
OSInit(); //UCOSII初始化
OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO); //創(chuàng)建開始任務(wù)

OSStart();                                                                                         //啟動(dòng)UCOSII多任務(wù)管理	  			

}
/****************************/
//函數(shù)名:start_task()
//說 明:起始函數(shù)
//參 數(shù):UCOSII函數(shù)入口
//返回值:無(wú)返回
/
/
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata=pdata;
sem_rtc =OSSemCreate(0); //創(chuàng)建一個(gè)信號(hào)量用于RTC時(shí)鐘
OSStatInit(); //初始化統(tǒng)計(jì)任務(wù)
OS_ENTER_CRITICAL(); //進(jìn)入臨界區(qū)

OSTaskCreate(main_task,(void *)0,(OS_STK *)&MAIN_TASK_STK[MAIN_STK_SIZE-1],MAIN_TASK_PRIO);        			//創(chuàng)建主任務(wù)

// OSTaskCreate(rtc_task,(void *)0,(OS_STK *)&RTC_TASK_STK[RTC_STK_SIZE-1],RTC_TASK_PRIO); //創(chuàng)建RTC任務(wù)
OSTaskSuspend(START_TASK_PRIO); //掛起起始任務(wù)
OS_EXIT_CRITICAL(); //退出臨界區(qū)
}

/****************************/
//函數(shù)名:main_task()
//說 明:UCOSII主函數(shù),處理雜事
//參 數(shù):無(wú)參數(shù)
//返回值:無(wú)返回
/
/
void main_task(void *pdata)
{
while(1)
{
DisposeKey(); //讀取按鍵

  key_scan();                                                                                             //按鍵掃描處理
    
	if(TimingMark == 10)																						//500ms定時(shí)標(biāo)志位
	{
		TimingMark=0;
     
     ReadAmmeterData();															//讀取內(nèi)部電表數(shù)據(jù)
     
     UpdateLcdMark = 1;         
	}
  
  if(UpdateLcdMark == 1)																							//判斷是否要更新數(shù)據(jù)
  {

     clear_screen();																						//清屏

     Display_lcd();                                  													//更新顯示數(shù)據(jù)	
     
     UpdateLcdMark = 0;
  }

	
}

}
/****************************/
//函數(shù)名:rtc_task()
//說 明:UCOSII的RTC任務(wù),處理時(shí)間
//參 數(shù):無(wú)參數(shù)
//返回值:無(wú)返回
/
/
void rtc_task(void *pdata)
{
u8 err;
while(1)
{
OSSemPend(sem_rtc,0,&err); //請(qǐng)求信號(hào)量

	delay_ms(20);												   				   						    //延遲一下
}

}

/****************************/
//函數(shù)名:RTC_IRQHandler()
//說 明:RTC中斷服務(wù)函數(shù)
//參 數(shù):無(wú)參數(shù)
//返回值:無(wú)返回
/
/
void RTC_IRQHandler(void)
{
if(RTC_GetITStatus(RTC_IT_SEC) != RESET) //秒鐘中斷
{
OSSemPost(sem_rtc); //發(fā)送信號(hào)量
}

RTC_ClearITPendingBit(RTC_IT_SEC);		                                  		          //清秒鐘中斷
RTC_WaitForLastTask();	  	                                              		          //等待最近一次對(duì)RTC操作完成						 	   	 

}

在這里插入圖片描述

在這里插入圖片描述

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
NC7SZ11P6X 1 Fairchild Semiconductor Corporation AND Gate, LVC/LCX/Z Series, 1-Func, 3-Input, CMOS, PDSO6, 1.25 MM, EIAJ, SC-88, SC-70, 6 PIN
$0.37 查看
74HC14PW,118 1 NXP Semiconductors 74HC(T)14 - Hex inverting Schmitt trigger TSSOP 14-Pin
$0.36 查看
SN74LVC1G125DCKT 1 Texas Instruments Single 1.65-V to 5.5-V buffer with 3-state outputs 5-SC70 -40 to 125

ECAD模型

下載ECAD模型
$0.9 查看

相關(guān)推薦

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