ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:1.10MB ,
资源ID:4150213      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4150213.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(模拟信号波形控制直流电机转速.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

模拟信号波形控制直流电机转速.docx

1、模拟信号波形控制直流电机转速模拟信号波形控制直流电机转速 宁波理工学院DSP应用技术仿真大作业报告 题 目 模拟信号波形控制直流电机转速 项目成员 专业班级 自动化 指导教师 学 院 信息科学与工程学院 器,通过AD采集产生可调节的不同幅度的波形,将输出随波形变化的值用来设定控制直流电机PWM信号的占空比,从而实现可调占空比控制直流电机速度快慢。 2.2 实验设备 计算机,ICETEK-F2812-A 实验箱(或ICETEK 仿真器+ICETEKF2812-A 系统板+相关连线及电源)。三、课程设计相关实验原理 3.1 模数转换实验原理(AD)3.1.1 TMS320F2812A 芯片自带模数

2、转换模块特性- 12 位模数转换模块ADC,快速转换时间运行在25mhz,ADC 时钟或12.5MSPS。-16 个模拟输入通道(AIN0AIN15)。-内置双采样-保持器-采样幅度:0-3v,切记输入ad 的信号不要超过这个范围,否则会烧坏2812 芯片的。3.1.2 模数模块介绍ADC 模块有16 个通道,可配置为两个独立的8 通道模块以方便为事件管理器A 和B服务。两个独立的8 通道模块可以级连组成16 通道模块。虽然有多个输入通道和两个序列器,但在ADC 内部只有一个转换器,同一时刻只有1 路ad 进行转换数据。3.1.3 模数转换的程序控制模数转换相对于计算机来说是一个较为缓慢的过程

3、。一般采用中断方式启动转换或保存结果,这样在CPU 忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。3.2 模数转换实验流程图图3.1 模数转换实验流程图3.3 综合数字信号源连接 用 1 根信号线连接实验箱左侧信号源的波形输出A端口和“A/D 输入”模块的“ADCIN0”插座注意插头要插牢、到底。这样,信号源波形输出A 的输出波形即可送到ICETEKF2812-A 板的AD 输入通道0。我们用信号连接线将信号源上的波形输出A与芯片AD输入模块的ADCIN0相连,实现信号源与模块芯片F281

4、2的AD输入通道0相连波形我们选择了矩形波,频率选择了10-100HZ。选择菜单“VIEW”,”GRAPH”,”TIME/FREQUENCY”,进行如下调节:图3.2 综合数字信号源3.4 直流电机实验原理3.4.1 直流电机控制 直流电动机是最早出现的电动机,也是最早能实现调速的电动机。近年来,直流电动机的结构和控制方式都发生了很大的变化。随着计算机进入控制领域,以及新型的电力电子功率元器件的不断出现,使采用全控型的开关功率元件进行脉宽调制(Puls Width Modulation,简称PWM)控制方式已成为绝对主流。3.4.2 PWM 调压调速原理直流电动机转速 n 的表达式为: 其中,

5、U为电枢端电压;I为电枢电流;R为电枢电路总电阻;为每极磁通量;K为电动机结构参数。所以直流电动机的转速控制方法可分为两类:对励磁磁通进行控制的励磁控制法和对电枢电压进行控制的电枢控制法。其中励磁控制法在低速时受磁极饱和的限制,在高速时受换向火花和换向器结构强度的限制,并且励磁线圈电感较大,动态响应较差,所以这种控制方法用得很少。现在,大多数应用场合都使用电枢控制法。绝大多数直流电机采用开关驱动方式。开关驱动方式是使半导体功率器件工作在开关状态,通过脉宽调制PWM来控制电动机电枢电压,实现调速。3.4.3 PWM 调速方法: 在 PWM 调速时,占空比是一个重要参数。以下3 种方法都可以改变占

6、空比的值:(1)定宽调频法:这种方法是保持t1 不变,只改变t2,这样使周期T(或频率)也随之改变。(2)调宽调频法:这种方法是保持t2 不变,只改变t1,这样使周期T(或频率)也随之改变。(3)定频调宽法:这种方法是使周期T(或频率)保持不变,而改变t1 和t2。前两种方法由于在调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起震荡,因此这两种方法用得很少。目前,在直流电动机的控制中,主要使用定频调宽法。本课程设计当中也相当于采用定频调宽法。程序中采用定时器中断产生固定频率的PWM波,在每个中断中根据当前占空比判断应输出波形的高低电平。ADC后的值赋给设置

7、直流电机PWM的占空比的变量uN while (1) LoopCount+; uN=Voltage1ConversionCount; StopCpuTimer0(); CTRGR=0; 3.5定时器的原理 3.5.1 通用定时器介绍及其控制方法TMS320F2812内部有3个32位的通用定时器(Timer0/1/2),这3个定时器具有完全相同的控制结构,其中Timer1和Timer2被保留给DSP BIOS或实时操作系统(RTOS),只有定时器0可以提供给用户使用,其结构如下图所示。图3.3 定时器结构图3.5.2 中断响应过程a接受中断请求。必须由软件中断(从程序代码)或硬件中断(从一个引脚

8、或一个基于芯片的设备)提出请求去暂停当前主程序的执行。b响应中断。必须能够响应中断请求。如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。而对于非可屏蔽中断和软件中断,会立即作出响应。c准备执行中断服务程序并保存寄存器的值。d执行中断服务子程序。调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR3.5.3中断类别 可屏蔽中断:这些中断可以用软件加以屏蔽或解除屏蔽。不可屏蔽中断:这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执行。所有软件调用的中断都属于该类中断。若处理器采用30MHz的外部时钟,经过锁相环10/2倍频后,系统的工作时钟在15

9、0MHz。一旦定时器被使能,定时器时钟通过预定标计数器(PSCH:PSC)递减计数,预定标计数器产生下溢后项定时器的32位计数器(TIMH:TIM)借位。最后当定时器计数器(TIMH:TIM)产生溢出使定时器向CPU发送中断。定时器中断结构如下图所示: 图3.4 定时器中断结构图3.5.4 定时中断流程图:四、DSP实现原理图和PCB布线4.1 ICETEK-F2812-A 器件分布图ICETEK-F2812-A 器件分布图如图4.1,本课程设计中应用了DSPF2812芯片图 4.1 ICETEKF2812-A 器件分布图4.2 数字信号控制直流电机转速原理图和PCB 布线图我们利用ALTIU

10、M DESIGENER 设计了数字信号控制直流电机转速原理图如图4.2和数字信号控制直流电机转速PCB 布线图如图4.3。图4.2数字信号控制直流电机转速原理图图4.3 数字信号控制直流电机转速PCB 布线图五、实验结果 最后我们通过程序设置调节改变ADC输入的波形或者传感器上采集到的模拟电压值,实现了调节信号发生器上的幅值调节旋钮来控制直流电机转速的控制,并且可以通过示波器观察到幅值的变化情况。六、心得体会 DSP应用技术是一门实践性都强的专业课,主要都是通过实验在教学实验中掌握知识,只有通过不断的编程、仿真才能增强对软件方面的熟悉应用。 本文采用TI公司推出的TMS320F2812芯片作为

11、直流电机控制系统的控制核心,依据该芯片特点、PWM调压调速原理,结合模数转换实验和直流电机控制实验,搭建了基于DSP的直流电机调速系统的实验平台,并在此基础上完成了系统的软、硬件设计,实现了通过调节波形的幅值来改变直流电机的调速功能。由于整个电机控制所需的各种功能都是由DSP来实现的,因此,大幅度地减小了目标系统的体积,减少了外部元器件的个数,使得整个系统结构更加简单,功能更强,可靠性更高。 这次的课程设计跟我们以前做的实验不同,因为之前的实验只需要照着书上操作,这次是真真正正的两个人合作共同完成。因为本课程设计要求跟书上有所不同,这样我们就必须要结合以前学习的知识,选择一个主题加以设计编程,

12、弄懂实验的原理。在实践中深深体会到哲学上理论对实践的指导作用:弄懂实验原理,而且体会到了实验的操作能力是靠自己亲自动手,亲自开动脑筋,亲自去请教别人才能得到提高的。本次课程设计中遇到的最大的难题是编程不会编,平时习惯的照着书上做,对编程部分练习少,这次需要自己设计自己编程,稍微有点程序改动就错误很多,导致了本次课程设计用时较多。七、参考文献1 徐科军,陈志辉,傅大丰TMS320F2812 DSP应用技术M,北京:科学出版社,2010年2 鲍建宇,裘君DSP原理及应用乙实验指导书M,浙江:浙江大学宁波理工学院自动化与电气工程研究所,2015年3ICETEK-F2812-A教学实验指导书M,北京:

13、瑞泰创新4苏奎峰,吕强,耿庆峰TMS320F2812原理与开发M.北京:电子工业出版,2006年八、附录 程序代码源代码:#include DSP281x_Device.h / DSP281x Headerfile Include File 头文件定义#include DSP281x_Examples.h / DSP281x Examples Include Fileinterrupt void adc_isr(void);/ Prototype statements for functions found within this file.interrupt void cpu_timer0_

14、isr(void);void Delay(unsigned int nTime);void Gpio_select(void);void error(int);void program_stop();void Gpio_PortA(void);void Gpio_PortB(void);void Gpio_PortF(void);void Gpio_PortDEG(void);char ConvertScanToChar(unsigned char cScanCode);void RefreshLEDArray(); / 刷新显示void SetLEDArray(int nNumber); /

15、 修改显示内容#define T46uS 0x0d40#define CTRGR *(int *)0x108000#define CTRLCDCMDR *(int *)0x108001#define CTRKEY *(int *)0x108001#define CTRLCDCR *(int *)0x108002#define CTRCLKEY *(int *)0x108002#define CTRLCDLCR *(int *)0x108003#define CTRLCDRCR *(int *)0x108004#define CTRLA *(int *)0x108005#define CTRLR

16、 *(int *)0x108007Uint16 var1 = 0;Uint16 var2 = 0;Uint16 var3 = 0;Uint16 test_count = 0;Uint16 Test_flag = 0;Uint16 Test_var = 0;Uint16 Test_status32; Uint16 LoopCount; Uint16 ConversionCount; Uint16 Voltage11024; Uint16 Voltage21024;Uint16 PASS_flag = 0;unsigned int uWork;int jishu=0; 定义变量unsigned i

17、nt uWork,nCount=0,uN,uN1,nCount1,nDir;/unsigned int uPort8000;unsigned int nScreenBuffer1024;unsigned char ledbuf8,ledx8;void main(void) /主函数 char cKey,cOldKey; unsigned int nScanCode,nKeyCode; unsigned int nSpeed; InitSysCtrl(); /系统初始化,PLL时钟频率为150HZ DINT; / 关闭中断,清除中断标志 InitPieCtrl(); /初始化PIE控制寄存器 S

18、topCpuTimer0(); IER = 0x0000; /关闭外设中断 IFR = 0x0000; / 清除中断标志 InitPieVectTable(); EALLOW; PieVectTable.ADCINT = &adc_isr; /将中断程序首地址放入中断向量 PieVectTable.TINT0 = &cpu_timer0_isr; EDIS; /关闭寄存器 AdcRegs.ADCTRL1.bit.RESET = 1; asm( RPT #10 | NOP); AdcRegs.ADCTRL3.all = 0x00C8; AdcRegs.ADCTRL3.bit.ADCBGRFDN

19、= 0x3; AdcRegs.ADCTRL3.bit.ADCPWDN = 1; PieCtrlRegs.PIEIER1.bit.INTx6 = 1; CpuTimer0.RegsAddr = &CpuTimer0Regs; /定时器、控制寄存器设置 CpuTimer0Regs.PRD.all = 0x3000; CpuTimer0Regs.TPR.all = 0; CpuTimer0Regs.TIM.all = 0; CpuTimer0Regs.TPRH.all = 0; CpuTimer0Regs.TCR.bit.TSS = 1; CpuTimer0Regs.TCR.bit.SOFT = 1

20、; CpuTimer0Regs.TCR.bit.FREE = 1; CpuTimer0Regs.TCR.bit.TRB = 1; CpuTimer0Regs.TCR.bit.TIE = 1; CpuTimer0.InterruptCount = 0; IER |= M_INT1; /对应的CPU中断 PieCtrlRegs.PIEIER1.bit.INTx7 = 1; EINT; /使能 ERTM; CTRGR=0x80; / 初始化ICETEK-CTR CTRGR=0x0; CTRGR=0x80; CTRLR=0; / 关闭东西方向的交通灯 CTRLR=0x40; / 关闭南北方向的交通灯

21、CTRLR=0xC0; CTRGR=0x81; LoopCount = 0; ConversionCount = 0; AdcRegs.ADCMAXCONV.all = 0x0001; / Setup 2 convs on SEQ1 AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; / Setup ADCINA3 as 1st SEQ1 conv. AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; / Setup ADCINA2 as 2nd SEQ1 conv. AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1;

22、 / Enable EVASOC to start SEQ1 AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; / Enable SEQ1 interrupt (every EOS) EvaRegs.T1CMPR = 0x0080; / Setup T1 compare value EvaRegs.T1PR = 0x10; / Setup period register EvaRegs.GPTCONA.bit.T1TOADC = 1; / Enable EVASOC in EVA EvaRegs.T1CON.all = 0x1042; / Enable timer 1

23、 compare (upcount mode) uPort8000=CTRCLKEY; Gpio_PortA(); Gpio_PortB(); nSpeed=T46uS; uN=60; nCount=nCount1=0; nDir=0; cKey=cOldKey=0; 初始化,转速设为60 StartCpuTimer0(); /启动定时器 while (1) LoopCount+; uN=Voltage1ConversionCount; /uN设置为直流电机转速 StopCpuTimer0(); CTRGR=0; interrupt void cpu_timer0_isr(void) CpuT

24、imer0.InterruptCount+; / Acknowledge this interrupt to receive more interrupts from group 1 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; /清零PIEACK第一组中断 CpuTimer0Regs.TCR.bit.TIF = 1; /定时器控制寄存器设置为1 CpuTimer0Regs.TCR.bit.TRB = 1; GpioDataRegs.GPBSET.bit.GPIOB4=1; /设置脉冲输出为高电平 GpioDataRegs.GPASET.bit.GPIOA0=

25、1; GpioDataRegs.GPBDAT.bit.GPIOB4=( nCount1uN )?1:0; GpioDataRegs.GPADAT.bit.GPIOA0=( nCount1uN )?1:0; nCount1+; nCount1%=100; /设置初始高电平脉宽 void Delay(unsigned int nDelay) /定时器时间设置 int ii,jj,kk=0; for ( ii=0;iinDelay;ii+ ) for ( jj=0;jj64;jj+ ) /RefreshLEDArray(); kk+; void RefreshLEDArray() int i; fo

26、r ( i=0;i8;i+ ) CTRGR=ledxi; CTRLA=ledbufi; void Gpio_PortA(void) var1= 0x0000; / sets GPIO Muxs as I/Os var2= 0x00FF; / sets GPIO 15-8 DIR as inputs, 7-0 DIR as outputs var3= 0x0000; / Dont set any input qualifier Gpio_select(); test_count = 0; Test_statusTest_var = 0x0002; Test_var+; Test_statusTe

27、st_var = 0xD0BE; / Set the default value of status / to PASSED GpioDataRegs.GPACLEAR.all = 0x00FF; / Test Clear asm( RPT #5 |NOP); GpioDataRegs.GPASET.bit.GPIOA4=1; void Gpio_PortB(void) var1= 0x0000; / sets GPIO Muxs as I/Os var2= 0x00FF; / sets GPIO 15-8 DIR as inputs, 7-0 DIR as outputs var3= 0x0

28、000; / Dont set any input qualifier Gpio_select(); test_count = 0; Test_statusTest_var = 0x0002; Test_var+; Test_statusTest_var = 0xD0BE; / Set the default value of status / to PASSED GpioDataRegs.GPBCLEAR.all = 0x00FF; / Test Clear asm( RPT #5 |NOP); GpioDataRegs.GPBSET.bit.GPIOB4=1; GpioDataRegs.G

29、PASET.bit.GPIOA0=1;void Gpio_select(void) EALLOW; GpioMuxRegs.GPAMUX.all=var1; / Configure MUXs as digital I/Os or GpioMuxRegs.GPBMUX.all=var1; / peripheral I/Os GpioMuxRegs.GPDMUX.all=var1; GpioMuxRegs.GPFMUX.all=var1; GpioMuxRegs.GPEMUX.all=var1; /var1=0x0000,前面有设置 GpioMuxRegs.GPGMUX.all=var1; Gpi

30、oMuxRegs.GPADIR.all=var2; / GPIO PORTs 作为输出口 GpioMuxRegs.GPBDIR.all=var2; / GPIO DIR select GPIOs as output GpioMuxRegs.GPDDIR.all=var2; /var2=0x00FF,前面有设置 GpioMuxRegs.GPEDIR.all=var2; GpioMuxRegs.GPFDIR.all=var2; GpioMuxRegs.GPGDIR.all=var2; GpioMuxRegs.GPAQUAL.all=var3; / Set GPIO input qualifier values GpioMuxRegs.GPBQUAL.all=var3; /var1=0x0000,前面有设置 GpioMuxRegs.G

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1