lihui163 发表于 2023-9-28 20:16:37

【开源】基于T5L屏的无线电控制系统

本帖最后由 lihui163 于 2023-10-2 19:27 编辑

在中秋佳节来临之际,分享一下无线电控制系统
一、简单普及无线电知识
1.无线电是指在所有自由空间(包括空气和真空)传播的电磁波,是其中的一个有限频带,上限频率在300GHz(吉赫兹),下限频率较不统一, 在各种射频规范书, 常见的有3KHz~300GHz(ITU-国际电信联盟规定),9KHz~300GHz,10KHz~300GHz。

无线电技术是通过无线电波传播信号的技术。无线电技术的原理在于,导体中电流强弱的改变会产生无线电波。利用这一现象,通过调制可将信息加载于无线电波之上。当电波通过空间传播到达收信端,电波引起的电磁场变化又会在导体中产生电流。通过解调将信息从电流变化中提取出来,就达到了信息传递的目的
2.无线电频率
   频率不同   长波通信:是利用波长长于1000米(频率低于300KHz)的电磁波进行的无线电通信。   短波通信:是波长在100米~10米之间,频率范围3兆赫~30兆赫的一种无线电通信技术。
   原理不同      长波通信主要用地波形式传播。   短波通信主要利用电离层反射传播,传播距离环绕地球。3.短波电台短波电台是指工作波长为100~10米(频率为3~30兆赫)的无线电通信设备。(高档无线电台,可以在100hz-1000Mhz频率范围内接收。)主要用于传送话音、等幅报和移频报。在传送电话信号时,采用振幅调制和单边带调制。由发信机、收信机、天线、电源和终端设备等组成。一般分为便携式、车载式和固定式电台。具有体积小、重量轻等特点,通常采用鞭形天线,利用地波进行近距离通信,功率通常为数瓦至数十瓦。短波通讯距离,短波电台是依靠大气中的电离层反射,可以传播很远距离。最佳状况时,可以联通全球各地。一般情况下都能传输几百公里,所以很多远程联络,只有依赖短波电台进行联络通讯,象航海、航空通讯等。广大无线电爱好及火腿一族,也把短波通讯,作为追求目标。4.业余无线电短波通联常识——短波通联频率选择

160米波段(1.8~2.0MHz)
   这其实是一个属于中波(MF)波段的业余频段。这个波段的无线电波以地波传播为主。一般来说,地波传播的最大距离只有250公里,所以在太阳黑子活动的一般年份,这个频段只能用于本地、附近地区间的通信。但大量实践证明。在冬季黎明前一、两个小时内,在太阳落山前的一小时内,它有可能传播到几千公里以外的地方。所以,国际上在每年的一、二月份都要为160米波段专门组织比赛,让热衷于这个波段通信的爱好者得以大显身手,比如我们熟知的“CQ World Wide 160-Meter Contest”。80米波段(3.5~3.9MHz)
   和160米波段一样,它也基本上是靠地波传播,晚上(一般要到零点以后)和邻近国家的联络比较有保障。在太阳黑子活动相对平静年份,晚上DX的效果相当不错。国内一些年龄较大的爱好者热衷于晚上的3.850MHz进行通联活动。40米波段(7.0~7.1MHZ)
   40米波段是短波通联的常用频段之一。国内爱好者在这个频段上工作的比较多,喜欢CW的爱好者常年在7.023MHz工作。刚刚入门的爱好者,则喜欢在7.050MHz上进行呼叫。白天这个波段可以很好的用作临近城市业余电台相互间联络。到了晚上,在这个波段上可以联络到世界各地的电台。30米波段(10.0~10.15MHZ)
   在业余无线电运动中,这个波段只用于 CW 通信和数字通信,不允许语音通信。另外,这个波段的输出功率不能超过 200W。30米波段在白天以及傍晚之后的几个小时里都适合进行远程通信。许多CW爱好者聚集在这个波段的下端,参加各种国际竞赛,数字通信则使用这个波段上端。20米波段(14.0~14.35MHZ)
   20米波段是爱好者使用最多的“黄金”频段之一。因为,无论是白天还是晚上,甚至在太阳黑子活动的低峰期,也还能够用这个波段和世界各地联络。和前面介绍的波段不同,这个波段开始出现“越距现象”了。即出现了一个地波传播到达不了,而天波的“一跳”又超过了这个通联距离的现象。这是天波传播的一个特别的现象。受“越距”现象影响,我们要是想在国内邻近省份之间进行联络,比如北京和天津、南京和苏州这种距离百十公里的城市之间,通常都不能用20米波段进行联络。但由于电离层是在不断变化之中,所以“越距”的范围不是固定个变的。15米波段(21.0~21.45MHz)
   15米波段在全世界来说,都是一个最热闹的波段。该波段可以很好地用于远程通信,而15米波段常与20米波段相辅相成,比如在20米波段上与欧洲联络不好,这时15米却变得好起来。15米波段的越距现象更加明显,尤其是在降冬和盛夏季节,听本省或国内电台是很困难的。10米波段(28.0~29,7MHz)
   10米波段的天线是整个短波中尺寸最小的,而传播过程中的绕射能力又比超短波强,所以许多爱好者在近距离上用这个波段进行移动通信,日本YAESU的FT-8900R车载调频电台也包含了对29MHz的发射支持。这是一个理想的低功率远距离通信波段,在白天传播情况比较好的时候,能达到像打电话那样的通信效果。由于频率比较高,晚上电离层较小的密度,己不能对其形成反射,所以这个频段的远程通信只能在白天。调整天线发射仰角,有可能会解决“越距”通联的问题,但是可行性不高。掌握传播规律,正确选择相应波段进行DX,是每一位业余无线电爱好者应该掌握的基础知识。二、无线电中短波电台
