步进电机控制和步进电机原理
今天调试了一个惠斯通的步进电机,原来调试过一款欧柯达的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); }}
步进电机控制和步进电机原理相关推荐
- 基于步进电机控制的电梯
基于51单片机的步进电机控制 对于步进电机的控制,小白们可能会觉得很难入手,今天我就普通的五相四线制步进电机的控制做一下讲解. 原理 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载 ...
- 微型计算机测控系统课程设计报告,微机原理课程设计实验报告--步进电机控制.docx...
文档介绍: 2010-2011学年第一学期 微机原理课程设计实验报告 课题名:步进电机控制 一.课题内容和提示: 编程提示: (1)步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机做步进式旋 ...
- 微型计算机步进电机控制,步进电机的微型计算机控制
步进电机的微型计算机控制 维普资讯 http://doc.xuehai.net 第 5期 20 0 7年 5月 山西焦煤科技 S a x o ig C a ce c& T c n l g h ...
- 微型计算机kong控制技术,AT89C2051单片机在步进电机控制中的应用
AT89C2051单片机在步进电机控制中的应用 作者:贾方, 张志胜 作者单位:东南大学,机械工程系,江苏,南京,210096 刊名: 机械设计与制造工程 英文刊名:MACHINE DESIGN AN ...
- c52单片机控制l298n步进电机角度_【设计图文】单片机实现的步进电机控制系统(开题报告+论文+文献综述+外文翻译+DWG图纸)...
点击标题上方"微Life梦Heart阅读",关注. 设计图文626 摘 要[快速浏览摘要]单片微型计算机简称单片机.它是把组成微型计算机的各功能部件:中央处理器.CPU.随机存取 ...
- 使用Arduino控制TB6600步进电机驱动器教程(更新于 2022.03.19)
Arduino步进电机4种演示 了解如何使用 ULN2003.L298N 和 A4988 等驱动程序通过 Arduino 控制双极和单极步进电机. 概述 简述:步进电机工作原理和特点:示意图显示和文字 ...
- 51单片机课程设计《三路步进电机控制》
说明:最近抽出了几天时间完成了单片机的课程设计,用了51单片机做了三路步进电机控制器,美名其曰3d打印机控制器(其实是瞎搞的,与3D打印机毫无关系),因为单片机课程设计是在大四上学期,与考研复习时间冲 ...
- 单片机c语言 步进电机,步进电机控制(单片机C语言).doc
步进电机控制(单片机C语言) 模块二 简单应用实例调试 任务2 步进电机控制(H22) 任务要求 用单片机P1端口控制步进电机,编写程序输出脉冲序列到P1口,控制步进电机正转.反转,加速,减速. 二. ...
- 单片机C语言步进电机实训报告,步进电机控制实训报告.doc
步进电机控制实训报告 2010/2011学年第学期 专用周 课程名称 :班 级 : : : 教学周数 : 地 点 : 指导教师 :介绍了一种基于AT8952单片机步进电机的设计,系统分为.LCD显示步 ...
- 关于DSP320F28335步进电机控制几个问题
本人是一个嵌入式的菜鸟,兴趣使然开始学习dsp320f28335,现在仍在学习过程中,我将自己在学习过程中遇到的问题总结下来,发到博客上,希望能帮到同是刚入坑嵌入式的小白.因为本人还在初步的学习当中, ...
最新文章
- 《github一天一道算法题》:并归排序
- Windows 8 的新文件搜索实例分享
- phpStorm打开提示 failed to create JVM 的解决的方法
- python 神经网络中隐藏层的作用是什么?
- 阿里 框架 原声Android,阿里P8大佬亲自教你!你所不知道的Android原生开发的现状,含泪整理面经...
- CodeForces - 1263A Sweet Problem(思维,水题)
- python面向对象:多态与多态性
- 通信调制体制设计之64QAM性能分析MATLAB仿真及代码
- 创建生成级联上级字符的函数
- Java适配器模式(转接口)
- 求连通块的数量(dfs、bfs)
- Myflight航班查询系统
- Notepad++的第三方插件介绍中文翻译
- 公司注册的企业邮箱竟然有邮件撤回的功能?!
- 网盘搜索引擎以及网盘分享社区地址
- js中的运算符操作顺序
- effective morden c++ 3
- 高新的技术对不对_同样是申请高新技术企业认定,为什么你会失败?
- 淘宝电商用户行为数据分析及可视化—基于MySQL/Power BI(含代码)
- python多线程详解_Python多线程详解-Python-火龙果软件
热门文章
- [CTFHub] Web RCE Write ups
- 标题中冒号的用法_英文中冒号的各种用法
- 设备管理 设备控制方式
- 使用tayga测试无状态nat64功能
- python计算对数收益率_对数收益率怎么转成年化收益率?怎么计算夏普比率?
- 爱奇艺网络流量分析引擎QNSM及其应用
- Flutter 不是真正的跨平台框架
- 朗强科技解读:什么是HDMI接口,有什么用处,以及HDMI延长器
- Embase,PubMed,Cochrane,WebOfScience,ScienceDirect检索方法
- Class Not Found 的错误解决