无线幅频仪制作(WiFi通信)-含STM32源程序,JAVA上位机与设计报告

资料下载地址:无线幅频仪制作(WiFi通信)-含STM32源程序,JAVA上位机与设计报告

目录

项目功能

1、 系统方案1.1 比较与选择

1.1.1 控制器的论证与选择

1.1.2 信号源的论证与选择

1.1.3 放大器模块的论证与选择

1.1.4 键盘与显示模块的论证与选择

1.1.5 网络通信模块的论证与选择

1.2 方案描述

2、理论分析与计算2.1 信号发生器的电路设计

2.2 放大器设计

2.3 频率特性测试仪器

3、电路与程序设计

3.1 电路设计

3.2 程序设计

4、实物图片 

项目功能

        本装置测量放大器的幅频特性,并将数据绘成直观的图线。系统以32位高性能单片机STM32F103为主控制器,由数字式频率合成器AD9854产生所需信号,通过键盘与OLED显示屏直观控制扫频、点频等模式与频率、幅值等参数,产生一路稳定幅值的正弦扫频信号。信号通过自制的0~40dB可调增益放大器,经均值响应功率检波器AD8361检波后得到直流信号,即放大器输出信号的幅值信息;再经单片机内部模/数转换器采样,处理计算后,将幅值、频率信息发送至Wi-Fi模块ESP-32,使得局域网内的设备可以获取幅频特性数据。作品另配有计算机应用程序和安卓APP,可以方便地显示幅频特性曲线,从而实现放大器的远程幅频特性测试。

1、 系统方案1.1 比较与选择

本系统主要由控制器、信号源模块、放大器模块、键盘显示模块、网络模块、电源模块组成,下面分别论证这几个模块的选择。

1.1.1 控制器的论证与选择

方案一:采用51单片机控制。51系列单片机是廉价、易得的微控制器,但由于其采用集中指令结构,运行速度不够可观。在执行大型程序时,51单片机容易显现出功耗大、不稳定的缺点。

方案二:采用FPGA控制。FPGA即现场可编程门阵列,是作为专用集成电路领域中的一种半定制电路而出现的,解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA一般来说功耗较低。但在开发过程中往往需要快速增减一些简单功能,如串口通信等,而此类功能有可能占用过多的逻辑门资源,因此采用FPGA开发整个系统则较为不便。

方案三:采用STM32单片机控制。STM32系列单片机具有开发方便、I/O口数量多等特点。ARM内核使得其运行速度明显优于51系列单片机。STM32F103属于增强型系列,是同类产品中性能最高的产品。

综合以上两种方案与实际情况,选择方案三。

1.1.2 信号源的论证与选择

方案一:采用分立元件和中小规模集成电路构成波形发生器采用RC串并联振荡器生成正弦信号。该方案的优点:技术成熟,可供参考的资料较多。缺点:外围元器件多,调试工作量较大,频率稳定度和准确度差,很难满足频率变化的范围要求,更难准确地实现频率步进的要求。

方案二:利用专用直接数字合成DDS芯片AD9851实现波形发生器。AD9851可以产生一个稳定的频率和相位且可数字化编程的模拟正弦波输出。但是该芯片理论上可达到70MHz,其实在实际应用中,当频率达到30MHz时,波形就失真了,而且外围电路较为复杂,需耗费大量时间。

方案三:采用AD9854芯片构成信号源。AD9854芯片可产生一高稳定的频率、相位、幅度可编程的正弦和余弦信号,允许输出的信号频率高达150MHz,而数字调制输出频率可达100MHz,满足项目40M的要求。

综合以上三种方案,选择方案三。

1.1.3 放大器模块的论证与选择

方案一:选用两级电压反馈运算放大器OPA847放大,再由数字衰减器PE4302衰减。OPA847是宽带超低噪声电压反馈运算放大器,常被用于前级放大,且带宽可高达3.9GHz,噪声极小。数字衰减器可以实现对DC~4.0GHz信号产生最大31.5dB的衰减,步进为0.5dB,但不可以实现系统增益连续可变。

方案二:选择运放AD8009。通过调AD8009 R1和Rf,实验发现可以实现单片运放0~40dB的要求,但是不能满足项目输入阻抗600Ω的要求。

方案三:选择压控正益放大器VCA824级联,外加AD690调节输入阻抗,满足项目要求。

综合以上三种方案,选择方案三。

1.1.4 键盘与显示模块的论证与选择

(1)键盘:

方案一:独立键盘。控制简单,但是占用单片机IO口资源太多。

方案二:矩阵键盘。控制较为复杂,但是占用单片机IO口资源少。

方案三:周立功键盘。控制较为复杂,操作点单,但功能强大。

(2)显示器:

方案一:TFT。功能强大,但是用于控制DDS显得过于复杂。

方案二:OLED。IIC通信方式,占用单片机IO口资源少,满足需求。

