【开源】HX9500.02扫频仪试验电路图和程序
喜欢射频仪器的KCer有福了!今天我们开放扫频仪HX9500第二版的源码,欢迎大家讨论!

在HX9500.01的基础上研制HX9500.02标量网络分析仪的过程中,我们进行了一系列改进试验,包括采用嵌入DDS的锁相环(如“相加环”)改善全频段的频率步进(step)、采用超外差电路进行检波,以便消除跟踪源谐波对动态范围的影响;采用二次变频,在高第一中频用较宽的中频带宽,在第二本振采用频率范围比较窄,但步距很小的PLL进行频率微调,从而低成本实现全频段小步进;以及进行137MHz以下分析时,跟踪源PLL空闲,可以用来与S21检波器的本振混频来产生低频率本振,从而节省一个DDS电路等设计。这些方案是为了降低扫频仪的成本,并且提高扫频仪的性能。这些方案的试验都获得了成功,但是也有相应的缺陷。

例如,当采用二次变频,二本振微调实现小步进时,对第一中频滤波器的带内波动有严格要求。采用共用一个PLL的方案,跟踪源向S21检波电路的泄漏较大,影响动态范围,且需要增加滤波器等。

HX9500.02的设计频率范围1MHz~1GHz,动态范围80dB,采用一次变频,中频455KHz。同9500.01一样,仍然在137MHz以上采用4350做PLL振荡器,在137MHz以下采用9951作为振荡器。频率步进在137MHz以下约为1Hz。实际测试效果,在采用中频滤波以后,动态范围可以很轻松的提升到70dB以上,如果做好屏蔽措施,到80dB以上不成问题。

由于设计水平一直未达到KC的最低要求,直到该项目终止也没有完成实验,这里面除了技术的因数,主要是人事和流程管理过多依赖信任,疏于体制约束和对人性的洞察,对表面善良内心阴险的人缺乏防范。结果项目负责人在KC积攒知识和资源,在开发即将完成之时另立山头,导致人力物力投入全部报废,造成重大损失。这套方案本身是可行的,但是只适合爱好者学习和DIY,确实达不到KC对成品仪器的基本要求。这一系列实验提供了多种思路,为开发相关低成本仪器提供了经验,大家感兴趣的话可以继续研究。

下面是HX9500.02的原理图和布板图(最后一次的改动尚未完成,因此布板图仅供参考),分辨率都足够,点击图片或者另存为可以看到清晰大图。

控制板
原理图 控制 电桥.png

CPU板.png

射频板
射频板.png
原理图 射频 小.png


键盘板
原理图 键盘.png

键盘.png


HX9500项目已经终止,取而代之的是HX9501标量网络分析仪/频谱仪项目,现在正在制作试用版:https://www.kechuang.org/t/40754
来自:仪器与装备 / 仪器仪表
 
虎哥 作者
10年0个月前
1楼
HX9500.02共有3张电路板:控制板、射频板和键盘。控制板上面也有一部分射频电路。布板是按照一个小型手持仪器考虑的,其外观与HX9501.01已经颇为接近。

下面是9500.02试验时留下的文物。

控制板,CPU在背面。
IMG_0201.jpg

射频板。
IMG_0203.jpg

键盘
IMG_0204.jpg
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
虎哥作者
10年0个月前
2楼
下面是源代码。电路图和程序随时都在改,很乱,不能直接用,需要自己修改。高手就不要吐槽了,吐槽点太多。


attachment icon KC500MHz扫频仪0825版本.rar 538.96KB RAR 136次下载

因为CPU资源不够(经9501课题组评估,认为实际上是程序有缺陷),所以还尝试了两块CPU分别负责射频硬件控制、显示、键盘扫描的方案,CPU间用串口通信。由于工作不稳定,放弃实验。这是当时用的代码。


