




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
直流数控电压源设计直流数控电压源设计 本小组成员 刘兵丹 刘朋 刘伶 电子信息工程 0904 班 系统框架 本数控直流稳压电源的设计以一稳压电源为基础 以高性能单片机系统为控制核心 以稳压驱动放大电路 短路保护电路为外围的硬件系统 在检测与控制软件的支持下实现 对电压输出的数字控制 通过对稳压电源输出的电压进行数据采样与给定数据比较 从而 调整输入电压 本数控直流稳压电源实现以下功能 键盘可以直接设定输出电压值 可步 进调整电压 LCD显示电压值 硬件接口及主要特性 ADC0804 接口 振荡频率为 fCLK 1 1 1RC 其典型应用参数为 1 R 10K C 150PF fCLK 640KHZ 转换速度为 100 若采用外部时钟 则外 部 fCLK 可从 CLKI 端送入 此时不接 R C 允许的时钟频率范围为 100KHZ 1460KHZ INTR 引脚 5 INTR 是转换结束信号输出端 输出跳转为低电平表示本次转换 2 已经完成 可作为微处理器的中断或查询信号 如果将 CS 和 WR 端与 INTR 端相连 则 ADC0804 就处于自动循环转换状态 CS 0 时 允许进行 A D 转换 WR 由低跳高时 A D 转换开始 8 位逐次比较需 3 8 8 64 个时钟周期 再加上控制逻辑操作 一次转换需要 66 73 个时钟周期 在典 型应用 fCLK 640KHZ 时 转换时间约为 103 114 当 fCLK 超过 640KHZ 转换精度下降 超过极限值 1460KHZ 时便不能正常工作 V 2 引脚 9 参考电压 V 2 可以由外部电路供给 从 4 V 2 端直接送入 V 2 端电压值应是输入电压范围的二分之一 DAC0832 接口 8 位 D A 转换 其转换时间为 1us 工作电压为 5V 15V 基准电压为 1 10V 10V 芯片数据输入可采用双缓冲 单缓冲和直通三种方式 本次采用直通方式 LCD1602 接口 和 ADC0804 分时复用 P0 进行数据传输 1 键盘接口 单独用 P1 口对 4 4 键盘进行扫描识别 1 程序设计 程序设计思想提炼如下图所示 精简协作式不可剥夺嵌入式操作系统 得力与田 sir 的 Easy51RTOS 操作系统 这个系 1 统运用 协作式不可剥夺意思是说一个任务得到了 CPU 时间 除非它自己放弃使用 CPU 否则将完全霸占 CPU 所以任务之间需要协作 使用一段时间的 CPU 放 弃使用 其它的任务也如此 才能保证系统的正常运行 把一些例行的及需要定时执行的 程序放在时钟中断中 还可以利用时钟中断协助主程序完成定时 延时等操作 注意 应 尽量缩短中断处理程序的执行时间 更不要长于 20mS 全局变量 部分代码如下 ADC0804 测得的数字量 adc value DAC0832 输入的数字量 dac value 程序写好后 编译成功 但 1602 显示的数据与预期不符 于是分块检查 发现 DA 1602 AD 均是正确的 后来参考别人的程序 发现单片机在读取 AD 的 数据时 没有先对相应的端口写 1 任务零 ADC0804 测数控电源的输出电压 量程限制取其一半进行测量 得到数字量 adc value 与 DAC0832 的输入 dac value 进行比较 进行反馈 其实我们在把电路做出来 进行测试时发现实际输出和我们通过按键设定的值误差很小 反而 ADC0804 由于精度不高 测出来的电压值误差较大 最后我们舍去了反馈 来调整 0832 的 dac value ifndef adc0804 H define adc0804 H 接口定义 sbit AD CS P3 4 sbit AD RD P3 7 sbit AD WR P3 6 读 ADDR 中的数据 int get data int date AD CS 0 AD RD 1 AD WR 1 ad 开始转换 AD WR 0 P0 0 xff AD RD 1 AD RD 0 date P0 AD WR 1 ad 停止转换 AD RD 1 return date endif 程序写好后 编译成功 但 1602 显示的数据与预期不符 于是分块检查 发现 DA 1602 AD 均是正确的 后来参考别人的程序 发现单片机在读取 AD 的 数据时 没有先对相应的端口写 1 任务一 通过按键设定电压 识别到 dac value 使 DAC0832 输出我们需要的电压 void task1 void float adc value1 float dac value1 int dac value2 adc value1 adc value dac value1 dac value if adc value1 10 255 dac value1 1000 0 04 dac value1 dac value1 1 if dac value1 1000 adc value1 10 255 0 04 dac value1 dac value1 1 dac value1 dac value1 255 10000 dac value2 dac value1 if key input display 0 当确认键按下时 dac0832 dac value2 task delay 1 TASK DELAY1 涂暗的那段代码是为了用 0804 的测量值来反馈 0832 已得到我实际设定的电压值 涂红的那段代码 8 位精准度 10V 对应 255 但是按键扫描得到的电压值是放大了一 千倍的 见后面任务三 任务二 通过 1602 来显示 setting 设定的电压值 measure 测得的电压值 void task2 init void lcd1602 init print string setting 0 x80 print string measure 0 x80 0 x40 任务2 void task2 task2 init if key input display 0 当确认键按下时 adc value 19 60784313725490196078431372549 adc value adc 0 adc value 1000 0 adc 1 adc 2 adc value 1000 100 0 adc 3 adc value 100 10 0 adc 4 adc value 10 0 adc 5 0 switch press time case 0 key value dac 0 dac value 1000 0 key value dac 1 key value dac 2 dac value 1000 100 0 key value dac 3 dac value 1000 100 10 0 key value dac 4 dac value 1000 100 10 0 break dac value是一个四位的整数 case 1 key value dac 0 key value dac 1 key value dac 2 key value dac 3 key value dac 4 break case 2 key value dac 0 dac value 1000 0 break case 3 key value dac 2 dac value 1000 100 0 break case 4 key value dac 3 dac value 1000 100 10 0 break case 5 key value dac 4 dac value 1000 100 10 0 break default break print string adc 0 xc8 print string key value dac 0 x88 显示设定的电压值 和测得的电压值 task delay 2 TASK DELAY2 1602 在显示数据时会在数据最后乱码 后经在尾数写 0 显示正确 任务三 通过对键盘进行扫描 将设定的电压值 转换为数字量 dac value 同时还有步 进加减和确定 清零的识别 void input dac value num uchar temp 0 static uchar flag 0 temp num if temp 0 xff flag 1 if temp 0 xff key temp fmq 0 if key 10 switch press time case 2 dac value key 1000 break case 3 dac value dac value key 100 break case 4 dac value dac value key 10 break case 5 dac value dac value key break default break 注 将设定的电压转化为整数 放大一千倍 switch key case 14 key input display 1 press time key 0 fmq 0 break 设置 case 13 key input display 0 press time 0 fmq 0 break 确认 case 15 dac value 0 fmq 0 break 清零 case 10 dac value 40 fmq 0 break 递加 case 11 dac value 40 fmq 0 break 递减 default break 主要程序见附件 略 模拟部分 电路仿真图 1 电路说明图 2 作品参数测试 设定值设定值ADAD 测量值测量值万用表测量值万用表测量值列列 1 1ADAD 测量得误差测量得误差列列 2 2万用表测得误差万用表测得误差 1 0000 9410 9405 900 6 000 2 0001 9601 9602 000 2 000 2 9102 9012 9000 309 0 344 3 0002 9802 9800 667 0 667 3 7903 7603 7700 792 0 528 4 0004 0004 0000 000 0 000 5 0004 9414 9401 180 1 200 5 5505 5005 5000 901 0 901 6 0005 9415 9400 983 1 000 7 0006 9806 9900 286 0 143 8 0008 0008 0100 000 0 125 8 9998 9418 9500 645 0 545 9 9999 9609 9800 390 0 190 纹波峰峰值10mV 纹波频率50KHZ 内阻2 2 欧姆 最大电流0 88A 最大功率11 4W 总结 这个作品的单片机部分的仿真和电路的焊接是在两天内完工的 模拟部分开始 焊好了 测试时烧过 后来又从焊了一次 当时正是要要校级比赛的作品 我 们的器件过来好久才送过来 导致交作品那天我们才拿到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届重庆市大渡口区化学九上期末综合测试试题含解析
- 知情同意告知培训
- 2026届新疆伊犁州名校化学九上期中经典试题含解析
- 2026届福建省福州市台江区化学九年级第一学期期中质量检测试题含解析
- 2026届内蒙古鄂尔多斯附属学校化学九上期中调研模拟试题含解析
- 2025年炉外精炼工职业技能考试题库及答案(完整版)
- 2026届山东省德州七中学九上化学期中经典试题含解析
- 2026届吉林省长春市第一五三中学九年级化学第一学期期中考试试题含解析
- 夫妻个人债务合同范本8篇
- 类第号上海证券交易所证券投资咨询协议
- 机电一体化设计
- 新教材教科版五年级上册科学 第二单元 地球表面的变化 单元全套课时练
- 职业发展与就业创业指导ppt课件完整版
- 挠度计算模板表格(自动版)
- (中职中专)财经法规与会计职业道德课件完整版电子教案
- 宝钢集团生产安全事故案例汇编
- DB37T 5151-2019 园林绿化工程资料管理规程
- Q∕GDW 11612.43-2018 低压电力线高速载波通信互联互通技术规范 第4-3部分:应用层通信协议
- 贝多芬F大调浪漫曲—小提琴谱(带钢伴谱)
- 压力传感器(课堂PPT)
- (施工方案)场地三通一平施工方案
评论
0/150
提交评论