查看: 2061|回复: 24
|
超音波 circuit 问题 还是 source code (PIC16F877A)问题 (急)
[复制链接]
|
|
各位大大,这是我的 final year project .... 下面是我的综合超音波系统路线。
红色的是连接放大器部分
蓝色的是连接接受器部分
青色的是连接switches部分
紫色的是连接LCD
我是用PIC generate clock pulse 40 kHz,出 Pin 35.
首先这个系统的路线行得通吗??
如有什么不明白,请大家提出来。。。 我会讲解清楚。过后一些我会把更完整的资料全交上来。。。谢谢大家的帮忙。 |
|
|
|
|
|
|
|
发表于 18-2-2008 07:55 PM
|
显示全部楼层
原帖由 养猴人 于 18-2-2008 01:15 PM 发表
各位大大,这是我的 final year project .... 下面是我的综合超音波系统路线。
红色的是连接放大器部分
蓝色的是连接接受器部 ...
我要先声明我没有用过超音波零件。
你为什么不解释清楚你要做的 project 构思? 还要等人家问呢?
你是做发射还是接收器,我没用过,接收是要与发射讯号连接才能用的吗?
你的 MCU 第六支脚是用来检查讯号是从 TRx-L 或 TRx-R 对吗?所以这个脚最好接上一个电阻下地,以防止当切换是不稳定状态。不要直接进入 MCU 脚,再加上一个串联电阻更理想。
看来你的 U2:B 将永远无法被选中,且MCU 第六支脚将只会读到 0V。 原因是电流将通过Q3 下地,而无法得到5V。
[ 本帖最后由 rothmans 于 18-2-2008 08:09 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 19-2-2008 12:45 AM
|
显示全部楼层
# 你为什么不解释清楚你要做的 project 构思? 还要等人家问呢?
不好意思,由于当时我赶时间。。erm, 我前年已经有讲解过我project 构思。 就是 "ultrasonic find range"
http://chinese3.cari.com.my/myfo ... 4667&extra=page%3D7
这个其实是用来做 car parking ultrasonic sensor 的。
一开始,我先由PIC,从 pin 35 send 出 pulse 的信号, 然后通过transmitter 的 circuitry 把它发送到其中一粒的transceiver sensor. 至于那一粒会收到,那就要看switch 选择那一粒 sensor 了。 之后通过同一个sensor 从 4066 的output 进入receiver part. 最后由MCU 算出它的时间,把 detect 到固体的距离呈现在LCD 的板上。
#你是做发射还是接收器,我没用过,接收是要与发射讯号连接才能用的吗?
当然是有发射器和接收器。发射讯号与接收连接,有什么问题吗?有何意见?
#你的 MCU 第六支脚是用来检查讯号是从 TRx-L 或 TRx-R 对吗?所以这个脚最好接上一个电阻下地,以防止当切换是不稳定状态。不要直接进入 MCU 脚,再加上一个串联电阻更理想。
是的。 要用多少的才有效呢?? 用大概 2kohm 就好吧。
#看来你的
U2:B 将永远无法被选中,且MCU第六支脚将只会读到
0V。
原因是电流将通过Q3 下地,而无法得到5V。
Q3 是用于做 inverter configuration 的,当 switch 选择的是 upper position 的话,base 会有 current, 那么C 就有current 去 E,所以这个是 处于 saturation mode,电流将从C 去 E 直接下地。所以 那么 TRx L 不会被启动,反而 current 会从 B 那边分叉线通去 4066 的 control (pin 12)。。就这样 TRx R 被选了。
但是如果 switch 选择的是 lower position 的话,那么 Q3 是 off 。。。很明显的 b 那边没有current,所以 Q3 是Off 的,当voltage 来时就会 通过 C 的 分叉线,进入了 4066 (pin 13) 启动了 TRx R。
酱的解释对吗?如有不对请纠正我。
但是,可能你说的是对的。
现在全部的 part 都装在 test board 了。但是不成功,trouble shoot 了,也装了几遍,还是一样面对同样的问题。。那LCD screen 一直没有反应,无论我 switch 去left 还是 right。。。
所以现在只好求求各位大大帮帮忙,看我的路图是否行的通吗? 再来看看 别的问题的存在。
[ 本帖最后由 养猴人 于 19-2-2008 03:12 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 19-2-2008 01:11 AM
|
显示全部楼层
我想4。7K 咯。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 19-2-2008 04:57 PM
|
显示全部楼层
这两个 1N4148 diode -|《——
——》|- 放相反在 transmitter part 的是不是用来 ignore noise?
如果放那个倒转 ——》|-
-|《—— 是不是也行? |
|
|
|
|
|
|
|
楼主 |
发表于 20-2-2008 09:40 AM
|
显示全部楼层
define osc 20
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
T1_LowerBYTE var word
T1_UpperBYTE var word
TOF var word
Distance var word
Sensor_old var byte
Sensor_new var byte
Loop_cnt var byte
TRISA = %11111011
TRISB = %00000000
CMCON = %00000101
CVRCON = %11000110
INTCON = 0
LCDOUT $FE, 1
pause 500
Main:
T1CON = %00000000
PIR1.0 = 0
if CMCON.7 = 1 then PORTA.1 = 1
Sensor_old = PORTA.4
T1CON = %00000001
Gosub Send40k
TMR1L = 0
TMR1H = 0
pauseus 1200
Sensor_new = PORTA.4
if Sensor_new != Sensor_old then Main
repeat
if CMCON.7 = 1 then
T1CON = %00000000
goto Calculate_Dist
endif
until PIR1.0 = 1
if PORTA.4 = 0 then
LCDOUT $FE, 1, "Object is out of range from right sensor!"
else
LCDOUT $FE, 1, "Object is out of range from LEFT SENSOR!"
endif
pause 1000
Goto Main
Calculate_Dist:
T1_LowerByte = TMR1L
T1_UpperByte = TMR1H
TOF = T1_LowerByte + (T1_UpperByte * 256)
DISTANCE = TOF/29
if PORTA.4 = 0 then
LCDout "Ditance from the Right sensor (in mm) = ", dec distance
else
LCDout "Distance from RIGHT sensor (in mm) = ", dec Distance
endif
pause 1000
Goto Main
Send40k :
for Loop_cnt = 10 to 0 step -1
PORTB = %00000100
pauseus 11
PORTB = %00000000
pauseus 10
next Loop_cnt
return |
|
|
|
|
|
|
|
发表于 21-2-2008 12:05 PM
|
显示全部楼层
建议你在Crystal的两端加上两个1pF的ceramic cap.让你的clock更稳~ |
|
|
|
|
|
|
|
楼主 |
发表于 21-2-2008 12:52 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 21-2-2008 01:01 PM
|
显示全部楼层
原帖由 rothmans 于 18-2-2008 19:55 发表
我要先声明我没有用过超音波零件。
你为什么不解释清楚你要做的 project 构思? 还要等人家问呢?
你是做发射还是接收器,我没用过,接收是要与发射讯号连接才能用的吗?
你的 MCU 第六支脚是用来检查讯 ...
听了你的意见,在 Q3 的 emmitter 加了一个 resistor , 果然见效。。。LCD 可以show left 和 right 了。。谢谢你
可是还是很不stable, sensor 方面, detect object 很不 stable,(例如: 无论有没有detect 到 object,LCD 都会出现distance= XXX) |
|
|
|
|
|
|
|
发表于 21-2-2008 01:31 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 21-2-2008 02:21 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 22-2-2008 03:28 AM
|
显示全部楼层
对不起。。。
第六楼=PIN 6 是吗??
如是哪
养猴人 expland 有点wrong..
PIN 6我们使用来choose to function Right sensor or LEFT sensor.
养猴人
expland 的是PIN 3 的东西 来的。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 22-2-2008 05:27 PM
|
显示全部楼层
回复 12# 电动舞 的帖子
什么啦!第六楼,是上面 6# 的啦。 不是pin 6啦。。。。 那么请问你住几楼? 四楼还是住在 pin4 里面。。?
[ 本帖最后由 养猴人 于 22-2-2008 05:29 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 29-2-2008 12:05 AM
|
显示全部楼层
我有试过有 OSC 来 check 看PIC是否send out 40 kHz (check from RB2), 可是只测量到50 Hz 罢了。。。
我想是我的code有问题吧。。。
请大家帮帮忙,看有什么地方要更改的
。。。谢谢
SEND40K: 'Function that generates 10 cycles of 40k Hz ultrasonic pulses at PORTB.2
For LOOP_CNT = 10 To 0 Step -1 'Count from 10 to 0 by 1
PORTB=%00000100 'First half of the cycle
PAUSEUS 11 'Create delay of 11 us (ON Time)
PORTB=%00000000 'Second half of the cycle
PAUSEUS 10 'Create delay of 10 us (OFF Time) next count
Next LOOP_CNT
Return
[ 本帖最后由 养猴人 于 29-2-2008 11:36 AM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 29-2-2008 12:06 AM
|
显示全部楼层
SEND40K: 'Function that generates 10 cycles of 40k Hz ultrasonic pulses at PORTB.2
For LOOP_CNT = 10 To 0 Step -1 'Count from 10 to 0 by 1
PORTB=%00000100 'First half of the cycle
PAUSEUS 11 'Create delay of 11 us (ON Time)
PORTB=%00000000 'Second half of the cycle
PAUSEUS 10 'Create delay of 10 us (OFF Time) next count
Next LOOP_CNT
Return
[ 本帖最后由 养猴人 于 29-2-2008 11:35 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 29-2-2008 12:36 PM
|
显示全部楼层
原帖由 养猴人 于 29-2-2008 12:06 AM 发表
SEND40K: 'Function that generates 10 cycles of 40k Hz ultrasonic pulses at PORTB.2
For LOOP_CNT = 10 To 0 Step -1 'Count from 10 to 0 by 1
P ...
为什么不用内建的PWM呢? |
|
|
|
|
|
|
|
楼主 |
发表于 29-2-2008 03:29 PM
|
显示全部楼层
回复 16# pic 的帖子
请问PIC 大大 什么是内建的PWM? 可以教我和讲解吗? |
|
|
|
|
|
|
|
发表于 29-2-2008 09:42 PM
|
显示全部楼层
877A里有Pulse Wave Modulation的function...
请参考它的datasheet... |
|
|
|
|
|
|
|
楼主 |
发表于 1-3-2008 03:45 PM
|
显示全部楼层
求跪了。。。有没有一些例子可以给我参考的。因为看了真的不知该从如何下手。。而且期限就快到了。请大家帮帮忙 |
|
|
|
|
|
|
|
发表于 2-3-2008 05:01 PM
|
显示全部楼层
原帖由 养猴人 于 29-2-2008 03:29 PM 发表
请问PIC 大大 什么是内建的PWM? 可以教我和讲解吗?
我不会PICbasic , 但从PICbasic的help来看, 是以下的command
HPWM 1,127,40000 ' Send a 50% duty cycle PWM signal at 40kHz
40Khz 的方波会从16F877A 的Pin C2 输出。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|