attachment icon HX9500.02.rar 566.38KB RAR 92次下载
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
radio73
10年0个月前
3楼
[s:271]  [s:271]  [s:271]  [s:271]  [s:223]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
立棍
10年0个月前
4楼
455的像频有抑制吗?
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
虎哥作者
10年0个月前
5楼
没有采用镜像抑制措施,从电路图也可以看出来。扫频分析是闭路测试,一般情况下不会有镜像干扰的问题,所以不需要抑制镜像。如果要用此机观察空间频谱,则可能出现假响应。所以频谱功能是附送的功能,仅供参考。
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
edzyj
9年11个月前
6楼
问个问题。用了DDS,为何频率最低是1M呢?
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
虎哥作者
9年11个月前
7楼
引用第6楼edzyj于2012-02-04 18:01发表的  :
问个问题。用了DDS,为何频率最低是1M呢?


受很多因素制约,看看电路图就明白了。软件可以设到100Hz,但无法保证指标。

爱好者几百元就能搞出到1G的VNA,并不表明他能达到一个成品仪器的最起码要求。
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yzhxdz
9年11个月前
8楼
[s:271][s:271][s:271][s:271]楼主好人
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yyhhgg
7年11个月前
9楼
谢谢分享
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yyhhgg
7年11个月前
10楼
谢谢分享,功能在全点就好了
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
3dg6
7年6个月前
11楼
不错学习了
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
suyuping99
7年6个月前
12楼
本帖最后由 suyuping99 于 2014-6-14 16:08 编辑

