亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

rDUINOScope

组件和用品

Arduino Due
来自 http://www.arduino.cc
× 1
3.2" TFT 400*240 SD Touch Module with Shield for Arduino到期
我使用了 Elechouse 的那个
× 1
RTC DS3231
来自易趣的实时时钟
× 1
GPS uBlox Neo 6M
来自 Ebay 的 GPS 模块
× 1
适用于 Arduino 的 PS2 游戏杆
再次来自 Ebay
× 1
DHT22 温度传感器
温湿度传感器
× 1
HC-05 蓝牙模块
来自 Ebay 的蓝牙模块 HC-05
× 1
DRV8825
评估、演示套件、电路板和模块/评估套件、电路板和模块
× 2
SY42STH47-1684B 电机 NEMA 17
电机驱动器 - SY42STH47-1684B 电机 NEMA 17(44 N.cm 扭矩)
× 2
PCB
原型电子板 (PCB)
× 1
皮带和滑轮
x2 滑轮 40 齿、x2 滑轮 10 齿和 x2 皮带适合您的望远镜安装
× 2
电阻 1k ohm
× 10
电容 100 µF
× 1
电子元件
电线 + 开关 (x3) + 连接器(2x5pin 用于 RA 和 DEC,12 VDC 和 USB 用于编程)
× 1

关于这个项目

说明

世界上第一个独立的基于 Arduino 的望远镜控制 Goto。

所有可用的开源望远镜控件要么使用消耗大量电力的 Raspberry Pi,要么使用 Arduino 作为计算机、智能手机或平板电脑的扩展。 rDUINOScope 是第一款基于 Arduino 的独立设备,可让业余天文学家欣赏夜空。

最初的想法是创建一种廉价且易于构建的商用 GOTO 产品替代品,例如 SkyWatcher、Orion、Vixen 和其他公司制造的产品。因此,硬件架构建立在 Arduino DUE 板和市场上可用的廉价传感器上。关于如何构建的说明 和用户指南 是在项目网站上创建的。系统的核心是一块 Arduino DUE 板,加载了不断开发以增加功能的软件。

带有 Stellarium 的 rDUINOScope:

详情

rDUINOScope 是一个开源的、基于 Arduino Due 的望远镜控制系统 (GOTO)。作为独立系统设计的 rDUINOScope 不需要 PC、平板电脑或手机,也不需要互联网连接即可操作和提供令人惊叹的景色!

基本上它有一个数据库,其中包含最好的 250 个恒星对象(梅西耶和隐藏的宝藏目录)和 200 颗恒星 , 计算它们在天空中的位置并指向望远镜。实施的对准程序允许在旋转到选定对象时获得“始终在目镜中”的体验,并且一旦对象进入目镜,系统就会一直跟踪它。

但是,如果您想利用您的电子设备,#rDUINOScope 利用蓝牙通信 (无线设置)连接所有电子设备并接受基于 MEADE LX200 通信协议的命令。

该系统适用于所有类型的步进电机,可以安装在 DIY 支架或 SkyWatcher、MEADE、Orion、Vixen 等市售产品上。

功能:

rDUINO SCOPE 里面有什么?

rDUINOScope Github

构建说明

STEP 1 准备

在我们开始之前,重要的是您要了解软件的工作原理,以便能够为您进行更改和自定义。毕竟这是该项目最重要的优势之一!

要理解这部分,您需要从项目文件中下载代码以及“库”文件……或者直接从以下位置下载整个包: http://rduinoscope.co.nf/downloads.php 。所有引用的行号均按照 V2.1 的代码。博雅娜情商

您应该知道 Arduino 代码的工作原理。通常 Arduino 程序有 2 个部分 - SETUP();和 LOOP(); SETUP() 在程序开始时执行,基本上是利用系统; LOOP() 是一个恒定循环函数,每秒触发多次。因此,为了确保我们有屏幕、触摸输入等,并且屏幕不会因为 LOOP() 而闪烁,我们需要发明一种机制让 Arduino 知道用户希望它做什么。因此,在 LOOP() 部分,您将看到一小部分代码只说“考虑触摸……或考虑时间……”等。其余活动发生在这些函数中,这允许我们更改程序流,使屏幕不会每秒刷新多次。

