佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1901|回复: 12

分享一下 我的small project

[复制链接]
发表于 5-3-2014 01:41 PM | 显示全部楼层 |阅读模式
在这我分享一下,我之前的小小的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 编辑

board.jpg
回复

使用道具 举报


ADVERTISEMENT

发表于 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 接收模块



要用光来侦察物体, 就要用调制的光源。。。为什么? 这样才能减少其他光源的干扰。。
为什么要对IR 光源 的开和关, 是要确定那个信号是我们发出去的。

这个是在模仿laser的特征吗?你把IR LED的infrared focus在一个point(ideal 的话)。

只是更聚光, 没有到laser 的等级

用IR 做反射式测量物体, 是有限制的, 一定的距离过后, 就算你再怎样加强你的IR 光源, 距离也不会再增加。


回复

使用道具 举报

Follow Us
 楼主| 发表于 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 编辑

回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
kmy.111014 发表于 12-3-2014 10:52 PM
是不是很有成就感咧?

如果你觉得想挑战更多,我给你一个idea.
你现在能用IR sensor来测量距离,如果你有一堆的IR sensors, 当我把一个物体划过IR sensor 堆的时候,不同角度的IR sensor就会测量到对那个物体的距离,从而得到一堆数据,你把数据收集起来,发回电脑,用软体recontruct 那个物体的image。就变成了 3D object scanner。

非常困难, 而且还附带很多条件。
IR 很难用做测量距离。

你发射IR 光源, 如果要知道距离, 就要知道发射回来信号的大小, 那个就要用IR photo diode 之类的。IR photo diode, 也很容易受到环境光的影响。。

你的IR光源的波长要考虑, IR 接收也要吻合那个波长, 才知道信号是你发出的。IR 光源, 也会被不同颜色的物体吸收或反射, 变成, 你要检测的物体, 颜色必须要一致。白色最能反射, 黑色吸收。


而我告诉教Weitao 的方法是用IR 接收模块。。IR 光源是要调制去36~38Khz, IR 接收模块只是对这个调制信号解调, 才输出1 或0,(有/没有), 而不是信号的强度。

如果, 你用IR 接收模块, 靠调制IR 光源的强度, 你得不到线性的变化,或是非常粗劣的对比。。 另外, 物体的颜色如不一致, 你的信号是很奇怪的曲线, 同样的物体大小, 不同的颜色, 不同的结果。。


用IR 测量距离的, 目前只有使用Sharp 的距离感应器。。
他的原理是IR 光源发射出去, 然后测量物体反射的角度(Position Sensitive), 从角度, 我们计算出物体的距离。

sharp -IR-03.jpg


sharp -IR-02.jpg




本帖最后由 pic 于 20-3-2014 11:03 AM 编辑

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 24-4-2024 04:28 PM , Processed in 0.066723 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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