第三次实验课.ppt

上传人:wj 文档编号:12864574 上传时间:2023-06-08 格式:PPT 页数:40 大小:1.94MB
下载 相关 举报
第三次实验课.ppt_第1页
第1页 / 共40页
第三次实验课.ppt_第2页
第2页 / 共40页
第三次实验课.ppt_第3页
第3页 / 共40页
第三次实验课.ppt_第4页
第4页 / 共40页
第三次实验课.ppt_第5页
第5页 / 共40页
第三次实验课.ppt_第6页
第6页 / 共40页
第三次实验课.ppt_第7页
第7页 / 共40页
第三次实验课.ppt_第8页
第8页 / 共40页
第三次实验课.ppt_第9页
第9页 / 共40页
第三次实验课.ppt_第10页
第10页 / 共40页
第三次实验课.ppt_第11页
第11页 / 共40页
第三次实验课.ppt_第12页
第12页 / 共40页
第三次实验课.ppt_第13页
第13页 / 共40页
第三次实验课.ppt_第14页
第14页 / 共40页
第三次实验课.ppt_第15页
第15页 / 共40页
第三次实验课.ppt_第16页
第16页 / 共40页
第三次实验课.ppt_第17页
第17页 / 共40页
第三次实验课.ppt_第18页
第18页 / 共40页
第三次实验课.ppt_第19页
第19页 / 共40页
第三次实验课.ppt_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第三次实验课.ppt

《第三次实验课.ppt》由会员分享,可在线阅读,更多相关《第三次实验课.ppt(40页珍藏版)》请在冰点文库上搜索。

第三次实验课.ppt

,2012年05月14日,机电控制工程,步进电机控制实验,1,步进电机基础,2,步进电机控制,步进电机基础,步进电机将电脉冲信号变换成相应的角位移或者直线位移的机电执行元件。

步进电机的位移量与输入脉冲严格成比例,不会引起误差积累。

转速取决于脉冲信号的频率,总位移量取决于总的脉冲信号数,转向取决于绕组通电顺序。

应用优点:

简化系统,工作可靠,不需要位移传感器就可以达到较精确的定位,获得较高的控制精度。

缺点:

功率小,输出力矩小。

步进电机基础,SB接通,SA、SC、SD断开,磁极B和转子0、3对齐,其他产生错齿;SC接通,SB、SA、SD断开,磁极C和转子1、4对齐,其他产生错齿。

依次类推,A、B、C、D四相轮流供电,转子就会沿着A、B、C、D转动。

步进电机基础,基本概念步距输入一个电脉冲时,转子转过的角度。

齿距各相绕组轮流通电一次,转子就转过一个齿距。

“单”每次切换前后只有一相绕组通电。

“双”每次切换前后有两相绕组通电。

“拍”从一种通电状态换到另一种通电状态叫做一“拍”。

举例说明(三相步进电机)单相轮流(三相单三拍)ABCA双相轮流(三相双三拍)ABBCCAAB单双相轮流(三相单双六拍)AABBBCCCAA单相轮流方式下,每次只有一相控制绕组通电吸引转子,容易使转子在平衡位置附近产生振荡,运行稳定性较差。

另外,在切换时一相绕组断电而另一相控制绕组开始通电,容易造成失步。

步进电机基础,基本运算相数:

m状态系数:

K(单三拍、双三拍时,K=1;单双六拍时,K=2)电脉冲频率:

f(Hz)转子齿数:

Z增大转子齿数Z、定子相数m或者运行拍数K,可以减小步距角,提高控制精度。

a.四相四拍,b.四相双四拍,c.四相八拍,a.四相四拍A-B-C-Db.四相双四拍AB-BC-CD-DAc.四相八拍A-AB-B-BC-C-CD-D-DA,步进电机基础,实验中用到的步进电机:

四相,24BYJ48A,电机旋转一周需要多少个脉冲?

