pic超声波nba竞猜计通过传输短脉冲工作 声音在耳朵上的频率(超声声或超声)。 之后微控制器借助少数帮助侦听回声 晶体管和比较器。
从传输到回声接收的时间让您计算 nba竞猜物体的nba竞猜。
范围 | 〜5cm - 300cm(约。) |
准确性 | +/-3cm |
换能器频率 | 40kHz |
内部振荡器频率 | 4MHz |
该项目使用5个标准NPN晶体管。三个被用作 自偏置模式中的放大器以放大来自传感器的接收信号, 两者用作达灵顿对,以通过更高电流输出传输到 the transmitter.
比较器用于检测阈值回声检测 水平 - 所以没有微控制器以外的特殊组件 超声波TX / RX模块,其标准为40kHz类型。
笔记: 当您接近300厘米时,更难接收 反射信号,因此实际范围可能更接近200厘米。 SR04. 由于它使用更高的增益opamps,单位将执行更好。
这种超声波nba竞猜计电路是实验性的 教育以来,您可以购买准备好的模块,例如HC-SR04 无疑方便 - 您提供脉冲触发器,它们提供nba竞猜 (脉冲宽度编码)。这些快速而且非常易于使用,但没有 展示正在发生的事情。
该设计使用外部组件,比较器和 晶体管实现相同的结果。
16F88还具有内置的比较器和参考水平 生成器可以节省组件,但这种设计可以与任何一起使用 具有捕获模块的微控制器。可能会使用它 使用16F84使用一些仔细编码进行时间测量。
笔记: 使用Opamps,您应该使用3个每个设置到a 增益为10,给出整体x1000增益(如果使用324种)。如果你选择一个 更有能力的opamp,如现代轨到铁路MCP301或MPC302然后你可以 减少(由于GBP更高)。
注意,使用PIC MICRO的内部振荡器 这节省了两个引脚 - 可以用作正常的I / O引脚。
编译器 | mikroelectronika. MikroC compiler 自由! |
目标 | 16F88(重新标准到具有CCP模块的其他照片)。 |
软件级别 | 中等的。 |
软件说明 | 驱动器多路复用显示,控制CCP,中断使用。 |
硬件级别 | 中等的。 |
硬件笔记 | 高增益晶体管AMP。 |
项目版本 | 1.03 |
项目文件 | 输入您的详细信息以获得 向下load Link 并获得微控制器通讯: (您的电子邮件是安全的,永远不会
be sold or rented). |
如果需要,您可以重新编译项目文件 检查代码操作(使用内置模拟器)或更改源 代码。注意“十六进制文件”包含在下载中,以便您没有 重新编译源代码。
从脉冲传输到接收的时间 回声是通过空气传播的声能量所花费的时间 对象再次回来。
由于声速通过空气测量速度是恒定的 回声反射时间允许您使用该nba竞猜对象的nba竞猜 DST equation :
nba竞猜=(s * t)/ 2(以米为单位)
随着nba竞猜的往返,您需要将2除以2 nba竞猜I.E.从发射机到对象再次回来。
在哪里:
短信] | 空气中的声速 |
T [S] | 一轮 trip echo time. |
一些延迟时间:
往返回声时间 | nba竞猜 |
t = 588us | 10cm |
t = 5.8ms. | 1m |
注意:空气中的声速或多或少常量 330m / s(@0ºC) - 它主要变化,温度(〜340m / s @20ºC)。在这方面 项目我使用的是340m / s的值。假设项目是 在室内使用。通过修改它,您可以将其更改为您喜欢的任何内容 code.
您可以获得超声波传感器优化25kHz,32kHz, 40khz或宽带换能器。该项目使用40khz换能器但是 如果您对软件进行简单更改,它仍将与其他人合作。 接收器和发电机电路将正如它们一样工作。
注意:如果您使用不同的换能器,则必须更改 软件为换能器产生正确的频率,因为它们仅适用 在他们的特定工作频率。
40kz信号由微控制器容易生成,但是 检测需要敏感放大器。我使用了三个晶体管 接收器的放大器。
其次是峰值检测器和比较器 灵敏度阈值,使错误反射(较弱的信号)是 ignored.
该项目使用CCP模块(其捕获模式) 在CCP端口引脚处精确测量信号接收时间。当一个 信号触发CCP模块计时器1的值存储在CCP寄存器中 (or captured).
如果您存储计时器1的值,然后启用CCP 传输超声脉冲CCP将在比较器时触发 激活I.E.一旦收到超声波回波就会。
从CCP寄存器值中减去存储的值给出 机器周期的时间延迟。由于该项目使用4MHz主时钟 时间延迟将在微秒内测量。
该方案的最小nba竞猜约为5cm。看着 第一接收器放大器的输出显示它应该更多 准确在较低nba竞猜 - 它仍然是约2厘米的准确 相当不错。可能为更长的范围停止添加放大器 准确的短nba竞猜操作。
最大nba竞猜受灵敏度,增益和的限制 接收放大器的噪声性能以及发射功率和发射功率 传输持续时间。
对于该电路,最大nba竞猜约为3M。
以前的设计不正确地使用RA5作为输出,它是MCLRN引脚
只能用作输入。所以ra 5驱动到七个段被删除和
DP引脚(小数点)保持未连接。 RA6和RA7被搬走了一个7
段驱动位置。
您可以使用具有内部CCP的任何PIC微控制器 模块和足够的内存以保持程序并在电路中编程图片 through the ICSP.连接器。
该电路使用三个晶体管放大器和两个 晶体管输出驱动器和它可以由标准组件构成)。 比较器是众所周知的M311类型(你甚至可以使用Opamp作为一个 比较器,具有适当的电路变化,因为该系统不是特别的 high speed).
首先为什么要用它们?
我想看看你只能用晶体管做些什么,似乎 你可以做得很好,即,系统与其他nba竞猜相同 使用OP-AMPS设计。
当然,在使用OP-AMPS时,您可以实现较低的电源操作和使用 less components.
前两个晶体管放大器使用标准偏置来设置输出 在供应中间的收藏家。如果您查看DC条件 两(100k)输入偏置电阻超过5V到0V设置输入偏置点 2.5V。当VBE电压丢弃晶体管时's emitter junction 发射器处的电压为VBIAS - 0.6(约2V)。所以发射极限 = 2 / 2k2〜1ma。 IC = IE。因此,直流偏置点为5V-ICRC 2.7K * 1MA〜2.5V。
这些晶体管的AC增益是RC上的RC(但在AC的情况下 电容器在40kHz处具有40欧姆的阻抗)因此有效的RE是 固有晶体管发射极电阻(RE〜25Ohms)加上阻抗 电容器(RE为温度依赖)。所以增益是2k7 / 65〜40.如果用过 不同的温度,您将获得一些增益变化。
最后一个晶体管使用固定偏置来设置偏置点。 对于更稳定的放大器(受β变化的影响较小)使用相同的放大器 放大器作为另外两个。我刚刚用它来看看它是如何工作的 经常在其他电路中看到,它似乎很好。它会 然而,依赖于所用的确切晶体管(其β值),它将 也依赖于温度 - 这两者都会影响其偏见点和 gain.
比较器被设置为标准电路将小 滞后量(如果输入略有变化,则停止振荡) - 1M欧姆送回以设置滞后水平。
使用示波器监控信号RB3和RB0。使用RB3. 作为触发器,因为这是定期生成超声的信号。 RB0是检测到的回声。
通过转动预设设置比较器(RB0)低的输出 VR2完全在一个方向上。将换能器点指向约1米的物体 远离预设,直到出现信号(RB3之后的大约6ms)。
通过转动预设设置比较器(RB0)低的输出 VR2完全在一个方向上。将换能器点指向约1米的物体 远离预设,直到显示器产生'100' (approx).
向后移动电路板并转发以检查它是否显示 更大,然后较小的数字。检查较长的nba竞猜例如。点在这一点 天花板,然后是一个更近的对象。墙壁20-50cm。调整预设为 necessary.
您可以删除比较器并使用内部模拟 比较器,但这需要更多的软件来设置比较器级别。它 would require 'Up' and 'Down'按钮控制级别设置或 算法可以改变级别以找到最佳阈值。
使用温度传感器,您可以更改使用的值 声速(目前固定在340米/秒,即20ºC操作。 在室内!)。这将使PIC超声波nba竞猜计更准确 不同的环境。
当施加更高电压时,压电元件也会产生更多输出 使用电压倍增电路将增加本机的范围。还 使用负电压发生器和倍增器将增加整体 换能器输出的电压。
编译器项目文件
16f88_ultrasonic_ranger.mcppi.
C源文件。
16f88_ultrasonic_ranger.c.
标题文件。
比特
输出文件
16f88_ultrasonic_ranger.hex.
用于编译这些的教程 项目 files click here.
这包含除了位操作例程之外的所有代码 found in bit.h.
它进入一个连续的连续循环呼叫ulta_gen - 在40kHz处产生超声的常规。
使用模拟器设置Ultra_gen例程来设置 输出信号的定时为25us(40kHz)。然后重复这一点 每40毫秒。七个段显示器的所需刷新率为20ms 显示更新例程(SEG_DISPLAY_INT)在40ms上调用两次 时期。 (我真的应该说显示更新例程需要20ms和 调用这两次创造了总共40毫秒延迟)。
显示屏依赖于持久性以使其出现 显示器没有闪烁 - 刷新速度为50Hz或更高 工作(1/50Hz = 20ms)。
理论上你可以衡量的最大nba竞猜是 40ms * 340m =(13.6)6.8m(往返时间延迟的一半),但实际上 由信号调节电路限制。如果他们改变了你可以 get more range.
如果捕获发生在GCAPINT中指示,则DST 执行计算,更新变量val的值。 val是 七个段显示例程显示的值'seg_display_int' so val 连续刷新到七个段显示器。
中断例程仅在需要时启用 发生捕获(如果它确实)只存储第一个捕获 - 所以 忽略后面的反射(通过重置GCAPON)。
第一个反射应该是最强的,因此是最强的 最近的物体。当捕获变量t_capl时,t_caph和t_capo设置为 捕获寄存器的值将是计时器1的值 捕获模块触发。
目前我没有使用t_capo(并且应该这样) 计时器1溢出时滚动帐户。一切都发生了 偶尔(当发生溢出时)将生成错误的值 - for 手持有使用它根本不明显。
1.产生超声波 40khz(一个方波的几个脉冲)到tx
2.打开接收器。
3.从结束时计数时间 40kHz脉冲开始接收反射超声
4.超声波需要一个设定的时间 通过空气(主要因温度而异)
5.应用d = sxt(nba竞猜, Speed, Time)
你知道所花费的时间 往返 - 捕获模块在TX脉冲结束时启动 - 这只是计数Timer1的脉冲,直到它收到输入 - 它 - 捕获中断使程序跳跃中断例程在其中 当前捕获的时间存储在:
t_capl = ccpr1l;
t_caph = ccpr1h;变量gcapint = 1; // 捕获发生的信号。
表示捕获回声的主程序calc =((S1)<<8)+s2;
更改为16位数乘以340米/秒
厘米划分为100。所以calc *(340/100)/ 2
即Calc * 340/200
最终计算是
Calc *(((340/100)/ 2)/ 10) same as 340/2000
但是你不't want to do this 只有仅使用时一次计算
整数将溢出,所以它分成2件Calc = Calc * 34;
calc = calc / 2000;
即它与Calc *一样
340/2000但没有
溢出计算整数商店。
可变val分配
the calculated value
然后自动在7次上显示。
跳跃 超声波nba竞猜计 to Home page.
使用ADS1115精度16位ADC进行教程进行低功耗。
arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。
了解DigitalWrite()的工作原理......现在使用17倍宏宏!
如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。
使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。
HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。
新的! Comments
让你说到你刚刚阅读的东西!留下下面的框中的评论。