广告
返回顶部
首页 > 资讯 > 操作系统 >linux中怎么使用Arduino制作一个绘图仪
  • 477
分享到

linux中怎么使用Arduino制作一个绘图仪

2023-06-16 11:06:38 477人浏览 薄情痞子
摘要

这篇文章主要介绍了linux中怎么使用Arduino制作一个绘图仪,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。由于我是一个很怀旧的人,我真的很喜欢最初的 Arduino U

这篇文章主要介绍了linux中怎么使用Arduino制作一个绘图仪,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

由于我是一个很怀旧的人,我真的很喜欢最初的 Arduino Uno。下面是我用到的其它东西的一个清单(仅供参考,其中一些我也不是很满意):

  • FabScan shield:承载步进电机驱动器。

  • SilentStepSticks:步进电机驱动器,因为 Arduino 自身不能处理步进电机所需的电压和电流。因此我使用了一个 Trinamic TMC2130 芯片,但它是工作在单独模式。这些替换为 Pololu 4988,但是它们运转更安静。

  • SilentStepStick 保护装置:一个防止你的电机驱动器转动过快的二极管(相信我,你肯定会需要它的)。

  • 步进电机:我选择的是使用 12 V 电压的 NEMA 17 电机(如,来自 Watterott 和 sparkFun 的型号)。

  • 直线导杆

  • 木制的基板

  • 木螺丝

  • GT2 皮带

  • GT2 同步滑轮

这是我作为个人项目而设计的。如果你想找到一个现成的工具套件,你可以从 German Make 杂志上找到 MaXYposi。

硬件安装

正如你所看到的,我刚开始做的太大了。这个绘图仪并不合适放在我的桌子上。但是,没有关系,我只是为了学习它(并且,我也将一些东西进行重新制作,下次我将使用一个更小的横梁)。

linux中怎么使用Arduino制作一个绘图仪

带 X 轴和 Y 轴轨道的绘图仪基板

皮带安装在轨道的侧面,并且用它将一些辅助轮和电机挂在一起:

linux中怎么使用Arduino制作一个绘图仪

电机上的皮带路由

我在 Arduino 上堆叠了几个组件。Arduino 在最下面,它之上是 FabScan shield,接着是一个安装在 1 和 2  号电机槽上的 StepStick 保护装置,SilentStepStick 在最上面。注意,SCK 和 SDI 针脚没有连接。

linux中怎么使用Arduino制作一个绘图仪

Arduino 堆叠配置(高清大图)

注意将电机的连接线接到正确的针脚上。如果有疑问,就去查看它的数据表,或者使用欧姆表去找出哪一对线是正确的。

软件配置

基础部分

虽然像 grbl 这样的软件可以解释诸如像装置移动和其它一些动作的 G-codes,并且,我也可以将它刷进 Arduino 中,但是我很好奇,想更好地理解它是如何工作的。(我的 X-Y 绘图仪软件可以在 GitHub 上找到,不过我不提供任何保修。)

使用 StepStick(或者其它兼容的)驱动器去驱动步进电机,基本上只需要发送一个高电平信号或者低电平信号到各自的针脚即可。或者使用 Arduino 的术语:

digitalWrite(stepPin, HIGH);delayMicroseconds(30);digitalWrite(stepPin, LOW);

stepPin 的位置上是步进电机的针脚编号:3 是 1 号电机,而 6 是 2 号电机。

在步进电机能够工作之前,它必须先被启用。

digitalWrite(enPin, LOW);

实际上,StepStick 能够理解针脚的三个状态:

  • Low:电机已启用

  • High:电机已禁用

  • Pin 未连接:电机已启用,但在一段时间后进入节能模式

电机启用后,它的线圈已经有了力量并用来保持位置。这时候几乎不可能用手来转动它的轴。这样可以保证很好的精度,但是也意味着电机和驱动器芯片都“充满着”力量,并且也因此会发热。

***,也是很重要的,我们需要一个决定绘图仪方向的方法:

digitalWrite(dirPin, direction);

下面的表列出了功能和针脚:

< 如显示不全,请左右滑动 >
功能1 号电机2 号电机
启用25
方向47
步进36

