日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

硬核!用Arduino打造纯机械装置模拟数字时钟

發布時間:2023/12/14 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 硬核!用Arduino打造纯机械装置模拟数字时钟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文轉載自程序員極客實驗室

本項目是一個真正意義上的「機械時鐘」,由 3D 打印部件、25 個 Arduino Nano 和 48 個步進電機構建。每個時鐘面都是用 Eagle 設計的 PCB。

時鐘的靈感來自幾年前我在波士頓一家商店里看到的時鐘,叫 ClockClock 24,成本約為 6000 美元,非常漂亮。

完成這個項目,將學習到 3D 打印、Arduino 編程、原理圖和 PCB 設計、機械方面的技能,還有一定的調試技巧。

?

材料和成本

完整的材料清單文件(ClockPartsList.xlsx)在文末的項目文件庫中可以下載。

  • 工具清單

  • 3D 打印機

  • 烙鐵

  • 螺絲刀

  • 剪線鉗和壓線鉗

  • 粘膠

?

費用大約是 500 美元。也可以通過采購更便宜的零件來降低成本。電子表格中的描述是可單擊的鏈接。如果鏈接失效,可以在 google 中搜索鏈接中的單詞。

3D 打印

整個項目的打印使用 PLA 材料,所用的 3D 打印機是 Creality Ender 3 Pro。利用 Cura 的免費版本切成薄片。

大約花費了 1 個月的時間打印。其中,每個時鐘模塊底板大約需要 9 個小時的打印時間。如果每天打印 2 張,需要 12 天,如果使用兩臺 3D 打印機,速度會更快。

所有零件均在標準溫度下以 20% 的填充率進行打印。

這個項目上有很多關于 3D 打印的知識:
機床需要每隔幾天調平一次。否則,零件將從機床上抬起或損壞。
噴嘴需要隔一段時間清洗一次。否則,打印件將變得很薄。
PLA 線軸需要保持緊繃,以使打印時的長絲不會束縛和卡住。

3D 打印部件清單(Clock 3D Printed Parts List.xlsx)和打印所需的 STL 文件(stls.zip),在文末的項目文件庫中可以下載。

原理圖和 PCB 文件

原理圖是用 Autodesk 的 Eagle 繪制的。

需要注意的是,最初使用的是光電模塊而不是磁檢測器模塊,這就是在原理圖和電路板上都能看到光電模塊的原因。

每個磁性霍爾效應傳感器都連接到 PCB 板上的 5V,Gnd 和 模擬引腳(O_0 或 O_1)。

更多信息參見組裝詳情。

原理圖文件(analog_clock_rev2.sch),在文末的項目文件庫中可以下載。

該項目需要 25 個 PCB 板。此處所附的 Gerber 文件,可以在任何 PCB 廠制造電路板。要打開壓縮成 .gz 的文件,推薦 7Zip 解壓縮程序。

原理圖文件(H2W-312555_Analog_clock_Rev2.zip.gz),在文末的項目文件庫中可以下載。

Arduino 編程

項目的 Arduino 文件有兩個:主控文件和從屬設備文件。

主控代碼僅使用一次,控制所有從屬設備。從屬設備代碼使用 24 次。

RTC(實時時鐘)庫 .zip 文件也包含在 .gz 文件中。通過執行以下操作,可以將 .zip 文件添加到 Arduino IDE:

sketch -> include library -> add .zip library.

要對 Arduino 進行編程,請選擇:

tools -> Boards: Arduino Nano
tools -> Processor Atmega328 (舊的引導程序)
tools -> port (選擇端口)

代碼文件(HartClock_Arduino_Code.zip.gz),在文末的項目文件庫中可以下載。

Arduino SW 介紹

主控的 Arduino 將 I2C 串行命令發送到位于每個時鐘面后面的 24 個從屬 Arduino。從屬 Arduino 將 I2C 命令解碼為時鐘運動。

主機到從機可能的 Arduino I2C 命令:
0= IDLE, 1= Calibrate, 2= Arm_go_clockwise, 3= Arm_go_counter_clockwise
(0 = 空閑,1 = 校準,2 = 順時針旋轉,3 = 逆時針旋轉)

如圖所示,時鐘有 8 個可能的位置。

重置后,主機將向每個 Arduino 發送一個校準命令,使其到達與時鐘位置 8 相對應的原始位置。每個時鐘后面的齒輪中都有歸位磁鐵,還有一個霍爾效應傳感器,用于檢測磁鐵是否歸位。

PCB 焊接

PCB 板中有 24 個需要焊接,必要時可求助朋友:)

切記要從電動機隨附的小型驅動板的插座中拔出 ULN2003 驅動器 IC。

將每個元件插入電路板,并稍微彎曲引腳,以免它們掉落,將元件引腳焊接到板上。

注意:每塊板上焊接有 6 條跳線。此處未使用圖片中顯示的綠色 4 針端子,直接焊接了板間線路,這樣壓降較低且更可靠。

