首页 > 其他分享 >使用PYNQ生成PWM波控制舵机/步进电机/机械臂

使用PYNQ生成PWM波控制舵机/步进电机/机械臂

时间:2024-10-28 15:52:35浏览次数:7  
标签:val temp 舵机 PYNQ address period offset bit PWM

使用PYNQ生成PWM波控制舵机/步进电机/机械臂

在开始这个工程之前,你需要PYNQ-Z2的板卡文件,约束文件,原理图作为参考,你可以在我上传的资源里下载

当然,这个工程也适用于PYNQ-Z1,只需要改一下板卡文件和约束文件。

我使用的舵机如下:
在这里插入图片描述

1. PWM 信号

脉宽调制(PWM)是一种调制技术,它生成可变宽度的脉冲来表示模拟输入信号的幅度。

我们关注两个参数:

信号频率(或周期)信号占空比

  • 周期是信号从低到高所需的时间

  • 占空比是高电平时间占信号周期的比例。

在这里插入图片描述

2. 用于 PWM 的 IP 核:Axi Timer

Xilinx 提供的唯一能够生成 PWM 信号的 IP 核是 Axi Timer。Axi Timer 由 S_AXI 接口控制的,它输出两种类型的输出:

  • 一个定时器输出,用于生成一个简单的时钟定时器

  • 一个 PWM,用于生成一个 PWM 信号

因此,根据这一点,我们将创建一个设计,该设计生成一个与 PYNQ Z2 的特定引脚相连的 PWM 信号。

在这里插入图片描述

3. PWM 的 Vivado 设计

Vivado 流程是通用的:

  • 首先,新建一个vivado工程,步骤如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 创建一个Block Design,步骤如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • AXI Timer的添加也类似,想要驱动几个舵机,就添加几个AXI Timer,由于我控制的是四自由度的机械臂,所以这里用 4 个 AXI Timer,然后让它们自动连线:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 将 4 个 PWM 端口引出来,并且修改端口名字:
    在这里插入图片描述
    在这里插入图片描述

  • 可以点击这里验证自己的设计是否正确:
    在这里插入图片描述

  • 在我们的设计中,我们定义了以下约束文件(对于4自由度的机械臂,我们需要4个PWM信号控制4个舵机,所以我们连接了 PMODB下面的 4 个引脚):
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 约束文件内容如下:

    set_property -dict {PACKAGE_PIN W14 IOSTANDARD LVCMOS33} [get_ports {motor0}]
    set_property -dict {PACKAGE_PIN Y14 IOSTANDARD LVCMOS33} [get_ports {motor1}]
    set_property -dict {PACKAGE_PIN T11 IOSTANDARD LVCMOS33} [get_ports {motor2}]
    set_property -dict {PACKAGE_PIN T10 IOSTANDARD LVCMOS33} [get_ports {motor3}]
    
  • 现在讲解怎么确定管脚的绑定,根据PYNQ-Z2原理图,我们可以看到,PMODB下面四个管脚对应的序号为JB1P,JB1N,JB2P,JB2N,在IO口(BANK)寻找对应的序号,我们发现,这四个序号对应的管脚编号分别为W14,Y14,T11,T10,将 Block Design 中引出的 PWM 端口绑定到这四个管脚上,这样我们约束文件也就确定好了。
    在这里插入图片描述
    在这里插入图片描述

  • Create HDL Wrapper(将设计的顶层模块包装成一个HDL文件)
    在这里插入图片描述

  • 最后,生成 bit 流,当看到右上角write_bitstream Complete说明比特流生成成功。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 比特流生成成功后,你将会在pwm_stepper_motor\pwm_stepper_motor.runs\impl_1看到生成的design_1_wrapper.bit文件,在pwm_stepper_motor\pwm_stepper_motor.srcs\sources_1\bd\design_1\hw_handoff文件夹中看到生成的design_1.hwh,这两个是pynq开发的必要文件,将它们改名为pwm_stepper_motor.bitpwm_stepper_motor.hwh注意!两个文件名要相同)。
  • 打开 Jupyter Notebook ,创建一个pwm_stepper_motor.ipynb文件,将它和pwm_stepper_motor.bitpwm_stepper_motor.hwh这两个文件放在同一个文件夹下。

4.生成 PWM 的 Pynq 代码

现在,我们有了比特流。我们如何使用它呢?

你必须阅读 Axi Timer 的文档

