步骤1:发电机
理论
外围导线发生器电路将基于著名的NE555计时器。 NE555或更常用的555是用于计时器或多谐振荡器模式的集成电路。由于其易用性,低成本和稳定性,该组件至今仍在使用。每年生产十亿个。对于我们的发电机,我们将使用Astable配置的NE555。稳定的配置允许将NE555用作振荡器。两个电阻和一个电容器可以修改振荡频率以及占空比。组件的布置如下图所示。 NE555产生一个(粗糙的)方波,该方波可以沿周边导线的长度延伸。请参考NE555数据手册中的定时器,其中包含一个示例电路以及工作原理(8.3.2 A稳定操作)。德州仪器(TI)不是NE555 IC的唯一制造商,因此如果您选择其他芯片,请务必查看其手册。我们确实提供了这个不错的555定时器焊接套件,它将使您有机会在通孔封装中焊接555定时器的所有内部组件,以使您详细了解该电路的操作。
原理图和原型设计
NE555手册(8.3.2 A稳定操作部分)中提供的原理图非常完整。添加了一些其他组件,并在下面进行讨论。 (第一张图片)
用于计算输出方波频率的公式为
f = 1.44/((Ra + 2 * Rb)* C)
生成的方波的频率范围将在32Khz和44KHz之间,这是一个不应干扰其他封闭设备的特定频率。为此,我们选择了Ra = 3.3KOhms,Rb = 12KOhms + 4.7KOhms电位计和C = 1.2nF。电位计将帮助我们改变方波输出的频率,以匹配LC Tank电路的谐振频率,这将在后面讨论。输出频率的理论最低和最高值将通过公式(1)计算如下:最低频率值: fL = 1.44/(((3.3 + 2 *(12 + 4.7))* 1.2 * 10 ^ (-9))≈32698Hz
最高频率值: fH = 1.44/((3.3 + 2 *(12 + 0))* 1.2 * 10 ^(-9 ))≈43 956Hz
由于4.7KOhms电位计永远不会达到0或4.7,因此输出频率范围将从33.5Khz到39Khz不等。这是发生器电路的完整原理图。 (第二张图片)
如示意图所示,添加了很少的其他组件,下面将对其进行讨论。这是完整的BOM:
R1:3.3 KOhms
R2:12 KOhms
R3(限流电阻):47欧姆(需要足够大的功率以2W的功率进行散热)
R4:4.7 KOhm电位计
C2,C4:100nF
C3 :1.2nF(1000pF也可以完成工作)
C5:1uF
J2 :螺钉端子(两个位置)
IC1:NE555精密定时器
示意图中添加的其他部件包括桶形插孔(J1),可轻松连接至墙上适配器(12V)和螺丝端子(12)方便地连接到外围电线。外围线:请注意,外围线越长,信号衰减越严重。我们使用大约100英尺的22号多股线测试了该装置(与地下埋入地钉在一起)。电源:难以置信的是常见的12V壁式适配器,任何高于500mA的额定电流都可以正常工作。您也可以选择12V铅酸或11.1V LiPo使其保持在外壳内,但请确保其不受天气影响并在不使用时将其关闭。在这里,我们提供了构建发生器电路时可能需要的一些零件:
2.1mm桶形插孔至端子或此2.1mm桶形插孔适配器-兼容面包板
400扎带点互锁透明无焊面包板
65 x 22规格的跨接线
DFRobot电阻器套件
SparkFun电容器套件
12VDC 3A壁式适配器电源
这是发生器电路在面包板上的外观(第三幅图片)
步骤2:结果
如下面的示波器屏幕快照所示,该信号发生器电路的输出(与Micsig 200 MHz 1 GS/s 4通道数位板一起拍摄)示波器),我们可以看到一个(粗糙的)方波,其频率为36.41KHz,幅度为11.8V(使用12V电源适配器)。可以通过调节R4电位器来稍微改变频率。
无焊面包板很少是长期解决方案,而最适合用来制作快速原型。因此,在确认发生器电路正常工作,产生频率范围为33.5Khz和40KHz(通过R4电位器可变)的方波后,我们设计了仅带PTH(直通孔)的PCB(24mmx34mm) )组件,使其成为一个不错的小型方波发生器板。由于通孔组件用于面包板的原型制作,因此PCB也可以使用通孔组件(而不是表面安装),并且可以轻松进行手工焊接。组件的放置位置不准确,您可能会发现需要改进的地方。我们已经提供了Eagle和Gerber文件供下载,以便您可以制作自己的PCB。可以在本文结尾的“文件”部分中找到文件。这是设计您自己的电路板时的一些技巧:将桶形连接器和螺钉端子放在电路板的同一侧,使组件彼此相对靠近,并尽量减少走线/长度。将安装孔设置为标准直径,并且易于安装。复制矩形。
第3步:电线安装
安装电线?与其掩埋它,不如简单地使用钉子将其固定到位。您可以随意使用任何将电线固定在适当位置的方法,但是塑料效果最好。一包用于机器人割草机的50根钉子往往很便宜。敷设电线时,请确保两端在同一位置相遇,以通过螺钉端子连接到发生器板上。
步骤4:耐候性
由于该系统很可能会留在室外以在户外使用。外围导线需要防风雨涂层,并且发电机电路本身位于防水盒中。您可以使用此凉爽的外壳保护发电机免受雨淋。并非所有导线都相等。如果您打算将电线留在外面,请务必购买正确的电线,例如,这种不耐紫外线/防水的Robomow 300‘周边电线屏蔽会随着时间的流逝而迅速降解并变脆。
第5步:传感器
理论
现在,我们已经建立了发生器电路并制作了为确保它按预期运行,是时候开始考虑如何检测通过电线的信号了。为此,我们邀请您阅读有关LC电路(也称为储能电路或调谐电路)的信息。 LC电路是基于并联连接的电感器/线圈(L)和电容器(C)的电路。该电路用于滤波器,调谐器和混频器。因此,它通常在无线广播传输中用于广播和接收。我们将不讨论有关LC电路的理论细节,但是要理解本文中使用的传感器电路,最要牢记的是计算LC电路谐振频率的公式,如下所示:
f0 = 1/(2 *π*√(L * C))
其中L是线圈的电感值,单位为H(亨利),C是电容器的电容值,以F为单位(法拉)。为了使传感器能够检测到进入电线的34kHz-40Khz信号,我们使用的振荡电路应在该范围内具有谐振频率。我们选择L = 1mH和C = 22nF,以获得使用公式(2)计算的33 932Hz谐振频率。当电感器距电线约10cm时,由谐振电路检测到的信号幅度将相对较小(当我们测试传感器电路时,最大值为80mV),因此,需要进行一些放大。为此,我们在非反相配置中使用了流行的LM324运算放大器来放大增益为100的信号2个阶段的放大,以确保在距离大于10cm的地方获得良好的可读模拟信号。传感器的输出。本文提供了有关运算放大器的有用信息。另外,您可以看一下LM324的数据表。这是LM324放大器的典型电路原理图:非反相配置的运算放大器(下图)
使用非反相增益配置的公式Av = 1 + R2/R1。将R1设置为10KOhms,将R2设置为1MOhms将提供100的增益,这在所需的规格之内。为了使机器人能够检测到不同方向的外围导线,更合适的是在其上安装多个传感器。机器人上的传感器越多,它将更好地检测边界线。在本教程中,由于LM324是四通道放大器(这意味着一个LM324芯片具有4个独立的放大器),因此我们将在板上使用两个检测传感器。这意味着使用两个LC电路,每个电路将具有2级放大。因此,只需要一个LM324芯片。
步骤6:原理图和原型制作
如上所述,传感器板的原理图非常简单。它由2个LC电路,一个LM324芯片和几个10KOhms和1MOhms电阻器组成,以设置放大器的增益。
以下是您可以使用的组件列表:
R1,R3,R5,R7:10KOhm电阻
R2,R4,R6,R8:1MOhm电阻
C1,C2:22nF电容器
IC:LM324N放大器
JP3/JP4:2.54mm 3针M/M插头
电感1,2,:1mH *
* 1mH电感,额定电流为420mA,Q因数为40 252kHz,应该可以正常工作。我们将螺丝端子添加为原理图中的电感器引线,以便将电感器(引线焊接到电线上)放置在机器人上的方便位置。然后,(电感器的)导线将连接到螺钉端子。 Out1和Out2引脚可以直接连接到微控制器的模拟输入引脚。例如,您可以使用Arduino UNO板或更佳的BotBoarduino控制器进行更方便的连接,因为它的模拟引脚分为3个引脚(信号,VCC,GND),并且还兼容Arduino。 LM324芯片将通过微控制器的5V供电,因此,传感器板上的模拟信号(检测到的波)将在0V和5V之间变化,具体取决于电感器和外围导线之间的距离。电感器与外围导线越近,传感器电路输出波的振幅越高。
步骤7:结果
从下面的示波器屏幕截图中可以看到,当电感与外围导线的距离为15cm时,在LC电路输出处检测到的波被放大并饱和在5V。
与生成器电路相同,我们为传感器板设计了一个漂亮的紧凑型PCB,带有通孔组件,该传感器板具有两个振荡电路,一个放大器和两个模拟输出。可在本文结尾的“文件”部分中找到文件。
步骤8:Arduino代码
您可以使用的Arduino代码对于您的周边导线发生器和传感器来说非常简单。由于传感器板的输出是两个从0V到5V的模拟信号(每个传感器/电感一个),因此可以使用AnalogRead Arduino示例。只需将传感器板的两个输出引脚连接到两个模拟输入引脚,然后通过修改Arduino AnalogRead Example读取相应的引脚即可。使用Arduino串行监视器,当您将电感器连接到外围导线时,应该看到所使用的模拟引脚的RAW值在0到1024之间变化。
该代码读取了AnalogPin上的电压并显示
int AnalogPin = A3; //连接到模拟引脚3的电位计抽头(中间端子)//外部接地和+ 5V
int val = 0; //用于存储读取值的变量
void setup(){
Serial.begin(9600); //设置序列
}
void loop(){
val = AnalogRead(analogPin); ////读取输入引脚Serial.println(val);//调试值
}
-
传感器
+关注
关注
2551文章
51193浏览量
754410 -
发电机
+关注
关注
26文章
1645浏览量
67720
发布评论请先 登录
相关推荐
评论