忍不住吐槽一下。控制板和射频板的设计与布板布线,其风格与KC901 的风格大相径庭,许多地方都缺仔细考量,不太协调。极其暴露负责人的功力~~~这有点像在玩啊~~
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
xuliya282
6年9个月前
13楼
ting le xiang mu ke xi le(gang huan win7 ,han zi diao bu chu lai)
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
GB913759593
6年9个月前
14楼
发现有3R33[s::lol]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
stm2015
6年7个月前
15楼
Hello, it is impossible to build a project in keil,
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
wenyanwen
6年7个月前
16楼
谢谢分享
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
stm2015
6年7个月前
17楼
提供的示例代碼,也可以收集並寫處理器
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
曾奎
6年7个月前
18楼
高手 我能和你做朋友吗?
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
stm2015
6年7个月前
19楼
不能建设项目keil、缺乏图书馆,并编写了很多错哪儿弄到的所有项目档案
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
stm2015
6年7个月前
20楼
compiling main.c...
ili9320.c(412): error:  #20: identifier "GPIOD" is undefined
ili9320.c(488): error:  #20: identifier "GPIOD" is undefined
ili9320.c(495): warning:  #223-D: function "ADC_GetConversionValue" declared implicitly
ili9320.c(495): error:  #20: identifier "ADC1" is undefined
ili9320.c(598): error:  #20: identifier "GPIOD" is undefined
ili9320.c(612): error:  #20: identifier "GPIOD" is undefined
main.c(9): error:  #20: identifier "ADC_InitTypeDef" is undefined
main.c(10): error:  #20: identifier "DMA_InitTypeDef" is undefined
main.c(11): error:  #20: identifier "EXTI_InitTypeDef" is undefined
main.c(108): warning:  #223-D: function "DMA_DeInit" declared implicitly
main.c(108): error:  #20: identifier "DMA1_Channel1" is undefined
main.c(111): error:  #20: identifier "DMA_DIR_PeripheralSRC" is undefined
main.c(113): error:  #20: identifier "DMA_PeripheralInc_Disable" is undefined
main.c(114): error:  #20: identifier "DMA_MemoryInc_Disable" is undefined
main.c(115): error:  #20: identifier "DMA_PeripheralDataSize_HalfWord" is undefined
main.c(116): error:  #20: identifier "DMA_MemoryDataSize_HalfWord" is undefined
main.c(117): error:  #20: identifier "DMA_Mode_Circular" is undefined
main.c(118): error:  #20: identifier "DMA_Priority_High" is undefined
main.c(119): error:  #20: identifier "DMA_M2M_Disable" is undefined
main.c(120): warning:  #223-D: function "DMA_Init" declared implicitly
main.c(123): warning:  #223-D: function "DMA_Cmd" declared implicitly
main.c(125): error:  #20: identifier "ADC_Mode_Independent" is undefined
main.c(128): error:  #20: identifier "ADC_ExternalTrigConv_None" is undefined
main.c(129): error:  #20: identifier "ADC_DataAlign_Right" is undefined
main.c(131): warning:  #223-D: function "ADC_Init" declared implicitly
main.c(131): error:  #20: identifier "ADC1" is undefined
main.c(134): warning:  #223-D: function "ADC_RegularChannelConfig" declared implicitly
main.c(134): error:  #20: identifier "ADC_Channel_3" is undefined
main.c(134): error:  #20: identifier "ADC_SampleTime_55Cycles5" is undefined
main.c(136): warning:  #223-D: function "ADC_DMACmd" declared implicitly
main.c(139): warning:  #223-D: function "ADC_Cmd" declared implicitly
main.c(142): warning:  #223-D: function "ADC_ResetCalibration" declared implicitly
main.c(144): warning:  #223-D: function "ADC_GetResetCalibrationStatus" declared implicitly
main.c(147): warning:  #223-D: function "ADC_StartCalibration" declared implicitly
main.c(149): warning:  #223-D: function "ADC_GetCalibrationStatus" declared implicitly
main.c(152): warning:  #223-D: function "ADC_SoftwareStartConvCmd" declared implicitly
main.c(209): error:  #20: identifier "ADC_Channel_12" is undefined
main.c(213): warning:  #223-D: function "ADC_GetConversionValue" declared implicitly
main.c(216): error:  #20: identifier "ADC_Channel_11" is undefined
main.c(240): warning:  #223-D: function "SysTick_CLKSourceConfig" declared implicitly
main.c(240): error:  #20: identifier "SysTick_CLKSource_HCLK" is undefined
main.c(246): warning:  #223-D: function "SysTick_SetReload" declared implicitly
main.c(249): warning:  #223-D: function "SysTick_ITConfig" declared implicitly
main.c(639): error:  #20: identifier "GPIOD" is undefined
main.c(644): error:  #20: identifier "GPIOC" is undefined
main.c(653): error:  #20: identifier "GPIOE" is undefined
main.c(721): warning:  #223-D: function "SysTick_CounterCmd" declared implicitly
main.c(721): error:  #20: identifier "SysTick_Counter_Enable" is undefined
main.c - 30 Error(s), 18 Warning(s).
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
stm2015
6年7个月前
21楼
compiling main.c...
main.c(1): error:  #5: cannot open source input file "stm32f10x_lib.h": No such file or directory
main.c - 1 Error(s), 0 Warning(s).
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
虎哥作者
6年7个月前
22楼
这个项目已经废了,源码里面能用的只有一些控制函数,写得很烂而且应该是在两个版本之间的代码,发出来只是起参考作用,不建议再继续搞。
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
不死野人
6年6个月前
23楼
woo,learning
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zjsx8192
4年8个月前
25楼
很好的参考。
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hzoldman
4年4个月前
26楼
对业余玩玩有很好的参考作用,谢谢。
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
虎哥
专家 学者 机友 笔友
文章
1427
回复
11613
学术分
39
2005/08/24注册,5 小时前活动

刘 虎

创新工程局主席

%7B%22isDisplay%22%3Atrue%7D
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传
空空如也~
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
{{forum.displayName}}
{{forum.countThreads}}
篇文章,
{{forum.countPosts}}
条回复
{{forum.description || "暂无简介"}}
ID: {{user.uid}}
学术分隐藏
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

支持的图片格式:jpg, jpeg, png
插入公式
分享回复:{{shareId}}
加载中...
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
加入关注取消关注
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
建议修改
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也