一、 任务 设计并制作如图1所示的单相交流电子负载,其中负载特性模拟单元可模拟电阻性、电感性、电容性负载,能量回馈单元能将尽可能多的能量以50Hz交流电回馈。 二、 要求 (1)模拟电阻性负载,电子负载输入为U1=30V, I1=2A。(15分) (2)模拟电感性负载,电子负载输入为U1=30V,I1=2A,输入侧功率因数cosφ1能根据数字设定在0.50~1.00范围内自动调整。(25分) (3)模拟电容性负载,电子负载输入为U1=30V,I1=2A,输入侧功率因数cosφ1能根据数字设定在0.50~1.00范围内自动调整。(25分) (4)模拟电阻性负载,电子负载输入为U1=30V,I1=2A,测电子负载的输入功率P1和回馈功率P2,ΔP= P1- P2,要求ΔP越小越好。(25分) (5)其他。(10分) (6)设计报告。(20分) 三、说明 (1)为简化题目、方便测试,电子负载回馈的能量由电阻性负载消耗。 (2)图1中的交流电源为50Hz正弦波交流电,其形式不限,但应做好隔离等措施,确保电气安全。 (3)为方便测试要求(4),交流电子负载仅由图1中的交流电源供电。 (4)题中所有交流参数均为有效值。 (5)电子负载的输入功率P1= U1I1cosφ1、输出功率P2= U2I2cosφ2,其中cosφ1为电子负载输入侧的功率因数,cosφ2为电子负载回馈侧的功率因数。 (6)电路制作时应考虑测试方便,合理设置测试点。
原理图和源码文档在附件,只做了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(); //延时函数初始化
- NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 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发送数据
- while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
- }
- 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发送数据
- while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
- }
- 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);
-
- }
-
- }
复制代码 |