FPGA:双线轨丝杠式升降台(及A4988与42步进电机原理)(同时包含51及32程序) 您所在的位置:网站首页 丝杆升降机构装配图片 FPGA:双线轨丝杠式升降台(及A4988与42步进电机原理)(同时包含51及32程序)

FPGA:双线轨丝杠式升降台(及A4988与42步进电机原理)(同时包含51及32程序)

2024-07-01 07:38| 来源: 网络整理| 查看: 265

文章目录 日常·唠嗑一、双线轨丝杆式升降二、42步进电机1、常见问题2.型号参数 三、A4988驱动模块四、程序设计1、C语言(51单片机)2、Python(STM32)3、Verilog(FPGA)

日常·唠嗑

3月份在做智能剥壳机的时候,就遇到了丝杠问题。想着通过挤压的方式把坚果的外壳压碎,但那时候对丝杠原理还不是很理解,最后不了了之。现在省电,需要给车子做一个升降台,再一次回到了曾经没有攻克的难题……

一、双线轨丝杆式升降

双线轨丝杆式升降一般由步进电机,T8丝杆,联轴器,上下轴承片,导轨及轴承座组成。这种组合,一般承重能力强,精度高。多用于3D打印机或者高精度机床等等。(汽修厂升降的升降机与这个结构也有异曲同工之妙)双线轨丝杆式升降台如下图所示: 在这里插入图片描述

某宝的上的配套升降台(有效行程1米)价格一般在400左右,较为昂贵,但是性能稳定,无需经过多次调试就可以直接用。我做的项目,升降距离不需要太长,且要求整个机构体积较小,所以我利用零件自己组装。 T8丝杆: 在这里插入图片描述 42步进电机(6线): 在这里插入图片描述 A4988驱动模块: 在这里插入图片描述 联轴器: 在这里插入图片描述 成果图: 有点丑,不过还好经过多次测试能用。 在这里插入图片描述

二、42步进电机 1、常见问题

初次接触步进电机肯定会有很多疑问,比如4线步进电机与6线步进电机的差别,该如何接线,步进电机的电压该怎么解决,12V可以吗(第一次接触,我朋友跟我说,电机功率很大,90W,并且电压要30V,比赛要带上电源器,我当场人就傻),像我第一次接触就一直在纠结用什么驱动模块(当时我了解的就只有TB6600,可是这东西太大了啊),后来了解到了拇指大的A4988一样可以实现驱动。

2.型号参数

(42BYGH) 两相四线步进电机,步距角为 1.8 °, 200 个脉冲转动一圈。(这个参数很重要!!!下面写程序需要用到)下图为电机与模块接线(这个图是与Arduino接线,但是与别的板卡接线是一样的): 在这里插入图片描述

三、A4988驱动模块

A4988 是一款带转换器和过流保护的 DMOS 微步驱动器,该产品可在全、半、1/4、1/8 及 1/16 步进模式时操作双极步进电动机,输出驱动性能可达 35 V 及 ±2 ,A4988 包括一个固定关断时间电流稳压器,该稳压器可在慢或混合衰减模式下工作。转换器是 A4988 易于实施的关键。只要在“步进”输入中输入一个脉冲,即可驱动电动机产生微步。无须进行相位顺序表、高频率控制行或复杂的界面编程。A4988 界面非常适合复杂的微处理器不可用或过载的应用。

麻雀虽小五脏俱全,虽然模块只有拇指大,我对引脚做了笔记,下面看看每个引脚的名称及作用。

在这里插入图片描述

1、STEP 、 DIR 分别连接单片机的两个控制端口; EN 可以使用单片机端口控制,也可以直接连接 GND 使能; 2、 MS1 、 MS2 、MS3 按照上一节“步进模式设置”,接高低电平,设置步进模式,来选择不同的步距角。 设置脉冲的频率,来控制旋转速度。步进电机走一步是1.8度,一圈就是200步。例如使用1/16步进,则需要走3200步才等于一圈。 3、 2B 、2A 、 1A 、 1B 分别接步进电机红、蓝、黑、绿线。 VMOT 、 GND 接 12V 4、左右直流电源(电压大小更具步进电机不同,选择合适电压)。VDD 、 GND 接 3.3V 或 5V 。 5、 sleep,reset:通常短接; 长篇大论讲了一堆,主要是想让大家看懂这个模块的具体功能。但是实际运用中,如果,不是特别精细的控制,可以直接选择全步进的工作方式(MS1,MS2,MS3,三个引脚全部悬空,即为全步进模式,那样的话就只要控制STEP,DIR两个引脚即可)

四、程序设计 1、C语言(51单片机) #include"reg52.h" #include sbit dir=P1^0; sbit step=P1^1; #define uint unsigned int void Delay_xms(uint x); void Delay1000us() //@11.0592MHz { unsigned char i, j; _nop_(); i = 2; j = 199; do { while (--j); } while (--i); } void Delay_xms(uint x) { uint i,j; for(i=0;i //修改y值可以改变电机转的圈数 for( x = 0; x for( x = 0; x


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有