打印
[51单片机]

振南实战项目(模控开关与音频播放) 之2《成本与功能取舍》

[复制链接]
1159|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
znmcu|  楼主 | 2016-3-24 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原出处:
http://www.znmcu.cn/zn_project_acs_player_2.html

振南电子技术群177856520
=======================================
振南实战项目 模控开关与音频播放 2
                              ----《成本与功能的取舍》
项目初期,0.2V信号的检测还是首要的问题。项目方又补充了需求:要尽量降低成本,越低越好!
一开始项目方打算使用STC15W204S SOP8封装,STC官方报价是1.35元。
我向项目方提出了几个问题:
1、Flash容量太小,音频数据存放在哪?
2、没有硬件PWM,如何作PWM音频?IO模拟PWM效果会比较差。
3、没有ADC如何采集电压信号?
他问我:“那需要多大的Flash容量?” 我说:“你要播放的音频数据有多大?” 他说:“我要播放的就是电话铃声,大约2秒吧!” 我说:“按能够接受的最低采集率8KHZ来说,按8位计算,需要大约16KB容量!” 他说:“那么大啊?怎么能让数据量小一点?” 我说:“可以降低采集率,不过8KHZ已经是最低了,再低的话音效就很差了!” 【音频格式默认使用无压缩的PCM
最后解决方案是:将音频缩短到了1s,换用Flash容量更大的单片机芯片。考虑到PWMADC,最终选用IAP15W413AS SOP16封装。
在价格上贵了近1块钱,关于这一点,项目方很不满意,但也没什么办法!他一开始选STC15W204,是因为他很多问题没有考虑到,只单单考虑成本低。
大家有没有注意到,STC的单片机中集成有一个模拟比较器,它的功能就是将两个信号进行比较,如果v2大于v1,则输出1,反之输出0
对于0.2V电压的检测,振南一开始的方案是使用ADC+基准电压。当我看到STC这个模拟比较器之后,我马上PASS掉了前面的方案。我可以不用ADC,而把0.2V电压检测出来!
基本原理是这样的:
图中V11.2V电压,经过5K-1K分压得到,为恒定的0.2V电压。使用模拟比较器将它与V2(待测信号)进行比较,输出V2>V1的结果。
这样一来,我们就可以把ADC省下了!这样一来,似乎我们使用IRC15W207S也差不多(把音频再缩一缩,降为6KHZ采样率,然后通过一些音频插值算法来补偿),它价格才1.4元。但是一个硬伤又来了,STC芯片好像没有ADC的型号,PWM也没有!
那能不能IO模拟PWM呢?IO模拟PWM和硬件PWM在效果上有什么差异?最重要的一点就是IO模拟PWM的频率可能远没有硬件PWM高。有人说:“我原来用51IO模拟PWM去作电机调速也很好啊,频率不需要太高吧!”那是电机控制,PWM2K~10K即可【关于PWM的一些讲解,请见振南网站相关实验】。但是于音频来说,因为它电压变化要求比较精准,换句话说,我们要用PWM来产生一个DAC的效果。通过数字合成的方式产生出对应的模拟量。在理论上来说,对于音频PWM的频率要达到音频频率的20倍以上,也就是说对于一个音频采样点,在它的采集周期内,PWM要产生不低于20PWM周期。这样,再加上PWM后级的一些滤波电路,隔直处理等,才能更接近于音频信号。
我们来看看常见的音频信号频率:
大部分的音频频率都几百HZ10KHZ这个范围内,以10KHZ来说,20倍就是200KHZ。我们要让PWM的频率达到200KHZ,才能得到比较好的音频播放效果。
STC单处机最高工作频率为33MHZ,他的8PWM的频率为33000K/256=130KHZ。可以看到,即使是硬件PWM也达不到200KHZ,但起码能用于音频。而IO模拟PWM,基于定时器与中断,因为涉及中断响应,出栈入栈,导致它PWM频率最高也就在4KHZ这个水平上。作一些惯性器件的控制也可以,比如电机、加温等,但是作音频,还是不行!
那有人问,我就用4KHZ PWM来作音频会怎么样?答:很可能根本没声音!
1、频率越低,越趋向于直流,交流特性越弱,根本就不了隔直电容;
2、频率太低,对音频采样点电压的合成不够,听到的很可能就是“呜呜”声!
所以,硬件PWM是必需的,IAP15W413ASSTC15W408AS)还是比较合适的选择。

相关帖子

沙发
ifree64| | 2016-3-27 07:54 | 只看该作者
本帖最后由 ifree64 于 2016-3-27 08:04 编辑

写得非常好。
姑妄言之:不限制于STC,采用STM8S003F3,嘉立创商城含税的价格是100片1.47。8K Flash,硬件PWM,4路10bitADC。1秒音频,6KHz 8位采样,6KByte数据,还剩2K,尽量优化程序,似乎能够用。程序空间如果不够,或者再稍微降低一点采样率,或者再稍微缩短一点点播放时间。
不过有一点不太适合,就是最低工作电压只能到2.95V,选用stm8L呢,价格又不合适了。

使用特权

评论回复
板凳
zhenxing2000| | 2016-3-27 09:43 | 只看该作者
你是哈理工的那个于振南吗?

使用特权

评论回复
地板
znmcu|  楼主 | 2016-4-6 10:24 | 只看该作者
哈工程

使用特权

评论回复
5
znmcu|  楼主 | 2016-4-6 10:25 | 只看该作者
这是一种很蹩脚的小项目

使用特权

评论回复
6
yangwenguan| | 2016-4-6 16:01 | 只看该作者
ic选型有问题, 用stm8s003, 6路adc, 8k flash, 1.20

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:振南的znFAT -- 单片机上上的FAT32文件系统 www.znmcu.cn

4474

主题

5195

帖子

33

粉丝