步驟1:脈寬調(diào)制(PWM) )
對于那些不熟悉PWM的人來說,它并不像聽起來那樣可怕。對于我們簡單的電機控制應(yīng)用程序而言,它真正的意思是生成一定頻率的方波,然后更改占空比。占空比定義為輸出與波形周期相比為邏輯高電平的時間比率。您可以在上圖中清楚地看到,頂部波形為10%占空比,中間波形為50%占空比,底部波形為90%占空比。每個波形上覆蓋的虛線表示電機看到的等效直流電壓。鑒于Arduino具有內(nèi)置的PWM功能,生成這種類型的DC電機控制確實非常簡單。使用PWM的另一優(yōu)點是,它有助于防止電動機在使用直直流電時可能發(fā)生的突然啟動。 PWM的一個缺點是有時在PWM的頻率下會聽到來自電動機的聲音。
步驟2:硬件
第一張圖片顯示了開關(guān)和LM298電機驅(qū)動器模塊的Arduino連接。 Arduino內(nèi)部有弱上拉電阻,因此開關(guān)不需要上拉電阻。方向開關(guān)是一個簡單的SPST(單刀單擲)開關(guān)。油門和制動開關(guān)顯示為常開,瞬時接觸按鈕。
第二張圖顯示了藍牙模塊和LM298電機驅(qū)動器模塊的Arduino連接。藍牙TXD輸出直接連接到Arduino RX串行輸入。
第三張圖片是L298N雙H橋模塊。 LM298模塊具有一個板載5伏調(diào)節(jié)器,可通過跳線將其啟用。 Arduino和藍牙需要+5伏特,但我們需要+12伏特來驅(qū)動電機。在這種情況下,我們將+12伏特施加到L298N的“ + 12V電源”輸入,我們將保留“ 5V使能”跳線。這允許5伏調(diào)節(jié)器輸出到模塊上的“ +5功率”連接。將其連接到Arduino和藍牙。別忘了將+12輸入和+5輸出的接地線連接到模塊“電源GND”。
我們希望電機的輸出電壓根據(jù)產(chǎn)生的PWM變化。 Arduino,而不僅僅是完全打開或關(guān)閉。為此,我們從“ ENA”和“ ENB”上移除跳線,并將我們的Arduino PWM輸出連接至模塊上的“ ENA”。請記住,實際的使能引腳是最靠近板邊緣的引腳(“輸入”引腳旁邊)。每個使能的背面引腳為+5伏,因此我們要確保不連接該引腳。
模塊上的“ IN1”和“ IN2”引腳分別連接到各自的Arduino引腳。這些引腳控制電機方向,是的,有充分的理由讓Arduino控制它們,而不是簡單地將開關(guān)連接到模塊。
第3步:藍牙模塊
此處顯示的圖片是藍牙的典型圖片可用模塊。在尋找要購買的產(chǎn)品時,您可以搜索“ HC-05”和“ HC-06”。兩者之間的差異在于固件,通常是板上的引腳數(shù)。上圖是HC-06模塊的圖片,帶有簡化的固件,僅允許進行非常基本的配置。它也被設(shè)置為“從屬”藍牙設(shè)備。簡單來說,這意味著它只能響應(yīng)來自“主”設(shè)備的命令,而不能自行發(fā)出命令。 HC-05模塊具有更多配置可能性,可以設(shè)置為“主”設(shè)備或“從”設(shè)備。 HC-05通常具有六個插針,而不是上面為HC-06所示的四個插針。 State引腳并不是很重要,但是如果要進行任何配置,則需要Key引腳(有時會使用“ EN”之類的其他名稱)。通常,如果您可以使用默認的9600波特率,并且不需要為模塊指定具體名稱,則無需對模塊進行任何配置。我在幾個項目中都使用了這些項目,因此我要相應(yīng)地命名它們。
配置藍牙模塊需要您購買或構(gòu)建RS-232串行端口或USB端口的接口。我不會在這篇文章中介紹如何構(gòu)建一個,但是您應(yīng)該可以在網(wǎng)上找到信息。或者只是購買一個接口。配置命令使用的AT命令有點像過去電話調(diào)制解調(diào)器中使用的命令。我在此處隨附了一個用戶手冊,其中包含每種模塊類型的AT命令。要注意的一件事是HC-06需要大寫命令,并且命令字符串必須在1秒內(nèi)完成。這意味著某些較長的字符串(例如更改波特率)將需要剪切并粘貼到終端程序中,或者您需要設(shè)置要發(fā)送的文本文件。僅當您嘗試發(fā)送配置命令時,才需要大寫。常規(guī)通信模式可以接受任何8位數(shù)據(jù)。
步驟4:軟件
對于手動版本和藍牙而言,該軟件都非常簡單版。要選擇藍牙版本,只需取消對“ #define BT_Ctrl”語句的注釋即可。
當我編寫PIC代碼時,我嘗試使用PWM頻率并最終穩(wěn)定在500 Hz。我發(fā)現(xiàn)如果頻率太高,則LM298N模塊無法對脈沖做出足夠迅速的反應(yīng)。這意味著電壓輸出不是線性的,可能會發(fā)生較大的變化。 Arduino內(nèi)置了PWM命令,但它們僅允許您更改占空比而不是頻率。幸運的是,該頻率約為490 Hz,因此足夠接近我在PIC上使用的500 Hz。
火車油門的“特征”之一是具有加速和制動的動量感模擬真實火車的工作方式。為此,在軟件的手動版本的循環(huán)中插入一個簡單的時間延遲。使用所示的值,從0到12伏或從12伏回到零大約需要13秒鐘。可以很容易地將延遲更改為更長或更短的時間。動量無效的唯一情況是更改方向開關(guān)。為了保護起見,只要更改此開關(guān),PWM占空比就會立即設(shè)置為0%。實際上,這使得“方向”開關(guān)也可以用作緊急制動器。
為確保立即處理“方向”開關(guān),我將其代碼放入了中斷處理程序中。這也使我們可以使用“更改時中斷”功能,因此更改從低到高還是從高到低都沒有關(guān)系。
該軟件的藍牙版本使用單字母命令來啟動前進,倒車,剎車和油門功能。實際上,收到的命令將替換手動開關(guān),但會導(dǎo)致相同的響應(yīng)。我用于藍牙控制的應(yīng)用程序被Next Prototypes稱為“藍牙串行控制器”。它使您可以配置虛擬鍵盤并為每個按鍵設(shè)置自己的命令字符串和名稱。它還允許您設(shè)置重復(fù)頻率,因此我將“制動”和“油門”按鈕設(shè)置為50ms,以提供約14秒的動量。我禁用了“前進”和“后退”按鈕的重復(fù)功能。
-
控制器
+關(guān)注
關(guān)注
112文章
16397瀏覽量
178517 -
Arduino
+關(guān)注
關(guān)注
188文章
6472瀏覽量
187323
發(fā)布評論請先 登錄
相關(guān)推薦
評論