設置撥碼開關

每個 PCB 板上都有一個撥碼開關。將每個時鐘的撥碼開關設置為圖片中所示的值,以便主控器可以分別尋址每個從屬時鐘模塊。

組裝 PCB 主板

Arduino 主板包含 Real Time Clock(RTC)板和 Arduino nano。每當主 Arduino 通過其 USB 進行編程時,RTC 就會使用當前計算機時間進行編程,并將時間數據通過 RTC 電池保存起來。
可以將 RTC 板熱粘合或用雙面膠帶粘貼到主 PCB 上。焊接連接使其牢固。

使用 3D 打印支架將主板固定在時鐘上。

將 RTC Vcc 連接到板上的 +5 引腳。

將 RTC Gnd,SCL 和 SDA 連接到 PCB 板上的相應名稱。

在 RTC 板 Vcc 和 SDA 之間的 I2C 上焊接 1 個 1.3k(或接近值)的上拉電阻。

在 RTC 板 Vcc 和 SCL 之間的 I2C 上焊接 1 個 1.3k(或接近值)的上拉電阻。

用 4 根導線焊接 +6V、Gnd、SDA 和 SCL,預留長度大約為 6 英寸,以便將來與其他電路板連接。

用 10 英寸長導線對焊接 D2 引腳和地,通過按鈕增加時間。

用 10 英寸長導線對焊接 D3 引腳和地,通過按鈕減少時間。

注意:在關閉電源之前,應從主 Arduino Nano 上拔下 USB 線。這是一條潛在電流路徑,在電源關閉時其他 Arduino 會嘗試用 USB 電源供電,主機上的微型 7805 穩壓器可能會燒壞。如果發生這種情況,請購買功率更大的 7805 穩壓器并將其焊接到主板上。這里需執行此操作。

時鐘模塊組裝

通過使用霍爾效應傳感器模塊(連接到 5V 電源或小型電池組)進行測試,確定磁體朝上。這里使用了 4.5V 電池組供電。方向正確時,指示燈應變為綠色。

用 Cyanoacrylate Krazy 粘膠將磁鐵粘上。

如圖所示,組裝時鐘。

將 4 根鉤形導線切成約 6 英寸長。將導線兩端剝開約 1/4 英寸,并將它們絞合在一起。將它們焊接到 PCB 的 +6V、Gnd、SDA、SCL 點的一側。安裝數字時,它們將用于焊接到相鄰的時鐘。

單個時鐘 Arduino 代碼測試

建議在組建每個時鐘模塊后對其進行測試。為此,請確保時鐘模塊已完全組裝好,并且(臨時)將撥碼開關設置為大于 23 的值。這將在通電后強制 Arduino 從代碼運行校準。視頻僅供參考,這樣可以檢查時鐘的運動是否良好和磁鐵是否正確歸位。USB 電源能夠為該測試的兩個電動機供電,因此不需要電源連接。

插入 USB 線并加載從 Arduino 代碼。應該會看到它在每個臂上都進行了校準。每個臂校準后,將臂移動到頂部的 8 點鐘位置。按下 Arduino Nano 上的 Reset(重置)按鈕幾次,以確保它可以正常工作。

完成操作后,請不要忘記將撥碼開關設置為正確的值(0 到 23)。在時鐘背面的沙皮紙上寫下時鐘編號,以便于組裝。

電源連接

如圖,電源設備需要用連接器壓接并連接到電源和供電線上,為此使用了延長線。將電壓調節到 7.5V,并在調節旋鈕上纏上膠帶,以免被意外轉動。

直流電壓線將通過開關連接到主板。

此處每個 28BYJ48 步進電機均由 7.5V 電壓驅動。繞組分別為 70 歐姆。

因此,通過每個繞組的電流為 7.5V/70 歐姆 = 107mA

每個步進電機主動驅動時有 2 個繞組。因此,每個電機 2 * 107mA = 214mA

如果所有 48 臺電動機都在運動,則為 48 * 214mA = 10.2Amps。

那是相當大的電流,這里顯示的 10Amp 電源可以提供該電流。

僅供參考,當電動機未處于主動驅動狀態時,Arduino 代碼會關閉繞組,因此在電動機不運動時不會向電動機施加電流。且 Arduino Nano 和霍爾效應傳感器使用的電流很小。

單個時鐘數字 Arduino 主控代碼測試

測試由 6 個時鐘模塊組成的數字。

在每個結點使用 2 個側面連接器件并用螺絲擰緊,將 6 個時鐘模塊組裝成一個數字。

此處稱為 debug_master_counter.ino 的 Arduino 代碼已加載到主 PCB 中。到現在為止,所有從時鐘模塊均應已加載 Analog_clock_slave.ino。

撥碼開關應設置為:(0 至 5)或(6 至 11)或(12 至 17)或(18 至 23)

可以一次建立一個數字,對其進行測試并通過焊接將 6 個時鐘連接起來。

