步进电机stepmotor
硬件部分
通过给安装在定子的轮毂上的四个电磁铁依次通电
通过齿轮结构的传动
来带动中间的永磁体转子来转动
低精度,小功率,低功转化率的驱动方法
较高精度,较大功率,高功转化率的驱动方法
电机的几线几相这里及其分类就不做赘述了
说一下电机使用的注意事项
- 电压控制 与 单相不可长时间通电
- 专业的驱动型片和驱动程序,可以让步进电机做到十分精准的地步,(当然步进电机本身也要有足够精准的工艺),可以确定向360/256°的256个方向指定转动并朝向(换个思路,三相或六相电机就可完成360/360°的个方向转向)
- 步进电机的
扭矩 l = f r
与电流直接相关(电流控制力的大小)
速度 v = w r t = w r (1/Fs)
与电机的通电频率有关
软件部分
void STEP_MOTOR_Init(void){ //step_motor initializeRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//the clock that's specially prepared for the multiplexed GPIO_Pin (the original is for JTAG)GPIO_InitTypeDef GPIO_InitStructure;//3 enum variables respectively control the pin, mode and crystal speedGPIO_InitStructure.GPIO_Pin = STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_C | STEP_MOTOR_D;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHz;//there's some prepared_presentation for motor(not in variable, but some funtions are prepared)GPIO_Init (STEP_MOTOR_PORT, &GPIO_InitStructure);//firstly disable JTAG to change the flection of the pins , remap means re-define(configuration)GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//turn off the power to preven the motor to constantly consume the power and being to hotSTEP_MOTOR_OFF();
}void STEP_MOTOR_OFF (void){//turn the motor offGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_C | STEP_MOTOR_D);//reset all the pins
}
对角双电机间歇往返程序
void STEP_MOTOR_4S (u8 speed){//µç»ú¹Ì¶¨Î»ÖÃGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A| STEP_MOTOR_C); //¸÷½Ó¿ÚÖÃ0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_D); //¸÷½Ó¿ÚÖÃ1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_C | STEP_MOTOR_D);delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_C); //1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_C | STEP_MOTOR_D);delay_ms(speed); //ÑÓʱSTEP_MOTOR_OFF(); //½øÈë¶Ïµç״̬£¬·Àµç»ú¹ýÈÈ
}
相邻双电机间歇驱动
void STEP_MOTOR_4R (u8 speed){//µç»ú˳ʱÕ룬4ÅÄ£¬Ëٶȿ죬Á¦Ð¡GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_C | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A| STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_C | STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱSTEP_MOTOR_OFF(); //½øÈë¶Ïµç״̬£¬·Àµç»ú¹ýÈÈ
}void STEP_MOTOR_4L (u8 speed){//µç»úÄæʱÕ룬4ÅÄ£¬Ëٶȿ죬Á¦Ð¡GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_C | STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_C | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱSTEP_MOTOR_OFF(); //½øÈë¶Ïµç״̬£¬·Àµç»ú¹ýÈÈ
}
双-单电机间歇驱动
void STEP_MOTOR_8R (u8 speed){//µç»ú˳ʱÕ룬8ÅÄ£¬½Ç¶ÈС£¬ËÙ¶ÈÂý£¬Á¦´óGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_C | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_C | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_B);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_C);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_C | STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_C);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱSTEP_MOTOR_OFF(); //½øÈë¶Ïµç״̬£¬·Àµç»ú¹ýÈÈ
}void STEP_MOTOR_8L (u8 speed){//µç»úÄæʱÕ룬8ÅÄ£¬½Ç¶ÈС£¬ËÙ¶ÈÂý£¬Á¦´óGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_C);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_C | STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_C);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_C | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_B);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_C | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_B);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C | STEP_MOTOR_D);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A);//1delay_ms(speed); //ÑÓʱGPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_B | STEP_MOTOR_C);//0GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A | STEP_MOTOR_D);//1delay_ms(speed); //ÑÓʱSTEP_MOTOR_OFF(); //½øÈë¶Ïµç״̬£¬·Àµç»ú¹ýÈÈ
}
步进电机stepmotor相关推荐
- python控制电机_利用树莓派控制步进电机——Python语言
步进电机的优点在于它能够被精确定位,正向或反向一次性转动"一步",并且也能够连续转动. #!/usr/bin/env python ######################## ...
- STM32 电机教程 8 - 步进电机开环电流控制
前言 上一讲我们已成功实现基于STM32定时器的步进电机开环速度控制,这一节将介绍步时电机的开环电流控制,步进电机内阻较大,在电机停机或堵转时其电流可近视为 I = U/R.其中R是常量,控制U就可以 ...
- STM32 电机教程 7 - 步进电机开环速度控制
前言 上一讲我们已成功实现对步进电机的正反转动控制,并简单的通过调节节拍间的延时时间实现了简单的转速控制(开环),这一节将继续给大学介绍在STM32中通过定时器方式来实现节拍间的精确延时操作,并通时调 ...
- 28BYJ-48步进电机
1.28BYJ-48步进电机的控制 自带减速器,五线四相单极性,直径为28mm.一般有五根线.红色是公共的VCC(5v),A相蓝色,B相粉色,C相黄色,D相橙色.如果采用单双拍如图所示: 第一步:先D ...
- 工业42、57、86、110步进电机
1.57步进电机基本介绍 在实际工业设备中一般使用较大尺寸的步进电机,它们有更大的扭矩.根据电机外尺寸的不同,可以分为42.57.86.110步进电机:另外,同个尺寸电机可以有不同的机身长度,影响转矩 ...
- M415步进电机驱动器的使用(C51)
如图为M415步进电机驱动器 Signal端 PUL为脉冲输入信号. DIR方向输入信号,用于改变电机运转方向:不接该口会朝一个默认方向转动 ENA为使能信号,用于使能或禁止驱动器输出: OPTO为脉 ...
- 步进电机编码器适配的分享(步进电机闭环准备)
不步进电机编码器测速 本例我们选用了THB6064MQ集成步进电机驱动模块使用很简单,仅有3个输入端口分别是使能端口.方向控制端口和脉冲输入端口,在不细分的模式下每输入一个脉冲步进电机就 ...
- 树莓派控制57步进电机
一.简介 使用树莓派控制57步进电机. 二.硬件设备 57两相四线步进电机 ×1 DM542驱动器 ×1 树莓派 ×1 3.3V-5V电平转换 ×1 24V / 36V电源 ×1 三孔带插头单头裸尾电 ...
- 解决ESP32 驱动 28BYJ-48 步进电机反向不转之震动的问题
解决ESP32 驱动 28BYJ-48 步进电机反向不转之震动的问题 date: 2021-09-19 lastmod: 2021-09-19 问题描述 Esp 32 在 mqtt 消息下通过 Ste ...
最新文章
- 关于学习Python的一点学习总结(6->元组)
- Python开发基础总结之套接字+字符串+正则表达式
- The 2018 ACM-ICPC Chinese Collegiate Programming Contest B. Rolling The Polygon
- 指定时间的月初和月末一天的写法
- 用python os.system 执行 批处理的时候, 出现的一些问题
- 1.14 关于梯度检验实现的注记
- Windows下Eclipse 安装 SVN 插件的两种方法
- 解决zabbix图形乱码
- 计算机组成原理唐朔飞第八章ppt,计算机组成原理唐朔飞PPT第8章CPU的结构和功能.ppt...
- 批量找关键词的软件-再也不用担心找不着 关键词了
- 数字图像处理的起源与应用
- bootstrap table用法
- led数字字体_led电视质量排行榜
- So Easy! HDU - 4565(构造共轭+矩阵快速幂)
- 键入一个字母,如果小写字母输出大写,大写字母输出小写字母
- JAVA调用IBM的Lotus Notes
- Android 仿音乐播放器自定义锁屏歌词功能
- 怎么拼魔方6个面方法_怎么拼齐魔方6个面
- 分析10万条弹幕,告诉你《古董局中局2》这部鉴宝题材剧咋样?
- mysql通过字段值查询表名
热门文章
- platfrom设备驱动框架
- unraid应用_套娃自动备份unraid系统u盘_NAS存储
- H5 百度高德地图导航
- javaScript算术题(经典案例)
- 惠普打印机卡纸问题,解决.
- nginx 域名解析
- 发明计算机作文300字,关于科学发明的作文300字(共7篇)
- PHPExcel替代方案PhpSpreadsheet
- 查看git HEAD
- java qq聊天界面_【附源码】用Java写了一个类QQ界面聊天小项目,可在线聊天!...