2026/2/11 22:15:06
网站建设
项目流程
手机建网站怎么弄,易语言可以做网站管理系统吗,pageadmin和wordpress,广州有什么好玩的基于stm32的数控线性稳压电源#xff0c;恒压恒流电源资料。
极具学习和设计参考价值#xff0c;已验证#xff0c;资料包括源程序#xff0c;原理图#xff0c;pcb等设计资料#xff01;
本设计采用220V市电输入工频变压器,将220V交流电压降为24V交流电压,经过全桥整流加…基于stm32的数控线性稳压电源恒压恒流电源资料。 极具学习和设计参考价值已验证资料包括源程序原理图pcb等设计资料 本设计采用220V市电输入工频变压器,将220V交流电压降为24V交流电压,经过全桥整流加电容滤波,输出约32V直流电压.可调输出电压方案采用线性稳压调整器方案,即运放处于比较调整状态,运放输出驱动P型MOS管,电压输出端由电阻分压反馈至运放同相输入端,运放反相输入端由STM32单片机控制TLC5615数模转换器输入模拟电压,根据运放构成比较器原理,运放的同相端和反相端始终趋向于电压相等的特性,不断调整MOS管的导通状态,从而可以实现STM32单片机通过控制数模转换器DA的输出,进而控制直流电压的输出大小.以上为作为电压源输出的方案介绍. ?????作为电流源输出,需要在后级输出采用0.1欧采样电阻来采样电流,采样电流经运放放大后送至单片机AD进行计算,单片机即可获得实际输出电流大小,由此根据设定电流值大小进行比较判断再控制DA输出,即可修正输出电流与设置电流一致.采样经放大的电流一部分又经运放组成比较器电路,采样电流与电位器可设置的比较电压进行比较,当电流大于比较电压,即可改变运放输出的高低电平状态,运放输出接单片机IO口,单片机将此IO设置为外部中断触发模式,目的为实现过流时快速响应并切断输出.调节电位器即可调整过流值大小. ?????液晶显示采用LCD1602,报警方式采用蜂鸣器LED声光报警.关键发热部位的温度通过NTC热敏电阻来采集,具有采集温度范围宽的优点.本机引出STM32单片机的串口接口,便于利用上位机进行控制。 对电路和程序稍加升级该电源板兼容了稳流输出的功能最后采用VS制作对应的数据采集上位机能够更加适应实际的应用。 具体功能 1、输出电压范围 0V 30.0V输入交流220V,直接插220V市电即可 2、步进0.1V纹波 ?30mV 3、最大输出电流1.5A 4、液晶LCD1602显示 5、由“加、减”两键控制输出电压步进增减 6、关键器件温度检测,超过60度声光报警。 7、具有输出过流保护,过流值大小通过电位器可调。 8、具有恒流输出和恒压输出两种模式,按键切换。这个用STM32搞的数控电源有点意思硬件和程序都整得挺实在。拆开电路板看架构220V市电进来先过工频变压器降到24V交流全桥整流配个4700uF大电容怼出来32V左右的直流电。这里有个坑要注意——工频变压器虽然皮实但体积重量感人现在有些DIYer喜欢用开关电源前级替代不过线性稳压的后级方案倒是稳妥。核心调压部分玩的是运放PMOS的经典套路。运放当比较器用同相端接反馈分压反相端接DLC5615的DA输出。当DA输出2V时假设分压比是1:15那输出电压就是2*(151)32V别急实际分压电阻得用精密电阻配不然DA的LSB步进会漂移。看段驱动PMOS的关键代码void SetVoltage(float targetV){ uint16_t dac_value (uint16_t)(targetV * 61.44); // 30V对应1843(0x733) TLC5615_Write(dac_value); }这61.44的系数怎么来的TLC5615是10位DA基准2.048V。当DA输出Vdac时电源输出电压Vout Vdac(R1R2)/R2。假设分压电阻是10K150K那系数就是(160/10)(2.048/2.0)16.384。但代码里用61.44明显不对估计实际分压比是33:1可能硬件实际用了不同阻值——这提醒我们调压时必须实测分压电阻。恒流模式更有意思。0.1Ω采样电阻上压降V0.1*I用LM358放大20倍后进STM32的ADC。注意这里运放的偏置电压会直接影响测量精度代码里得做软件校准#define CURRENT_OFFSET 82 // 零点偏移量 uint16_t ReadCurrentADC(void){ uint32_t sum 0; for(uint8_t i0;i16;i){ sum ADC_Read(ADC_CH_CURRENT); } return (sum 4) - CURRENT_OFFSET; }采样16次取平均能有效抑制工频干扰但CURRENT_OFFSET这个偏移量需要上电时自动校准而不是写死。更好的做法是开机时短接输出端自动记录零点AD值。基于stm32的数控线性稳压电源恒压恒流电源资料。 极具学习和设计参考价值已验证资料包括源程序原理图pcb等设计资料 本设计采用220V市电输入工频变压器,将220V交流电压降为24V交流电压,经过全桥整流加电容滤波,输出约32V直流电压.可调输出电压方案采用线性稳压调整器方案,即运放处于比较调整状态,运放输出驱动P型MOS管,电压输出端由电阻分压反馈至运放同相输入端,运放反相输入端由STM32单片机控制TLC5615数模转换器输入模拟电压,根据运放构成比较器原理,运放的同相端和反相端始终趋向于电压相等的特性,不断调整MOS管的导通状态,从而可以实现STM32单片机通过控制数模转换器DA的输出,进而控制直流电压的输出大小.以上为作为电压源输出的方案介绍. ?????作为电流源输出,需要在后级输出采用0.1欧采样电阻来采样电流,采样电流经运放放大后送至单片机AD进行计算,单片机即可获得实际输出电流大小,由此根据设定电流值大小进行比较判断再控制DA输出,即可修正输出电流与设置电流一致.采样经放大的电流一部分又经运放组成比较器电路,采样电流与电位器可设置的比较电压进行比较,当电流大于比较电压,即可改变运放输出的高低电平状态,运放输出接单片机IO口,单片机将此IO设置为外部中断触发模式,目的为实现过流时快速响应并切断输出.调节电位器即可调整过流值大小. ?????液晶显示采用LCD1602,报警方式采用蜂鸣器LED声光报警.关键发热部位的温度通过NTC热敏电阻来采集,具有采集温度范围宽的优点.本机引出STM32单片机的串口接口,便于利用上位机进行控制。 对电路和程序稍加升级该电源板兼容了稳流输出的功能最后采用VS制作对应的数据采集上位机能够更加适应实际的应用。 具体功能 1、输出电压范围 0V 30.0V输入交流220V,直接插220V市电即可 2、步进0.1V纹波 ?30mV 3、最大输出电流1.5A 4、液晶LCD1602显示 5、由“加、减”两键控制输出电压步进增减 6、关键器件温度检测,超过60度声光报警。 7、具有输出过流保护,过流值大小通过电位器可调。 8、具有恒流输出和恒压输出两种模式,按键切换。过流保护用硬件比较器实现很聪明。当电流采样电压超过电位器设定值时比较器翻转触发外部中断。代码里中断服务程序直接掐断输出void EXTI9_5_IRQHandler(void){ if(EXTI_GetITStatus(EXTI_Line8)){ MOSFET_OFF(); BEEP_ALARM(3); EXTI_ClearITPendingBit(EXTI_Line8); } }注意这里没做软件消抖万一比较器临界振荡可能误触发。硬件上加个100pF电容到地会更稳妥。温度检测用NTC时代码里的温度计算公式要注意float TempCalc(uint16_t adc_val){ float Rt 10000.0 * (4095.0/adc_val -1); // 10K NTC float T 1/(1/298.15 log(Rt/10000)/3950.0); return T -273.15; }这个公式基于B3950的NTC实际器件参数可能有偏差。更专业的做法应该做两点校准在25度和50度时记录AD值做线性修正。主控逻辑的状态机切换是亮点typedef enum {CV_MODE, CC_MODE} WorkMode; WorkMode currentMode CV_MODE; void ModeSwitch(void){ static uint8_t lastKey 0; if(KEY_MODE_TRIGGERED()){ currentMode (currentMode CV_MODE)? CC_MODE : CV_MODE; LCD_ShowMode(currentMode); } }模式切换时要处理DAC输出的平滑过渡突然切变可能导致输出冲击电流。可以加个渐变过渡void ModeTransition(){ float target (currentMode CV_MODE) ? setVoltage : setCurrent*loadResistance; for(float vcurrentOutput; v!target; vstep){ SetVoltage(v); Delay(10); } }当然实际要考虑环路稳定性别整成慢动作。这套方案最妙的其实是上位机交互部分。用VS做的监控程序通过串口发指令协议设计要讲究帧结构// 通信协议帧格式: // 0xAA | CMD | DataH | DataL | Checksum void SendVoltageSetting(float voltage){ uint16_t data voltage *10; // 0.1V分辨率 UART_SendByte(0xAA); UART_SendByte(CMD_SET_VOL); UART_SendByte(data 8); UART_SendByte(data 0xFF); UART_SendByte(CheckSum()); }校验和用异或还是CRC实际测试发现用累加和就能满足要求毕竟不是高速通信。最后说个硬件上的隐患——PMOS管在低压差时功耗惊人。比如输出5V/1A时管压降27V功耗27W必须加大散热片或者改进电路做成多级调整。不过作为学习项目能跑起来已经够本真做产品还得换Buck拓扑。