18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 基礎入門 >> Arduino開發學習 >> 正文

用Arduino作為控製設備讓各種作品動起來吧! 第5篇:用Arduino控製伺服電機來演奏樂器!

作者:佚名    文章來源:網絡整理    點擊數:    更新時間:2025/1/11

 

我們(men) 推出了一項新計劃,即通過使用了Arduino的簡單製作來學習(xi) 18luck网站的原理和基礎知識。此次為(wei) 我們(men) 分享的嘉賓是伊藤尚未先生,他活躍於(yu) 媒體(ti) 藝術領域,並且在書(shu) 籍領域以講解“更深層次的原理”而聞名。在第5篇,也就是最後一篇,我們(men) 將用Arduino來控製伺服電機。

1. 前言

大家好!我是伊藤尚未。

在這個(ge) 連載係列中,我們(men) 嚐試通過Arduino控製讓各種作品動起來,考慮到還有我沒有試過的部件,所以我決(jue) 定借此機會(hui) 嚐試一下,那就是“伺服電機”。

說起“微控製器+動作”,就會(hui) 讓人想起機器人,但就我而言,我用過一些比較原始的東(dong) 西(比如田宮齒輪和萬(wan) 寶至電機)來實現。當然,對於(yu) 現代的機器人而言,使用的運動部件就是伺服電機。在我的孩提時代,曾經有一陣電動遙控車熱,我記得我經常和朋友們(men) 一起玩。

當然,當時也是超級跑車熱潮的時代,品牌包括蘭(lan) 博基尼、藍旗亞(ya) 、保時捷等豪車。我記得當時由於(yu) 無線電控製器的手柄和加速器使用了伺服電機,遙控車會(hui) 根據控製器操縱杆的移動而移動,讓我覺得很不可思議,從(cong) 那時起我對伺服電機的表現就佩服得很。

那時,我隻能按照“它之所以那樣動作,是因為(wei) 它就是那樣的機製”來理解,但現在我深刻意識到在不可思議中思考“那種機製”是很重要的。

近年來,機器人中所用的伺服電機通常是方形外殼,帶有圓盤或矩形聯軸器(舵機),與(yu) 以前的樣子相比幾乎沒什麽(me) 變化,因此能一眼就看出來。不過考慮到可能有人對它的內(nei) 部並不是非常了解,所以我想借此機會(hui) 再重新研究一下。

2. 什麽是伺服電機?

從(cong) 廣義(yi) 上講,伺服電機具有軸旋轉檢測機構,並具有旋轉角度、旋轉位置和速度等的控製功能,因此也用於(yu) 重型機械和工廠生產(chan) 線等應用領域。

不過對於(yu) 我們(men) 來說,各種伺服電機中,無線電遙控設備和模型機器人等設備中使用的電機類型是我們(men) 在18luck网站過程中最為(wei) 熟悉的。當然,在用Arduino等微控製器來使運動部件像機器人一樣動起來的應用中,也會(hui) 使用常用的伺服電機。

那麽(me) ,檢測電機旋轉的機構到底是怎樣的呢?

從(cong) 結構圖看,多為(wei) 下述結構,看起來並不陌生的樣子。

 

不管怎樣,我想看看它的真麵貌,所以把它拆解開了。樣品為(wei) 大小正合適的GWS公司生產(chan) 的S03T/2BBMG/FUTABA。

 

首先,我拆下舵機和四個(ge) 角的螺絲(si) ,並將外殼拆下來。外殼分三部分,拆下頂蓋後會(hui) 露出齒輪組。

齒輪是金屬的,用軸承連接,結構上很牢固。看起來是4檔減速齒輪,塗了很多潤滑脂,可以想像力矩還是蠻大的。

 

拆下中間的外殼後,就可以看到電機了。照片右側(ce) 的圓柱體(ti) 金屬部分是電機,左側(ce) 是控製器部分。左側(ce) 有舵機軸,因此可以推斷通過這裏來檢測旋轉情況。

 

當拆掉舵機軸後,可以看到軸本身就是一個(ge) 旋轉傳(chuan) 感器。用手指轉動這個(ge) 軸,從(cong) 旋轉角度和觸感上可以判斷出,這是一個(ge) 通過物理旋轉的滑動接觸點來獲得電阻值變化的可調電阻器、電位器。通過它可以檢測舵機的旋轉位置。果真和結構圖是一致的。

 

在這個(ge) 電位器的底部有電路,通過讀取其電阻值,並將電阻值與(yu) 輸入信號進行比較,然後將其停在平衡點上,應該可以使其按所需角度旋轉。

所以,一共有三個(ge) 引腳,一個(ge) 是GND,一個(ge) 是正電源,一個(ge) 是信號線,可以根據GND和正電源之間的電壓差(比值)來控製。使用這種機製,即使由於(yu) 電池狀態等因素造成一些電壓波動,也可以毫無問題地控製旋轉角度。

要從(cong) Arduino端控製伺服電機的話,已經有一個(ge) 庫可以用,我會(hui) 直接使用這個(ge) 庫,其輸出信號是PWM。PWM是在一個(ge) 周期內(nei) 改變脈衝(chong) 的寬度,最終以電壓變化體(ti) 現出來。

 

在這裏,讓我想起了我的童年回憶。當時的無線電控製器是否裝有微控製器?那時候市場上出現的是單板微控製器等較大型的產(chan) 品。我記得當時我想知道控製器裏麵都有什麽(me) 而把它拆開了,但不記得裏麵是否有微控製器了。可能是因為(wei) 它是模擬的。

