原理图
完整原理图
RIOTOUS开发板原理图
这个项目有三个主要组件:运行的微控制器RIOTOUS框架,固件本身和R2R DAC。一些PIC器件内置了数模转换器,但PIC16F516没有内置数字/模拟转换器。因此,要使用PIC16F1516产生模拟信号,我们有两种选择:使用PWM和RC电路或使用R2R梯形电路。
虽然PWM电路允许通过以下各种电压输出:调整PWM的占比,R2R由于多种原因而成为个人喜爱。首先,R2R非常简单,只由电阻组成。其次,它们会立即响应,因此可以在比PWM对应的频率更高的频率下使用。
R2R梯形图在输入电阻上使用比例加权,使得最高位产生的电压输出是其输出电压的一半。最大值,而最低位产生的输出电压等于最小可能步长。
在我们的例子中,我们使用的是8位输出,它给出了255步,因为我们的电路是在3.3V系统中,第7位将产生1.5V的电压,而第0位将产生3.3/256 = 0.0129V的电压。当所有位都打开时,所有比例输出电压加起来给出3.3V。
虽然这种方法可用于产生模拟信号,但存在严重的缺点;输出是量化的。了解这意味着什么的最好方法是查看探测输出:
由于最小步长值的大小有限,步骤会急剧增加并降低电压水平。这导致不纯的波形可能与其纯模拟对应物的行为不完全相同。
R2R阶梯产生阶梯式模拟信号,最后一步是缓冲它以改善输出阻抗。该项目使用的是LM358,但需要注意LM358,因为它不能在正轨附近工作。
如果LM358由3.3V电源供电,它可输出的最大电压为VCC - 1.5V,在我们的情况下,相当于大约1.8V。因此,一半的输出波形会被削波而无法工作,因此为了解决这个问题,LM358使用外部电源(5V效果很好)来增加其最大工作电压。
物联网频率发生器如何工作:固件
频率固件分为两个主要区域:RIOTOUS框架和频率波形生成。虽然RIOTOUS本身具有复杂的方面,但使用RIOTOUS很容易,并且处理来自控制器程序(即RIOTOUS服务器)的命令的代码也很简单。
当电路首次启动时,它配置控制器使用内部振荡器,正确配置IO端口,并确保关键变量处于已知值。然后微控制器运行RIOTOUS配置,正确配置UART模块,RIOTOUS引擎和其他所需变量。完成后,设备将尝试连接到指定的Wi-Fi网络和服务器。一旦完成这两个动作,微控制器就会运行处理波形生成的主代码批量。
波形生成代码本身相当简单,主要使用查找表来生成转换为模拟信号的数字输出。
正弦波,三角波和锯齿波形使用32字节数组,这些数组在特定时间包含各自波形的绝对值。
可以增加点数,这样可以平滑波形(使它们更纯净) ,但这是以最高频率为代价的。因此,作为最终设计师,您必须决定什么是更重要的,纯度或速度。就个人而言,速度更重要,因此我选择使用32个步骤。提高速度的一种方法可能是使用RAM阵列而不是ROM阵列(因为PIC上的表查找可能很慢)。
主程序/服务器
控制频率发生器的应用程序是用VB.net编写的,是也是频率发生器连接的RIOTOUS服务器。但是,我们可以很容易地使用MMF2制作程序并将服务器分开,但最近,VB.net被忽略了,所以我决定使用VB.net而不是MMF2。
我们的VB.net应用程序只有几个对象,包括用于选择波形输出的按钮,我们可以输入时间基准的单个文本框(0到255之间),服务器日志窗口(用于查看活动),以及启动服务器按钮。
启动服务器时,后台的RIOTOUS框架等待广告端口333上的传入连接,当设备连接时,服务器响应新端口连接,然后关闭连接。
您可以使用以下五个命令之一控制频率发生器:
“SQUARE” - 使用方波
“三角” - 使用三角波形
“SAW” - 使用锯齿波形
“SINE” - 使用正弦波形
通过仅发送一个字节设置时基(以字节为单位)
构建频率发生器
该项目可以使用大多数电路构造技术构建,包括面包板,条形板,矩阵板和PCB。对于那些刚接触电子产品的人,不建议使用焊接技术,因为您很容易犯错误。在这个项目中,为了方便起见,我使用了一个RIOTOUS DevBoard,并且可以很容易地将外部R2R梯形图直接连接到插槽中。
R2R转换板
由于KiCad出现故障,我不得不以奇怪的方式安装LM358!
这个项目可以轻松扩展,以制作更具可定制性的函数发生器,其功能包括可自定义的波形,可调增益,甚至触发。由于该项目通过互联网连接到VB.net程序,因此可以在两者之间传输大量信息,从而有效地为笔记本电脑和台式机等强大的计算设备提供IO功能。
-
频率发生器
+关注
关注
0文章
18浏览量
9799
发布评论请先 登录
相关推荐
评论