方案三:12864。操作简单,但占用单片机IO口资源多而且费电。

综合以上几种方案,选择周立功键盘和OLED。

1.1.5 网络通信模块的论证与选择

方案一:使用ESP-8266作为TCP客户端,与主机建立一对一通信。ESP-8266常被用作单片机WiFi模块使用,可以通过串口传输AT指令加以控制。

方案二:使用ESP-32建立TCP服务端,供局域网内其他设备访问。ESP-32是上海乐鑫公司出品的性能更强的物联网模块,同时也可以单独作为单片机使用。另外,设立TCP服务端,也使得让电脑客户端软件和手机APP同时访问成为可能。

综合以上两种方案,选择方案二。


1.2 方案描述

根据上文得出方案:系统以STM32为主控板,以ZLG键盘和OLED屏为交互方式,控制DDS AD9854进行扫频,经过自制的放大器,由均值检波器AD8361读出幅值信息。幅频特性数据通过ESP-32实现串口透传,由特别编写的计算机程序和安卓APP接收和绘制。


2、理论分析与计算2.1 信号发生器的电路设计


经讨论后,我们决定采用DDS AD9854。我们按照官方提供的电路,完成了如下设计。

图1 正交扫频信号源子系统电路原理图(大图见附录)

2.2 放大器设计


为了达到放大性能、带宽、输入阻抗和带载能力的要求,我们以OPA690跟随器为第一级,设定输入阻抗600Ω,继而用两级VCA824达到信号0~40dB放大的要求。经测试,20MHz下,该系统可完成0~44.6dB连续可调的要求。

图2 放大器系统电路原理图(大图见附录)

2.3 频率特性测试仪器

由于示波器有X Y输入模式,由单片机DA产生的电压信息直接输入通道CH1、CH2,当扫描足够快时,由于视觉暂留现象,屏幕上便会留下幅频特性曲线。

3、电路与程序设计


 


3.1 电路设计

图4系统电路原理图

3.2 程序设计

这里主要对两个设备进行了编程:STM32和ESP-32。STM32使用μVision官方SDK,ESP-32使用新兴的嵌入式综合开发平台PlatformIO设计,也可以在ArduinoIDE内进行开发。程序详见附录2。

计算机客户端采用Java编写,手机端APP使用AndroidSDK进行设计。

4、实物图片 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/747492.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPOPS-II教程(3): 航天器最优控制问题

