stm32-A4988驱动步进电机

发布者:温馨的家庭最新更新时间:2019-09-25 来源: eefocus关键字:stm32-A4988  驱动  步进电机 手机看文章 扫描二维码
随时随地手机看文章

步进电机,不多做解释,百度一大堆,虽然写的都一样。


1.步进电机用的2相四线,下面是某淘宝图片。

2.驱动器是A4988模块,据说是3d打印机专用。


灰色的脚可以悬空,也可以用上。


ENABLE    使能        1停止


STEP         pwm(50%)        控制速度   (频率范围:我试了下大概1Hz-1KHz都可以跑的,当然频率越慢,电机相当于静止状态)


DIR             控制方向


2B    ->    B+     (这里网上没怎么说清楚,只说了什么红绿蓝,鬼知道?)


1B    ->    B-


2A    ->    A+


1A    ->    A-


基本重要的就是这些,分步控制就是MS1 MS2 MS3,看后面。接线参考下面。


连线根据上面一个没有什么问题,下面直接上代码吧。stm32 通过tim3 ch1输出pwm,也就是PA6


void PWM1_Init()

{

  GPIO_InitTypeDef GPIO_InitStructure;

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

TIM_OCInitTypeDef  TIM_OCInitStructure;

 

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);// 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB , ENABLE);  //使能GPIO外设时钟使能

 

 

//设置该引脚为复用输出功能,输出TIM1 CH1的PWM脉冲波形

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 ; //TIM_CH1

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

 

 

TIM_TimeBaseStructure.TIM_Period = 999; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值      

TIM_TimeBaseStructure.TIM_Prescaler =71; //设置用来作为TIMx时钟频率除数的预分频值  不分频

TIM_TimeBaseStructure.TIM_ClockDivision =0; //设置时钟分割:TDTS = Tck_tim

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

//TIM3通道一

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能

TIM_OCInitStructure.TIM_Pulse = 60;  /*占空长度 0 – 周期(max)*/

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高

TIM_OC1Init(TIM3, &TIM_OCInitStructure);  //根据TIM_OCInitStruct中指定的参数初始化外设TIMx

 

TIM_CtrlPWMOutputs(TIM3,ENABLE);        //MOE 主输出使能        

TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIMx在ARR上的预装载寄存器

TIM_Cmd(TIM3, ENABLE);  //使能TIM1

}

 

void set_freq(u16 freq)

{

TIM3->ARR=1000000/freq; //设频率

TIM3->CCR1=1000000/freq/2;   //设占空比 50%

}

初始化就不介绍了,就是设置成不分频,计数频率最大为1M,


set_freq函数就是设置频率,范围1-1000000对应1Hz-1MHz,这里是理论值,实际上我的步进电机2KHz好像就跑不起来了。


所以我认为1-2000的就够了,注意电机刚起的时不能太高的频率,一般低于500Hz没有问题。

关键字:stm32-A4988  驱动  步进电机 引用地址:stm32-A4988驱动步进电机

上一篇:stm32定时器输出4路频率可调的原理分析
下一篇:stm32 adc的dma传输案例

推荐阅读最新更新时间:2024-11-10 19:12

