一、 任務(wù) 設(shè)計并制作如圖1所示的單相交流電子負載,其中負載特性模擬單元可模擬電阻性、電感性、電容性負載,能量回饋單元能將盡可能多的能量以50Hz交流電回饋。 二、 要求 (1)模擬電阻性負載,電子負載輸入為U1=30V, I1=2A。(15分) (2)模擬電感性負載,電子負載輸入為U1=30V,I1=2A,輸入側(cè)功率因數(shù)cosφ1能根據(jù)數(shù)字設(shè)定在0.50~1.00范圍內(nèi)自動調(diào)整。(25分) (3)模擬電容性負載,電子負載輸入為U1=30V,I1=2A,輸入側(cè)功率因數(shù)cosφ1能根據(jù)數(shù)字設(shè)定在0.50~1.00范圍內(nèi)自動調(diào)整。(25分) (4)模擬電阻性負載,電子負載輸入為U1=30V,I1=2A,測電子負載的輸入功率P1和回饋功率P2,ΔP= P1- P2,要求ΔP越小越好。(25分) (5)其他。(10分) (6)設(shè)計報告。(20分) 三、說明 (1)為簡化題目、方便測試,電子負載回饋的能量由電阻性負載消耗。 (2)圖1中的交流電源為50Hz正弦波交流電,其形式不限,但應(yīng)做好隔離等措施,確保電氣安全。 (3)為方便測試要求(4),交流電子負載僅由圖1中的交流電源供電。 (4)題中所有交流參數(shù)均為有效值。 (5)電子負載的輸入功率P1= U1I1cosφ1、輸出功率P2= U2I2cosφ2,其中cosφ1為電子負載輸入側(cè)的功率因數(shù),cosφ2為電子負載回饋側(cè)的功率因數(shù)。 (6)電路制作時應(yīng)考慮測試方便,合理設(shè)置測試點。
原理圖和源碼文檔在附件,只做了123題,運氣不錯拿了省一,資料有點亂,希望能對你有幫助
STM32單片機源程序:
- ////////////////////////////////////////////////////////////////////////////////// )
- // 說明:
- // ----------------------------------------------------------------
- // GND 電源地
- // VCC 接5V或3.3v電源
- // SCL 接PA5(SCL)
- // SDA 接PA7(SDA)
- // ----------------------------------------------------------------
- // 矩陣鍵盤接B1、B15、B6、B7 C0、C1、C2、C3
- // 4腳oled:SCL 接PA5,SDA 接PA7
- //////////////////////////////////////////////////////////////////////////////////
- #include "delay.h"
- #include "sys.h"
- #include "oled.h"
- #include "bmp.h"
- #include "key.h"
- #include "usart.h"
- int main(void)
- { u8 t;
- unsigned int key=0, key_new=0;
- double inv=0.0, ina=0.0;
- u32 adc_V_t = 0, adc_A_t = 0;
- double adc_V = 0,adc_A = 0;
- delay_init(); //延時函數(shù)初始化
- NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級 LED_Init(); //LED端口初始化
- OLED_Init(); //初始化OLED
- OLED_Clear() ;
- KEY_Init();
- uart_init(9600);
-
- t=' ';
-
- OLED_ShowString(0,0,"INV:", 12);
- OLED_ShowString(0,2,"R1:", 12);
- OLED_ShowString(45,2,"R2:", 12);
- OLED_ShowString(0,4,"OUTV:", 12);
- OLED_ShowString(0,6,"COS:", 12);
- OLED_ShowString(66,0,"INA:", 12);
- OLED_ShowString(85,2,"R3:", 12);
- OLED_ShowString(66,4,"OUTA:", 12);
-
- // inv = input_in_v();
- // ina = input_in_a();
-
- USART_TX_BUF_I[0] = 0x01;
- USART_TX_BUF_I[1] = 0x03;
- USART_TX_BUF_I[2] = 0x00;
- USART_TX_BUF_I[3] = 0x01;
- USART_TX_BUF_I[4] = 0x00;
- USART_TX_BUF_I[5] = 0x02;
- USART_TX_BUF_I[6] = 0x95;
- USART_TX_BUF_I[7] = 0xCB;
-
-
- USART_TX_BUF_V[0] = 0x01;
- USART_TX_BUF_V[1] = 0x03;
- USART_TX_BUF_V[2] = 0x00;
- USART_TX_BUF_V[3] = 0x03;
- USART_TX_BUF_V[4] = 0x00;
- USART_TX_BUF_V[5] = 0x02;
- USART_TX_BUF_V[6] = 0x34;
- USART_TX_BUF_V[7] = 0x0B;
- while(1)
- {
- USART_RX_STA = 0;
- //電壓
- for(t=0;t<8;t++)
- {
- USART_SendData(USART1, USART_TX_BUF_V[t]);//向串口1發(fā)送數(shù)據(jù)
- while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發(fā)送結(jié)束
- }
- while(USART_RX_STA != 0x8000);
-
- adc_V_t = USART_RX_BUF[3]*16777216 + USART_RX_BUF[4]*65536 + USART_RX_BUF[5]*256 + USART_RX_BUF[6];
- adc_V = adc_V_t*0.00001;
- OLED_ShowChar(6*(0+4),0, ((int)adc_V)/10 + '0',12);
- OLED_ShowChar(6*(1+4),0, ((int)adc_V)%10 + '0',12);
- OLED_ShowChar(6*(2+4),0, '.',12);
- OLED_ShowChar(6*(3+4),0, ((int)(adc_V*10))%10 + '0',12);
- OLED_ShowChar(6*(4+4),0, 'v',12);
-
-
- USART_RX_STA = 0;
- //電流
- for(t=0;t<8;t++)
- {
- USART_SendData(USART1, USART_TX_BUF_I[t]);//向串口1發(fā)送數(shù)據(jù)
- while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發(fā)送結(jié)束
- }
- while(USART_RX_STA != 0x8000);
- adc_A_t = USART_RX_BUF[3]*65536 + USART_RX_BUF[4]*256 + USART_RX_BUF[5];
- adc_A = adc_A_t*0.00001;
- OLED_ShowChar(6*(0+15),0, (int)adc_A + '0',12);
- OLED_ShowChar(6*(1+15),0, '.',12);
- OLED_ShowChar(6*(2+15),0, ((int)(adc_A*10))%10 + '0',12);
- OLED_ShowChar(6*(3+15),0, ((int)(adc_A*100))%10 + '0',12);
- OLED_ShowChar(6*(4+15),0, 'A',12);
-
- }
-
- }
復(fù)制代碼 |