风筝
发表于: 2018-9-9 22:08:49 | 显示全部楼层

本篇文章将主要介绍使用Si4844-A10模拟调谐无线电接收器和Arduino开发板制作成一个全功能的多频段收音机。


使用单芯片收音机的想法很吸引人。这个想法对我来说特别有意思,因为坦率地说,我羡慕与制作无线电接收器有关的模拟技巧。当我浏览该领域的电路文献时,我遇到了Silicon Labs系列。他们的一个芯片,Si4844-A10引起了我的注意。该接收器具有AM / FM / SW功能,具有所有的铃声,可与微处理器配合使用。最重要的是,所需的支持组件主要与微处理器显示和控制功能相关,只需要少量的天线支持。我忍不住冒险尝试一下。


基本电路

AMFMSW4-revised-s.jpg


上图显示了接收器的基本电路,原理图改编自Silicon Labs Si4844数据手册和应用笔记。我使用的是便携式AM / FM收音机的回收铁氧体回路作为所需的AM天线。我认为更高质量和更大的铁氧体将是一种改进。 Q1是SW / AM的放大器,我在该部分也使用了回收的伸缩天线。值得注意的是,上面链接的设计指南为天线组件提供了几种替代方案和不同方法。


可变电阻器(VR1)是一个关键部件,因为它将用于调节接收器频率 - 调谐旋钮。建议使用高质量的线性电位计。对于音频输出,我选择使用一套退役台式电脑的“经济”放大扬声器。当然,也可以使用简单的立体声放大器。电路板上的所有内容均为3.3v,所有GND均已连接。


结构中最困难的部分可能是芯片的SSOP-24外形尺寸。如果您没有使用SMT IC的经验和设备,使用载板可能是完成任务的最简单方法。我有一个SSOP-28载板和一个精细的点焊头。其他可能难以使用的部件是表面贴装铁氧体磁珠和电容。这些组件也可以手工焊接到载板上并像DIL封装一样进行处理。

Both_chips.jpg


连接Arduino

在为电路供电以进行测试之前需要考虑的另一个问题是Arduino接口。对于这个组件,我选择使用Arduino Pro Mini开发板。这款小巧的Arduino完全是3.3v,与Si4448-A10兼容,这是一个主要优势。小尺寸的电路板是一种额外的便利。与Si4844-A10的连接通过四条线路如下所述:

Arduino(3.3v)
  Si4844-A10
A5 / SCL
SCLK
A4 / SDA
SDIO
D2
INT
D12
RST

此外,标准USB /串行接口用于将Arduino连接到PC进行编程。确切的连接将取决于您使用的串行板,但将包括通常的TX、RX和GND连接。通过这种方式,您可以实际编程和测试Si4844-A10,这有利于开发和实验。但是,完成后,可以取消独立多频段无线电的连接。为无线电板和Arduino供电必须使用外部3.3v稳压电源。不要尝试使用USB /串行板为它们供电,即使它具有3.3v输出引脚 - 这些也不能依赖于能够提供驱动Arduino和Si4844-A10所需的电流。


测试基本电路

一旦你有电路面包板,连接了Arduino,连接了放大的扬声器,你就可以运行本文中包含的测试程序。该程序对电路进行简单测试,该电路将为器件上电,将频段设置为FM,并提供芯片的版本信息。如果一切顺利,您应该能够通过转动VR1来调谐收音机,您将看到屏幕上动态显示的频率 - 当然,还能听到收音机输出。

SIss1.jpg


一旦基本电路和Arduino连接正常工作,就可以继续构建全功能无线电。


Arduino编程

该项目中的Si无线电芯片是一个I2C从设备,其固定地址为0x11,Arduino作为主设备。然而,芯片的I2C通信速度相对较慢,最大支持速度为50 kHz。此外,在上电过程的一部分期间,速度不得超过10 kHz。为了满足这些要求,我们必须明确设置Arduino的I2C速度,这对于Si4844-A10通常来说太快了。幸运的是,在有关Arduino I2C功能的大量文档的帮助下,我们可以轻松完成必要的更改。


基本上,出于我们的目的,I2C速度由Arduino软件中的两个专用变量决定。那些专用变量是TWBR和TWSR。 TWSR的第0位和第1位控制预分频器,该预分频器使用TWBR的值来设置I2C速度。 I2C传输的速度(时钟频率)通过以下公式计算:频率= CPU时钟频率/(16 +(2 *(TWBR)*(预分频器))。Arduino Pro开发板以8 mHz运行。设置I2C速度在10 kHz时,我们使用TWBR值98并将预分频器设置为4(仅设置TWSR的第0位)。因此,8,000,000 /(16+(2 * 98 [TWBR值] * 4 [预分频器]))要将I2C速度设置为50 kHz,我们使用TWBR值18,并将预分频器设置为4(仅设置TWSR的第0位)。因此,8,000,000 /(16+(2 * 18) [TWBR值] * 4 [预分频器]))= 50,000或50 kHz。


有关此过程的更多信息,请参阅Nick Gammon优秀的Arduino I2C信息库Arduino Library文档。然而,最重要的是,我们可以在几行代码中完成这些I2C速度变化,您可以在测试程序中看到这些变化。


