波形

在电子电路中,我们经常需要产生一些不同类型、不同形状或不同频率的波形做为信号波形,如正弦波、方波、矩形波、三角波、锯齿波等等。这些波形通常会被用于时钟信号、触发脉冲、定时信号等等。

所谓波形,就是电压或电流随时间变化的直观表示。通常是以时间做为基准的X轴,电压或电流随时间t变化的大小数值则在Y轴表示,这样在一段时间所形成的图形,就是波形。波形的类型很多,按其在坐标轴上的表现,实际上大体可以分为以下两组。

1.单向波形:这些波形只会出现在零轴之上或零轴之下,不跨越零轴点。如方波时钟脉冲信号 ,通常使用时电压只出现于0V之上,而不会使用负电压。

2.双向波形:这些波形会交替穿过零轴线,出现于Y轴的正负方向上。这样的波形也可以称为交替波形。如市电的正弦波,就是这样的交替波形,电压变化交替出现于Y轴正负方向 。

波形的三个特征:

周期:波形从开始到结束、重复自身所用的时间,单位一般是用秒。这个值也是正弦波的周期时间T或方波的脉冲宽度。

频率:波形在一秒内重复自身的次数,(  ƒ = 1/T  ),单位是赫兹(Hz)。

幅度:以电压伏特或电流安培为单位测量的信号波形的幅度或强度。

周期和频率互为倒数,所以波形的频率越高,周期时间越短,反过来看就是周期越长,频率越低。

ƒ以赫兹为单位,T以秒为单位。1Hz为1秒一个周期,1Hz是个很小的值,为了表示波形的周期数量级,通常加入下面的前缀符来表示。

Definition含义(前缀) Written as 写法(读法) Time Period 周期时间值
Thousand 千 (Kilo) kHz (千赫) 1ms(1毫秒)
Million 百万(Mega) MHz(兆赫) 1us(1微秒)
Billion 十亿(Giga) GHz(吉赫兹) 1ns(1纳秒)
Trillion 万亿(Tera) THz(太赫兹) 1ps(1皮秒)

正弦波 Sine Wave

正弦波的波形如上图,在不同的幅度和不同周期下波形会不一样。它的一个周期包括了正负半周,周期时间单位(T)可以是秒(s)、毫秒(ms)、微秒(us)和纳秒(ns)等。对于正弦波还可以用度数或弧度来表示周期。一个完整的周期等于  360 o ( T =  360 o ) 或以弧度表示为2π ( T = 2π ),那么可以说  2π 弧度 =  360 o 。

方波 Square Wave

方波是一种对称、每半个周期时间是相同的波形,与具有平滑上升和下降波形的正弦波不一样,方波在正负峰值处有圆角,具有非常陡峭的上下升沿,顶部和底部平坦。当用于数字电路时,正脉冲宽度时间称为周期的“占空比”,方波波形的正(ON)时间等于负(OFF)时间是一致的,所以占空比是50%。方波常用于电路中的时钟和定时控制信号 。根据下面的公式,我们可以尝试计算一下方波的频率,当一个方波的脉冲宽度为10ms,因为占空比为50%,那么周期就为10ms+10ms=20ms,频率=1/T=1s/20ms=50Hz。

矩形波 Rectangular Wave
和上面的方形所不一样的是它不是对称的,属于“非对称”波形,周期内的2个脉冲宽度不一样。方波应该也算是一种特殊的矩形波。矩形波有时也可以用正脉冲宽度和占空比来表示。如脉宽为10ms,占空比为25%,也就是说这个波形周期T为10ms(25%)+30ms(75%),那么频率就是1/T=1s/40ms=25Hz。矩形波可以用于各种控制电路上,最典型的可以是通过调节占空比来调节电压或频率等的PWM脉宽调制电路。

脉冲 Pulse
脉冲也称脉波或脉冲波(pulse wave),波形和方波和矩形波形式上本无太大的区别,只是脉冲可以单个或以脉冲串形式被使用。脉冲波的形状是周期的“Mark-to-Space”比率决定,脉冲的Mark部分非常短,且具有快速上升和下降的形状。每个脉冲都可以是单独的有效的波形和信号,使用它的目的就是产生一个非常短的信号来控制某些事件,也可以生成脉冲串列达到某种功能。如启动单稳态电路、触发器、计数器、定时器或功率器件等等。

