机器人技术与人工智能和机器学习一起处于工业4.0和边缘革命的最前沿。 因此,我认为创建一个基础机械臂项目会很有趣,我们可以返回并添加以下功能: 反向运动学-确定末端执行器的位置。 AI / ML-运行期间的对象分类。 网络控制-在边缘实现远程控制。 本示例将使用在Zynq SoC的控制下使用六个伺服器的机械手。它可以使用简单的软件界面或使用两个Pmod操纵杆进行直接控制来进行控制。 伺服控制 我们要做的第一件事是弄清楚如何控制伺服位置。Servos是最简单的驱动电机之一,也是机器人技术的想法,因为只要我们保持相同的驱动信号,它们就可以保持位置不变。 那么伺服的驱动信号是什么?
我们正在使用的大多数Servos使用60Hz PWM波形。在60Hz波形的16.66 ms周期内,信号将在0.5 ms和2、5 ms之间为高电平。信号的持续时间将在0到180度之间的运动范围内驱动伺服器。 驱动0.5 ms脉冲将驱动0度位置,而2.5 ms将导致180度。因此,通过将信号驱动为高电平1.5 ms可以保持90度。 因此,将脉冲宽度减小13.9 us的增加将使伺服机构移动1度。 虽然我们有三重计时器计数器,它们能够提供必要的PWM信号。在此应用中,我们还需要提供6伏的伺服电源,因此是使用Adafruit PWM Shield的最简单方法。这不仅提供6v功率,而且还对PWM信号执行电平转换。
接下来要解决的是如何驱动信号,PWM屏蔽使用四个8位寄存器来驱动每个PWM信号。 屏蔽PCA9685 上的设备 使用4096位计数器。开启寄存器定义信号变为高电平时的计数,关闭寄存器定义信号变为低电平时的计数。 因此,我们始终可以将打开时间设置为0,然后定义关闭信号的计数,以提供所需信号的宽度。 Vivado版本 为了能够与Pmod游戏杆和PWM屏蔽接口连接,我们需要首先在Vivado中创建一个设计。该设计将包含以下IP块 Zynq PS-这是Zynq处理系统 Pmod游戏杆2-与Pmod的接口 PL中实现的AXI IIC-I2C接口。