100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 步进电机控制和步进电机原理

步进电机控制和步进电机原理

时间:2020-06-02 23:27:31

相关推荐

步进电机控制和步进电机原理

今天调试了一个惠斯通的步进电机,原来调试过一款欧柯达的42步进电机, 本以为两个电机差不多,驱动器给的一样,结果发现死活不能动。用自己百度了一下,做一个笔记

例如这个电机 42BYGH403AA

42 为机座尺寸, BYGH是指混合式步进电机(混合式步进电机是综合了永磁式和反应式的优点而设计的步进电机。它又分为两相、三相和五相,两相步进角一般为1.8度 ,三相步进角 一 般为 1.2度 ,而五相步进角 一 般为0.72度。

混合式步进电机的转子本身具有磁性,因此在同样的定子电流下产生的转矩要大于反应式步进电机,且其步距角通常也较小,因此,经济型数控机床一般需用混合式步进电机驱动。但混合转子的结构较复杂、转子惯量大,其快速性要低于反应式步进电机)

这个图像就能看出电机的具体的尺寸标准 绕组是星型步距角1.8度,H就是混合式,法兰是异性法兰

步进电机还有带行星减速的尺寸,在最后我们可以看到一个

比如这个

OK42STH47-168AG3.71

ok:是产品名,欧柯达42是尺寸其他的看不懂,3.71就是减速比

最后一句话直接买电机对应的驱动器,这个市场根本没有统一的标准,杂乱无章,还是直接买一套直接用好,这一会调好了,一般工频10k左右吧程序发给大家参考一下

#include "sydj.h"#include "gpio.h"#include "stmflash.h"#include "usart.h"u8 DJ_Buffer_temp[4];u8 datatemp[4];#define FLASH_SAVE_ADDR 0X08070000 //设置FLASH 保存地址(必须为偶数,且其值要大于本代码所占用FLASH的大小+0X08000000)int32_t DJ_WEIZHI ;u8 End_flage=0;u8 Dj_turn=0;u32 Dj_step=0;u16 Dj_speed=0;u16 Dj_set=0;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;void TIM1_Init(u16 arr ,u16 psc){RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //时钟使能//定时器TIM3初始化TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断TIM_Cmd(TIM1, ENABLE); //中断优先级NVIC设置NVIC_InitStructure.NVIC_IRQChannel =TIM1_UP_IRQn; //TIM7中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//先占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器//使能TIMx}void Sydj_move(u8 turn, u16 speed,u32 steep){Dj_step=steep;Dj_speed=speed;Dj_set=speed+500;Dj_turn=turn;SYDJ_DR=turn;TIM1_Init(71,speed);while(End_flage==0);}void TIM1_UP_IRQHandler(){static u8 dj_flag=0;u8 jiyi_flag=0;if(TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET){dj_flag=~dj_flag;if(dj_flag!=0){SYDJ_DR=Dj_turn;SYDJ_PR=1;}else {SYDJ_DR=Dj_turn;SYDJ_PR=0;}jiyi_flag++;Dj_step--;//if(jiyi_flag==50)//{//jiyi_flag=0;// STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,4);//if(Dj_turn)//{// DJ_WEIZHI=(int32_t)(datatemp[3]<<24|datatemp[2]<<16|datatemp[3]<<8|datatemp[0]);// printf("%d\n",DJ_WEIZHI);//DJ_WEIZHI+=1;//}//else//{// DJ_WEIZHI=(int32_t)(datatemp[3]<<24|datatemp[2]<<16|datatemp[3]<<8|datatemp[0]);// DJ_WEIZHI-=1;////}//DJ_Buffer_temp[3]=DJ_WEIZHI>>24;//DJ_Buffer_temp[2]=DJ_WEIZHI>>16;//DJ_Buffer_temp[1]=DJ_WEIZHI>>8;//DJ_Buffer_temp[0]=DJ_WEIZHI;// STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)DJ_Buffer_temp,4);// //}if(Dj_step>450){if(Dj_speed>150){Dj_speed=Dj_speed-1;printf("%d\n",Dj_speed);TIM1->PSC=Dj_speed;}else TIM1->PSC=150;}else if(Dj_step<=450){ Dj_speed+=1;printf("%d\n",Dj_speed);TIM1->PSC=Dj_speed;if(Dj_step==0)//{TIM_Cmd(TIM1,DISABLE );End_flage=1;}}TIM_ClearITPendingBit(TIM1, TIM_IT_Update);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。