学科基础群综合设计-数控直流电流源设计制作.doc_第1页
学科基础群综合设计-数控直流电流源设计制作.doc_第2页
学科基础群综合设计-数控直流电流源设计制作.doc_第3页
学科基础群综合设计-数控直流电流源设计制作.doc_第4页
学科基础群综合设计-数控直流电流源设计制作.doc_第5页
已阅读5页,还剩26页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

序号(学号):0121009320503 学生实习报告书实习类别学科基础群综合设计实习地址武汉理工大学信息工程学院学 院信息工程专 业通信工程班 级通信1005姓 名指导教师2013年1月6日I武汉理工大学学科基础课群综合训练与设计课程设计任务书学生姓名: 刘果 专业班级: 通信1005班 指导教师: 艾青松 工作单位:信息工程学院 题 目:数控直流电流源要求完成的主要任务: (1)任务键盘控制器电流源负载显示器电 源设计并制作数控直流电流源。输入交流200240V,50Hz;输出直流电压10V。其原理示意图如下所示。(2)要求1)输出电流范围:200mA2000mA;2)可设置并显示输出电流给定值,要求输出电流与给定值偏差的绝对值给定值的1+10 mA;3)具有“+”、“-”步进调整功能,步进10mA;4)改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的绝对值输出电流值的1+10 mA; 5)纹波电流2mA;时间安排:指导教师签名: 年 月 日系主任(或责任教师)签 年 月 日目录摘要2Abstract3一引言41.1设计要求41.2技术指标41.3说明4二数控直流电流源设计52.1恒流源电路模块设计方案52.2数控部分方案选择62.2.1主控MCU选择62.2.2数模/模数转换器选择72.2.3键盘与显示电路73单元电路设计93.1恒定电流源电路设计94软件设计144.1程序流程图144.2部分程序介绍15三系统整体仿真195.1系统仿真模型图19四设计心得体会与总结20五参考文献21附件一22附件二23摘要本系统采用ST公司的STM32F103VC为主控MCU,采用电压负反馈机理构成恒流源,通过采样电阻进行电流采样进行调整。其输出电流的控制量为DA输出给运放的电压通过与反馈电压比较控制输出电流。AD通过采集采样电阻的电压从而获取实际电流值。本系统的12位ADC和16位的DAC体现了本系统的高精度性。由于采样电流采样反馈调制技术,改系统具有较高的可靠性。关键字: 数控直流电流源,STM32F103VC,nokia_5110液晶AbstractThe system uses STs STM32F103VC as master MCU, using voltage negative feedback mechanism constitutes a constant current source, current sampling through the sampling resistor adjustment. Its output current to control the amount of DA output voltage of the op amp voltage comparator with feedback control of output current. AD by collecting samples in order to obtain the actual resistance of the voltage current. The systems 12-bit ADC and 16-bit DAC reflects the precision of the system. As the sampling current sampling feedback modulation, change the system has high reliability.Keywords: numerical DC current source, STM32F103VC, nokia_5110 LCD一引言1.1设计要求键盘控制器电流源负载显示器电 源设计并制作数控直流电流源。输入交流200240V,50Hz;输出直流电压10V。其原理示意图如下所示。1.2技术指标1)输出电流范围:200mA2000mA;2)可设置并显示输出电流给定值,要求输出电流与给定值偏差的绝对值给定值的1+10 mA;3)具有“+”、“-”步进调整功能,步进10mA;4)改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的绝对值输出电流值的1+10 mA; 5)纹波电流2mA;1.3说明设计报告必须包括建模仿真结果二数控直流电流源设计2.1恒流源电路模块设计方案方案一:采用开关电源的开关恒流源。其组成方框图如图1.2所示。图中C1、C2为滤波电容;K是开关器件;D是续流二极管;L是扼流圈;PWM是脉宽调制电路;KF是电流反馈电路;R0是电流取样电阻。在原理图电路上,通过精选元器件和采用合理的结构设计,可以使电路的分布参数得到有效控制。采用开关电源的开关恒流源主要特点是:振荡反馈电容小,阻抗大,反馈电流小。图2.2.1 采用开关电源的开关恒流源组成框图方案二:采用集成稳压器构成的开关恒流源。图1.3所示是是三端集成稳压器构成的开关恒流源。当设定电阻R一定时,电路给负载Ro提供一恒定电流当RL发生变化时,由IC的输入输出压差进行自动补偿而使负载电流保持不变。图2.2.2 采用集成稳压器构成的开关恒流源原理框图方案三:采用集成运放的线性恒流源。该恒流源输出的电流与负载无关, 通过使用两块构成比较放大环节,功率管构成调整环节,利用晶体管或者MOS管平坦的输出特性和深度的负反馈电路可以得到稳定的恒流输出和高输出阻抗,实现了电压电流转换。其原理框图如图1.4所示。D/A转换器运放部分Vc单片机输出Rl电源图2.2.3 采用集成运放的线性恒流源原理框图基于现有条件和实际情况考虑选择方案三2.2数控部分方案选择2.2.1主控MCU选择现在常用的微处理器有很多,例如:AT89C51系列、MSP430系列、AVR系列和STM32系列等等。由于手上正好有STM32F103的最小系统板,所以就用STM32F103作为控制MCU。 STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。STM32F103是32位基于ARM核心的带512K字节闪存的微控制器。其具有3个12位模数转换器、2通道12位DAC、12通道DMA控制器、11个定时器和13个通信接口等。2.2.2数模/模数转换器选择电路中需要的数模转换就要STM32内部集成的12位ADC和12位DAC。题目要求电流源的电流电流步进10mA,而且输出电流范围:200mA2000mA。采用16位的DAC理论上步进电流I = (2000mA 200mA)/212 0.44mA 完全满足要求。 2.2.3键盘与显示电路键盘电路如图2.4所示。用单片机作为这一控制系统的核心,单片机与键盘相连,采用独立键盘,用查询方式,由键盘控制输入电流值,同时也由键盘进行控制其步进调整功能。按键按其位置分为上、下、左、右、确定、功能A、功能B和功能C八种定义。根据不同的编程控制具有不同的效果。当其相对于矩阵键盘来说有IO口利用率不高这一缺点。图2.2.4 独立键盘电路显示用nokia5110,该模块为84x48的点阵LCD,可以显示4行汉字。采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。支持多种串行通信协议(如AVR 单片机的SPI、MCS51 的串口模式等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。LCD 控制器驱动器芯片已绑定到LCD 晶片上,模块的体积很小。采用低电压供电,正常显示时的工作电流在200A 以下,且具有掉电模式。这些特点非常适合于电池供电的便携式通信设备和测试设备中。图2.2.5nokia5110接口图2.2.6 nokia5110控制器接口3单元电路设计3.1恒定电流源电路设计一个简单的基于运算放大器直流电流源模型如图3.1:图2.3.1直流电流源模型对于理想运算放大器则有:1) 直流开环增益Aopen/DC = ;2) 两端输入的输入电流IIN=0,即输入阻抗RIN=此时IOUT = VIN/RSAMPLE。3) 输入共模电压范围=;4) 输出电流能力IOUTmax=;5) 输出阻抗RO=0;6) 输出电压能力VOUTmax=;此时则有VOUT=AOPEN/DC(VIN-VSAMPLE)=AOPEN/DC(VIN-IOUTRSAMPLE)(3-1-1)因此: IOUT=VIN - VOUTAOPEN/DCRSAMPLE (3-1-2)当AOPEN/DC=时:IOUT=VIN/RSAMPLE (3-1-3)然而实际的运算放大器的直流开环增益均为有限值,1/AOPEN/DC只可能接近于0。因此公式(3-1-2)中的VOUT/AOPEN/DC项不为0,引起IOUT误差:IOUT=VINRSAMPLE1-11+AOPENDCRSAMPLERLOAD+RSAMPLE=VINRSAMPLE(1-) (3-1-4)其中为误差项,由于其中包含负载RLOAD,因此也称为负载调整率。理想情况下,负载调整率为0。根据运算放大器基本原理公式(3-1-1),非0负载调整率产生的根源在于一定VOUT时VIN与VSAMPLE存在误差电压,因此根据公式(,3-1-2),一定负载RLOAD范围内,VOUT动态范围越小,IOUT受RLOAD影响越小。而此负载范围内VOUT的共模值将作为固定漂移通过零点调整由信号调理电路去除。实际运算放大器输出级只能提供有限的电流输出能力。除功率运算放大器外,常见运算放大器 的电流输出能力IOUTmax均限于35mA 以内,很多型号不足10mA。达到IOUTmax 时运算放大器输出 级进入饱和状态,导致中间级和输入级工作状态不佳,从而无法达到datasheet 中标注的性能。 通常,运算放大器的标准性能均于输出电流小于 1mA 作为测量条件。超出此限制时,考虑自 身偏流在内的发热功率将导致运算放大器内部显著发热,造成VOS变化,以及加重中间级负载导致运算放大器Aopen/DC减小和对大信号响应能力下降。因此对于高于1mA的输出电流,必须对运算放大器作扩流处理,如图3.2所示。图2.3.2运算放大器扩流电路题目要求最大输出电流为2A最大输出电压为10V,一般的三级管难以达到此要求。最终电路选择如下:图2.3.3扩流后的电流源运放选择OP07CP,其调零电路非常适合本电路。RSAMPLE选取5大功率电阻。普通色环电阻的功率一般为1/8W,完全无法满足要求,故选取大功率的水泥电阻。扩流用功率N MOSFET IRF530。此模拟部分仿真如下:图2.3.4模拟部分仿真最大输出2A时图2.3.5模拟部分仿真最小输出200mA时4软件设计4.1程序流程图程序流程图如图4.1所示图2.4.1 程序流程图4.2部分程序介绍Stm32的编程与51这种低端单片机不同,stm32拥有自己的函数库,开发人员只需了解库函数然后调用库函数就能完成开发。本作品的编程使用的是stm32的3.1的固件库。其AD的初始化如下:/* ADC1 configuration -*/ ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channel0 configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5); /* Enable ADC1 */ ADC_Cmd(ADC1, ENABLE); /* Enable ADC1 reset calibaration register */ ADC_ResetCalibration(ADC1); /* Check the end of ADC1 reset calibration register */ while(ADC_GetResetCalibrationStatus(ADC1); /* Start ADC1 calibaration */ ADC_StartCalibration(ADC1); /* Check the end of ADC1 calibration */ while(ADC_GetCalibrationStatus(ADC1); /* Start ADC1 Software Conversion */ ADC_SoftwareStartConvCmd(ADC1, ENABLE);在完成初始化以及时钟的配置后,同样只需调用库函数就能完成AD的采样转换过程:AD_value=ADC_GetConversionValue(ADC1);其DA的初始化也是如此,故就不多做介绍。 Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序模拟即可。图2.4.2 noki_5110写入一个字节时序/* 函数名称:LCD_write_byte函数功能:模拟SPI接口时序写数据/命令LCD入口参数:data :写入的数据; command :写数据/命令选择;出口参数:无 备 注: */void LCD_write_byte(unsigned char dat, unsigned char command) unsigned char i; LCD_CE _L; /5110片选有效,允许输入数据 if (command = 0) /写命令 LCD_DC _L; else LCD_DC_H; /写数据for(i=0;i8;i+) /传送8bit数据 if(dat&0x80)SDIN_H;elseSDIN_L;SCLK _L;dat = dat 1;SCLK _H; LCD_CE _H; /禁止5110 管脚D/C(LCD_DC)用于选择写的是命令(D/C=0)还是数据(D/C=1)。接通电源后,内部寄存器和RAM的内容是不确定的,这需要一个RES低电平脉冲复位一下。当VDD变为高电平,达到VDDmin(或更高)之后,最多100ms,RST输入低电平(电平幅度0.3VDD)。图2.4.3nokia_5110复位时序/* 函数名称:LCD_init函数功能:5110初始化入口参数:无出口参数:无 备 注: */void LCD_init(void) LCD_RST _L; / 产生一个让LCD复位的低电平脉冲 delay_1us(); LCD_RST _H; LCD_CE _L; / 关闭LCD delay_1us(); LCD_CE _H; / 使能LCD delay_1us(); LCD_write_byte(0x21, 0);/ 使用扩展命令设置LCD模式 LCD_write_byte(0xc8, 0);/ 设置液晶偏置电压 LCD_write_byte(0x06, 0);/ 温度校正 LCD_write_byte(0x13, 0);/ 1:48 LCD_write_byte(0x20, 0);/ 使用基本命令,V=0,水平寻址 LCD_clear(); / 清屏 LCD_write_byte(0x0c, 0);/ 设定显示模式,正常显示 LCD_CE _L; / 关闭LCD Nokia_5110完成上述操作后,还能依据时序配合取模软件实现显示字母、汉字和图形的功能,由于篇幅较大,就不过多介绍了。三系统整体仿真5.1系统仿真模型图由于仿真软件multisim 11.0里面没有stm32系列的芯片,故只能用51系列的单片机代替。AD/DA也只能用multisim 11.0里面有的AD/DA。Nokia_5110也无法在multisim 11.0里面仿真,故用LCD1602代替。整体结构如下图:图3.1.1仿真图四设计心得体会与总结本系统采样STM32F103VC为控制芯片,用其内部集成的16位的DAC和12位的ADC进行输出控制和采样,精度远远满足要求。恒流源电流放大部分虽然可以采用达林顿管,但是为了达到更好的效果换成了场效应管。在给系统供电时,采用的是线性电源。输入采用手柄式排列的独立按键,显示用的是nokia_5110。在本系统的设计制做过程中,我从对直流电流源的原理完全不懂到现在的比较理解,感觉自己学到了很多东西。在制作过程中我了解了电阻的温漂问题对于大电流电路来说需要特别注意。采样电阻的精度和温漂会直接影响系统的精度。深刻体会到电源的带负载能力的局限性。 此次课程设计也让我将所学的书本知识应用于实际,将理论与实际相结合。既让我熟悉了multisim软件的使用,掌握了仿真技巧,也通过做实物锻炼了自己的动手能力, 五参考文献1华成英 童诗白.模拟电子技术基础 高等教育出版社,2006 12月第12次印刷2全国大学生电子设计竞赛获奖作品汇编 北京理工大学出版社 2004 第1版3华成英 童诗白.模拟电子技术基础 高等教育出版社,2006 12月第12次印刷4STM32固件函数库 电子档参考手册5STM32F103XX参考手册电子档参考手册附件一按键液晶原理图:按键液晶模块PCB图:附件二部分源程序:#include Config.h#include english_6x8_pixel.h#include write_chinese_string_pixel.h/*-LCD_init : 3310LCD初始化编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/static void delay_1us(void) /1us延时函数 unsigned int i; for(i=0;i100;i+); static void delay_1ms(void) /1ms延时函数 unsigned int i; for (i=0;i11400;i+); static void delay_nms(unsigned int n) /N ms延时函数 / unsigned int i=0; / for (i=0;in;i+) delay_1ms(); void LCD_init(void) GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure);delay_1ms(); / 产生一个让LCD复位的低电平脉冲/ LCD_RST = 0; LCD_RST_LOW; delay_1us();/ LCD_RST = 1; LCD_RST_HIGH; / 关闭LCD / LCD_CE = 0; LCD_CE_LOW; delay_1us();/ 使能LCD/ LCD_CE = 1; LCD_CE_HIGH; delay_1us(); LCD_write_byte(0x21, 0);/ 使用扩展命令设置LCD模式 LCD_write_byte(0xc8, 0);/ 设置偏置电压 LCD_write_byte(0x06, 0);/ 温度校正 LCD_write_byte(0x13, 0);/ 1:48 LCD_write_byte(0x20, 0);/ 使用基本命令 LCD_clear(); / 清屏 LCD_write_byte(0x0c, 0);/ 设定显示模式,正常显示 / 关闭LCD/ LCD_CE = 0; LCD_CE_LOW; /*-LCD_clear : LCD清屏函数编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_clear(void) unsigned int i; LCD_write_byte(0x0c, 0); LCD_write_byte(0x80, 0); for (i=0; i504; i+) LCD_write_byte(0, 1); /*-LCD_set_XY : 设置LCD坐标函数输入参数:X :083 Y :05编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_set_XY(unsigned char X, unsigned char Y) LCD_write_byte(0x40 | Y, 0);/ column LCD_write_byte(0x80 | X, 0); / row /*-LCD_write_char : 显示英文字符输入参数:c :显示的字符;编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_write_char(unsigned char c) unsigned char line; c -= 32; for (line=0; line6; line+) LCD_write_byte(font6x8cline, 1); /*-LCD_write_english_String : 英文字符串显示函数输入参数:*s :英文字符串指针; X、Y : 显示字符串的位置,x 0-83 ,y 编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_write_english_string(unsigned char X,unsigned char Y,char *s) int i=0; LCD_set_XY(X,Y); while (*s) LCD_write_char(*s); s+; i+; for(;i4;i+) LCD_write_char( ); /*-LCD_write_chinese_string: 在LCD上显示汉字输入参数:X、Y :显示汉字的起始X、Y坐标; ch_with :汉字点阵的宽度 num :显示汉字的个数; line :汉字点阵数组中的起始行数 row :汉字显示的行间距编写日期 :2004-8-11 最后修改日期 :2004-8-12 测试:LCD_write_chi(0,0,12,7,0,0);LCD_write_chi(0,2,12,7,0,0);LCD_write_chi(0,4,12,7,0,0);-*/ void LCD_write_chinese_string(unsigned char X, unsigned char Y, unsigned char ch_with,unsigned char num, unsigned char line,unsigned char row) unsigned char i,n; LCD_set_XY(X,Y); /设置初始位置 for (i=0;inum;) for (n=0; nch_with*2; n+) /写一个汉字 if (n=ch_with) /写汉字的下半部分 if (i=0) LCD_set_XY(X,Y+1); else LCD_set_XY(X+(c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论