文章目录 问题描述GPOPS代码main functioncontinuous functionendpoint function完整代码代码仿真结果 最后 问题描述 例子出自论文 Direct solution of nonlinear optimal control problems using quasilinearization and Chebyshev polynomials(DOI:1…

CircuitBreaker断路器-Resilience4j

目录 背景分布式架构面临的问题:服务雪崩如何解决? CircuitBreakerResilience4jCircuitBreaker 服务熔断服务降级三种状态转换例子参数配置案例demo作业 BulkHead隔离特性SemaphoreBulkhead使用了信号量FixedThreadPoolBulkhead使用了有界队列和固定大小…

Ubuntu22安装PyCharm

下载(社区版) 官网下载地址 解压 sudo tar -xzvf pycharm-community-2024.1.4.tar.gz 软件移动到指定目录下(根据不同版本修改) sudo mv pycharm-community-2024.1.4/ /usr/local/PyCharm/运行 cd /usr/local/PyCharm/pycha…

Altera不同系列的型号命名规则

Altera芯片型号:10AX07H4F34I3SG 20nm工艺 资源: 大数据 云计算 人工智能 图像处理 MSEL

固定翼无人机入门(二)

这里讲讲无人机的路径跟踪控制相关知识,路径跟踪需要制导率(平面)和控制器,在无人机中较为常用的是L1制导率,不过L1制导率是控制无人机在二维平面上的转向,此处还引入总能量控制,控制无人机的高…

Vue3学习笔记<->开发环境安装

背景 公司开始做产品开发,前端就选择使用了vue,替换了传统的jsp。公司要求每个开发人员都要前后端都可以开发,于是就开始学习vue了。 安装环境 安装node.js node.js下载地址:node.js下载地址 安装:选在安装路径&…

Web渗透:逻辑漏洞

逻辑漏洞是指应用程序的逻辑中存在缺陷,导致应用程序无法按照预期执行,可能被攻击者利用来执行未授权的操作或绕过安全措施。逻辑漏洞通常不依赖于常见的输入验证漏洞或技术漏洞,而是利用系统设计或实现中的问题;本文以两个例子举…

makefile中的用户自定义变量

makefile: CC gcc CFLAGS -Isub -Isub -O2 OBJS add_int.o add_float.o sub_int.o sub_float.o main.o TARGET ccb RM rm -f $(TARGET):$(OBJS)$(CC) -o $(TARGET) $(OBJS) $(CFLAGS) $(OBJS):%.o:%.c$(CC) -c $(CFLAGS) $< -o $ clean:-$(RM) $(TARGET) $(OBJS)编译运…

使用命令行创建uniapp+TS项目,使用vscode编辑器

一:如果没有pnpm,先安装pnpm 二:使用npx工具和degit工具从 GitHub 上的 dcloudio/uni-preset-vue 仓库克隆一个名为 vite-ts 的分支,到项目中. 执行完上面命令后,去manifest.json添加appid(自己微信小程序的Id),也可不执行直接下一步,执行pnpm install ,再执行pnpm:dev:mp-weix…

OPenFast中AeroDyn,ElastoDyn,ElastoDyn_Tower,ServoDyn的作用!

在OpenFAST中&#xff0c;这四个文件分别有不同的作用&#xff0c;它们用于定义风力涡轮机不同部分的特性和行为。以下是每个文件的总结及其作用&#xff1a; NRELOffshrBsline5MW_Onshore_AeroDyn15.dat 作用&#xff1a;这是AeroDyn模块的输入文件&#xff0c;用于定义风力涡…

Android C++系列:内存知识整理

1. 控制C的内存分配 在嵌入式系统中使用C的一个常见问题是内存分配&#xff0c;即对new 和 delete 操作符的失控。 具有讽刺意味的是&#xff0c;问题的根源却是C对内存的管理非常的容易而且安全。具体地说&#xff0c;当一个对象被消除时&#xff0c;它的析构函数能够安全的释…

基线核查--渗透

基线检查 基线核查概念 it中定义&#xff1a; 基线为初始的标准&#xff0c;以后更改就要经过授权&#xff0c;形成下一基线。 软件配置管理的基线&#xff1a;1功能基线&#xff0c;分配基线&#xff0c;产品基线 安全配置基线--基线核查 安全基线可以说是木桶理论&…

RocketMQ 和 Kafka 关于消息队列的推拉模式是怎么做的?

引言&#xff1a;在当今的大数据和分布式系统中&#xff0c;消息队列扮演着至关重要的角色&#xff0c;它们作为系统之间通信和数据传输的媒介&#xff0c;为各种场景下的数据流动提供了可靠的基础设施支持。在消息队列的设计中&#xff0c;推拉模式是两种常见的消息传递机制&a…

搜索引擎的原理与相关知识

搜索引擎是一种网络服务&#xff0c;它通过互联网帮助用户找到所需的信息。搜索引擎的工作原理主要包括以下几个步骤&#xff1a; 网络爬虫&#xff08;Web Crawler&#xff09;&#xff1a;搜索引擎使用网络爬虫&#xff08;也称为蜘蛛或机器人&#xff09;来遍历互联网&#…

云计算【第一阶段(21)】引导过程与服务控制

目录 一、linux操作系统引导过程 1.1、开机自检 1.2、MBR引导 1.3、GRUB菜单 1.4、加载 Linux 内核 1.5、init进程初始化 1.6、简述总结 1.7、初始化进程centos 6和7的区别 二、排除启动类故障 2.1、修复MBR扇区故障 2.1.1、 实验 2.2、修复grub引导故障 2.2.1、实…

这5款国内可用的宝藏AI视频工具,不允许有人还不知道!(建议收藏)

文章首发于公众号&#xff1a;X小鹿AI副业 大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 前几天一位粉丝说给…

40.连接假死-空闲检测-发送心跳

连接假死情况 1.网络设备出现故障,例如网卡,机房等。底层的TCP连接已经断开,但应用程序没有感知到,仍然占着资源。 2.公网网络不稳定,出现丢包。若果连续出现丢包,这时现象就是客户端数据发不出去,服务端也一直收不到数据,就这么一直耗着。 3.应用程序线程阻塞,无法…

postman汉化中文(Windows)

Postman 是一款专业的 API 开发工具&#xff0c;为开发者提供了创建、测试、调试和分享 HTTP 请求的便利性和灵活性。其主要功能包括请求构建与发送、自动化测试、团队协作与分享、实时监视与调试以及环境与变量管理。无论是个人开发者还是团队&#xff0c;Postman 都能有效地提…

UDS - 10.2 DiagnosticSessionControl (10) service

10.3 诊断会话控制(10)服务 来自:ISO 14229-1-2020.pdf 10.2.1 服务说明 DiagnosticsSessionControl服务用于在服务器中启用不同的诊断会话。 诊断会话启用服务器中的一组特定诊断服务和/或功能。该服务提供了服务器可以报告对启用的诊断会话有效的数据链路层特定参数值(…

75101A 1553B总线测试模块

75101A 1553B总线测试模块 75101A 1553B总线测试模块是单通道多功能&#xff0c;符合CPCI/PXI总线的标准3U尺寸模块&#xff0c;可同时用作BC、RTs和BM&#xff0c;其中BM具有比特误码、highbit、lowbit、highword、lowword、校验错误、消息错误检测以及最大256M字节的数据捕…