联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏
SSD1306/SSD1315 OLED 0.96的128x64 OLED液晶屏是嵌入式应用中最常见的一种屏幕, 这种屏幕常见的pin脚类型有两种: I2C和SPI, 驱动通常是SSD1306, 最近会有一些是SSD1315 I2C类型的OLED只有4个pin脚, 不可修改连接模式, 比较好辨认 SPI类型的OLED有6/7/8pin几种类型, 最常见的是7pin, 带协议选项的模块, 这种模块的背面PCB会有三种模式的选择说明, 后面列出的Rx代表那些位置需要焊接电阻, 通常这些电阻阻值都是5KR, 默认出厂都是4线SPI的模式 在SPI模式下, SSD1306和SSD1315的驱动方式是一样的. 因为W806可以使用
[单片机]
联盛德 HLK-W806 (八): 4线SPI<font color='red'>驱动</font>SSD1306/SSD1315 128x64 OLED液晶屏
PLC控制步进电机方法
一、引言       微电子技术和计算机技术发展,可编程序控制器有了突飞猛进发展,其功能已远远超出了逻辑控制、顺序控制范围,它与计算机有效结合,可进行模拟量控制,具有远程通信功能等。有人将其称为现代工业控制三大支柱(即PLC,机器人,CAD/CAM)之一。目前可编程序控制器(ProgrammableController)简称PLC已广泛应用于冶金、矿业、机械、轻工等领域,为工业自动化提供了有力工具。       二、PLC基本结构       PLC采用了典型计算机结构,主要包括CPU、RAM、ROM和输入/输出接口电路等。把PLC看作一个系统,该系统由输入变量-PLC-输出变量组成,外部各种开关信号、模拟信号、传感器检测信
[嵌入式]
STM32F429 Discovery FMC驱动原子4.3寸LCD
上一篇写了GPIO简单的流水灯测试,看着有点单调,习惯了串口调试,板子上没有串口 那就另想办法吧,看着LCD突然有了个想法,为什么不把调试信息输出到LCD上,以前在做2416 WINCE开发的时候就经常这样干非常直观,那说干就干。 STM32F429I-DISO SDK里已经把开发包做好,那就直接拿过来用吧。 #define MESSAGE1 STM32F429I-Discoverry //提示信息 #define MESSAGE1_1 GPIO TEST #define MESSAGE2 LED3 LED4 #define MESSAGE2_1 ^-^ #define
[单片机]
STM32开发笔记64: STM32F4 UART4-5移植驱动程序应注意的问题
单片机型号:STM32F407VGT6 使用通用串口驱动程序分别运行UART1和UART4,则UART1正常,UART5不正常,本文解释具体原因。 先看STM32F407VGT6的串口配置情况,如下图所示,串口1、2、3、6为USART(同异步串口),串口4、5为UART(异步串口)。 在启动文件startup_stm32f407xx.s定义的中断矢量入口地址不同,可参看下面程序。 DCD USART1_IRQHandler ; USART1 DCD USART2_IRQHandler ; USA
[单片机]
STM32开发笔记64: STM32F4 UART4-5移植<font color='red'>驱动</font>程序应注意的问题
avr单片机驱动12864液晶程序
/*LCD12864显示子程序*、 #include util/delay.h #define uchar unsigned char #define uint unsigned int #define SETLCD12864RS PORTA|=(1 PA4) #define SETLCD12864RW PORTA|=(1 PA5) #define SETLCD12864EN PORTA|=(1 PA6) #define CLLCD12864RS PORTA&=~(1 PA4) #define CLLCD12864RW PORTA&=~(1 PA5) #define CLTLCD12864EN PORTA&=~(1 PA6) #d
[单片机]
高性能LED驱动电源设计
随着大功率LED光源的大量使用,对LED驱动器的技术要求是与日俱增。高压大功率的LED驱动能够直接接至电网(85V-265V)。能够提供100W的功率。这些驱动通常提供大电流高电压输出并且都有较高的效率。同时提供各种保护以提高驱动的可靠性。 基于AX6066+ A433 LED驱动电路设计 AX6066是一个输出功率在12瓦到65瓦之间,具有原边反馈的 转换器 。AX6066适用于AC/DC电源的应用,可以满足无负载情况下交流线需要低功耗并且具有高的平均工作效率的应用要求。该芯片可以控制转换器工作在不连续的状态模式。不连续工作模式提供一个独特的安全电流限制功能,对交流线上的信号抖动也是不敏感的。峰值电流调制模式不需要进行
[电源管理]
高性能LED<font color='red'>驱动</font>电源设计
通过分布式架构驱动下一代电动汽车系统
电动汽车(EV)和混合动力电动汽车(HEV)正在不断演进,其中的电子设备同样也在发生变化。在这些车辆的整体构造和功能方面,越来越多的电子设备发挥着重要作用。但是,司机并没有改变。他们仍然希望自己的电动汽车和混合动力电动汽车能够顺利地行驶更远,变得更经济实惠,充电速度更快,并确保他们的安全。那么设计人员如何才能以更低的成本为他们提供更多服务? 随着对安全性、功率密度和电磁干扰(EMI)的要求越来越严格,涌现了不同的电源架构来应对这些挑战,包括为每个关键负载配备独立偏置电源的分布式电源架构。 电动汽车中的传统电源架构 汽车设计工程师可以根据电动汽车的电源要求为某些电源架构设计方案。图1所示的传统方法是集中式电源架构,它使用
[汽车电子]
通过分布式架构<font color='red'>驱动</font>下一代电动汽车系统
通过两个PIC引脚驱动六只LED灯
本设计实例展示了仅使用两条MCU的I/O口线驱动六只LED灯的新方法,这种方法尤其适用于任何引脚有限的芯片。这种方法使用了两条I/O口线以及一对 互补双极型 晶体管 。通过多路复用的方法可点亮一只以上的LED灯。 之前的一个设计实例(参考文献1)展示了如何使用两条I/O口线驱动四只LED灯。其他几个设计实例(参考文献2~5)则使用了附加逻辑,导致成本和尺寸有所增加。 图1:测试选择PIC10F200,固件以两个独立、简单的汇编程序源代码的方式提供。 注意:V DD 必须在2V和3V之间。例如,如果LED2点亮(表1),那么在V DD 过高的情况下,LED4和LED6也将被点亮。可以选择使用任何通用低功率晶体管,但
[电源管理]
通过两个PIC引脚<font color='red'>驱动</font>六只LED灯
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved