欢迎来到天天文库
浏览记录
ID:6800917
大小:675.50 KB
页数:14页
时间:2018-01-26
《电机的dsp控制课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程名称:电机的DSP控制课程设计院系:电子信息与电气工程学院专业:电气工程与自动化班级:学号:姓名:上海交通大学目录1.电机控制的DSP芯片32.软件设计要求32.1学会DSP开发环境的使用,能编写C语言程序;32.2编写数码管显示程序、键盘扫描程序;32.3编写AD采样程序;32.4编写6路PWM正弦波程序(变频器逆变需6路);33.软件实现33.1数码管显示程序、键盘扫描程序33.1.1程序设计思路33.1.2程序模块43.2AD采样程序63.2.1程序设计思路63.2.2程序模块63.36路PWM正弦波程序73.3.1
2、程序设计思路73.3.2程序模块83.3.3程序设计结果104.课程总结141.电机控制的DSP芯片本课程设计用的芯片为TMS320F28027;本课程设计中主要用到的一些电路模块:显示和键盘电路、BC7281、A/D采样电路、PWM输出电路。2.软件设计要求2.1学会DSP开发环境的使用,能编写C语言程序;2.2编写数码管显示程序、键盘扫描程序;程序运行后,初始值为0,通过1个键,按一下加1,通过另一个键,按1下减1;(按着不放,超过1秒,不断加1或减1,时间超过5秒,不断加10,或减10)。2.3编写AD采样程序;根据输入
3、的电压值,把AD的结果显示出来,当输入电压变化时,显示值也变化。2.4编写6路PWM正弦波程序(变频器逆变需6路);PWM的开关频率为10KHz,其输出的正弦波频率为0~100Hz,根据AD的值变化,50Hz时输出100%电压,0~50Hz按V/f等于常数输出,死区时间取2us。频率值显示在数码管上。3.软件实现3.1数码管显示程序、键盘扫描程序3.1.1程序设计思路此程序关键是如何去计时,最初考虑是用计时器中断去设计程序,但此方法需要在中断中执行判断按键是否持续,以及更改和现实数字,中断中操作过多,经常出错。故后来改为用延时
4、环节计时,此方法的优点是不需要用中断,但计时不够精确。3.1.2程序模块for(;;){time=0;//计时变量time初始值为0;if(KEY==0){key_number=Read_7281(0x13);//读取按键值switch(key_number){case0x00:{keynumber++;if(keynumber>9999)keynumber=0;write();delay(2);}break;case0x01:{keynumber--;if(keynumber<0)keynumber=9999;write()
5、;delay(2);}break;}//switch}//ifwhile(KEY==0)//如果按键没有松开,则开始计时;{if(time<=5)//延时环节,延时为1秒;{for(cnt1=0;cnt1<270;cnt1++){for(cnt2=0;cnt2<10000;cnt2++){if(KEY!=0)break;}if(KEY!=0)break;//如果按键松开,则跳出循环,重新开始计时;}}if(KEY!=0)break;time++;//如果1秒内按键未松开,则计时变量time加1;cnt1=cnt2=0;if(t
6、ime>=1&&time<=5)//按着不放超过1秒,则不断加1或减1;{switch(key_number){case0x00:{keynumber++;if(keynumber>9999)keynumber=0;write();}break;case0x01:{keynumber--;If(keynumber<0)keynumber=9999;write();}break;default:break;}}if(time>5)//按着不放超过5秒,则不断加10或减10;{switch(key_number){case0x00
7、:{keynumber+=10;if(keynumber>9999)keynumber=0;write();delay(15);}break;case0x01:{keynumber-=10;if(keynumber<0)keynumber=9999;write();delay(15);}break;default:break;}}}}//for3.2AD采样程序3.2.1程序设计思路此程序相对简单,只需要用ADC中断获取通道的采样值,再将采样值在数码管上显示即可。3.2.2程序模块//ADC中断,获取通道采样值;interru
8、ptvoidadc_isr(void){Voltage0[0]=AdcResult.ADCRESULT0;//模数转换结果由ADCINA0通道采样产生Voltage0[1]=AdcResult.ADCRESULT1;//模数转换结果由ADCINA1通道采样产生Voltage0
此文档下载收益归作者所有