无论方波、矩形波或脉冲,理想的波形在高和低两个值之间是瞬时变化的。而产生波形的电路因为有物理局限性,这是不可能实现的。信号从低值上升到高值然后再下降所花费的时间分别称为脉冲上升时间(rise time)和脉冲衰减时间(fall time)。

三角波 Triangular Wave
三角波顾名思义形似三角形,正向上升与负向衰减的时间相同,相当于提供了50%的占空比,电压幅度与波形的频率决定波形的平均电压。较慢的上升下降斜率相比于较快的,得到的平均电压更低。

锯齿波 Sawtooth Wave
通过改变改变上升或下降的斜率,可以产生非对称的三角波,形似于锯片的齿,称之为锯齿波。下图是二种类型的锯齿波,前面一种是缓慢上升快速下降的正斜坡锯齿波,后面一种是快速上升缓慢下降的负斜坡锯齿波。三角波、锯齿波可被用于扫描电路、D类放大电路等场合。

*文中图片资料来源于互联网

20210909

可视化天气软件推荐

最近恶劣天气频发,我们应尽可能利用天气软件来规划出行计划,尽量避免不必要的风险。现在的气象天气软件都很先进,大数据加可视化,可以很直观的了解到当地乃至世界各地的天气状况,获取台风、温度、雷电、降雪、降雨等信息及预警。

手机内置的天气软件,相对会简单很多,也是日常使用的好帮手。下面介绍这几个可视化软件(网站)功能都比较全。具体使用方法不做介绍,比较容易查询使用。

微信上的小程序“台风路径”,直接可以在微信上随时随地查看台风路径,比较方便。

https://earth.nullschool.net/ 只有网页版本,直接浏览器地址访问,不需要注册,界面简单,以3D地球的方式查看风向、气压、洋流等等信息。

http://typhoon.zjwater.gov.cn/ 这是浙江水利厅的一个网站,主要也是查询台风路径为主。

Windy.com是功能强大的风力, 海浪, 和飓风等预测软件,除了网站还有APP,有Android 和 iOS版本,网页版本无需注册直接使用大部分基础功能。

 

Raspberry Pi Pico C/C++语言开发环境搭建 Raspberry Pi Pico C/C++ SDK

Raspberry Pi Pico是树莓派基金会在2021年1月新发布的微处理器新品。使用基金会自己研发的RP2040芯片,国内现在整个开发板模块售价为30-40元左右。相较于树莓派的其它‘微电脑’型号,这一款产品因为是单片机MCU型的,其最高运行频率可达到133MHz,对IO及模拟信号的操作和处理有更低的时间延迟,可以弥补Raspberry Pi物理互动方面的不足,更类似于‘Arduino’开发板。