1.首先通过几张图片了解一下

看起来很酷啊
下边的就是实战了,在野外空阔的地方,真是天高任鸟飞

上面的图片是一些爱好者喜欢到野外通联,自己架一个天线,信号很好的。但是要注意几个地方,玩这个无线电需要考证的,A证和B证,不是随意去玩的。
2.无线电控制系统
这个目前大部分都是用arduino来做,就是atmel单片机,简单参考一下


这是短波LPF这块
电路这块不多介绍了,整体框图如下,整个的控制系统还是比较复杂


我们现在做的就是中间的无线电控制系统
整体供电12V,触摸屏是采用T5L主控的迪文7寸电容屏(12V供电),采集控制板主控采用stm32,采用TTL串口通讯。
整体功能介绍
1)短波的7波段高频识别,这个功能有个特别之处,就是识别以后的一个保持功能,比如识别到80m波段,只要其他波段没有进来,就一直保持这个80m波段,并一直保持通联状态。
2)短波的自动识别和手动打开功能。
3)输入功率和输出功率显示,采用数字和进度条方式。
4)天线发射功率和反射功率比值,采用数字显示。
5)整个系统的直流电压和电流显示,采用数字显示。
6)两个温度采集显示。
7)整个系统的供电效率显示。
8)整个系统的状态显示。
9)7波段天线端口设置。
10)电压电流等参数阈值设置。
11)输入功率和输出功率校准。
12)背光设置。
13)所有设置参数都是存储到eeprom里边,下次开机读取参数并显示。参数设置采用键盘和增量调节结合方式。
每个功能不详细说明了,这样搞得篇幅太长了。
DGUS界面如下
主界面


设置界面

数字键盘界面


实物如下



下面是分享了一段ADC校准这块。
<b><font size="4" face="黑体">int adc_rawvals;
float adc_realvals;

void adc_calculate_raw_values()
{
      if(isAdcConvReady())
      {
                for(int i=0; i<=UTEMP2; i++)
                {
                        if(i == UFWDIN || i == UFWDFLT)
                              adc_rawvals = ui16_Read_ADC_ConvertedPeakValue_noHold(i);
                        else if(i == UREVANT)
                              adc_rawvals = ui16_Read_ADC1_ConvertedValue(i);
                        else
                              adc_rawvals = ui16_Read_ADC1_ConvertedValueSmooth(i);
                }
                adc_rawvals = ui16_Read_ADC_ConvertedPeakValue(UFWDFLT);
                adc_rawvals = ui16_Read_ADC_ConvertedPeakValue(UFWDIN);

                adc_rawvals = ui16_Read_ADC_ConvertedPeakValue_noHold(UFWDANT);
                adc_rawvals = ui16_Read_ADC_ConvertedPeakValue(UFWDANT);
      }

      if(isADC3ConvReady())
                adc_rawvals = ui16_Read_ADC3_ConvertedValue();
}

