0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

步进电机和限位开关的加速度

454398 来源:wv 2019-10-23 10:13 次阅读

步骤1:使用的资源

今天我们将使用以下组件列表进行组装:

•直径8mm,间距2mm的梯形主轴

•直径8mm间距8mm的梯形主轴

•8x2主轴的法兰螺母

•8x8主轴的法兰螺母

•8毫米直径主轴的轴承

•10mm直径圆柱线性导轨

•10mm导轨的圆柱滚子轴承

•10mm圆柱导轨的支架

•NEMA 17电机

•轴联轴器

Arduino Mega

•驱动程序DRV8825

•4x4矩阵键盘

•显示诺基亚5110

•各种各样塑料零件

•螺栓和螺母

•木底座

•外部电源12V

红外传感器

第2步:演示

我们今天的大会非常简单类似于带有主轴和步进电机的Arduino Uno视频

我需要更改什么?这次,我选择了Arduino Mega来使用路线终点开关,您可以在项目的右侧看到该路线终点开关,因为行程终点开关用于最快的主轴中。每个菜单都在ATmega中该程序的源代码中进行了说明。在视频中的演示中,我们使引擎移动了5厘米,以显示加速和减速情况。然后,它返回15厘米并触摸行程开关的终点,从而停止发动机。

步骤3:航向开关的终点

它是做什么用的?限位开关是通过停止发动机运动来限制路线的机械元件。它们用于机器组装中以保护机械性能。在CNC机床中,键还用作参考点,例如,将坐标轴归零。市场上有几种类型的键,其中包括:按钮,红外传感器,电容传感器等。

在我们的组装件中,我们使用红外传感器,如上图所示。

步骤4:示例代码

在arduino上有一个源代码,其中显示了Setup(设置)以及如何在行程开关和加速结束时移动步进电机。这是lib StepMotor,它是我制作的一个库,可以操纵8825、4988和TB6600驱动程序,并允许您播放更大的引擎,例如Nema 23或34。

然后,我们配置驱动器引脚,每毫米及周围的步距以及微速。我还以最大和最小速度配置节气门运动,并激活发动机动力输出端口。最后,限位开关销被激活。

#include

DRV8825 d1;

void setup() {

//Configuracao dos pinos do driver

d1.pinConfig(2,3,4,5,6,7,8,9);

//configuracao de passos por milimetro

d1.stepPerMm(100);

//configuracao de passos por volta

d1.stepPerRound(200);

//configuracao de micropasso

d1.stepConfig(1);

//configuracao do movimento (aceleracao, velocidade maxima, velocidade minima)

// tempos em uSegundos

// Aceleração é o decremento de tempo a cada novo passo

d1.motionConfig(20,1500,5000);

//reseta o driver

d1.reset();

//ativa as portas saídas de potencia do motor

d1.enable(HIGH);

//Pinos das chaves de fim de curso e se ativam em nivel alto ou baixo

// d1.endstopConfig(min,max,HIGH ou LOW);

d1.endstopConfig(10,11,HIGH);

}

下面是发动机代码示例。

void loop() {

//move o motor 100mm em direcao crescente

d1.motorMoveTo(100, HIGH);

//aguarda 1 segundo

delay(1000);

//move o motor 100mm em direcao decrescente

d1.motorMoveTo(100, LOW);

//aguarda 1 segundo

delay(1000);

}

步骤5:课程切换结束

代码:在我们的代码中,我们将采取行动

bool DRV8825::canGo(bool direction)

{

if(LVL) // se: as chaves de fim de curso ativam em nível alto

{

if(direction && !digitalRead(EMAX)) //se: move positivamente E o fim de curso máximo NÃO está ativado

return true;

if(!direction && !digitalRead(EMIN)) //se: NÃO move positivamente E o fim de curso mínimo NÃO está ativado

return true;

}

else //senão: as chaves de fim de curso ativam em nível baixo

{

if(direction && digitalRead(EMAX)) //se: move positivamente E o fim de curso máximo está ativado

return true;

if(!direction && digitalRead(EMIN)) //se: NÃO move positivamente E o fim de curso mínimo está ativado

return true;

}

return false;

}