计算 :我使用了一些在互联网上找到的关于如何计算恒星物体位置的信息。我从以下链接收集的大部分信息:http://www.stargazing.net/kepler/altaz.html - 描述了计算时角 (HA)、已知位置、当前时间和恒星物体 RA 所需的公式和方法和 12 月。

一旦我创建了代码来计算 HA /row 678:void calculateLST_HA() / ,我用这个页面来检查它是否工作正常: http://www.jgiesen.de/astro/astroJS/siderealClock/ ,并在稍后阶段,当我添加了带有梅西耶对象的数据库时,我使用了 Stellarium (http://www.jgiesen.de/astro/astroJS/siderealClock/ www.stellarium.org/) 申请相同的支票。

我发现的主要问题不是公式本身,而是 Arduino 处理变量类型的方式,尤其是计算的精度。

现在,一旦我们计算了给定物体的 HA 和 DEC,我们希望将安装点设置为望远镜,为此,我们需要以某种方式知道电机需要转动多少。为了在这方面取得成功,我需要知道什么是蜗轮齿轮比——即蜗杆应该转多少圈才能使齿轮旋转 360°。我有 Vixen Super Polaris,在互联网上快速搜索发现它的 RA 和 DEC 轴使用 144 齿齿轮。我创建了一个简单的 Excel 文件 (*.XLS - http://rduinoscope.co.nf/downloads/Gears_Stepper_Calculation.xlsx) 来计算我计算 HA 和 DEC 后电机应该转动多少,以及“点火的频率” " 马达以补偿地球自转。

Gears_Stepper_Calculation.xlsx

我在 XLS 中使用的相同数学模型也在代码中实现,因此您需要做的只是替换代码开头(第 34 到 37 行)的安装值。

// 这里是安装、齿轮和驱动信息。// ...用于计算时角与微步的比率//根据您的设置更新此部分// ------ ---------------------------------------// 注意:RA 和 DEC 使用相同的档位比率(在我的情况下为 144 齿)!//---------------------------------------- -------int WORM =144;int REDUCTOR =4; // 1:4 齿轮减速int DRIVE_STP =200; // 步进驱动器每转 200 步int MICROSteps =16; // 我将使用 1/16 微步模式来驱动恒星 - 也决定了最低速度。 

现在,一旦我们计算出比率,代码就会知道电机转动多少以将望远镜指向相应的坐标,以及时钟速度是多少,以便安装可以跟踪物体。处理上述事项的函数从第 906 行和第 917 行开始:

void Sidereal_rate(){}void cosiderSlewTo(){} 

注意事项 :您知道,这不是面向消费者的产品。它允许您根据自己的需要对其进行自定义,因此非常灵活,但灵活性带来了一些缺点。我已经包含了这个“注意事项”部分,以确保它们不会从您的待办事项列表中删除。

  • 安装电机 是一项简单的任务,但会影响计算的工作方式。在我的场景中,Vixen Super Polaris 将原始齿轮放在蜗杆轴的右侧。然而,我发现这些轴很短,以便用皮带轮替换齿轮,从而将皮带轮移动到轴的另一侧(左)。这导致电机实际上需要向后转动以增加望远镜位置,因此我不得不修改我创建的原始代码。您绝对应该修改电机转向其他方式的方向,否则您最终会计算错误的步数,从而导致错误的位置。让我告诉你我的意思:见第 1028 行,我命令电机到 STP_BACK,但在第 1031 行我增加了计数器 +=... (所有引用的行号都根据 V2.1 的代码。Boiana EQ ).
if (SLEW_RA_microsteps> RA_microSteps){ digitalWrite(RA_DIR,STP_BACK);数字写入(RA_STP,高);数字写入(RA_STP,低); RA_microSteps +=RA_mode_steps;}else{ digitalWrite(RA_DIR,STP_FWD);数字写入(RA_STP,高);数字写入(RA_STP,低); RA_microSteps -=RA_mode_steps;}  

行动: 修改以下代码部分:void think_Manual_Moveint xP, int yP ), void cosiderSlewTo()void Sidereal_rate().

  • 北方 VS。 南部 半球:代码还根据您所在的半球反转向前移动。这是在代码的一部分中完成的,我负责处理触摸输入。您可能需要修改代码部分。
  • DEC 和 RA 轴上的齿轮 :我的代码假设 DEC 和 RA 轴都使用 144 齿齿轮。 Vixen Super Polaris 就是这种情况。如果您有不同的设置,您可能需要修改代码的某些部分。如果您在识别代码的这些部分时遇到问题,请给我留言,我会尽力帮助您!

