收藏 分销(赏)

DSP应用技术课程设计报告书写规范及要求副本.doc

上传人:胜**** 文档编号:1364938 上传时间:2024-04-24 格式:DOC 页数:9 大小:41KB 下载积分:10 金币
下载 相关 举报
DSP应用技术课程设计报告书写规范及要求副本.doc_第1页
第1页 / 共9页
DSP应用技术课程设计报告书写规范及要求副本.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
DSP应用技术 课程设计 封皮打印!电子稿填写!A4纸 学 院: 哈尔滨理工大学荣成学院居中,字号和此模版一致! 专 业: 班 级: 姓 名: 学 号: 年 月 日 实验 有位置传感器无刷电机的开环控制 一、实验目的手写版! : 二、实验内容手写 : 有位置传感器无刷电机的开环控制 三、实验用设备仪器及材料手写 : 四、实验方法及步骤手写 : 测试过程如下: n 将 P3 和三相无刷电机的 U、V、W 连接;将电机的霍尔传感器输出与 SEED-BLDC的 P4 相连; n P10 与+24V 的外接电源相连; n P5 和外接的开关电源相连或者和实验箱上的电源接口相连; n P6 和 DEC2812 的 J17 相连,注意正确连接,勿接反;P9 和 DEC2812 的 J18 相连 n 上电观察 D15 和 D16 指示灯是否点亮,否则断电检查系统。 n 将 sensor-openloop 目录拷贝到 CCS 集成开发环境下的 myprojects 目录下; n 打开 CCS,在 CCS 中用 Project→Open…命令,加载 sensor-openloop 目录下的edit.pjt; n 在CCS 中用 File→Load GEL…命令,加载sensor-openloop目录下的F2812.gel; n 在CCS中用File→Load Program…命令,加载sensor-openloop目录下的edit.out; n 在 CCS 中用Debug→Go Main 命令执行到 C 的 main()函数处,如图 6-1; n 按 F5 运行,电机变以一定的速度旋转起来,通过观察变量 Speed 的值,可以知道此时速度的值;通过观察数组 test[]的值,可以知道过去一段时间内速度的值,如图 6-2; n 程序运行过程中,灯 D14 闪烁,表示程序在运行;如果灯 D13 点亮,表明有过压现象出现;如果灯 D12 点亮,表明有过流现象出现。 五、实验结果分析: 手写!包括程序。图等! #include "DSP28_Device.h" #include "motor.h" /***************************************************/ interrupt void t1pint_isr(void); interrupt void t2pint_isr(void); interrupt void cap_isr(void); interrupt void pdpinta_isr(void); void delay(unsigned int m); unsigned int t1prd=117;//定时器1的周期 unsigned int t2prd=117;//定时器2的标志 unsigned int dir=0;//电机转动方向 unsigned int pwm=20; unsigned int dccurent,u,v,w,speedad;//直流母线电流 unsigned int dcvoltage;//直流母线电压 Uint32 Sumdcv=0; unsigned int dcvcount=0,Averagedcv=0;//母线电压平均值初始化 unsigned int capstastus;//定义cap口的电平 Uint32 Time,T2cnt,Speed=0,count=0; unsigned Pole=2;//极对数 Uint32 Sum=0,Average=0; unsigned int l=0,nn=0; int t2=0; unsigned int test[2000],test1[2000],test2[2000]; int sss=0; /***************************************************/ void main(void) { /*初始化系统*/ InitSysCtrl(); /*关中断*/ DINT; IER = 0x0000; IFR = 0x0000; /*初始化PIE*/ InitPieCtrl(); /*初始化PIE矢量表*/ InitPieVectTable(); /*初始化GPIO*/ Gpioinit(); /*初始化AD*/ InitAdc(); /*初始化PWM*/ Init_eva_pwm(); /*初始化CAP*/ Capinit(); EALLOW; // This is needed to write to EALLOW protected register PieVectTable.CAPINT1=&cap_isr; PieVectTable.CAPINT2=&cap_isr; PieVectTable.CAPINT3=&cap_isr; PieVectTable.T1PINT=&t1pint_isr; PieVectTable.T2PINT=&t2pint_isr; PieVectTable.PDPINTA=&pdpinta_isr; EDIS; // This is needed to disable write to EALL PieCtrl.PIEIER2.bit.INTx4=1;//T1pint中断 PieCtrl.PIEIER3.bit.INTx1=1;//T2pint中断 PieCtrl.PIEIER3.bit.INTx5=1;//Cap1中断 PieCtrl.PIEIER3.bit.INTx6=1;//Cap2中断 PieCtrl.PIEIER3.bit.INTx7=1;//Cap3中断 PieCtrl.PIEIER1.bit.INTx1=1;//pdpinta中断 /* 设置IER寄存器 */ IER |= M_INT1; IER |= M_INT2; // t1pint enable IER |= M_INT3; // capture enable // Enable global Interrupts and higher priority real-time debug events: startmotor(); EINT; // Enable Global interrupt INTM ERTM; // Enable Global realtime interrupt DBGM // Step 6. IDLE loop. Just sit and loop forever (optional): while(1) { } } interrupt void t2pint_isr(void) { count++; EvaRegs.EVAIFRB.bit.T2PINT=1;//清除中断标志 EvaRegs.EVAIMRB.bit.T2PINT=1;//中断允许 PieCtrl.PIEACK.bit.ACK3=1;//向cpu申请中断 } interrupt void cap_isr(void) { /*****以下用来检测传感器的输出电平,用来换向****/ Uint32 kk=t2prd; EALLOW; GpioMuxRegs.GPAMUX.bit.CAP1Q1_GPIOA8=0;//设定cap1~3为gpio GpioMuxRegs.GPAMUX.bit.CAP2Q2_GPIOA9=0; GpioMuxRegs.GPAMUX.bit.CAP3QI1_GPIOA10=0; GpioMuxRegs.GPADIR.bit.GPIOA8=0;//设定cap1~3为输入 GpioMuxRegs.GPADIR.bit.GPIOA9=0; GpioMuxRegs.GPADIR.bit.GPIOA10=0; capstastus=(GpioDataRegs.GPADAT.all&0x0700)>>8; if(dir==1) { switch(capstastus)//ir2136 的hin和lin是反向的 { case 1: EvaRegs.ACTR.all=0x7fd;break;//h3 fall case 2: EvaRegs.ACTR.all=0xfd7;break;//h1 fall case 3: EvaRegs.ACTR.all=0x7df;break;//h2 rise case 4: EvaRegs.ACTR.all=0xd7f;break;//h2 fall case 5: EvaRegs.ACTR.all=0xf7d;break;//h1 rise case 6: EvaRegs.ACTR.all=0xdf7;break;//h3 rise } } else { switch(capstastus)//ir2136 的hin和lin是反向的 { case 5: EvaRegs.ACTR.all=0xfd7;break;//h1 rise case 1: EvaRegs.ACTR.all=0xd7f;break;//h3 fall case 3: EvaRegs.ACTR.all=0xdf7;break;//h2 rise case 2: EvaRegs.ACTR.all=0xf7d;break;//h1 fall case 6: EvaRegs.ACTR.all=0x7fd;break;//h3 rise case 4: EvaRegs.ACTR.all=0x7df;break;//h2 fall } } /*以下用来计算转速*/ T2cnt=EvaRegs.T2CNT;//读取定时器2的值 Time=kk*count+ T2cnt;//获得运转1相所需时间 Sum+=Time; l++; if(l==12)//每转12/6/pole计算一下转速 { Average=Sum/12; Speed=kk*20000*60/(Average*6*Pole);//计算转速 Sum=0; l=0; test[nn]=Speed;//测试用,存储速度值 nn++; if(nn==2000) { nn=0; } } count=0; EvaRegs.T2CON.all = 0x1400;//关闭定时器2 EvaRegs.T2CNT = 0x0000; EvaRegs.T2CON.all = 0x1440;//启动定时器2 /*************************/ GpioMuxRegs.GPAMUX.bit.CAP1Q1_GPIOA8=1;//重新设定cap1~3为gpio GpioMuxRegs.GPAMUX.bit.CAP2Q2_GPIOA9=1; GpioMuxRegs.GPAMUX.bit.CAP3QI1_GPIOA10=1; EvaRegs.EVAIFRC.all = 7 ; // 清捕捉中断 EvaRegs.CAPFIFO.all = 0x01500; // 清空捕捉堆栈 PieCtrl.PIEACK.bit.ACK3=1;//cap1中断向cpu申请中断 } interrupt void t1pint_isr(void) { dcvoltage=(AdcRegs.RESULT0)>>4; dccurent=(AdcRegs.RESULT3)>>4; w=(AdcRegs.RESULT1)>>4; u=(AdcRegs.RESULT2)>>4; speedad=(AdcRegs.RESULT4)>>4; v=(AdcRegs.RESULT5)>>4; //母线电压检测,过压保护, //注:电机在启动或者转动方向改变时,可能母线电压有脉动 //采用多次求平均值 Sumdcv+=dcvoltage; dcvcount++; if(dcvcount==500) { Averagedcv=Sumdcv/500;//求平均母线电压 Sumdcv=0; dcvcount=0; } if(Averagedcv>=3000) { stopmotor(); GpioDataRegs.GPADAT.bit.GPIOA11 =1;//过压显示 } /******************************/ AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1; //清除状态字 AdcRegs.ADCTRL2.bit.RST_SEQ1=1;//复位seq1 EvaRegs.EVAIFRA.bit.T1PINT=1;//清除中断标志 EvaRegs.EVAIMRA.bit.T1PINT=1;//中断允许 PieCtrl.PIEACK.bit.ACK2=1;//向cpu申请中断 } interrupt void pdpinta_isr(void) { EvaRegs.EVAIFRA.bit.PDPINTA=1;//清除PDPINTA中断标志 PieCtrl.PIEACK.bit.ACK1=1;//向cpu申请中断 stopmotor(); GpioDataRegs.GPADAT.bit.GPIOA12 =1;//故障显示 EvaRegs.COMCONA.bit.FCOMPOE=1;//重新使能比较输出 }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 品牌综合 > 行业标准/行业规范

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服