360/5.62564=6464=4096,步进电机基础,1,步进电机基础,2,步进电机控制,采用AVR单片机作为主控单元,L298作为驱动芯片。

控制框图如下:

转过的角度:

脉冲个数转速:

频率转向:

绕组通电顺序,步进电机控制,步进电机控制,环形分配器的实现采用软件方式:

四相八拍环形分配器数值表如下,在单片机程序中延时一段时间后按顺序轮转输出以下值以使其正转或反转。

引脚PB1、PB3、PB2、PB4分别控制步进电机的A、B、C、D四相。

步进电机驱动电路,定义8个宏#defineA()(PORTB=0B00000010)#defineB()(PORTB=0B00001000)#defineC()(PORTB=0B00000100)#defineD()(PORTB=0B00010000)#defineAB()(PORTB=0B00001010)#defineBC()(PORTB=0B00001100)#defineCD()(PORTB=0B00010100)#defineDA()(PORTB=0B00010010),引脚PB1:

A相PB3:

B相PB2:

C相PB4:

D相,脉冲的产生,1、四相四拍:

A-B-C-D-A2、四相双四拍:

AB-BC-CD-DA-AB3、四相八拍:

A-AB-B-BC-C-CD-D-DA-A控制拍子顺序倒置即让电机反转!

根据控制算法产生时序脉冲,if(step_choice=EIGHTBEATS)/四相八拍if(dir_flag=FORWARD)/正转if(step=0)A();elseif(step=1)AB();elseif(step=2)B();elseif(step=3)BC();elseif(step=4)C();elseif(step=5)CD();elseif(step=6)D();elseif(step=7)DA();elseif(dir_flag=BACKWARD)/反转step+;if(step=8)step=0;,四相八拍环形分配器程序,速度控制实际上就是控制系统发出脉冲的频率。

系统可以用两种方法确定脉冲的频率:

软件延时:

通过调用延时子程序的方法实现的,它占用CPU时间。

#include“delay.h”定时器:

通过设置定时时间常数的方法来实现。

步进电机速度控制,8MHz,4MHz,从8MHz到50Hz需要多少分频?

8000,000/50=160000定时器最多到1024分频,因此到最多的分频也不能达到50Hz的启动频率的目的。

定时器,分频原理,以定时器0为例TCCR0:

定时器控制寄存器,定时器原理,以定时器0为例TCNT0:

定时器寄存器(计数),定时器0溢出中断:

/interruptTIM0_OVFvoidtimer0_ovf_isr(void)目的:

定时器计满后再改变脉冲状态,就达到了分频的目的,定时器原理,/TIMER0initialize-prescale:

1024/desiredvalue:

50Hz/actualvalue:

50.232Hz(0.5%)voidtimer0_init(void)TCCR0=0x00;/stopTCNT0=0x29;/setcountTCCR0=0x05;/starttimer#pragmainterrupt_handlertimer0_ovf_isr:

iv_TIM0_OVFvoidtimer0_ovf_isr(void)TCNT0=0x29;/reloadcountervalue/添加步进电机核心代码,1)11.059M/1024=10799.82)10799.8/50=215.996=0xD73)0xFF+10xD7=0x294)TCNT0=0x29,定时器实现,定时器实现,宏定义通电方式正反转脉冲个数每拍状态全局变量转向通电方式当前拍状态当前脉冲个数Timer0溢出中断服务程序按键(外部中断)改变电机转向,定时器实现,T0溢出中断,T0重装载初值,没有达到总脉冲数?

是四相八拍?

是否正转?