官网上的性能介绍:

  • 双核Arm Cortex M0 +处理器,运行频率高达133 MHz
  • 264KB的SRAM和2MB的板载闪存
  • 模块允许直接焊接到载板
  • 具有设备和主机支持的USB 1.1
  • 低功耗睡眠和休眠模式
  • 通过USB使用大容量存储进行拖放编程
  • 26个多功能GPIO引脚
  • 2个SPI,2个I2C,2个UART,3个12位ADC,16个可控PWM通道
  • 片上准确的时钟和计时器
  • 温度感应器
  • 片上加速浮点库
  • 8个可编程I / O(PIO)状态机,用于自定义外围设备支持
  • 可通过 Micro USB 供电,也支持 1.8-5.5 V 直流电源供电。
  • 配备 1 个 LED 灯和一个开关按钮。按钮用于BootSel,也就是向 Pico 烧录程序时控制 Pico 进入 USB 大容量存储模式,也可用于通用的输入按键。使用Pico开发,开发用的设备可以使用树莓派微电脑Linux也可以PC机上的Windows。对于大多人来说使用PC机来开发相对会方便些,当然如果你是树莓派的重度爱好者,使用树莓派微电脑也是得心应手。编程语言可以使用Python,也可以使用C/C++,它们都需要安装相应的SDK和相关的支持软件。安装步骤烦多,不如其它知名MCU的开发环境来的简单。下面就来分享一下Windows操作系统下的C/C++开发环境的搭建。首先是需要安装五个支持工具软件。比较多,建议先全部下载相应的版本。注意的是官方提示这些只在WIN10环境下使用,在WIN7等不保证能正常使用。五个支持软件,为方便下载这里同时给出下载地址。
    ARM GCC compiler
    https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
    CMake
    https://cmake.org/download/
    这个需要下载3.19.5版本,新的3.20似乎没法正常工作可以在Github下找到
    https://github.com/Kitware/CMake/releases
    Build Tools for Visual Studio 2019
    https://visualstudio.microsoft.com/zh-hans/downloads/
    可以选择社区版

    Python 3.9
    https://www.python.org/downloads/windows/

    Git
    https://git-scm.com/download/win

    ARM GCC compiler的安装
    这个编译器安装没什么好说的,直接下一步、下一步就完事了。在安装完成时,最后的选项选择时,全选。

    CMake

    在安装过程中,当安装程序提示时,将CMake添加到所有用户的系统路径中。

    Build Tools for Visual Studio 2019

    这里我是安装VS2019社区版,安装选项为‘使用C++的桌面开发’,‘Windows10 SDK’必须要打勾。

    Python 3.9

    在安装过程中,选择“为所有用户”安装了该软件,并选择将Python 3.9添加到系统PATH中。 在Python末尾提示时,应该选择禁用MAX_PATH长度限制。

    Git

    注意下面3个选项要选上。


    获取SDK和例程
    以上软件安装完成后,重启一下PC。
    重启后在硬盘上新建一个文件夹,我这里是在C盘中新建一个名为‘SDK’的目录。

    选定‘SDK’后按鼠标右键,选‘Git Bash Here’。

    进入Git界面后,分别输入如下指令

    git clone -b master https://github.com/raspberrypi/pico-sdk.git
    cd pico-sdk
    git submodule update –init
    cd ..
    git clone -b master https://github.com/raspberrypi/pico-examples.git

    执行时的界面如下。

    上面已经安装完工具链软件以及Pico的C/C++SDK,编译源代码时如果要使用命令行方式会比较麻烦,这里不说,下面介绍的是使用微软的Visual Studio Code去编译源代码。如果你没有安装VS Code,还需要到https://code.visualstudio.com/download下载安装。(关于如何在VS Code安装中文汉化包请自行了解)

    安装完成后还需要为其设置之前的工具链软件和SDK路径。

    首先在开始菜单找到Visual Studio 2019的Developer Command Prompt菜单并打开。

    在打开的指令窗口中输入code,则会打开设置了所有正确环境变量的Visual Studio Code,以便正确配置工具链。注意不要直接点桌面的VSCode打开它,这会可能导致配置的失败,除非你足够的熟悉了解它和相关的工具链软件。

    在打开的VS Code中安装,CMake Tools。

    安装CMake Tooks扩展后,点齿轮状图标,打开设置项进行SDK路径设置。

    找到Cmake:Configure Environment项,并增加一个PICO_SDK_PATH项,项目的值就为上面下载SDK时的路径。

    找到Cmake:Generator项,加值’NMake Makefiles’ 。

    至此完成了环境的搭建。

    下面就可以用下载下来的SDK例子进行编译测试。
    在VS Code打开下载的pico-examples目录,打开后CMake自动配置。

    活动工具包需要选择 ‘GCC for arm-none-eabi’。生成后,则进行编译。编译完成的文件会被放在例子目录下的build目录下。注意,如果编译不能进行,则要尝试用Visual Studio 2019的Developer Command Prompt菜单来打开VS Code。


    编译中的界面。

    编译完成后,则可以下载文件到Pico下进行测试。为了直观查看,可以使用blink例子,这个例程就是让板上连接到GPIO25的LED闪烁。首先在pico-examples\build\blink目录下找到编译好的blink.uf2文件。

    然后按着Pico的BootSel按钮,把Pico接入PC的USB端口,这时会在PC上出现一个名为RPI-RP2的存储盘,把blink.uf2拖入该盘中,写入后,Pico自动重启并运行程序,让LED闪烁。