
本帖最后由 丿灬幸灬 于 2018-11-5 11:27 编辑 功能:提供电源,PWM电平转换,和Wii Nunchuck连接器。 i! k6 N8 p7 a 用于与EEZYbotARM MK2一起工作。 9 s" ?) u" t) g K D$ A9 V 这个STM32扩展板有一个开关调节器可控制3到6个舵机。它还将一个3.3 V PWM信号从单片机转换为5 V电平,并具有电源启动信号。2 M' r" m8 A8 V# f2 S& Y 一个独特的功能是它的Wii Nunchuck连接器。通过I2C让它成为控制机械臂(如EEZYbotARM MK2)的理想设备,。我使用Nunchuck,通过固件在线Mbed编译器来直观的控制EEZYbotARM MK2。 4 ^4 E% p) I/ g; j9 u$ `8 Z 更人性化的固件 修订后的pcb已经发货,但预计将于周二到达,所以不幸的是他们无法赶上Hackaday奖机器人技术竞赛的截止日期。同时,我一直在调整固件。固件在Mbed上,所以您也可以为其他支持的微控制器编译它。我一直在使用STM32L073和STM32L476 MCUs,所以它们至少在正确的引脚上具有所需的PWM功能。* K+ L+ j/ d. p6 @ EEZYBot手臂MK2使用三个伺服器控制手臂和第四伺服器的末端执行器。Wii Nunchuck控制器有一个操纵杆和两个按钮。这实际上允许控制三个“轴”。其中两个来自操纵杆(上/下和左/右),第三个来自两个按钮。最初,我的固件使用这三个直接控制三个主要的伺服,例如,移动操纵杆上下移动一个伺服。这很容易实现,但它不是很直观的使用,因为手臂的末端不只是水平或垂直移动,而是沿着一个更复杂的轨迹。 ( c' }% W" I; ]0 ]3 f8 q9 V 我想最好是能向上/向下,手臂的末端能垂直移动。这是一个有点复杂的实现,因为它涉及到移动多个伺服器和做一些数学计算,以找出他们需要如何移动。数学只是高中的三角学,如下面的草图所示。从本质上讲,我需要计算角度α(α的总和₁和α₂)和γ,可以用来计算主臂的角度(l₁)和小胳膊贴上(l₂)。9 z+ s# G0 S& f* o/ r6 X' N$ u, U) i " s6 `. ?+ H8 ?+ _ ![]() 这个数学计算是在pos_to_angle函数中实现的:! ` I' G9 y- g' N. p ; v5 `: E, E* B
我做了一个加快的机械臂运行视频演示 固件首先允许你校准,这涉及到定位手臂,使主臂是垂直的,另一个是水平的。按下开关2执行校准,节省了每个伺服电机的偏移量。注意,固件的编写是为了与EEZYBot ARM MK2一起工作。使用其他机器手臂,你需要调整常量(如l₁)和可能是数学,如果手臂有不同的运动的联系。/ X$ v U0 H7 S4 h' ~* f5 |) s # M0 C# i) ?; f2 z 实际上操作手臂是非常直观的。操纵杆上的上/下水平移动末端执行器。背面的两个按钮垂直移动,操纵杆上的左/右旋转手臂围绕底座旋转。要打开/关闭末端执行器,同时按下两个按钮会激活另一个“模式”,其中操纵杆上的上/下现在打开/关闭末端执行器。6 S$ ^* R6 h) d+ z& g, M, \ 7 b" K$ ^) F# m9 ]" K 我对这个项目的进展非常满意。假设正在交付的修订2 pcb修复了电源启用信号的问题,这个项目将被完成! ; q( r% \8 Y2 B2 ^. L Gerbers2完成. ?( A8 E, g0 Z8 M: u Gerbers2完成了。第一次修订版的改动如下: ) l% P. K) d$ A: j c5 h8 D4 L 将POW_EN信号改为STM32单片机上的5V容忍度引脚,这样保护二极管就不会夹紧电压,防止PFET关闭(在前面的日志中讨论过)。; Z8 ~/ C& B/ r9 f, T 使接头稍微宽一点。第一个版本太窄了,我不得不把它归档。4 U# C% U4 _5 A: O: o( W. G- E 将一些PWM信号移动到不同的引脚。STM32 MCUs不是完全与pin兼容的,所以我选择了在更多MCUs上有PWM可用的引脚。 为提供标头添加了一些丝网标签(主要用于调试)。6 \0 K1 }# G" g' K: G. p: ~ PCB在GitHub上。$ d0 u* }2 _/ I( U1 c9 r% ` % V0 k5 W; G' j# f- @1 f' _ # r! ^8 R- ^$ l6 H 尝试第一个PCB# h) ^! J& [; l% [. Q$ I 这周我收到了PCB,我焊接了一个。% u; B) m3 K+ F X 到目前为止,它基本是起作用的。我到目前为止遇到的主要问题是电源启动信号,它被拉到5v,它的门在应该很高的时候太低了几百毫伏,所以它控制的PFET不会关闭。 ![]() 2 A, D; J! f8 ]9 M+ D 当POW_EN被拉低时,PFET就会打开马达。 9 A( h4 o& h" v: ^, _1 X 我在STM32L476上使用pin PA4在开漏模式来控制它。我认为这应该是工作的,但不幸的是,这个大头针不是一个5v容忍大头针。查看数据表,我认为是pin上的保护二极管导致了这个问题。这意味着电源启动信号不幸地不能工作在这个修改的PCB。它应该连接到一个5v的容忍度引脚,也称为数据表中的“TT”引脚,例如PA2。6 P; T" M5 u' H" p- R" a# g- z 8 l$ k D f; f: s0 f5 e' N. X @ 从更积极的方面来看,平移电路正在工作。在调试完上面的问题后,我损坏了顶部的铜层,所以我做了一个混乱的焊接修复如下所示重新连接5V引体向上。NFETs将3.3V PWM从微控制器转换为5V用于伺服系统。注意,由于FETs是反向的,PWM信号的占空比也需要反转。我成功地移动了一个伺服电机,并且开始使用在线Mbed编译器组装一些固件。项目在这里。) r8 Q8 Z% n, O: F) ?+ L 0 |7 ?) m( _2 o3 Y# } ![]() " @; Q3 X/ D' k2 K& c 一个丑陋的修复短针R7到Q2到R13。这是在5v网络上。Q2是没用的,因为它永远不会关闭。& w% F7 v* _/ D- T( ` ![]() $ u# l$ h8 A+ B T- ~0 h 3 u; \# P" Z& H, H9 I- i; g$ E7 T 9 w7 _3 H! J: w nfts将3.3 V PWM信号转换为5V。您可以控制多达6个伺服器。$ T3 n" ?, c! k1 o5 K- \ & y @" Z% m. O- Q6 S$ j0 W; L 最后,我还检查了Nunchuck接口。不幸的是,连接器有点太窄了,所以我不得不把它打磨一下。但是在Mbed上使用wiflood chuck库可以很好地实现I2C通信。$ W8 v! m, `& d. l $ G0 D! u! X& ~; M3 g+ r0 ~ 用于控制舵机的Nucleo扩展板 ![]() 我想要控制的EEZYbotARM MK2。 U8 d# B+ \0 J8 \( g% Y 我决定使用我的Prusa i3mk2,并且已经为EEZYbotARM MK2机器人手臂的部件进行了3d打印。它使用了三个更大的MG995或MG946伺服电机,以及一个更小的塑料SG90伺服电机,用于“抓取器”(正式称为“末端执行器”FYI)。我没有给电路布线,也没有买现成的东西,而是决定做一个PCB来驱动伺服电机。这让我有机会添加一些现有解决方案中不可用的东西:Wii Nunchuck连接器。 7 m r0 L5 X1 m1 o, q . {& ], \/ Z4 D: X$ \* J) h* w 伺服电机采用PWM信号控制,厂家指定工作电压为4.8 V - 6.6 V。STM32核板在3.3 V下工作,我读到过3.3 V PWM可能用于驱动伺服电机。但是,为了安全起见,我添加了一些FETs来将3.3V PWM转换为5v。 ![]() 另一台伺服电机的PWM信号(此电压为7.2 V,而非6.6 V)0 I& [' @2 \2 C& X$ t4 u ![]() 6伺服电机连接器/ X) H p3 \6 c& {! t& U " U& @) _1 v& S9 L6 J 5 t1 f7 s. b8 e( t1 o) \ 最后,我添加了一个Wii Nunchuck连接器。这基本上是一个PCB卡边缘连接器我从这里复制的。我使用一个简单的I2C接口,打算用它来控制机械手臂 ![]() 7 f W5 v' H/ h3 q8 q+ w1 u Wii Nunchuck连接器(J2)。 这个PCB是一个STM32扩展板,所以它使用了与主板一起工作的Morpho板。1 N: ^- i+ G" m! ]7 y5 ]5 P 第一个版本的第一个布局已经完成,并且已经被发送去制作。 $ \! }0 _- ]& ]2 V/ ~5 T- L 相关资源见GitHub代码见mbed 原文请见hackaday$ B. |8 M5 m2 K1 v D t$ H8 }: g1 b- t |
啊,谢谢,我是想问一下你是找谁打印的,质量还不错~推荐一下