暫時將這 4 個主模塊導線焊接到該時鐘的 +6V、Gnd、SDA、SCL空點進行測試。

確保主模塊已連接電源(暫時不帶開關)并設置為 7.5V。由于沒有連接器,暫時將其焊接以進行此測試。

主模塊上電并初始化所有 6 個時鐘。如果尚未將手臂移到頂部(8 點鐘位置),則需要將它們移到頂部。然后,它將發送指令顯示從 0 到 9 的遞增計數,如圖所示。

測試完所有數字后,請使用正確的 master_clock_slave.ino 加載主 PCB Arduino。

測試用的代碼文件(debug_master_counter.ino),在文末的項目文件庫中可以下載。

安裝全部時鐘數字

組裝完所有模塊后,就可以開始使用連接器鏈接組裝完整的時鐘。每段連接需要 2 個連接器鏈節,然后將螺絲插入鏈節的每一側,把部件固定在一起,如圖操作。

時鐘放在一起后,焊接每個模塊之間的導線。最初,在每塊板上都有綠色螺絲端子,但后來切換為焊接連接,因為螺絲端子在每個螺絲處引入電阻,導致 6V 線路和地上的電壓下降。

請注意,如果不連接框架,則完整的 3×8 大時鐘不穩定。

安裝邊框

添加框架,框架增加了支撐,讓時鐘整體將變穩定。

有 4 種框架。2 種角件和 2 種邊件。嘗試時,要看它們的適合程度。

給長框架打孔。組裝框架時,將 3 個開關安裝在鉆出的孔中。將時鐘放置在底部框架的中心。

如圖所示組裝框架。

下面固定 Arduino PCB 主板。

將主 Arduino PCB 固定(粘)在 master_support 支架上,然后如圖所示,在中心找到一個合適的位置。擰入 2 個螺釘固定它。

主控的反向選項

Arduino 主代碼具有反轉時鐘方向的功能。某些 28BYJ-48 步進電機的運行方向是反向的。那么可以在代碼中控制它。如圖,在 Arduino 主代碼中設置 appropriate bits = 1 就好了。

調試和維修

推薦步驟:
1)組建并測試 24 個時鐘模塊(一個一個測)。
2)用 6 個時鐘模塊建立一個數字,并使用特殊的測試主控代碼進行測試。
3)組建時鐘整體,并使用正確主控代碼對其進行測試。

如果主控時鐘有問題,請檢查接線,并確保時鐘模塊之間的焊接正確。確保電線從 clk0 到 clk23 貫穿整個時鐘。

如果遇到通信問題,請確保主機上有 I2C 上拉電阻。可使用示波器檢查 I2C 信號是否正常。

常見問題

1)為什么不用一個微控制器,并使用多路復用器在每個時鐘之間切換?
組建這東西時,總要做出工程復雜度上的權衡。可以將單個微控制器與多路復用器配合使用,但一次只能移動一個時鐘。實際上有一個這樣的想法,使用伺服器并一次移動一個模擬時鐘面。也可以用具有許多 IO 的 FPGA(現場可編程門陣列)來代替許多從屬控制器,但這會貴得多,且需要額外技能。

2)為什么不用某種步進芯片替代 24 個從機的 Arduino Nano 呢?
Arduino nano 的價格在 2 美元。作為從機,每個都對 2 個電機執行步進控制,并且讀取每個電機齒輪的霍爾效應模擬信號以進行校準。很難找到價格便宜的芯片來完成這兩個功能。

3)為什么不使用霍爾效應傳感器芯片,而使用 $1.50 的霍爾效應傳感器模塊?
單個霍爾效應傳感器芯片更便宜,但它們需要添加一個電阻,因此每個霍爾效應傳感器都必須放在 PCB 上。這需要另外的 3D 打印部件,并將 3 條導線焊接到小型設備的每個引腳上。而只安裝 1 個螺釘的霍爾效應模塊 PCB 板,使組裝變得更加容易。

4)為什么用那么多 Arduino 而不用一個芯片?
將需要一個具有以下功能的 Arduino(或FPGA)芯片:

48 個電機 4 個步進信號 + 48 個電機 2 個用于校準的霍爾效應傳感器 = 288 pin。Arduino 做不到,FPGA 可以。

5)在主控 Arduino 上增加 3 端穩壓器的目的是什么?
3 端穩壓器是添加到主控制器中的 7805 穩壓器,當主控 Arduino 連接到其他電路板,關閉電源時,會燒。關閉電源之前,應先從主機上拔下 USB。

6)如果 RTC 模塊的時間出現誤差,如何調整?
可以使用按鈕開關調整時區的小時數。要更改 RTC 芯片上的時鐘時間,需要對 Arduino 主程序進行重新編程。
可以將代碼修改為允許通過藍牙無線訪問主機和調整 RTC。

這個項目耗時三年,現在可以享受成果了。

總結

以上是生活随笔為你收集整理的硬核!用Arduino打造纯机械装置模拟数字时钟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。