news 2026/4/23 12:21:45

基于stm32的数控线性稳压电源,恒压恒流电源资料。 极具学习和设计参考价值,已验证,资料包括...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于stm32的数控线性稳压电源,恒压恒流电源资料。 极具学习和设计参考价值,已验证,资料包括...

基于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*(15+1)=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(R1+R2)/R2。假设分压电阻是10K+150K,那系数就是(160/10)(2.048/2.0)=16.384。但代码里用61.44明显不对,估计实际分压比是33:1,可能硬件实际用了不同阻值——这提醒我们调压时必须实测分压电阻。

恒流模式更有意思。0.1Ω采样电阻上压降V=0.1*I,用LM358放大20倍后进STM32的ADC。注意这里运放的偏置电压会直接影响测量精度,代码里得做软件校准:

#define CURRENT_OFFSET 82 // 零点偏移量 uint16_t ReadCurrentADC(void){ uint32_t sum = 0; for(uint8_t i=0;i<16;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; }

这个公式基于B=3950的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 v=currentOutput; v!=target; v+=step){ 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拓扑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 13:58:57

全新架构投票系统,赋能企业商家轻松创收

温馨提示&#xff1a;文末有资源获取方式企业与商家对低成本、高成效的营销工具需求愈发迫切。能够激发用户主动参与、并能在社交链条上裂变的营销活动&#xff0c;价值千金。微信投票系统正是这样一种经典且高效的营销载体。如今&#xff0c;一个功能全面革新、以“赋能”和“…

作者头像 李华
网站建设 2026/4/17 13:00:23

沉浸式Mac写作利器 Ulysses 深度体验

在信息过载、注意力碎片化的时代&#xff0c;写作者面临的最大挑战或许并非灵感枯竭&#xff0c;而是难以进入并维持一种深度专注的“心流”状态。频繁的界面切换、繁琐的格式调整、多设备间的同步断层……这些技术性干扰不断消耗着我们宝贵的认知资源。今天&#xff0c;我们将…

作者头像 李华
网站建设 2026/4/18 10:36:57

超越 Grok,阶跃星辰拿下全球权威语音模型榜第一

1 月 15 日消息&#xff0c;全球知名权威大模型评测榜单 Artificial Analysis Speech Reasoning 更新&#xff0c;大模型创业公司阶跃星辰原生音频推理模型 Step-Audio-R1.1 登顶榜首&#xff0c;以 96.4% 准确率&#xff0c;超越 Grok、Gemini、GPT-Realtime 等主流一线模型&a…

作者头像 李华
网站建设 2026/4/17 16:02:12

8个降AIGC工具推荐!继续教育学员必看的高效降重方案

8个降AIGC工具推荐&#xff01;继续教育学员必看的高效降重方案 AI降重工具&#xff1a;让论文更自然&#xff0c;让学术更安心 在当前的学术环境中&#xff0c;随着AI技术的广泛应用&#xff0c;越来越多的论文被检测出AIGC痕迹&#xff0c;这不仅影响了论文的通过率&#xff…

作者头像 李华
网站建设 2026/4/22 23:37:08

导师严选10个AI论文平台,助你轻松搞定研究生论文!

导师严选10个AI论文平台&#xff0c;助你轻松搞定研究生论文&#xff01; AI 工具如何成为论文写作的得力助手&#xff1f; 在研究生阶段&#xff0c;论文写作是一项既重要又繁重的任务。无论是开题报告、文献综述还是最终的毕业论文&#xff0c;都需要大量的时间和精力去完成。…

作者头像 李华