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


MSP430G2x01-Q1 MSP430G2x11-Q1混合信號微控制器數據表

控制器的主要作用是指什么
工業控制器的制作與數學的關系

PID控制器與PWM控制器的區別
如何用Arduino制作一個簡易自動喂魚器
如何制作自己的Arduino電容計

評論