一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 2958|回复: 5
收起左侧

[51单片机] 数控电源控制部分,STC单片机

[复制链接]
发表于 2016-10-13 21:07 | 显示全部楼层 |阅读模式
想做数控电源,控制部分和模拟输出部分分开的。请大家帮忙找错误的地方。谢谢,下边是控制部分的原理图和PCB图。EC11旋转调节输出大小,按下确认输出。两个按键调节电压或者电流模式,两个LED做电压/电流设定指示。12864显示,有蜂鸣器。

PCB正面

PCB正面

PCB背面

PCB背面

原理图

原理图
 楼主| 发表于 2016-10-13 21:16 | 显示全部楼层
有1302、18B20,显示可以用12864或1602都行。风扇输出(不过是5V的风扇)。
发表于 2016-10-13 21:41 | 显示全部楼层
本帖最后由 佳广 于 2016-10-13 21:48 编辑

输出范围是多少?能否达到100V/30-50A?stc是10位的A/D、D/A吧?有stc8系列的了,12位A/D.
 楼主| 发表于 2016-10-13 21:48 | 显示全部楼层
佳广 发表于 2016-10-13 21:41
输出范围是多少?能否达到100V/30-50A?用多少位的A/D、D/A?

用的单片机自带的A/D、D/A,10位的。自己做着玩的,输出预计30V,5A或者10A以最后调试的为标准。
发表于 2016-10-13 23:02 | 显示全部楼层
本帖最后由 钟义亭 于 2016-10-14 09:14 编辑

/******************************************************************
单片机制作数控电源、电子负载,带输出时间显示,定时输出功能         
单片机型号:STC89C52                                               
单片机晶体频率:12M
******************
* Design:Sayno   *
* 2014 - 12 - 17 *
******************

程序更新时间:2015-08-10

数控电源参数
输出电压:0.1V - 50V      步进0.1V   
输出电流:10MA - 5A     步进10MA

电子负载参数
放电电压:0.1V - 50V    步进0.1V   
放电电流:10MA - 5A     步进10MA

定时输出参数
定时时间:0 - 99 时

EEPROM数据储存:输出打开时1分钟写入一次数据,在有按键操作时到没有按键操作3秒后写入数据一次

******************************************************************************************/

#ifndef _CONFIG_H_
#define _CONFIG_H_

#define TIME_NUMBER    53036            //12MS定时器主频装入值 高8位 低8位  80HZ
#define STEP 25                        //1步间隔数值 分辨率500步
#define VOLTAGE_COMPENSATION +0        //补偿电压值
#define CURRENT_COMPENSATION +0        //补偿电流值
#define VOLTAGE 32                    //设置开机电压 U = uiset_voltage * 0.02
#define CURRENT 30                    //设置开机电压 A = uiset_current * 0.02
#define POWER 1                        //0 = 上电打开输出    1 = 上电关闭输出
#define TH_0 0xCF                    //主频定时器T0 装入 TIME_NUMBER 高8位
#define TL_0 0x2C                    //主频定时器T0 装入 TIME_NUMBER 低8位  

//--------------------------------------------------
//**输出电压电流阀值********************************
//--------------------------------------------------
#define VOLTAGE_MIN 4        //调节电压最小为0.4V
#define VOLTAGE_MAX 350        //调节电压最大为35V
#define CURRENT_MIN 4        //调节电流最小值40MA
#define CURRENT_MAX 498        //调节电流最大值4.98A
//--------------------------------------------------
//**输入:控制声明**
//--------------------------------------------------
sbit out_key_input            = P0^2; //电压输出/关闭按键
sbit volt_key_input         = P0^3; //固定电压选择按键
sbit transition_key_input     = P0^4; //切换调节电压或电流(旋转编码器按下引脚)
sbit keyA_input             = P0^6; //旋转编码器A端IO口
sbit keyB_input             = P0^5; //旋转编码器B端IO口
sbit LoadInput                 = P1^3;    //电子负载输入电压与设定截止电压输入端口 0为停止放电
//--------------------------------------------------
//**输出:控制声明**
//--------------------------------------------------
sbit output                 = P1^4;    //电压关闭或输出 OUTPUT
sbit O_Relay3                 = P1^2;    //数控电源或电子负载转换输出控制  K3
sbit O_Relay1                 = P1^1;    //输入电压跟随切换继电器1  K1
sbit O_Relay2                 = P1^0;    //输入电压跟随切换继电器2  K2

//--------------------------------------------------
//***************PWM输出引脚定义********************
//--------------------------------------------------
sbit voltage_output         = P2^5; //电压控制PWM
sbit current_output         = P2^6;    //电流控制PWM

//--------------------------------------------------
//***************LCD1602引脚定义********************
//--------------------------------------------------

sbit lcd1602_rs             = P3^5; //定义LCD1602 RS  
sbit lcd1602_e                 = P3^1;    //定义LCD1602 E   
sbit lcd1602_rw                = P3^3; //定义LCD1602 RW
sbit lcd1602_dat1             = P3^0;    //LCD1602 4位数据接口定义
sbit lcd1602_dat2             = P1^7;    //LCD1602 4位数据接口定义
sbit lcd1602_dat3             = P1^6;    //LCD1602 4位数据接口定义
sbit lcd1602_dat4             = P1^5;    //LCD1602 4位数据接口定义

//--------------------------------------------------
//***************EEPROM引脚定义********************
//--------------------------------------------------

sbit SDA                     = P2^4;    //IIC SDA
sbit SCL                     = P2^3; //IIC SCL

#endif

没有AD 没有DA ,  就一个 单片机89C52

关于 用PID算法 控制线性稳压电源的问题
PID调节主要用在 延迟性较大的场合,如温度、压力、流量控制中,
在线性稳压中 不必使用PID算法,理由是 PID算法要经过采样、PID运算,DAC输出、
调整管接受 再动作,反而 比硬件控制来的慢。
再说PID算法中 如果积分系数和微分系数如果设置不当,极易引起过冲和振荡
这个说法也有一定的道理:其实一般的稳压电源中 已有取样,比较和反馈部分,
这部分其实 就相当于PID中 的“P” 比例调节了。

采用PID控制,可以大幅度提高精度,是一种完美的做法。
PID算法 主要涉及软件的问题,可以先安装完成,然后再逐步完善。
再慢慢加入PID算法,因为PID算法中 积分量和微分量的整定要花时间摸索。

1.jpg


https://www.yleee.com.cn/thread-12941-1-1.html

 楼主| 发表于 2016-10-14 11:35 | 显示全部楼层
钟义亭 发表于 2016-10-13 23:02
/******************************************************************
单片机制作数控电源、电子负载, ...

谢谢,这个精度还行。我这个精度肯定没你这个高。就是做了自己用的。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-19 13:00 , Processed in 0.070942 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表