void adc_calculate_real_values()
{
      // Calculate PS Voltage电压
      // Spannungsteiler 390k : 10k
      adc_realvals = (float)(adc_rawvals *(390+10)) / 10.0;
      adc_realvals /= 1000.0;
      if(adc_realvals < 4.0) adc_realvals = 0;

      // Strommessung
      // beim INA193A ist die Ausgangsspannung = 20 x Shutspannung
      // bei einem Shunt von 1mOhm: Ushunt = Ilast * 0,001
      // Umess = Ushunt * 20
      // Umess = Ilast * 0,001 * 20 = Ilast * 0,02
      // Ilast(=Ianzeige) = Umess / 20

      // der Rohwert des INA193 kann einen 0-Offset von bis zu xxx (gemessen 49mV, 19mV usw)haben电流
      // dieser Offset ist bei richtigen Messungen scheinbar nicht mehr vorhanden
      if(adc_rawvals < 45) adc_rawvals = 0;      // alles unter xxx mV ignorieren (kan bei verschiedenen INAs variieren)
      if(adc_realvals == 0) adc_rawvals = 0;// wenn keine Spannung da, dann zeige auch keinen Strom an

      float R_SHUNT = shuntValue;      // mOhms
      adc_realvals = (float)adc_rawvals / (20.0*R_SHUNT);

      // Temperaturmessung
      adc_realvals = calc_temp(adc_rawvals);
      adc_realvals = calc_temp(adc_rawvals);

      // ICOM Banderkennung
      /*
                IC-7300: (Spannungen nach dem Vorteiler)
                < 2M .... 2,30
                2-4M .... 1,87
                4-8M .... 1,56
                8-11M ... 0
                11-15M .. 1,25
                15-22M .. 0,98
                22-30M .. 0,68
                > 30M ... 0,58
      */
      if(adc_rawvals < 300) adc_realvals = 30;
      else if(adc_rawvals < 630) adc_realvals = 6;
      else if(adc_rawvals < 830) adc_realvals = 1210;
      else if(adc_rawvals < 1115) adc_realvals = 1715;
      else if(adc_rawvals < 1405) adc_realvals = 20;
      else if(adc_rawvals < 1715) adc_realvals = 6040;
      else if(adc_rawvals < 2085) adc_realvals = 80;
      else adc_realvals = 160;

      calc_PwrBridges();      // die Ergebnisse stehen in dent_pwrswr Strukturen

      // nicht gemessene sondern berechnete Werte
      adc_realvals = adc_realvals * adc_realvals;

      if(adc_realvals < 0.01)
                adc_realvals = 0;
      else
                adc_realvals = 100 * pwrswr_antenna.fwd_watt / adc_realvals;

      if(adc_realvals > 100.0) adc_realvals = 100.0;

}

void adc_calculate_values()
{
      adc_calculate_raw_values();
      adc_calculate_real_values();
}</font></b>上面的只是参考,校准这块采用最小值和最大值方式,采用线性插值的方式,多段拟合(一次多项式)。
这是界面的校准

这块是外接一个AD8317模块,1 MHz至10 GHz、50 dB对数检波器/控制器,频率相当高,在无线电领域应用非常广泛。
我们点击校准按钮,控制板接入AD8317模块,开始自动校准了,实现电压到无线电功率的转换,校准方式就是上面说的。
下面是简单的资料
那个arduino的原理图和代码,迪文工程



这是客户在测试短波识别的视频
https://www.bilibili.com/video/BV1Mp4y1c7ym/?vd_source=7233f1e1cc9ba168a135d10325298f13

这是我在测试短波的输入功率的模拟视频
https://www.bilibili.com/video/BV1r841117HV/?vd_source=7233f1e1cc9ba168a135d10325298f13









gaozu 发表于 2024-4-22 13:31:44

感谢分析!T5L_OS核代码能提供么?

168988 发表于 2024-4-22 13:39:18

是需要出厂的OS核吗?
页: [1]
查看完整版本: 【开源】基于T5L屏的无线电控制系统