logo资料库

直流电机调速实验报告含部分程序.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
直流电机测速与控制
山东交通学院 直流减速电机控制实验报告 班 学 姓 时 成 级 号 电气 072 085 070812206 080819520 070812213 名 孟前进 孔凡春 王晓林 2010 年 6 月 间 绩
直流电机测速与控制 一、实验目的 通过凌阳十六位单片机控制直流电机的驱动实验掌握芯片 L298N 的使用,以及通过通过 软件编程改变输出波形的占空比实现直流电机的调速,增强我们的动手能力,为以后的大模 块设计打下基础。 二、实验内容 根据老师提供以及我们自己搜索的直流电机驱动、测速电路的资料通过使用单片机驱动 直流电机,测量直流电机的转速,控制直流电机稳定运行在要求的某一范围内。 三、实验要求 按实验内容编写一个程序,并在实验仪上调试和验证。 四、实验说明 使用栅格圆盘和光电门组成测速系统。当直流电机通过传动部分带动栅格圆盘旋转时, 测速光电门获得一系列脉冲信号。这些脉冲信号通过单片机两个定时/计数器配合使用,一 个计数,一个定时。计算出单位时间内的脉冲数 m,经过单位换算,就可以算得直流电机旋 转的速度。 直流电机转速计算公式:n=60·m/(N1·T·N)(rpm) 其中:n 为直流电机转速,N 为栅格数,N1 为 T0 中断次数,m 为计数器 T1 在规定时间 内测得的脉冲数,T 为定时器 T0 定时器溢出时间。 使用外接显示电路,可把电机的转速显示出来 电机测速模型如下,将栅格圆盘变化通过光电发射器和接收器以及外围转换电路的作用 送给单片机通过数学运算得到单片的的转速。 具体测速模型如下 A 1 K 2 C 3 E 4 Q 9 A O p t o i s o l a t o r V C C V C C P 1 1 A P u l s e O u t R 4 7 A 2 2 0 R 4 8 A 4 . 7 K 1 1 1 0 U 1 2 A E 7 4 L S 1 4
直流电机转速调节: 某些场合往往要求直流电机的转速在一定范围内可调节,例如,电车、机床等,调节范 围根据负载的要求而定。调速可以有三种方法:(1)改变电机两端电压;(2)改变磁通;(3) 在电枢回路中,串联调节电阻。本实验采用第一种方法:通过改变施加于电机两端的电压大 小达到调节直流电机转速的目的。 部分操作程序 while(1) { *P_TimerA_Ctrl=0x0230; *P_Watchdog_Clear=0x0001;} //8/16 //中速 } void IRQ3(void)__attribute__((ISR)); void IRQ3(void) {if(*P_INT_Ctrl&0x0100) {while(*P_IOB_Data^0x000c) { *P_TimerA_Ctrl=0x03b0; *P_Watchdog_Clear=0x0001;} *P_INT_Clear=0x0100; } else if(*P_INT_Ctrl&0x0200) {while(*P_IOB_Data^0x000c) { *P_TimerA_Ctrl=0x0070; *P_Watchdog_Clear=0x0001;} *P_INT_Clear=0x0200; //高速 //14/16 //低速 //1/16 } } 修改P_TimerB_Ctrl与P_TimerA_Ctrl配合实现正转反转,程序类似,不加赘述。 五、实验步骤 1) 连接电路如图, 2)启动 PC 机,打开 unSP IDE 2.0.02 软件,加载程序,编译,下载,运行。 3)通过程序控制直流电机旋转,实现软件调速,通过数码管显示电机转速。
电路接线图 附录: 操作程序: #include"SPCE061A.h" main() { } *P_IOA_Dir=0xffff; *P_IOA_Attrib=0xffff; *P_IOA_Data=0x0003; *P_IOB_Dir=0x0300; *P_IOB_Attrib=0x0300; *P_IOB_Data=0x000c; *P_INT_Ctrl=0x0300; asm("INT IRQ"); while(1) { *P_TimerA_Ctrl=0x0230; *P_Watchdog_Clear=0x0001;} //8/16 //中速 void IRQ3(void)__attribute__((ISR)); void IRQ3(void) {if(*P_INT_Ctrl&0x0100)
{while(*P_IOB_Data^0x000c) { *P_TimerA_Ctrl=0x03b0; *P_Watchdog_Clear=0x0001;} //高速 //14/16 *P_INT_Clear=0x0100; } else if(*P_INT_Ctrl&0x0200) {while(*P_IOB_Data^0x000c) { *P_TimerA_Ctrl=0x0070; *P_Watchdog_Clear=0x0001;} *P_INT_Clear=0x0200; //低速 //1/16 } } 电路图:
分享到:
收藏