矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 4417|回复: 23

带自动音量控制的矿石机小功放

[复制链接]
     
发表于 2023-8-19 19:41:39 | 显示全部楼层 |阅读模式
本帖最后由 gxg0000 于 2023-8-19 20:13 编辑

矿石机长期带耳机把玩,两耳夹的生疼,矿机带个小功放接续,能够缓解一下暂时的痛苦。
本矿机小功放模块,安装在自用矿机的内侧,它是一个独立的单元,无源收听或有源收听两不误,该单元采用单节18650锂电池供电,带欠压保护,锂电池电压降到3.2V以下,程序控制关断音量,实样见下图;

小功放内部结构.jpg

小功放正面.jpg

自用矿机的链接;
自用矿机

电路工作原理:

下图为矿机小功放完整的原理图

小功放电路图.png

图中音频通过左上角输入,经过R1与Q1(3EQ)沟道电阻组成分压音量衰减,R4R5电阻1/2分压反馈,用于补偿3EQ沟道电阻的非线性,可以将失真率控制在1%以内。图中右上角为TDA2822M组成的桥式电路,经C4耦合到小功放输入端,喇叭上得到的最大输出功率为350MW(4欧),电路的总增益为39.2dB。
图中下半部分为单片机控制电路,U2单片机5脚输出PWM,滤波后的电压范围0-3.3V,该电压用于控制Q1场管的沟道电阻,对音量衰减的范围是29.6dB,如果将音量衰减范围扩大到40dB,PWM输出控制电压必须10V以上。
AGC电压来自矿石机班尼电路,当班尼电阻打开时,利用检波直流分量作为自动音量控制的电压,调节班尼电阻大小可以改变AGC的控制强度,自动音量控制属于开环控制,有一定的局限性。

这是小功放用PROTEUS软件仿真的情况:

正弦波1000Hz输入(黄线),经R1与场管沟道电阻分压后的波形(蓝线)

电路仿真波形.jpg

仿真电路图

电路仿真.jpg