计划您的活动: 现在我们需要计划我们的活动以实际构建 rDUINO Scope GoTo 系统。粗略估计,考虑到您拥有所需的一切(硬件、工具和材料),您应该能够在 2-3 天内完成系统。考虑到我只能在晚上(不是每晚)工作,而且我需要做很多研究,我花了大约 4-5 个月的时间来完成它。把这一切放在一起让我觉得:

  • 1 天时间来构建 Shield 板并激活系统
  • 1 天时间把所有东西都装在一个盒子里
  • 1 天时间将电机和滑轮安装到支架上

STEP 2 材料

现在,我们知道该程序的基本工作原理,您需要计划采购并获得所需的材料。

物料清单 :我用的大部分材料都是从网上中国供应商那里买的。但是我决定在当地购买它们中的很少,主要是因为他们被认为很好并且我想避免延误:GPS,蓝牙和操纵杆。我花了大约 190 美元 获得所有这些,因此与从制造商那里购买此类系统的成本相比,它的成本确实很低。您可以在项目网站上找到材料清单及其价格和购买地点:http://rduinoscope.co.nf/rDUINO_step2.html,但该清单也可在该网站的“组件”部分找到.

如果你能找到更便宜的或更快地交付它们,我强烈建议你这样做。

此外,根据您的设计,您可能需要 40 针。带有 TFT 连接器的电缆、一些用于固定操纵杆的塑料螺栓、USB 电缆以确保 Arduino Due 在封装在盒子、风扇等中时仍然是可编程的。

如果你家里没有这些(我没有),你也应该购买一些焊接材料、焊料、钳子、数字万用表等。

