磁动力电子网-雕刻机DIY论坛,单片机论坛,CNCDIY,DIYCNC

 找回密码
 加入磁动力

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 16848|回复: 34

声音方位传感器(原创)

[复制链接]
发表于 2004-11-19 19:27:00 | 显示全部楼层 |阅读模式

这是我自己设计的声音方位传感器效果比较满意,装在机器人上就可以判断你说话的位置了!用了4个LM386和一块2051:

声音方位传感器(原创)

声音方位传感器(原创)
回复

使用道具 举报

发表于 2004-11-19 19:40:00 | 显示全部楼层
有更详细的吗???[em02]
回复 支持 反对

使用道具 举报

发表于 2004-11-20 08:27:00 | 显示全部楼层
我也来赞一下[em07]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-19 22:49:00 | 显示全部楼层

资料整理完毕!

电路图,LM386有4个同样的:

声音方位传感器(原创)

声音方位传感器(原创)

程序:

#include<at892051.h>

void main(void) { long int b;

while(1) { b=0; if(P3_0==1&&3_1==1&&3_2==1&&3_3==1)P1 = 0xFF; if(P3_0==0&&3_1==1&&3_2==1&&3_3==1) { for(;b<11110;) { b++; P1_0=0; if(b<1111) P1_1=0; else P1_1=1; } P1_0=1; } b=0; if(P3_0==1&&3_1==0&&3_2==1&&3_3==1) { for(;b<11110;) { b++; P1_0=0; if(b<2222) P1_1=0; else P1_1=1; } P1_0=1; } b=0; if(P3_0==1&&3_1==1&&P3_2==0&&P3_3==1) { for(;b<11110;) { b++; P1_0=0; if(b<3333) P1_1=0; else P1_1=1; } P1_0=1; } b=0; if(P3_0==1&&P3_1==1&&P3_2==1&&P3_3==0) { for(;b<11110;) { b++; P1_0=0; if(b<4444) P1_1=0; else P1_1=1; } P1_0=1; } } }

从程序可以看出为节省IO口采用脉宽输出:

回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-19 22:55:00 | 显示全部楼层

输出信号:

声音确认P1_0___------------------------_____一秒

第一传感器有信号输出P1_1___----_______________0.1秒

第二传感器有信号输出P1_1___--------____________0.2秒

第三传感器有信号输出P1_1___------------__________0.3秒

第四传感器有信号输出P1_1___----------------________0.4秒

[此贴子已经被作者于2004-11-20 4:00:57编辑过]
回复 支持 反对

使用道具 举报

发表于 2004-11-19 21:28:00 | 显示全部楼层
声音怎么传入得啊?
回复 支持 反对

使用道具 举报

发表于 2004-11-20 13:44:00 | 显示全部楼层

谢谢!!!!

[em01]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-10 20:22:00 | 显示全部楼层
C是最有优势的!方便移植就很管用,还有编写大型的程序时候你就明白它的优点了!
回复 支持 反对

使用道具 举报

发表于 2005-3-10 13:40:00 | 显示全部楼层
做机器人还用C来写程序吗?虽然可读性好多了,但用汇编更能保证效率!!!
建议改用汇编!!!
[em06]
回复 支持 反对

使用道具 举报

发表于 2005-5-23 20:46:00 | 显示全部楼层

楼主,请教以下几点:

1。采用脉宽输出,具体控制什么呢?

如果只是让CPU判断声音传过来的方位,那么if(P3_0==1&&3_1==1&&3_2==1&&3_3==0) 稍微延时后,再判断,不就可以了吗?

2,贴在5楼的波形输出我认为应该这样:

P1_0 ____————————————————

P1_1 ________——————————————

P1_2 _____________————————————

P1_3_________________——————————

以上是我个人的见解,还望楼主赐教!

回复 支持 反对

使用道具 举报

发表于 2005-5-23 20:49:00 | 显示全部楼层

哦,上楼的波形发错了!!!

第一传感器有信号输出P1_1____————————————————

第二传感器有信号输出P1_1________——————————————

第三传感器有信号输出P1_1_____________————————————

第四传感器有信号输出P1_1_________________——————————

回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-24 04:04:00 | 显示全部楼层
P1_0的一秒延时主要是抑制噪音的,也就是说声音有时候会持续一段时间我们要捕捉刚开始那一刹那然后进入循环发送信号。效果我觉得挺满意的,但是环境不能太吵。
回复 支持 反对

使用道具 举报

发表于 2005-5-24 09:38:00 | 显示全部楼层

恩,明白了谢谢楼主!

回复 支持 反对

使用道具 举报

发表于 2005-5-23 13:09:00 | 显示全部楼层

请问楼主,实践效果怎么样?

回复 支持 反对

使用道具 举报

发表于 2005-6-1 11:58:00 | 显示全部楼层
嘿嘿~~~好东西`~~~~
又学到不少~~
回复 支持 反对

使用道具 举报

发表于 2005-6-10 12:50:00 | 显示全部楼层
请问识别的准确度有多高
回复 支持 反对

使用道具 举报

发表于 2005-6-12 13:20:00 | 显示全部楼层
请问楼主,if(b<4444)是什么意思呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-12 14:27:00 | 显示全部楼层
脉宽时间控制
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-11 18:40:00 | 显示全部楼层
只要环境噪音小,可以次次识别成功!
回复 支持 反对

使用道具 举报

发表于 2005-11-5 19:09:00 | 显示全部楼层
这个不错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入磁动力

本版积分规则

QQ|小黑屋|手机版|Archiver|www.cdle.net 磁动力电子网 2001-2017 ( 粤ICP备10098153号

粤公网安备 44040402000001号

GMT+8, 2019-1-20 23:42

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.