步驟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文章
51195瀏覽量
754419 -
發電機
+關注
關注
26文章
1645瀏覽量
67720
發布評論請先 登錄
相關推薦
評論