在我们使用这些针脚之前,我们需要在代码的 setup() 节中设置它的 OUTPUT 模式。

pinMode(enPin1, OUTPUT);pinMode(stepPin1, OUTPUT);pinMode(dirPin1, OUTPUT);digitalWrite(enPin1, LOW);

了解这些知识后,我们可以很容易地让步进电机四处移动:

    totalRounds = ...    for (int rounds =0 ; rounds < 2*totalRounds; rounds++) {       if (dir==0){ // set direction         digitalWrite(dirPin2, LOW);       } else {         digitalWrite(dirPin2, HIGH);       }       delay(1); // give motors some breathing time       dir = 1-dir; // reverse direction       for (int i=0; i < 6400; i++) {         int t = abs(3200-i) / 200;         digitalWrite(stepPin2, HIGH);         delayMicroseconds(70 + t);         digitalWrite(stepPin2, LOW);         delayMicroseconds(70 + t);       }    }

这将使滑块向左和向右移动。这些代码只操纵一个步进电机,但是,对于一个 X-Y 绘图仪,我们要考虑两个轴。

命令解释器

我开始做一个简单的命令解释器去使用规范的路径,比如:

"X30|Y30|X-30 Y-30|X-20|Y-20|X20|Y20|X-40|Y-25|X40 Y25

用毫米来描述相对移动(1 毫米等于 80 步)。

绘图仪软件实现了一个 持续模式 ,这可以允许一台 PC 给它提供一个很大的路径(很多的路径)去绘制。(在这个视频中展示了如何绘制 Hilbert 曲线)

设计一个好用的握笔器

在上面的***张图中,绘图笔是细绳子绑到 Y 轴上的。这样绘图也不精确,并且也无法在软件中实现提笔和下笔(如示例中的大黑点)。

因此,我设计了一个更好用的、更精确的握笔器,它使用一个伺服器去提笔和下笔。可以在下面的这张图中看到这个新的、改进后的握笔器,上面视频链接中的 Hilbert 曲线就是使用它绘制的。

linux中怎么使用Arduino制作一个绘图仪

图中的特写镜头就是伺服器臂提起笔的图像

笔是用一个小夹具固定住的(图上展示的是一个大小为 8 的夹具,它一般用于将线缆固定在墙上)。伺服器臂能够提起笔;当伺服器臂放下来的时候,笔就会被放下来。

驱动伺服器

驱动伺服器是非常简单的:只需要提供位置,伺服器就可以完成所有的工作。

#include <Servo.h> // Servo pin#define servoData PIN_A1 // Positions#define PEN_UP 10#define PEN_DOWN 50 Servo penServo; void setup() {  // Attach to servo and raise pen  penServo.attach(servoData);  penServo.write(PEN_UP);}

我把伺服器接头连接在 FabScan shield 的 4 号电机上,因此,我将用 1 号模拟针脚。

放下笔也很容易:

  penServo.write(PEN_DOWN);

进一步扩展

我的进一步扩展的其中一项就是添加一些终止检测器,但是,我也可以不用它们,进而使用 TMC2130 的 StallGuard 模式来代替。这些检测器也可以用于去实现一个 home 命令。

以后,我或许还将添加一个真实的 Z 轴,这样它就可以对一个木头进行铣削雕刻,或者钻一个 PCB 板,或者雕刻一块丙烯酸塑料,或者 &hellip; (我还想到了用激光)。

感谢你能够认真阅读完这篇文章,希望小编分享的“linux中怎么使用Arduino制作一个绘图仪”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网操作系统频道,更多相关知识等着你来学习!

--结束END--

本文标题: linux中怎么使用Arduino制作一个绘图仪

本文链接: https://www.lsjlt.com/news/283351.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux中怎么使用Arduino制作一个绘图仪
    这篇文章主要介绍了linux中怎么使用Arduino制作一个绘图仪,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。由于我是一个很怀旧的人,我真的很喜欢最初的 Arduino U...
    99+
    2023-06-16
  • 使用JavaScript怎么绘制一个饼图
    这篇文章将为大家详细讲解有关使用JavaScript怎么绘制一个饼图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现代码JavaScriptvar canvas =&n...
    99+
    2023-06-06
  • 使用canvas怎么绘制一个太极图
    今天就跟大家聊聊有关使用canvas怎么绘制一个太极图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。css样式代码.animation{  width: ...
    99+
    2023-06-09
  • 使用matplotlib怎么绘制一个阶梯图
    这篇文章将为大家详细讲解有关使用matplotlib怎么绘制一个阶梯图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。step函数概述step函数用于绘制阶梯图。根据源码可知,step函数是对...
    99+
    2023-06-06
  • 使用canvas怎么绘制一个心电图
    这期内容当中小编将会给大家带来有关使用canvas怎么绘制一个心电图,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。思路:模拟点(如果你有真实的数据,那就是把数据幻化成canvas对应的坐标点)模拟点时注意...
    99+
    2023-06-09
  • 使用python怎么绘制一个折线图
    这篇文章将为大家详细讲解有关使用python怎么绘制一个折线图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注...
    99+
    2023-06-14
  • 使用python怎么绘制一个火山图
    今天就跟大家聊聊有关使用python怎么绘制一个火山图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整...
    99+
    2023-06-14
  • 使用R语言怎么绘制一个直方图
    使用R语言怎么绘制一个直方图?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。语法使用R语言创建直方图的基本语法是hist(v,main,xlab,xlim,ylim,brea...
    99+
    2023-06-14
  • 使用R语言怎么绘制一个折线图
    这篇文章给大家介绍使用R语言怎么绘制一个折线图,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在R中的通过使用plot()函数来创建线形图,语法如下:plot(v,type,col,xlab,ylab)参数描述如下:v ...
    99+
    2023-06-14
  • 使用R语言怎么绘制一个饼状图
    今天就跟大家聊聊有关使用R语言怎么绘制一个饼状图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的一个自由、免费、...
    99+
    2023-06-14
  • 使用Python怎么绘制一个棒棒糖图表
    本篇文章给大家分享的是有关使用Python怎么绘制一个棒棒糖图表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先读取一下数据。import pandas ...
    99+
    2023-06-15
  • Android开发中怎么使用canvas绘制一个统计图
    Android开发中怎么使用canvas绘制一个统计图?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。效果如下:  特点:使用非常方便,可放在xml布局文...
    99+
    2023-05-31
    android canvas roi
  • 怎么用CSS3绘制一个月食图案
    本篇内容主要讲解“怎么用CSS3绘制一个月食图案”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用CSS3绘制一个月食图案”吧!画个月亮嘛,还是尝试用一个di...
    99+
    2022-10-19
  • 利用Android怎么绘制一个太极图
    这篇文章将为大家详细讲解有关利用Android怎么绘制一个太极图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android是通过graphics类来显示2D图形的。其中graphics中包...
    99+
    2023-05-31
    android roi
  • 使用python怎么绘制一个茎叶图和复合饼图
    这篇文章将为大家详细讲解有关使用python怎么绘制一个茎叶图和复合饼图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。茎叶图from itertools import&n...
    99+
    2023-06-06
  • 使用matplotlib怎么绘制一个正余弦曲线图
    这篇文章主要介绍了使用matplotlib怎么绘制一个正余弦曲线图,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:1:首先我们需要导入基本的库matplotlib numpymatplot...
    99+
    2023-06-06
  • 怎么在HTML5中利用Canvas绘制一个K线图
    本篇文章为大家展示了怎么在HTML5中利用Canvas绘制一个K线图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。SVG 是一种使用 XML 描述 2D 图形的语言。 Canvas 通过 JavaS...
    99+
    2023-06-09
  • 怎么使用ComplexHeatmap绘制单个热图
    这篇文章主要介绍“怎么使用ComplexHeatmap绘制单个热图”,在日常操作中,相信很多人在怎么使用ComplexHeatmap绘制单个热图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Compl...
    99+
    2023-07-02
  • html5中怎么制作一个loading图
    本篇文章给大家分享的是有关html5中怎么制作一个loading图,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。<!DOCTYPE&nb...
    99+
    2022-10-19
  • 使用Css怎么绘制一个扇形
    今天就跟大家聊聊有关使用Css怎么绘制一个扇形,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。span {    @if $...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作