|
楼主 |
发表于 13-11-2007 04:38 PM
|
显示全部楼层
回复 #20 pic 的帖子
只是这样而已。。。
set_adc_channel(1);
b=read_adc();
b=(b/255)*3;
if(b>1){
output_high(pin_b0);}
else{
output_low(pin_b0);} |
|
|
|
|
|
|
|
发表于 13-11-2007 06:32 PM
|
显示全部楼层
请放完整的code, 包括 #fuse。。。
还有, 为什么
b=(b/255)*3; ?
还有, 你的图有更好的画法,
X1, C3, C4 不需要,(如要,C3 C4 要用CAP, 不是ECAP)
B2 可以用linear POT 来代替, 可以变。
你U2是什么目的作用?
[ 本帖最后由 pic 于 13-11-2007 06:42 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 13-11-2007 11:03 PM
|
显示全部楼层
回复 #22 pic 的帖子
我再尝试后没有那个的问题了。
“b=(b/255)*3”,这样的Analog-to-Digital Conversion对吗?因为sound detector的输出是3V。
program要怎样写才可以量到不同的level?比如说当输出小的时候只亮一个灯,中等时亮两个灯,很大时亮三个灯,以此类推,是用那个if,else if,else statement吗?
我知道X1, C3, C4在这里是可以省略。也谢谢告知这些资料。
其实我没有基础,但是却觉得这些东西很有趣,想学一学。
U2的输出是另一个ADC输入,以测试电池的电力,D1用来显示,当电力少过4V,D1会亮。而这里的Analog-to-Digital Conversion我用 a=(a/255)*5,因为7805的输出是5V。
DC motor应该要怎样接?有没有例子? |
|
|
|
|
|
|
|
发表于 14-11-2007 11:05 AM
|
显示全部楼层
原帖由 syin84 于 13-11-2007 11:03 PM 发表
“b=(b/255)*3”,这样的Analog-to-Digital Conversion对吗?因为sound detector的输出是3V。
小心注意你是用8bit 或 10bit。
program要怎样写才可以量到不同的level?比如说当输出小的时候只亮一个灯,中等时亮两个灯,很大时亮三个灯,以此类推,是用那个if,else if,else statement吗?
Switch case 也可以。
我知道X1, C3, C4在这里是可以省略。也谢谢告知这些资料。
其实我没有基础,但是却觉得这些东西很有趣,想学一学。
在论坛发表的话,我们要就画对的, 不然初学的人以为是对的就不好。
U2的输出是另一个ADC输入,以测试电池的电力,D1用来显示,当电力少过4V,D1会亮。而这里的Analog-to-Digital Conversion我用 a=(a/255)*5,因为7805的输出是5V。
不可以。
为什么不可以呢?那里不可以呢?大家来动动脑筋。。
Proteus 有Motor的modal, 看Example。 |
|
|
|
|
|
|
|
发表于 14-11-2007 04:39 PM
|
显示全部楼层
如果input 是 4V , 4/255x5 , 那么就拿不到答案的。
a=(a/5)x256 ??
乱撞得, 我不会用 ADC .... 乱来的
[ 本帖最后由 chan1314 于 14-11-2007 05:20 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 15-11-2007 01:49 AM
|
显示全部楼层
原帖由 pic 于 14-11-2007 11:05 AM 发表
小心注意你是用8bit 或 10bit。
我用PIC16F877A。8bit 对吗?
在论坛发表的话,我们要就画对的, 不然初学的人以为是对的就不好。
哦,对不起,请原谅我是论坛新人,以后会多注意的了。
不可以。
为什么不可以呢?那里不可以呢?大家来动动脑筋。。
是不是还要接Vrefh,Vrefl?
我也不会的。。。 |
|
|
|
|
|
|
|
发表于 15-11-2007 09:51 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 15-11-2007 09:51 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 15-11-2007 12:07 PM
|
显示全部楼层
原帖由 pic 于 15-11-2007 09:51 AM 发表
如是接Vref, 为什么?
因为built-in的ADC需要电流供应?
这个就不知道了。。 |
|
|
|
|
|
|
|
发表于 16-11-2007 04:19 PM
|
显示全部楼层
原帖由 syin84 于 13-11-2007 11:03 PM 发表
“b=(b/255)*3”,这样的Analog-to-Digital Conversion对吗?因为sound detector的输出是3V。
你的Formula是错的。
你用8bit, 那Value 是0~255.
从电路和coding里看,你是用Internal Vref 5V.
就是说 :
如input是5V, Internal Vref=5V
5V=255 (full scale)
如input是3V, Internal Vref=5V
(255 × 3V)/5V
= 153
所以, 你可以用的range是0~153, 如果你的input max 是3V的话。
“b=(b/255)*3”---》 错!
program要怎样写才可以量到不同的level?比如说当输出小的时候只亮一个灯,中等时亮两个灯,很大时亮三个灯,以此类推,是用那个if,else if,else statement吗? - #include <16F877a.h>
- #device ADC=8
- #fuses HS,NOWDT,PROTECT,NOLVP
- #use delay(clock=20000000)
- int b;
- void main()
- {
-
- setup_adc_ports( ALL_ANALOG );
- setup_adc(ADC_CLOCK_INTERNAL );
- set_adc_channel( 0 );
- while( TRUE )
- {
- b = read_adc();
-
- if (b>=153) //3V
- {
- output_high(pin_b0);
- output_Low(pin_b1);
- output_Low(pin_b2);
- }
- else if (b>=102) //2V
- {
- output_Low(pin_b0);
- output_High(pin_b1);
- output_Low(pin_b2);
- }
- else if (b>=51) //1V
- {
- output_Low(pin_b0);
- output_Low(pin_b1);
- output_High(pin_b2);
- }
- else
- {
- output_Low(pin_b0);
- output_Low(pin_b1);
- output_Low(pin_b2);
- }
-
- }
-
- }
复制代码U2的输出是另一个ADC输入,以测试电池的电力,D1用来显示,当电力少过4V,D1会亮。而这里的Analog-to-Digital Conversion我用 a=(a/255)*5,因为7805的输出是5V。
concept 错到完。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 16-11-2007 06:15 PM
|
显示全部楼层
回复 #30 pic 的帖子
哦,原来是这样。
我的路还有很长很长。。。要和大家好好学习。 |
|
|
|
|
|
|
|
楼主 |
发表于 18-11-2007 04:30 PM
|
显示全部楼层
回复 #30 pic 的帖子
"U2的输出是另一个ADC输入,以测试电池的电力,D1用来显示,当电力少过4V,D1会亮。而这里的Analog-to-Digital Conversion我用 a=(a/255)*5,因为7805的输出是5V。"
concept 错到完。。。
不能用这样的方法测试电池的电力?还有什么方法? |
|
|
|
|
|
|
|
发表于 18-11-2007 04:56 PM
|
显示全部楼层
原帖由 syin84 于 18-11-2007 04:30 PM 发表
不能用这样的方法测试电池的电力?还有什么方法?
有个问题要问你,
你要量的"电池的电力"过了7805后也是有分给PIC的对吗?
再想想PIC输入电压少过 5V (就是你说的电池不够力,7805 input < 5V,所以output <5V)会发生什么事?
结论:只是量电池的电压,(前提:PIC的电源一定要5V)可以用这个方法...
[ 本帖最后由 mwl_86 于 18-11-2007 05:00 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 18-11-2007 05:42 PM
|
显示全部楼层
回复 #33 mwl_86 的帖子
哦,这样啊。。。
谢谢。
如果要量声音的频率,应该要用什么?
op amp + 555 timer? |
|
|
|
|
|
|
|
发表于 18-11-2007 07:25 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 18-11-2007 09:29 PM
|
显示全部楼层
原帖由 syin84 于 18-11-2007 05:42 PM 发表
哦,这样啊。。。
谢谢。
如果要量声音的频率,应该要用什么?
op amp + 555 timer?
其实,你真正想要作的是什么?
你的project是什么题目?
你本来是要量声音强度,现在要量频率? |
|
|
|
|
|
|
|
楼主 |
发表于 18-11-2007 10:05 PM
|
显示全部楼层
回复 #36 pic 的帖子
其实,你真正想要作的是什么?
你的project是什么题目?
你本来是要量声音强度,现在要量频率?
如果可以的话,我是想要分别主要的几种声音,如电话铃声(铃-铃铃),火警(铃。。。。),门铃(叮咚)。因为声音可以用强度和频率量嘛,想看看那一个比较适用。我找到的资料都好像很复杂,所以就问问看有没有简单实用的方法咯。
其实我是要探测声音,如果可以的话,就分辨不同的声音,然后灯光随着不同的声音而有不同的闪法,LCD就显示那是什么声音。 |
|
|
|
|
|
|
|
发表于 18-11-2007 11:13 PM
|
显示全部楼层
原帖由 syin84 于 18-11-2007 10:05 PM 发表
如果可以的话,我是想要分别主要的几种声音,如电话铃声(铃-铃铃),火警(铃。。。。),门铃(叮咚)。因为声音可以用强度和频率量嘛,想看看那一个比较适用。我找到的资料都好像很复杂,所以就问问看有 ...
那种是Sound Recognition, 初学者应该没有这个能力作。。。
如硬要做,要用dsPIC或其他的DSP。 |
|
|
|
|
|
|
|
楼主 |
发表于 19-11-2007 12:11 AM
|
显示全部楼层
回复 #38 pic 的帖子
那种是Sound Recognition, 初学者应该没有这个能力作。。。
如硬要做,要用dsPIC或其他的DSP。
我找到的就是关于DSP的资料。
那就没有办法啦,就用回之前那个设计先咯。
dsPIC很难用的吗? |
|
|
|
|
|
|
|
发表于 19-11-2007 08:31 AM
|
显示全部楼层
原帖由 syin84 于 19-11-2007 12:11 AM 发表
我找到的就是关于DSP的资料。
那就没有办法啦,就用回之前那个设计先咯。
dsPIC很难用的吗?
先声明,digital signal processing 我不会,我没学过。
不过,如有好的开发工具,数学好,又明白原理的话,又有写便的sound recognition code modal,其实并不难。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|