步骤6:加速

在一定的时间间隔内,通过高低脉冲控制电动机的步进。

为了使发动机不以最大速度直接启动,我们使用加速度。

加速会改变每一步的脉冲时间以改变发动机转速,然后逐渐增加到最大速度以加速,然后逐渐减小直到停止减速。

加速可以通过多种方式实现。

我们创建的代码示例了步进电机中加速度的使用。

步骤7:加速度-代码

简单的加速度代码示例。

在此代码中,脉冲时间在每一步都由用户选择的值减少,直到中途或连续l发动机达到最大速度,即设置的最短脉冲时间。

void DRV8825::motorMoveTo(double distance, bool direction) //(distância, direção, tempo da largura do pulso em microssegundos (metade do tempo em nível alto, metade em nível baixo))

{

digitalWrite(DIR, direction);

long accSpeed = SMIN;

long steps = distance*SPM;

long stepsToStop;

bool flag = true;

for(long i = 0; i 《 steps; i++){

if(i 《 (steps)/2){

if(accSpeed》SMAX){

if(canGo(direction)){

digitalWrite(STP, HIGH);

delayMicroseconds(accSpeed/2);

digitalWrite(STP, LOW);

delayMicroseconds(accSpeed/2);

}

else{

delayMicroseconds(accSpeed);

}

accSpeed = accSpeed - ACC;

}

这时,将存储电动机为达到该路径的最大速度而执行的脉冲量。

else

{

if(flag){

stepsToStop = i;

flag = false;

}

if(canGo(direction)){

digitalWrite(STP, HIGH);

delayMicroseconds(SMAX/2);

digitalWrite(STP, LOW);

delayMicroseconds(SMAX/2);

}

else{

delayMicroseconds(SMAX);

}

}

}

此数量将与达到行程结束之前用于发动机减速的量相同。

要使发动机减速,脉冲时间会增加

else

{

if(i 《 steps-stepsToStop){

if(canGo(direction)){

digitalWrite(STP, HIGH);

delayMicroseconds(SMAX/2);

digitalWrite(STP, LOW);

delayMicroseconds(SMAX/2);

}

else{

delayMicroseconds(SMAX);

}

}

else

{

if(canGo(direction)){

digitalWrite(STP, HIGH);

delayMicroseconds(accSpeed/2);

digitalWrite(STP, LOW);

delayMicroseconds(accSpeed/2);

}

else{

delayMicroseconds(accSpeed);

}

accSpeed = accSpeed + ACC;

}

}

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 步进电机
    +关注

    关注

    149

    文章

    2929

    浏览量

    146063
  • 限位开关
    +关注

    关注

    0

    文章

    40

    浏览量

    4642
收藏 人收藏

    评论

    相关推荐

    加速度传感器的基本力学模型是什么

    加速度传感器的基本力学模型是一个受力物体的运动学和动力学模型的组合。本文将从以下几个方面介绍加速度传感器的基本力学模型。 一、运动学模型 加速度传感器的运动学模型主要描述传感器在空间中的位置、
    的头像 发表于 01-17 11:08 345次阅读

    加速度传感器常用的有哪两种

    加速度传感器常用的有两种,一种是基于压电效应的压电式加速度传感器,另一种是基于微机电系统(MEMS)技术的微型加速度传感器。 压电式加速度传感器是利用压电晶体的压电效应来测量
    的头像 发表于 01-15 15:27 295次阅读

    加速度传感器原理及其应用

    常见的加速度传感器工作原理有三种:压电原理、电容原理和微机电系统(MEMS)原理。 1.压电原理:压电加速度传感器通过压电材料的压电效应来测量加速度。当受到力或加速度时,压电材料会产生
    的头像 发表于 01-05 08:39 391次阅读
    <b class='flag-5'>加速度</b>传感器原理及其应用

    压阻式加速度传感器的主要作用

    压阻式加速度传感器的主要作用  压阻式加速度传感器是一种广泛应用于工业、汽车、医疗和消费电子等领域的传感器。它能够实时测量物体的加速度并将其转化为电信号输出。本文将详细介绍压阻式加速度
    的头像 发表于 01-03 15:59 307次阅读

    ADXL345的x轴测出的加速度是离心加速度吗?

    请问当ADXL345安放在一个旋转物体的圆周上,而且ADXL345的x轴指向旋转物体的圆心,ADXL345的x轴测出的加速度是离心加速度么?
    发表于 01-01 08:16

    两轴加速度计和三轴加速度计的使用区别?

    有个问题请教一下:在静态测量的情况下,两轴的加速度计在测得X、Y轴上的加速度后,是不是就可以根据这两个值和重力加速度g算出Z轴方向的加速度,这样的话XYZ三个方向的角度也可以推导出来。
    发表于 12-29 06:06

    mems加速度计的量程是指什么

    Mems加速度计(Micro Electro Mechanical Systems Accelerometer)是一种微型化的加速度传感器,可以测量物体在三个轴向上的加速度,并且广泛地应用于许多领域
    的头像 发表于 12-15 10:21 632次阅读

    怎么确定一个步进电机控制的初始加速度

    怎么确定一个步进电机控制的初始加速度
    发表于 10-09 07:28

    加速度传感器有哪几种,加速度传感器如何选择参数

    加速度传感器是一种用于测量加速度的传感器,通常使用微机电系统(MEMS)技术直接测量物体的加速度。在很多场景下,选择合适的加速度传感器很重要。本文将介绍
    的头像 发表于 07-25 10:29 4122次阅读

    加速度传感器是什么

    何谓加速度传感器? 加速度是指单位时间内产生的速度,测量加速度的IC就叫加速度传感器。 通过测量加速度
    的头像 发表于 06-30 10:13 1204次阅读
    <b class='flag-5'>加速度</b>传感器是什么

    加速度传感器的应用总结

    加速度传感器的种类很多,对应的应用场景也很多,本文所了解的是加速度传感器的应用。 现在,加速度计广泛应用于游戏控制、手柄震动和晃动、汽车刹车启动检测、地震检测、工程振动测量、地质勘探、振动测试与分析
    的头像 发表于 06-06 18:19 951次阅读
    <b class='flag-5'>加速度</b>传感器的应用总结

    EGAXT3三轴加速度传感器

    EGAXT3 小型三轴加速度传感器将 0.7(标称)的阻尼比率与可提供 10,000 g 冲击防护的内置过载限位器结合起来。是直流响应即插即用加速度EGAXT3-10-L2M传感器的,安装类型有两种,粘合剂和螺丝。
    的头像 发表于 05-12 15:07 242次阅读
    EGAXT3三轴<b class='flag-5'>加速度</b>传感器

    4602-030-240加速度计怎么选择?

    4602-030-240加速度计适合动态和静态测量,4602加速度传感器测量量程从±2g到±500g。优异的温度性能,温度补偿范围从-55℃到+125℃。4602加速度传感器采用气态阻尼MEMS感应元件,内置机械
    的头像 发表于 05-12 15:01 245次阅读
    4602-030-240<b class='flag-5'>加速度</b>计怎么选择?

    3803A-0050-200三轴加速度传感器怎么固定安装

    3803A-0050-200三轴加速度传感器是一款三轴压阻式MEMS加速度传感器。3803A三轴加速度传感器采用坚固的全焊接密封封装。3803A三轴加速度传感器结合机械过载
    的头像 发表于 05-12 14:58 432次阅读
    3803A-0050-200三轴<b class='flag-5'>加速度</b>传感器怎么固定安装

    4810A-0050加速度传感器使用培训

    4810A加速度传感器可在 ±2 至 ±200 g 的量程内提供放大信号调理输出。 4810A 采用带机械过载限位器的气态阻尼硅 MEMS 传感元件,从而提供 5,000 g 冲击防护以及静态响应
    的头像 发表于 05-12 14:54 277次阅读
    4810A-0050<b class='flag-5'>加速度</b>传感器使用培训