查看: 2057|回复: 12
|
分享一下 我的small project
[复制链接]
|
|
在这我分享一下,我之前的小小的project:
Component 如下:
- PIC18F4550, crystal(20Mhz) , capacitor(2X 33pF)
- 2 set of IR(LED)
- LM324
- Speaker (8 ohm)
- 一些resistor (0.25W 够了)
- 2 X LED (任何颜色)
连接如图:
这是coding:
CONFIG FOSC=HS
;CONFIG WDT=OFF
LIST P=18F4550 ; the microcontroller that this program is written for
LIST F=INHX8M ; the file format chosen
#include P18F4550.INC ; the included file contains all SFR definitions and more
a0 equ 0x00
a1 equ 0x01
org 0h
goto main
org 50h
main clrf TRISD
setf TRISC
bsf PORTD,7;power on
bcf PORTD,4;off speaker led
bsf TRISA,0
movlw 0x0B
movwf a1
btfss PORTC,0
call speaker
bra main
speaker;speaker function
btg PORTD,0
bsf PORTD,4;on speaker led
call adcf
call ADCc
call TSf
movff ADRESL,a0
btfsc PORTC,0
return
bra speaker
T0f ;timer 0 = 10us
movlw 0xFF
movwf TMR0H
movlw 0xCE
movwf TMR0L
movlw 0x88
movwf T0CON
goto T0P1
T0P1 btfss INTCON,TMR0IF
bra T0P1
bcf INTCON,TMR0IF
return
TSf ;timer produce due to adc value(max=255)
call T0f
decf a0
bnz TSf
return
adcf ;adc init
movlw 0x03
movwf ADCON0
movlw 0x0E
movwf ADCON1
movlw 0x88
movwf ADCON2
return
ADCc btfsc ADCON0,1
bra ADCc
bcf PIR1,6
return
end
我只是用Timer,ADC和PWM而已。
如何function:
1)接进LM324的IR是为了模仿on-off switch的功能。
2)接进PIC(ADC pin)的IR是要读取它的analogue的data。我用的ADC bit size 是8bit(是可以自己set的)。之后,我把它的data 放进timer function。根据它的data,convert 成delay time。ADC value 越低,frequency越高。
本帖最后由 weitao 于 5-3-2014 03:28 PM 编辑
|
-
|
|
|
|
|
|
|
发表于 5-3-2014 03:57 PM
|
显示全部楼层
请问是什么应用?什么效果, 功能, 什么用途?用在哪里? |
|
|
|
|
|
|
|
楼主 |
发表于 5-3-2014 04:25 PM
|
显示全部楼层
pic 发表于 5-3-2014 03:57 PM
请问是什么应用?什么效果, 功能, 什么用途?用在哪里?
其实这只是测试 programmer的programming skill。(那时我连LED如何turn on都不知道)
这个short distance touchless switch application。我选择IR的原因是因为它容易使用(和便宜)。
用途吗?这个适合在detect surface的application。但是效果不好。原因IR的detect range太短。本人建议用ultrasonic sensor或其他range detect 比较高的sensor。
p/s:这只是个参考。
|
|
|
|
|
|
|
|
发表于 5-3-2014 04:52 PM
|
显示全部楼层
你的测量思路不对。。所以距离很短。。
如用IR 测量物体有无, 我可以做到1米的距离, 再远就不准了。
IR LED 用PIC MCU 的PWM 调制在38Khz, 接收用IR 接收模块IC。
要更远的距离, 就要加用聚焦镜, 可以做到3米左右。
测量物体的颜色也有关系。
本帖最后由 pic 于 5-3-2014 04:58 PM 编辑
|
|
|
|
|
|
|
|
楼主 |
发表于 5-3-2014 05:40 PM
|
显示全部楼层
pic 发表于 5-3-2014 04:52 PM
你的测量思路不对。。所以距离很短。。
如用IR 测量物体有无, 我可以做到1米的距离, 再远就不准了。
是啊!!但是那时我只是想如何用IR LED的output做出不一样的frequency罢了。
如果像版主所说的电路,那....两方都要IC(如果自己做电路的话) ,其中一方是有PIC来process data的。对吗?
要更远的距离, 就要加用聚焦镜, 可以做到3米左右。 这个是在模仿laser的特征吗?你把IR LED的infrared focus在一个point(ideal 的话)。
|
|
|
|
|
|
|
|
发表于 5-3-2014 09:58 PM
|
显示全部楼层
weitao 发表于 5-3-2014 05:40 PM
是啊!!但是那时我只是想如何用IR LED的output做出不一样的frequency罢了。
如果像版主所说的电路,那. ... 如果像版主所说的电路,那....两方都要IC(如果自己做电路的话) ,其中一方是有PIC来process data的。对吗?
IR 光源,可以从PIC 输出信号控制,可以用PWM 产生 大概37~38Khz 的载波Carrier , 然后可以On PWM , Off PWM开关控制IR LED , 产生出一个特定的信号源。
接收方面, 用下面这类IR 接收解调模块, 他会对载波38Khz 的IR 光源有输出。
IR 接收模块
要用光来侦察物体, 就要用调制的光源。。。为什么? 这样才能减少其他光源的干扰。。
为什么要对IR 光源 的开和关, 是要确定那个信号是我们发出去的。
这个是在模仿laser的特征吗?你把IR LED的infrared focus在一个point(ideal 的话)。
只是更聚光, 没有到laser 的等级
用IR 做反射式测量物体, 是有限制的, 一定的距离过后, 就算你再怎样加强你的IR 光源, 距离也不会再增加。
|
|
|
|
|
|
|
|
楼主 |
发表于 5-3-2014 10:57 PM
|
显示全部楼层
pic 发表于 5-3-2014 09:58 PM
IR 光源,可以从PIC 输出信号控制,可以用PWM 产生 大概37~38Khz 的载波Carrier , 然后可以On PWM , ...
这个我这学期听过老师说过,只是纸上谈兵罢了。
如果版主得空的话,可以分享下吗?
|
|
|
|
|
|
|
|
发表于 6-3-2014 02:55 PM
|
显示全部楼层
weitao 发表于 5-3-2014 10:57 PM
这个我这学期听过老师说过,只是纸上谈兵罢了。
如果版主得空的话,可以分享下吗?
都分享了啊。。还有什么你要知道的?或不清楚的部分?
实际的应用, 你可以去察看小便盆, 感应物体(站着小解的男人), 一段时间后, 自动冲水的控制器
吹干机,把手靠近, 晃动手, 自动吹风, 都应用了IR 物体检测, 变成你所谓的contactless switch。 本帖最后由 pic 于 6-3-2014 03:00 PM 编辑
|
|
|
|
|
|
|
|
发表于 9-3-2014 10:28 PM
|
显示全部楼层
Assembly code...为啥你用这个?C 不好用吗?
|
|
|
|
|
|
|
|
楼主 |
发表于 9-3-2014 10:45 PM
|
显示全部楼层
kmy.111014 发表于 9-3-2014 10:28 PM
Assembly code...为啥你用这个?C 不好用吗?
那时是为了明白什么是assembly language。(其实这是我的assignment)
|
|
|
|
|
|
|
|
发表于 12-3-2014 10:52 PM
|
显示全部楼层
weitao 发表于 9-3-2014 09:45 PM
那时是为了明白什么是assembly language。(其实这是我的assignment)
是不是很有成就感咧?
如果你觉得想挑战更多,我给你一个idea.
你现在能用IR sensor来测量距离,如果你有一堆的IR sensors, 当我把一个物体划过IR sensor 堆的时候,不同角度的IR sensor就会测量到对那个物体的距离,从而得到一堆数据,你把数据收集起来,发回电脑,用软体recontruct 那个物体的image。就变成了 3D object scanner。
不懂行不行得通咧?
我很爱挑战人。
|
|
|
|
|
|
|
|
楼主 |
发表于 12-3-2014 11:27 PM
|
显示全部楼层
kmy.111014 发表于 12-3-2014 10:52 PM
是不是很有成就感咧?
如果你觉得想挑战更多,我给你一个idea.
理论上是可以。只要你的IR receiver(黑色的)没有收到两个或以上的IR sensor的signal的话,是work的。只是不准。
|
|
|
|
|
|
|
|
发表于 20-3-2014 11:02 AM
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|