1. 程式人生 > 實用技巧 >493【畢設課設】基於STM32鉛酸蓄電池內阻測試儀PGA113晶片

493【畢設課設】基於STM32鉛酸蓄電池內阻測試儀PGA113晶片

【資源下載】下載地址如下:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl


測量電池內阻時,通過微控制器IO口給一個PWM,控制恆流源以一定的頻率工作,電路相當於以一定的頻率改變負載值,會有一個很小幅度的方波(方波與輸出波形相位差180度,因為恆流源工作,mos管導通,相當於電路中多了一條電流支路,mos管管斷,只有一條電池電流流過的支路,不需要分電流,自然輸出為方波的最大值),通過放大器與後面的採集電路,通過換算可以得出方波的差值,再除以設定的電流值便可以得出電池的內阻值。

本方案採用可程式設計運放PGA113,結合高精度AD晶片,採集資料,完成電池內阻的實時高精度檢測。檔案包括原始碼、PCB、原理圖等詳細檔案。

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "oled.h"
#include "adc.h"
#include "pwm.h"
#include "key.h"
#include "beep.h"
#include "PGA.h"


int main(void)
{ 

	float R;  //表示內阻
	u16 adcx,adcx1,adcx2,adcx3;

	u32 result;
	double temp,temp1,temp2,temp3;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設定系統中斷優先順序分組2
	delay_init(21);     //初始化延時函式
	uart_init(115200);	//初始化串列埠波特率為115200
	LED_Init();					//初始化LED
 	OLED_Init();				//初始化OLED
	Adc_Init();          //初始化ADC
	KEY_Init();
	BEEP_Init();
	
	
	OLED_ShowGBK(20,0,0,12,1);	 //肺
	OLED_ShowGBK(34,0,1,12,1);	//活
	OLED_ShowGBK(48,0,2,12,1);	//量
	OLED_ShowGBK(62,0,3,12,1);	//測
	OLED_ShowGBK(76,0,4,12,1);	//試
	OLED_ShowGBK(90,0,5,12,1);	//儀
	
	OLED_ShowGBK(04,18,6,12,1);	//及
	OLED_ShowGBK(18,18,7,12,1);	//格
	OLED_ShowGBK(38,18,9,12,1);	//男