您需要的软件 :构建 rDUINOScope 的一个重要部分是下载并安装 Arduino IDE 和所有相关软件(驱动程序、板定义和库)。按照以下列表在您的计算机上安装所需:

  • 转到 Arduino 网站并下载 IDE:https://www.arduino.cc/en/Main/Software。安装软件 - 安装软件后,它还会安装所需的驱动程序,以便您的计算机在连接​​时识别 Arduino 板。
  • 运行 Arduino IDE 并导航至:工具 -> 董事会 -> 董事会经理 , 下载并安装 Arduino Due 开发板定义“Arduino SAM Boards (32-bit ARM Cortex-M3)”;
  • 下载我在程序中使用的库包,并将它们复制粘贴到 Arduino IDE 安装的“libraries”文件夹中。 (注意:“libraries”是您计算机上的一个文件夹,但它也是项目网站上提供的 COMPLETE PACK 中的一个文件夹: http://rduinoscope.co.nf/downloads.php ,所以你需要做的是下载包,将扩展名重命名为.ZIP,打开它并将“_libraries”文件夹的内容从ZIP复制到你计算机上的“libraries”文件夹中。)
  • 重启IDE并打开主程序文件——“_02_Boiana_EQ.ino”。您会注意到另外 4 个文件将在单独的选项卡中打开。这些是负责软件不同部分的支持文件。

在将 Arduino 连接到您的计算机后,您现在应该能够编译代码并将其加载到 Arduino Due 板上。

注意: 如果您不了解 Arduino IDE 的工作原理以及对 Arduino 进行编程需要做什么,请参阅网站和教程:https://www.arduino.cc/en/Tutorial/HomePage

第 3 步组装

更详细的说明请访问项目网站:http://rduinoscope.co.nf/rDUINO_step3.html

现在是创建 Shield 板的时候了。 Shield 板是带有引脚排列的板,您可以将其堆叠在 ArduinoDUE 板的顶部。一些组件需要在该板上,而另一些则更好地放置在外壳上。我的分裂是这样的:

  • 屏蔽板固定:两个 DRV8825 驱动器、RTC3231 时钟、蓝牙模块 HC-05、压电扬声器、12V 连接器和其余组件的引脚;
  • 盒子上的组件是:GPS 模块 NEO 6M - RX 以便天线可以始终指向天空、DHT22 温度传感器通过一个孔贴在盒子外面、PS2 操纵杆、TFT 屏幕和所有开关(打开/OFF 开关和日/夜模式开关)。此外,我还为电机驱动器连接器、12V 电源连接器和一个连接到 ArduinoDUE Native 端口的 USB 电缆端口钻孔,以便在不打开盒子的情况下进行软件更新。

如何将组件连接到 ARDUINO DUE 板:

组件 .... 硬件引脚 .... Arduino 引脚

全球定位系统

  • GPS NEO 6M .... RX .... 16
  • GPS NEO 6M .... TX .... 17

实时时钟

  • RTC DS3231 .... SDA .... A4
  • RTC DS3231 .... SCL .... A5

蓝牙

  • BT HC-05 .... TXD .... 14
  • BT HC-05 .... RXD .... 15

DHT

  • DHT22 .... 输出 .... 3

扬声器

  • 压电扬声器 .... 2

PS2

  • PS2 操纵杆 .... VRx .... A1
  • PS2 操纵杆 .... VRy .... A0

偏角 DRV8825

  • DEC DRV8825 .... 步骤 .... 6
  • DEC DRV8825 .... DIR .... 7
  • DEC DRV8825 .... M0 .... 10
  • DEC DRV8825 .... M1 .... 9
  • DEC DRV8825 .... M2 .... 8
  • DEC DRV8825 .... 重置 DEC DRV8825 .... 睡眠

Right Ascention DRV8825

  • RA DRV8825 .... 步骤 .... 4
  • RA DRV8825 .... DIR .... 5
  • 3V
  • RA DRV8825 .... M0 .... 11
  • RA DRV8825 .... M1 .... 13
  • RA DRV8825 .... M2 .... 12
  • RA DRV8825 .... 重置 RA DRV8825 .... 睡眠

TFT 屏幕

  • 与 TFT 屏蔽一起使用 .... 引脚 (22-53) + SPI
  • 白天/黑夜.... 模式切换.... A3

好的...现在我们准备组装屏蔽板。 获取原型 PCB 并评估如何切割它,以便它可以容纳所有组件以留出一些布线空间,并以可以堆叠在 Arduino 顶部的方式焊接引脚。请注意,您需要焊接 Arduino 使用的所有引脚,并将它们连接到屏蔽板上的组件或此屏蔽板上的连接器,以便也可以连接放在盒子本身上的组件。

我在下面附上了一些过程的照片:

完成这些后,我连接了电路板并测试了屏蔽!它不工作! :( 我检查了接线,结果发现我在 2 个连接之间创建了一个桥,我必须修复它。请注意,从这一刻起,我开始检查每个焊接是否有问题,因为我真的很幸运没有烧毁我的 Arduino 或任何其他接线错误的东西。 注意:确保检查所有连接! 请务必遵循以下 DRV8825 和电机驱动器的接线图,因为这很重要。

确保使用合适的电源适配器(12V,1.6A)并在通电前连接电机驱动器! 注意:DRV8825 处于负载状态时切勿连接电机驱动器,因为它可能会烧毁驱动器!

现在所有组件都焊接到位,我建议您还连接电机驱动器,将软件加载到 Arduino 板并测试整个设置。此时它应该可以正常工作。

您现在应该能够使用该软件并了解用户界面。为了帮助界面,我在项目网站上创建了一个用户指南页面:http://rduinoscope.co.nf/guide.html

您的设置应如下所示:

STEP 4 装箱

屏蔽板准备好后,拿起盒子,开始布置所有剩余的组件,并计划需要钻孔的位置以及形状和尺寸。切孔的最佳方法是使用小折刀(至少对我而言)。不管是圆孔还是方孔都无所谓。你可以用一把锋利的小刀轻松地雕刻它。

唯一的例外是屏幕,您确实需要一个长而均匀的方孔。我寻求帮助,我父亲在他的切割机上做到了。

一旦您对布局感到满意并认为它可行,就开始挖洞。这是一个漫长的过程,会造成一些混乱,但不会超过 2-3 小时。有时我在做圆形孔时会使用钻头,例如:12V电源连接器,RA和DEC电机连接器。

准备好热胶枪并开始将组件热粘合到盒子上,如下所示:

现在除了盒子正面的组件外,所有东西都已连接并装箱。我决定把 TFT 屏幕、PS2 操纵杆和日/夜模式开关放在那里。当我到达 TFT 屏幕时,我创建了一个带有公头和母头连接器的简单带状电缆连接,并将其挂在屏幕上。然而这并没有奏效!原因是引脚被镜像了,因此 TFT 屏幕无法再工作。因此,我决定进行一些复杂的 2D 到 3D 转换,并计算出带状电缆的连接器以解决问题

长话短说: 这不是火箭科学,但在我找到解决方案之前给了我一些困难时期。一个丑陋的解决方案,但它有效并且一年后仍然有效。你可以在下面看到我的意思。

基本上你在这里看到的是:

  • 带状电缆
  • 40 针母连接器
  • 用于在 PCB 上焊接的针脚以形成阵列(2 x 20 针脚)

它就像一个魅力,让我完成了这个盒子!

STEP 5 德国赤道山

现在,尽管我想与您分享如何将电机驱动器连接到您的安装座,但我不能。事实是,任何制造商都会创建自己的设计,因此,没有适合所有人的解决方案。

我使用 80 年代的 Vixen Super Polaris,下面的方法适用于它。我需要提醒您,您在第 1 步中做出的决定 您需要更改代码中的值的地方现在将影响我们的工作。下面你可以看到我的皮带轮和皮带的设置。

我为我的设置购买了 2 套。我只是不确定它是如何工作的,因此购买了一套缩小 1:4 和一套缩小 1:3。皮带的尺寸也应该不同,因为减少会影响两个皮带轮之间的距离。我承认,通过良好的规划和设计,您可以预先决定如何进行并节省一些钱,但我很着急。我需要让它发挥作用!

将皮带、皮带轮和支架放在我面前后,我决定对我来说最好的方法是使用 1:4 减速,因为所有东西似乎都完美地安装在支架上,我开始研究电机外壳。半天后,我终于想出了这个:

我测试了整个设置,不得不对软件进行一些更改(将第 35 行的变量值更新为 4),以便它代表我的最终设计决策。再次测试,一切都很好。

我不得不等待一个好的星夜才能正确测试它,但直到我等待,我才意识到有些不对劲!

我有最好的望远镜控制 GOTO 系统,比我用我的爱好预算可以买到的要好得多,但它看起来不太对。它需要一些最后的润色,后来让我为我的 rDUINOScope 感到自豪!

最后,我的 rDUINOScope Vixen SP Ferrari 看起来应该是这样的!

文件

_READ_ME.txt:最终版本 v.2.1 Boiana EQ 的描述以及一些常见问题解答

_READ_ME.txt

_02_Boiana_EQ.ino:Arduino 主文件

_02_Boiana_EQ.ino

graphics_screens.ino:图形文件 - 链接到主文件

图形屏幕.ino

touch_inputs.ino:触摸输入文件 - 链接到主文件

touch_inputs.ino

BT.ino:BLUETOOTH COMMUNNICATION - 链接到主文件

BT.ino

regular_updates.ino:时间更新 - 链接到主文件

定期更新.ino

代码

  • 代码片段 #1
  • 代码片段 #3
代码片段 #1纯文本
// 这里是安装、齿轮和驱动器信息。// ...用于计算时角与微步的比率//根据您的设置更新此部分// --------- ------------------------------------// 注意:RA 和 DEC 使用相同的齿轮比(144牙齿在我的情况下)!//------------------------------------------- ----int WORM =144;int REDUCTOR =4; // 1:4 齿轮减速int DRIVE_STP =200; // 步进驱动器每转 200 步int MICROSteps =16; // 我将使用 1/16 微步模式来驱动恒星 - 也决定了最低速度。
代码片段 #3C/C++
if (SLEW_RA_microsteps> RA_microSteps){ digitalWrite(RA_DIR,STP_BACK);数字写入(RA_STP,高);数字写入(RA_STP,低); RA_microSteps +=RA_mode_steps;}else{ digitalWrite(RA_DIR,STP_FWD);数字写入(RA_STP,高);数字写入(RA_STP,低); RA_microSteps -=RA_mode_steps;} 
Github
https://github.com/dEskoG/rDUINOScopehttps://github.com/dEskoG/rDUINOScope

示意图

如何连接步进电机和 DRV8825 并将它们连接到 Arduino DUE 如何将所有传感器连接到Arduino DUE

制造工艺

  1. 用 Arduino 捕捉水滴
  2. Arduino Spybot
  3. FlickMote
  4. 自制电视 B-Gone
  5. 主时钟
  6. JX 波形发生器
  7. 找到我
  8. Arduino Power
  9. DIY 虚拟现实滑板
  10. 如何将 Arduino Mega 与 NEO-6M GPS 模块连接
  11. Tech-TicTacToe
  12. Arduino Quadruped