本帖最后由 点点&木木 于 2019-4-15 10:34 编辑 我们之前展示了我们的Mecanum Bot由无线Xbox控制器控制,现在我们添加了RC发射器/接收器。 4 W$ V/ q/ b- p4 J 4 z+ G, n8 N' K; m m# l# z( | 硬件组件 Raspberry Pi 3型号B. × 1 Turnigy TGY-i6S RC发射器 × 1 Turnigy TGY-iA6B 6通道接收器PWM × 1 ARM Cortex-M3 STM32F103C8T6 STM32 Minimun系统开发板 × 1 Mecanum车轮直径152mm 带有8mm电机轴的轮毂 × 4 JMC ihss57-36-20汽车 我们在CNC机床和线圈绕线机上使用相同的电机。高扭矩但不便宜。可以使用更小的电动机。 × 4 EAGLE 200 DC 12V 8AH电池 串联连接,为电机提供24V电压 × 2 LM2596 DC-DC稳压器模块 24v-5V调节器 × 2 0-99V LED数字显示电压表 × 1 10英寸通用LCD,带HDMI接口和电容式多点触控 × 1 铝型材20x40 I型槽5 各种供应商 × 1 铝型材20x60 I型槽5 各种供应商 × 1 5毫米铸造丙烯酸 × 1 脉冲火车帽 × 1 9 A! C3 K0 V3 ^* b! Y- ^7 k1 O" d0 Q: d* g 介绍 在之前的一个项目中,我们展示了如何使用Pulse Train Hat和无线Xbox控制器来控制我们的Mecanum Bot。 可在以下链接中找到信息和项目概述: http://www.hackster.io/cnc-design/pulse-train-hat-for-raspberry-pi-mecanum-bot-example-75fcd6 我们现在已经为Pulse Train Hat 创建了一个Hackster.IO平台,如果你可以通过成为会员来帮助我们,那么它将帮助我们很多,因为我们需要25个成员才能获得它。 http://www.hackster.io/pulse-train-hat 对于这个项目,我们想在Mecanum Bot中添加一些部件,并且还要进一步扩展它的设计和工作方式。 这是Mecanum Bot的图片,附加了附加功能。 % W1 t: ]- _3 W$ q' N 1 ?/ K( U K, B/ \/ r 首先是关于麦克纳姆轮的一些信息。 Mecanum轮是一种可以向任何方向移动的轮子设计。它的瑞典发明家Bengt Ilon在1973年与瑞典公司Mecanum AB担任工程师时提出了这个想法,它有时被称为Ilon轮。 滚子轴和中心轮之间的角度可以有任何值,但在传统瑞典轮的情况下,它是45“。成角度的外围滚轮将ht轮旋转方向上的一部分力转换为垂直于车轮方向的力根据每个单独的车轮方向和速度,所有这些力的最终组合在任何所需方向上产生总力矢量,从而允许平台在所产生的力矢量的方向上自由移动,而不改变车轮本身。 无线通信。 在我们的Mecanum Bot玩了几天之后,如果我们希望我们的Bot能够进一步漫游并且减少我们看到的信号丢失量,我们决定对Wifi的控制进行改造。 因此我们开始研究RC发射器和接收器,并选择了TurnigyTGY-i6S发射器,而不是TGY-iA6B 6通道接收器,让它在6个独立通道上提供PWM输出。 RC接收器的用途是它们不会简单地为每个通道提供开或关信号。它们为每个通道发出PWM信号。这使得通常在RC飞机,船只,汽车等中常见的小型伺服系统可以通过最少的布线轻松控制,因为标准都已到位。 还有PPM接收器将所有六个脉冲放在一个通道上,但我们将专注于专用的六通道接收器,此时每个通道都有一个PWM。 PWM信号通常是以50hz(每秒50个脉冲)的频率运行并且脉冲宽度在1-2ms之间的脉冲序列。 因此,例如操纵杆将具有每个方向的通道。当操纵杆处于中心位置时,它将提供1.5ms的脉冲宽度,当它完全向上推时它将产生2ms的脉冲宽度并且完全向下,脉冲宽度为1ms。在这些点之间,它将给出线性范围。 现在我们可能会让Raspberry Pi监测这些脉冲,并对每个通道进行脉冲宽度计算,但由于它已经做了很多其他工作以及Raspberry Pi上的GPIO引脚,我们对准确性没有信心。因此,考虑到这一点,我们选择了一个便宜的ARM模块,可以轻松计算每个通道的脉冲宽度,还有5伏容限引脚。 我们选择了STM32F103最小开发板,可以在ebay和其他地方使用。 如果需要,我们还可以提供已经使用RC接收器代码编程的其中一个开发板。 与所有ARM STM32系列一样,STM32F103具有许多功能,其中许多功能我们都不会使用。但这是低成本,并完成工作。 我们提供了为该板编译的代码,可以使用JTAG编程器或通过USB>串口适配器轻松编程。 我们倾向于使用ST-Link V2 JTAG编程器,但这是因为我们已经习惯了它。 快速谷歌进行串行编程STM32F103最小开发板提供了一些链接,显然它可以通过其他方式。 编程完成后,代码只监控每个端口,并测量接收器每个通道的脉冲宽度。然后,它通过USB端口发送一个数据包中所有6个通道的脉冲宽度。 USB端口配置为HID设备,就Windows 10 IOT而言是即插即用的,不需要额外的驱动程序。 我们认为每个通道获得的精确读数会很好,而不仅仅是决定它是否为On或Off运动,因为我们可以使用输出来改变电机的速度。 , t7 w3 t. Y, z! I' f E 我们选择使用STM32F103板上的PA1-PA6端口,因为它们彼此相邻布置,这意味着我们可以使用简单的六线连接机直接连接到接收器,以获得脉冲宽度读数。 此外,我们还有6个其他引脚作为简单的开关,我们可以使用这些引脚连接到PTHAT紧急停止输入。 ( @5 Y( Q4 Z( j7 h 这些引脚映射是: Channel1-PB14,Channel2-PB15Channel3-PB5 Channel4-PB6 Channel5-PB7 Channel6-PB8 如果这些通道中的任何一个超过155读数,那么它们将引脚拉高。 对于我们保持活动信号,我们将使用通道6,它由发射器上的开关控制。打开时,它读取200,关闭时读取为100.这意味着我们可以使用此开关触发紧急停止,或者如果它丢失信号。 我们从24V-5V稳压器为接收器提供5伏和0伏电压,并通过USB端口将Raspberry Pi连接到STM32F103板。 . F' N! o1 d9 x0 N! O0 W 这是布线图: ( f+ [; o, ~1 h! g( n 电机控制 我们使用Pulse Train Hat(PTHAT)作为Raspberry Pi进行电机控制。 有关详细信息,请访问专用支持网站http://www.pthat.com PTHAT允许我们将四个电机连接或控制在一起或分开,提供一个漂亮的清洁脉冲序列,并自动处理斜坡上升和下降程序。 : W' t- T# D: J! j0 W. O) X, }& `/ z4 h 我们使用具有很大扭矩的闭环步进电机,并且保持完美同步。 目前,它们通过8mm轮毂直接连接到Mecanum车轮。目前暂停,但我们正在考虑将来改变的事情。 您可以在下面看到接线图。 我们为每个电机驱动器提供24伏电压,并将Step,Direction和Enable线路连接到PTHAT,同时连接5伏电压。 电力和监管机构 我们使用了两个串联的12V电池给我们提供24伏的供电电机。 还有两个稳压器可将24伏电压降至5伏。一个供应Raspberry Pi,另一个供应10英寸触摸屏和RC接收器。 我们还有电压数字显示器,因此我们知道电池何时充电不足。 软件 示例应用程序是在Visual Studio 2015中开发的,可以与RaspberryPi上的Windows 10 IOT一起使用,也可以编译为x86 / x64以便在PC上使用。 它已用C#编写为通用Windows平台(UWP)。 我在桌面上运行它以获得屏幕截图,因此它没有显示Raspberrry Pi串行端口或USBSTM32F103板。 我们可以选择在Raspberry Pi上运行软件,然后使用远程客户端通过WiFi访问它并设置某些参数。但我们决定添加一个带有HDMI接口和电容式多点触控输入的10英寸通用液晶显示屏,这样我们就可以在机器旁边做所有事情了。它还可以显示与控制器同步的动画。 - `, x% p+ B a0 |8 [% A 应用程序通过串行连接连接到PTHAT,并通过STM32F103 ARM板连接到来自RC接收器通道的数据的USB端口。 它读取从USB端口进入的每个通道数据,并将其转换为每个电机的运动,具体取决于RC变送器用户通过操纵杆选择的方向和速度。 这些动作转换为PTHAT即时命令,并通过Raspberry Pi的USART发送出去。PTHAT接收命令然后控制电机。 ; j! U# `( O M1 s9 se0 I6 T$ d2 G! _ 画廊 8 u) C; S b: \: a: L* O # B% h6 _( s0 ~" \* \: X* k7 _( ^ i U$ C ) B" E& M6 Q. {1 i+ D' m 原理图 + x1 l5 y/ ?- l6 m/ Q8 H2 R, }9 G! q0 t |
已收藏 |