标签:val,temp,舵机,PYNQ,address,period,offset,bit,PWM
From: https://www.cnblogs.com/Astron-fjh/p/18510809

相关文章

  • 【STM32+HAL库】使用通用定时器生成的PWM实现呼吸灯效果
    板子:STM32F103C8仿真软件:Proteus8软件平台:cubemx+keil1新建STM32CubeMX工程1.1配置系统时钟RCC  1.2配置定时器这里用的PB3和PA15一对在TIM2中,时钟源选择内部时钟InternalClock,通道1选择PWM输出PWMGenerationCH1通道2选择PWM输出PWMGenerationCH2 ......
  • 在STM32CubeMX中配置 PWM
    一、基本配置 首先来基本的配置1.将debug 改为  模拟输出2.在RCC中选择内部晶振(有需要也可以选外部晶振)3.开始配置引脚4.配置时钟树(省略)这里我设置72HZ 5.最后的收尾设置(前面一期有讲) 正式开始PWM的配置 1、PWM的设置需要定时器的时钟来控制频率(具......
  • 51单片机应用——直流电机PWM调速
    目标实现功能单片机引脚输出PWM波形控制直流电机以不同转速工作。1.PWM简介PWM技术PWM的中文全称是脉宽调制,常用于电动机控制、开关电源、音频放大器等。利用PWM技术可以达到微处理器(如单片机)的数字输出对模拟电路控制的效果。PWM波形下图的两个PWM波形是由单片机引脚输......
  • PYNQ Z2 读取xadc外部通道电压
    使用XADC或者JTAG只能读取XADC的内部电压,而无法读取外部通道的电压现在使用xsysmon.h库里面的函数进行XADC外部通道的电压为了方便观察,增加了PLGPIOKEYLED进行观察1.配置ZYNQ7000勾选FCLK_RESET0勾选UART0,这是BANK电压勾选PS给PL提供的时钟,设置PS的输入时钟......
  • 基于51单片机的智能台灯光照坐姿检测PWM红外无线手机蓝牙/WiFi/WiFi视频监控APP设计C0
    51单片机+人走灯灭+光敏AD采集+自动+手动+10档调节+坐姿监测+蜂鸣器+OLED屏/C01N51+蓝牙APP控制+人走灯灭+光敏AD采集+自动+手动+10档调节+坐姿监测+蜂鸣器+OLED屏/C01B51+WIFI-APP控制+人走灯灭+光敏AD采集+自动+手动+10档调节+坐姿监测+蜂鸣器+OLED屏/C01W51+视频监控+WIF......
  • PYNQ z2 使用xadcps读取xadc内部电压温度
    使用xadcps只能和JTAG一样读取温度值和电压值,属于内部通道,读取不了外部通道的数据添加zynq700核后进行配置1.在PS-PLConfiguration中,取消勾选general里面的FCLK_RSTEN_N以及M_AXI_GP0_Interface2.在PeripheralIOPins中勾选1415对应的UART0,同时对板卡电压进行配置,BA......
  • PWM的概念与原理详细介绍
    1.PWM简介脉冲宽度调制(PWM),是英文“PulseWidthModulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM是通过编程控制输出方波的频率和占空比(高低电平的比例)。应用:测量,通信,功率控制与变换等各种领域(呼吸灯、电机)。2.PWM......
  • 关于PWM波
    以下是关于HAL库版本#include"./SYSTEM/sys/sys.h"#include"./SYSTEM/usart/usart.h"#include"./SYSTEM/delay/delay.h"#include"./BSP/LED/led.h"#include"./BSP/LCD/lcd.h"#include"./USMART/usmart.h"#i......
  • 嵌入式——PWM
    本文主要介绍了什么是PWM,PWM的基本结构,PWM波的生成过程,如何用代码生成PWM波以及通过示波器观察生成的PWM波形。前期准备:32芯片、示波器。一、PWM的概念1.引言关于PWM,常听到的有“用示波器抓PWM波啊”“PWM的占空比”……这些都是啥,我很好奇,所以我去学习了PWM波,知道了什么......
  • 【STM32开发之寄存器版】(七)-PWM脉冲宽度调制
    一、前言PWM简介PWM(脉宽调制)是一种通过调节信号的脉冲宽度来控制功率输出的技术。其基本原理是保持固定频率的信号,将其高电平和低电平的持续时间调整,达到控制平均功率的目的。应用方面,PWM广泛用于电机控制、LED调光、音频放大、以及电源管理等领域,因为它能有效提高能效并减......