Arduino 控制步进电机的转速随时间按正弦规律变化
下面这段Arduino代码可以用的前提条件是,你用的步进电机的驱动器只需要你给定速度(脉冲时间间隔)和方向即可(推荐用这种驱动器),不需要你具体地指定A+,A-,B+,B-四根线分别是高电平还是低电平(这种驱动器真TM难用)。
//转角θ=-ANcos(wt),转速V=ANwsin(wt)
float w=3;
int N=100; //N是半个周期的脉冲数,正比于正弦函数的振幅
//如果乘积Nw太大,步进电机就会丢步
float dt[400]={0}; //脉冲的时间间隔
int k;
const byte pinSPEED=5;
const byte pinDIREC=6;
void setup() {
pinMode(pinSPEED,OUTPUT); // 5号引脚发送PULSE(控制速度)
pinMode(pinDIREC,OUTPUT); // 6号引脚指定SIGN (控制方向)
int dtMAX=30;
float t=0;
for(k=1;k<=N;k++)
{dt[k]=(1.0F/sin(k*PI/(N+1))> dtMAX ? dtMAX : 1.0F/sin(k*PI/(N+1)));
//如果两个脉冲的时间间隔超过预设的dtMAX,就认为它是dtMAX
//dtMAX的值可以根据需要自行修改
t=t+dt[k];}
//for循环结束后,t代表数组dt的前N项的和
for(k=1;k<=N;k++)
{dt[k]=PI*dt[k]/(w*t);}
}
void loop() {
digitalWrite(pinDIREC,HIGH); //一个方向运动
for(k=1;k<=N;k++)
{digitalWrite(pinSPEED,HIGH);
digitalWrite(pinSPEED,LOW);
delayMicroseconds(1E6*dt[k]);}
digitalWrite(pinDIREC,LOW); //反方向运动
for(k=1;k<=N;k++)
{digitalWrite(pinSPEED,HIGH);
digitalWrite(pinSPEED,LOW);
delayMicroseconds(1E6*dt[k]);}
}
Arduino 控制步进电机的转速随时间按正弦规律变化相关推荐
- 淘晶驰+arduino控制步进电机
淘晶驰屏幕+arduino控制步进电机 ps:写的不好请指正. 1.准备材料 淘晶驰屏幕(带有触屏功能) arduino UNO板子 面包板 电源以及相关的配件 步进电机+配套启动器 电源设备交流转直 ...
- 基于Arduino控制步进电机 编码器普菲特TB6600控制
1.因为步进电机用的是下面 这种,它的电流是1.5A,因此我们把编码器上的 开关用1.7A的通道. 就是上面 这个通道,可以看出来我们要把s4,s5打开s6关闭. 就是上面 这种. 然后接线,先接电机 ...
- STM32+TB6600控制步进电机调节转速
1.用到的元器件 STM32F103C8T6 42步进电机 TB6600电机驱动器 2.步进电机相关知识 通用42步进电机: 步距角 1.8° 步距角精度 ±5% 相数 2相 励磁方式 混合式 转子齿 ...
- arduino 控制步进电机
Arduino 可以通过控制步进电机的电流来控制步进电机的运动.通常,我们会使用 Arduino 的数字输出引脚来控制步进电机的电流.我们可以通过编写代码来实现步进电机的驱动,控制电机的转动方向和转动 ...
- Arduino控制步进电机和舵机机器臂
修改内容: 1, 去掉Servo函数,因为它跟步进电机的控制冲突,改用自己的代码控制舵机.代码还要再优化一下. 下一步要做的: 1,学习步进电机的知识. 2,步进电机的问题,在中速运行结束的时候会突 ...
- arduino控制步进电机
一.实物连接 二.代码实现 const int IN1=11; const int IN2=10; const int IN3=9; const int IN4=8; //正转顺序 const cha ...
- 使用Arduino控制TB6600步进电机驱动器教程(更新于 2022.03.19)
Arduino步进电机4种演示 了解如何使用 ULN2003.L298N 和 A4988 等驱动程序通过 Arduino 控制双极和单极步进电机. 概述 简述:步进电机工作原理和特点:示意图显示和文字 ...
- Python通过RS232通讯控制步进电机
@DIY李小龙图标的串口调试助手! Python有强大的serial库,可以直接使用,已通过串口指令测试控制步进电机,转速,转向,相对位移,更改波特率等操作. 安装的时候是pyserial, pych ...
- Arduino单片机控制步进电机,关于步进电机的细分
关于步进电机的细分 查询的资料说:增加细分数并不能增加力矩.但是,细分后会运行更平稳,减少低频振动和噪声.驱动器输出的工作电流越大,力矩越大.转速越快,工作电流会减小越快,力矩也会减小越快.建议步进电 ...
最新文章
- 黑客之王!韩国神童登顶黑客界的“极限挑战”
- ecshop订单-》待付款,待发货,待收货,收货确认
- [Jarvis OJ - PWN]——[XMAN]level0
- SAP Cloud for Customer Individual Customer的UI建模
- Python库大全涵盖了Python应用的方方面面建议收藏留用!
- Android 自动动画布局更新 使用,在RecyclerView上使用布局动画(Layout animation)
- git did not exit cleanly (exit code 128)
- linux 权限管理命令chown、chgrp、umask、linux新建文件或目录的默认权限755
- Qt将QString转换成ASCII码
- leecode - 入门 -- 双指针总结
- html css js 注释符号,js 注释怎么写 javascript注释格式|js注释
- javaweb基于SSM开发在线问卷调查系统(前台+后台) 课程设计 毕业设计源码
- 从文案到配音,只需要一部手机!5分钟掌握影视解说制作流程
- 微信自动回复的智能聊天机器人怎么做?
- Hive 插入数据报错FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask.
- 最长公共子序列-动态规划-python
- 九章算法面试题13 随机数生成器
- KZ笔记6:弹跳原理
- 比特大陆斥资7亿买Dash,究竟看中了啥?
- java中 enum什么意思_Java中枚举Enum的使用详解
热门文章
- matlab中linprog函数不能用,matlab中用linprog函数提示Optimization terminated怎么解?
- 值得珍藏一辈子的80句话(经典语句)
- scatter函数参数详解
- Java值传递以及引用的传递、数组的传递
- Macro_Pack中的宏代码混淆方法分析
- php self 和 static,PHP中static和self有哪些区别?
- 易语言API hook CreateWindowExA
- 【ChatGPT】预训练模型微调及其应用(ChatGLM-6B、duckduckgo_search、GPT在科研的应用等)
- 捞点大厂产品经理(合作企业招聘),没年龄限制~~~
- MATLAB图库中的小女孩是谁,蚁人2中的小女孩是谁 在漫画中小女孩的身份又是什么...