如果使用的是PWM,那麽(me) 應該是通過硬件進行處理的吧。如果這樣想的話,伺服電機不僅(jin) 可以用通過PWM進行控製,應該也可以通過模擬進行控製。如果按照前麵提到的控製信號是GND和正電源之間的電壓比來考慮的話,當然模擬也應該沒有問題,也就是說,伺服電機本身和以前的模擬輸入時幾乎沒有什麽(me) 變化。

沒有變化的東(dong) 西屬於(yu) “老物件”,但這裏的“老物件”不等於(yu) “壞東(dong) 西”,而是“穩定的東(dong) 西”,所以伺服電機在技術方麵的評價(jia) 是很高的。

不過,由於(yu) IC也在日益小型化,所以伺服電機的控製電路部分也已經改進,應該可以更適當地處理PWM了。

3. 與Arduino連接

現在,我們(men) 嚐試將伺服電機與(yu) Arduino連接起來。GND、電源、信號的引腳排列會(hui) 因伺服電機而異,所以讓我們(men) 來確認一下。

這次我用的是GWS的S03T/2BBMG/FUTABA,也就是前麵拆卸用的那種。引腳排列如下所示:

 

從(cong) 照片左側(ce) 開始,引線依次是黑色、紅色和白色,它們(men) 分別連接到GND、5V(正電源)和信號線。

與(yu) Arduino的連接方法如下:

 

我使用現有的庫嚐試編寫(xie) 了如下草圖:

#include<Servo.h> Servo myServo; void setup() { myServo.attach(9); } void loop() { myServo.write(90); delay(1000); myServo.write(45); delay(1000); myServo.write(135); delay(1000); }

讀取伺服電機的庫程序並輸出到引腳9。myServe.write的括號裏麵表示角度,所以我將其設置為(wei) 90度是中間位置,並以此為(wei) 基準向左右擺動45度。從(cong) 伺服電機的功能上來看,可以以中間位置為(wei) 基準向左右擺動90度,但如果改變數值時像“0”、“180”那樣的角度太多,電機就會(hui) 顫抖。我不知道具體(ti) 原因,可能是由於(yu) 旋轉傳(chuan) 感器是模擬的,所以數值上有些問題。鑒於(yu) 此,我決(jue) 定在不受影響的範圍內(nei) 使用。

如果在舵機上安裝一個(ge) 搖臂,那麽(me) 擺動幅度也會(hui) 變大,所以我在這個(ge) 搖臂頂端安裝了之前自製的執行器。這種執行器的機製是將漆包線纏繞在吸管上,做成線圈,將釘子插入吸管中,當有電流流過時,釘子就會(hui) 彈上去。也就是一種自製的螺線管。

為(wei) 了驅動這個(ge) 執行器,我使用了之前用過的ROHM生產(chan) 的“2SD1866”。通過20kΩ電阻器連接到底座並通過Arduino來控製ON和OFF。執行器驅動用的外接電源由兩(liang) 節幹電池分別提供3V電。

現在,可以在一些特定部位上輕輕敲擊了。

 

 

整體(ti) 電路圖如上圖所示。通過引腳13驅動自製執行器,通過引腳9驅動伺服電機。

外部電路隻有用來驅動自製執行器的晶體(ti) 管和電阻器,所以我把它們(men) 組裝在一個(ge) 小麵包板上了。

 

我將草圖添加到之前的草圖中,並添加了執行器的工作部分。我讓釘子在伺服電機移動到特定角度時彈上去。

#include<Servo.h> Servo myServo; void setup() { myServo.attach(9); pinMode(13, OUTPUT); } void loop() { myServo.write(90); delay(500); digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); delay(1000); myServo.write(45); delay(500); digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); delay(1000); myServo.write(135); delay(500); digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); delay(1000); }

在實際操作時,必須考慮到搖臂的移動時間,所​​以角度越大時間點越難把握。

4. 通過Arduino控製來演奏樂器!

現在,我想用它來演奏樂(le) 器。我在100日元商店找到了這樣的一把鍾琴,我決(jue) 定把它改造一下。

 

首先,取下鐵片並將它們(men) 安裝在另一個(ge) 框架上。

 

 

我用橡膠皮筋將這些鐵片固定在框架上,這樣在敲擊後振動就不會(hui) 停止。在框架的下方安裝了前麵做的帶搖臂的執行器。通過Arduino同時控製伺服電機和執行器。

 

在這個(ge) 框架中,do、re、mi、 fa、sol、la、si、do的位置分別對應122、112、102、95、85、77、67、57的角度,我讓伺服電機根據這些角度旋轉並敲擊鐵片。
這些角度值是我通過實際調整得出的。接下來,怎麽(me) 演奏呢……我暫時調整了位置,嚐試讓它演奏出do、re、mi、 fa、sol、la、si、do的聲音。

這樣一來,使我有了讓它演奏一首歌的興(xing) 致。

哎呀,好像彈出曲調了,隻是有點像我,沒有節奏感(笑)。隻要能享受聲音就好了,知足了!

這一次,我用Arduino控製伺服電機嚐試了演奏樂(le) 器。在這個(ge) 連載係列中,我們(men) 介紹了使用Arduino來控製各種設備的一些方法。怎麽(me) 樣?有收獲嗎?

我想您已經了解到了,即使是身邊熟悉的設備,也可以用Arduino進行控製,也可以製作出更有趣的電子作品!盼望大家也想出各種創意,享受18luck网站的樂(le) 趣!

Tags:Arduino入門,Arduino,電子琴  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