另一个重要的编程考虑因素是我们需要在代码中使用外部中断服务程序。我们在Arduino上使用INT0,基本上,当Si4844-A10将该引脚设置为高电平时,程序将执行一个已经“附加”到中断的简单例程。所有例程都会设置一个标志变量,可以在代码的其他部分进行检查和更改。 Si4844-A10将在某些条件下发出中断(即,将INT引脚置为高电平),最明显的是调谐电位器更换时。因此,Si4844-A10告诉Arduino您已经移动了调谐旋钮并且应该更新频率显示。


Si4844-A10编程

本质上,Arduino通过I2C总线发送无线电芯片命令,然后无线电芯片通过执行请求的操作并返回状态信息来回复命令。 Si芯片可以在几种模式下工作,有些可以配置一些非常详细的无线电频带和属性。在这个项目中,我们使用Si4844-A10芯片的模式接受具有默认属性的预定义或默认无线电频段。选择此模式是因为它可以轻松容纳大量基本功能,同时仍提供一定程度的自定义。


可以将无线电芯片设置为41个不同频带中的一个,而不是简单地设置AM / FM / SW“寄存器”。 0-19频段为FM,87-109 mHz;频带20-24是AM,504-1750 kHz;波段25-40是SW,5.6-22.0mHz。然而,这些频带没有简单的等间隔间隔,这可能使调整变得麻烦。相反,许多频带的频率范围相同或略有不同,但具有不同的属性,例如去加重(FM)或信道空间(AM)、立体声分离(FM)和RSSI阈值。为了完全理解这个方案,有必要参考参考数据表和应用笔记,你会看到一些清晰的频段表,以及所有的模式,编程命令,以及状态和回复格式。


在本文中,附带的软件将允许访问所有默认频段以及控制基本属性,包括模式更改(AM / FM / SW)、音量、音调和静音。

跳转到指定楼层
风筝
发表于: 2018-9-9 22:29:20 | 显示全部楼层

添加键盘

为了控制收音机,我们需要一个输入设备。如图所示的简单薄膜键盘足以满足我们的需求。这些已经存在了一段时间,很容易与Arduino接口。虽然我已经说明了我使用的行和列方向,但您应该验证它们是否相同。

Keyboard_arrows_s_trimmed.jpg


对于键盘软件,我使用了Mark Stanley和Alexander Brevig的,它是根据GNU通用公共许可证发布的。对于项目,我们将函数映射到键,如下所示。

KeyMap_trimmed.jpg

键盘功能定义:

●    AM:切换到AM模式,频段22

●    FM:切换到FM模式,频段8

●    SW:切换到SW模式,频段31

请注意,模式更改下的默认波段在软件中配置,易于修改。此外,当前音量和音调值将在新模式中继续。

●    Vol + / Vol-:将音量增加或减少。有64个级别的音量。由于在项目中使用放大扬声器,这些并不是那么重要,但仍然很好。

●    波段+ /波段 - :将波段增加或减少一步,但在当前模式的可用波段内。

●    B / T + / B / T-:将音调增加或减少。我承认我在使用“音调”这个词时有些自由。对于FM模式,这将增加或减少低音/高音电平从0(最大低音)到8(最大高音)。对于AM / SW频段,这将设置1-7的频道滤波器。滤波器分别为1.0 kHz、1.8 kHz、2.0 kHz、2.5 kHz、2.83 kHz、4.0 kHz和6.0 kHz。还要注意,为了简单和编程方便,可以在AM / SW模式中进行0/1和7/8的级别,但是没有不同。

●    静音:打开和关闭音频输出。


添加显示

设置输入设备后,我们需要能够显示收音机的设置。我认为这个项目使用的屏幕没有比旧款诺基亚5110/3310手机更好的屏幕了。我有一个很好用的其中一个(见图),他们的老派魅力似乎特别合适。

Screen_both_trimmed.jpg

连接此显示时需要考虑两个要点。首先,这些显示器有几种可供选择,它们可以有不同的引脚。您应该验证您的引脚连接,以确保它实际上是3.3v设备,并且它正确连接到Arduino Pro Mini。其次,因为在这个项目中使用的Arduino上的所有I / O都是3.3v,所以当这些屏幕与5v风格的Arduino一起使用时,我不必使用通常看到的下拉电阻。


对于软件,我选择使用CreativeCommons许可下提供的LCD5110_Basic库。该库成熟,易于使用且速度快。

下图是使用中的无线电显示屏:

Screen_full_on_800_x_600.jpg


从左上角开始,我们显示:

●    第1行 - 模式(AM / FM / SW)和频段编号

●    第2行 - 频段范围

●    第3行 - 音量和基音/高音电平

●    第4行 - 当前频率(mHz或kHz)

●    第5行 - 立体声指示器和静音

当然,这些信息会不断更新,以表示调整或键盘输入的变化。


完成的电台

下面描述的是面包板上的组装项目 - 可能不是那么整洁,但功能完全正常。

SIss1.jpg

软件中的主循环很简单。 1)检查并显示调谐器频率的任何变化,2)检查是否已按下按键,如果是,则执行相应的命令。该计划的其余部分包括所有支持功能。


我对电路能够在面包板上实现的接收印象非常深刻。 FM非常好。 AM很好,我可以收到很多SW广播。然而,毫无疑问,通过使用专用天线可以增加接收波段。


总结

这是一个具有挑战性和令人愉快的项目。 我对Si4844-A10芯片印象深刻。 单个芯片中有很多功能,这让我感到惊讶。 如果您对实验感兴趣,这个项目可以作为基础。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-24 11:12 , Processed in 0.038698 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表