拍数+1,到8清零,脉冲数+1,到4096清零,环形分配器分配正转脉冲,环形分配器分配反转脉冲,结束,T0关,Y,N,Y,Y,N,if(current_stepTOTALSTEP)/四相八拍if(step_choice=EIGHTBEATS)if(dir_flag=FORWARD)if(step=0)A();elseif(step=1)AB();elseif(step=2)B();elseif(step=3)BC();elseif(step=4)C();elseif(step=5)CD();elseif(step=6)D();elseif(step=7)DA();,elseif(dir_flag=BACKWARD)if(step=0)DA();elseif(step=1)D();elseif(step=2)CD();elseif(step=3)C();elseif(step=4)BC();elseif(step=5)B();elseif(step=6)AB();elseif(step=7)A();step+;if(step=8)step=0;current_step+;if(current_step=TOTALSTEP)TCCR0=0x00;/stopTimer,定时器实现,#defineFOURBEATS0/四相四拍#defineDOUBLEFOURBEATS1/四相双四拍#defineEIGHTBEATS2/四相八拍#defineA()(PORTB=0B00000010)#defineB()(PORTB=0B00001000)#defineC()(PORTB=0B00000100)#defineD()(PORTB=0B00010000)#defineAB()(PORTB=0B00001010)#defineBC()(PORTB=0B00001100)#defineCD()(PORTB=0B00010100)#defineDA()(PORTB=0B00010010)#defineFORWARD0#defineBACKWARD1#defineTOTALSTEP4096,/*GlobalValues*/chardir_flag=BACKWARD;charstep_choice=EIGHTBEATS;charstep=0;intcurrent_step=0;/*/#pragmainterrupt_handlerint0_isr:

iv_INT0voidint0_isr(void)/externalinteruptonINT0dir_flag=FORWARD;#pragmainterrupt_handlerint1_isr:

iv_INT1voidint1_isr(void)/externalinteruptonINT1dir_flag=FORWARD;,定时器实现,作业程序流程图,中断触发+数码管显示AD采集+LED显示融合中断+AD采集+数码管显示+电机运动,作业任务分解,向导生成初始化程序,向导生成初始化程序,中断触发+数码管显示,AD采集流程,AD采集,ADMUX:

多工选择寄存器,AD转换寄存器功能,ADCSRA:

ADC控制状态寄存器,AD转换寄存器功能,ADCL、ADCH:

ADC数据寄存器,AD采集转换寄存器功能,#defineADC_Filter_Num10/定义滤波次数/ADCinitialize/Conversiontime:

75uSvoidadc_init(void)ADCSR=0x00;/disableadcADMUX=0x00;/selectadcinput0ACSR=0x80;ADCSR=0x86;/64分频/ReadtheADconversionresultunsignedintread_adc(unsignedcharadc_input)unsignedinti;unsignedchark;ADMUX=adc_input;ADCSRA|=0x40;/StarttheADconversion/WaitfortheADconversiontocompletewhile(ADCSRA,AD转换实现,voidmain(void)intAdcData=0,temp;staticintnum=0;staticfloatsum=0;init_devices();while

(1)temp=read_adc(7);if(numADC_Filter_Num)sum+=temp;num+;else/滤波,求出电机频率/延时,等待数码管稳定的显示,主函数,中断服务程序与方向的关系dir_flag:

BACKWARDorFORWARDAD采集与速度的关系TCNT0频率adData步进电机范围是50500HzAD采集的数据范围adData是01023所以二者的线性关系式是f=50+(450.0/1023.0)*adData数据类型滤波,?

注意事项,TCNT0=,为了量化观测实际控制效果,用LED观看旋钮AD值比较方便。

方向:

环形分配方式角位移:

脉冲个数速度:

脉冲频率,步进电机控制要点,演示(二选一)通过电位计控制电机转速,按键控制转向,并在数码管上稳定的显示当前转速通过上位机串口发送速度与方向指令给电机,并用数码管和LED灯显示转速和转向文档背景知识单片机资源设置程序流程图调试过程学习心得,作业要求,演示时间2012年5月11日(周五)晚上7点B307文档提交时间2012年5月17日(周四)晚24点之前文档命名方式学号+姓名+第三次作业实验箱归还时间2012年5月18日(周五)24点之前请爱惜设备!

作业要求,谢谢大家,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2