ATTINY13A为8脚单片机,控制程序很简单,从3脚输入音量电位器电压,7脚输入AGC反馈电压,两路电压完成乘法运算后,在进行场管沟道电阻的非线性校正,最后从5脚输出PWM电压,控制Q1沟道电阻的导通与截止,以下贴出代码,仅供参考;

  1. /**********************************************************************
  2. *        矿石机小功放(带自动音量控制)
  3. *        带开关音量电位器线性(1k-1000k)范围都可以使用
  4. *        agc直流分量反馈电压(0-1.1V)
  5. *        单片机ATTINY13A内部主频9.6M       
  6. ***********************************************************************/
  7. #include <avr/interrupt.h>
  8. #include <util/delay.h>

  9. volatile unsigned int vol=0;        //音量电位器
  10. volatile unsigned long agc=0;        //AM检波直流分量

  11. /***********************************************************************
  12. *        ADC转换函数
  13. *        平均值滤波2.9ms
  14. ***********************************************************************/
  15. unsigned int adc(void)
  16. {
  17.         unsigned int sum=0;
  18.         for(unsigned char i=0;i<64;i++)       
  19.         {                               
  20.                 ADCSRA |= (1<<ADSC);                 //开启转换
  21.                 while ((ADCSRA & (1<<ADIF))==0);                //等待AD转换完成
  22.                 ADCSRA |= (1<<ADIF);                //置位ADIF
  23.                 unsigned char l=ADCL;
  24.                 unsigned int h=ADCH;                                                       
  25.                 ADCSRA &=~ (1<<ADSC);         //停止转换
  26.                 sum+=((h<<8)+l);
  27.         }
  28.         return (unsigned int)(sum>>6);       
  29. }
  30. /***********************************************************************
  31. *
  32. *        主 程 序
  33. *       
  34. ***********************************************************************/
  35. int main(void)
  36. {               
  37.         DDRB = 0b00000001;        //PB0端口输出,PB1:5端口输入       
  38.         OCR0A = 0;         //占空比100%,开机音量最小
  39.         TCCR0A |= (1 << COM0A1) | (1 << COM0A0) | (1 << WGM01) | (1 << WGM00);        //OC1A 起始高电平电平,快速PWM
  40.         TCCR0B |= (1 << CS00);                //快速PWM,不分频PWM启动
  41.         ADCSRA |= (1<<ADEN)|(1<<ADPS2)|(1<<ADPS0);        //使能ADC,32分频
  42.         while(1)
  43.         {               
  44.                 ADMUX |= (1<<REFS0);                //选择片内1.1V基准
  45.                 ADMUX |= (1<<MUX0);                //选择通道ADC3
  46.                 ADMUX |= (1<<MUX1);
  47.                 if(adc()<1023)                //PB3欠压检测(电池电压低于3.2v)
  48.                 {
  49.                         OCR0A=0;          //关闭音量最
  50.                 }
  51.                 else
  52.                 {               
  53.                         ADMUX &=~ (1<<REFS0);        //vcc基准
  54.                         ADMUX &=~ (1<<MUX0);        //选择通道ADC2
  55.                         ADMUX |= (1<<MUX1);  
  56.                         vol=adc();        //PB4音量电位器电压vol

  57.                         ADMUX |= (1<<REFS0);                //选择片内1.1V基准
  58.                         ADMUX |= (1<<MUX0);                //选择通道ADC1
  59.                         ADMUX &=~ (1<<MUX1);
  60.                         //agc=adc()>>1;        //PB5检波直流分量电压agc(0-0.55v)
  61.                         agc=adc();        //PB5检波直流分量电压agc(0-1.1v)
  62.                        
  63.                         unsigned long u=vol-((vol*agc)/1023);                //自动音量增益控制               

  64.                         unsigned int x1 = 0, x2 = 0, y1 = 0, y2 = 0;                //插值(3EQ沟道电阻非线性校正,偏置电压0.53V)                               
  65.                                  if (u > 921){ x1 = 921; y1 = 933; x2 = 1023; y2 =1023; }
  66.                             else if (u > 818){ x1 = 818; y1 = 915; x2 = 921; y2 = 933; }  
  67.                             else if (u > 716){ x1 = 716; y1 = 897; x2 = 818; y2 = 915; }   
  68.                            else if (u > 602){ x1 = 602; y1 = 882; x2 = 716; y2 = 897; }   
  69.                         else if (u > 512){ x1 = 512; y1 = 867; x2 = 602; y2 = 882; }       
  70.                         else if (u > 409){ x1 = 409; y1 = 846; x2 = 512; y2 = 867; }       
  71.                         else if (u > 307){ x1 = 307; y1 = 818; x2 = 409; y2 = 846; }       
  72.                         else if (u > 205){ x1 = 205; y1 = 767; x2 = 307; y2 = 818; }       
  73.                         else if (u > 102){ x1 = 102; y1 = 617; x2 = 205; y2 = 767; }       
  74.                         else if (u >=  0){ x1 = 0;   y1 = 0;   x2 = 102; y2 = 617; }

  75.                         unsigned int y=y1*(x2-u)/(x2-x1);                //计算本段两点式线性方程
  76.                         y+=y2*(u-x1)/(x2-x1);
  77.                         OCR0A=y>>2;                //pwm输出                                                               
  78.         }
  79. }
复制代码



试听效果:

音质远好于普通便携式收音机,中国之声无杂音,非常耐听,AGC控制效果不如外差式收音机好,主要原因控制方式和控制增益不够,强台控制效果不太理想,中强台基本上可以做到不失真。




评分

7

查看全部评分

     
 楼主| 发表于 2024-1-3 12:18:10 | 显示全部楼层
闲着无聊,瞎折腾了第二版矿机小功放,将AGC控制点搬到了天线输入端,通过PIN二极管衰减效果非常好,轻松达到-60dB,对强台抑制效果比第一版方法显著提高,而且线性度非常理想,完全听不到非线性引起的寄生电台信号调制现象,这是场效应管方式衰减完全无法克服的,见下完整的电路图;

Image 2.jpg


HSMP-3810(PIN二极管).pdf (107.47 KB, 下载次数: 192)


回复 支持 0 反对 1

使用道具 举报

     
发表于 2023-8-19 22:43:49 | 显示全部楼层
高射炮打蚊子

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

     
发表于 2023-8-19 20:56:09 | 显示全部楼层
这机壳喇叭孔的开孔精度挺高,看起来效果不错。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2023-8-19 21:49:51 | 显示全部楼层
TDA2822加单片机控制,不错哦

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-8-20 09:59:15 | 显示全部楼层
sjh327 发表于 2023-8-19 20:56
这机壳喇叭孔的开孔精度挺高,看起来效果不错。

其实停方便的,画图形按1:1打印,用胶水贴在PP板上,用电钻照图钻孔



评分

2

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-8-20 10:00:34 | 显示全部楼层

是的,我也觉得
回复 支持 反对

使用道具 举报

     
发表于 2023-8-20 16:31:08 | 显示全部楼层
gxg0000能录一段视频分享出来就好了!

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-8-20 19:53:13 | 显示全部楼层
18038003904 发表于 2023-8-20 16:31
gxg0000能录一段视频分享出来就好了!

不会搞
回复 支持 反对

使用道具 举报

     
发表于 2023-8-20 23:46:54 | 显示全部楼层
用了单片机的小矿机,古典与潮流的碰撞,极致与极致的结合,与时俱进的典范

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2023-8-21 09:16:52 | 显示全部楼层
这矿就复杂了,再生来复四管机都没这复杂。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-8-21 11:25:08 | 显示全部楼层
whyljh3333 发表于 2023-8-20 23:46
用了单片机的小矿机,古典与潮流的碰撞,极致与极致的结合,与时俱进的典范

谢谢赞赏
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-8-21 11:27:13 | 显示全部楼层

再生来复四管机,音频失真率太高,音质不行。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2023-8-21 11:35:12 | 显示全部楼层
能设计个检波直流推动喇叭的更完美了

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-8-21 15:50:49 | 显示全部楼层
老李飞刀 发表于 2023-8-21 11:35
能设计个检波直流推动喇叭的更完美了

这个就是检波后,用TDA2822M小功放直推。
回复 支持 反对

使用道具 举报

     
发表于 2023-8-21 16:16:46 | 显示全部楼层
gxg0000 发表于 2023-8-21 15:50
这个就是检波后,用TDA2822M小功放直推。

明白,
我的意思是能不能找个强台单独检波,利用此电压推动2822或者小功率管。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 22:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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