手把手教你把5V的Arduino改造成3.3V版本


Arduino Pro Mini是基於ATmega328的微控制板,支持5V/3.3V電壓。但是我們比較容易買到的是5V供電的版本,有的時候需要用到3.3V版本(比如我們的軟控DAC)。怎樣才能讓這款板板支持3.3V電壓呢。

思路

把5V的Arduino改造成3.3V版本,實際上就是提出了一個問題:5V的Arduino和3.3V版本有什么不同?

實際上AtMega328P可以支持很寬的電壓范圍。但是在不同工作電壓下,可以跑到的最大主頻是不同的。

在5V下可以跑到16MHz,而在3.3V下只能跑到8MHz。所以我們首先需要解決時鍾問題。

5V的版本配備的外置晶振是16MHz的,為了得到8MHz的主時鍾,我們可以修改熔絲位,使用328內部的8MHz RC振盪器。

另外,328內部還有BOD檢測,當電壓低於設置值的時候會自動停機。使用3.3V電源應該把BOD閾值修改為2.7V。

最后,還要刷入支持8MHz主頻的Arduino Bootloader。

這樣改造出來的Arduino,支持3.3V電源電壓,RAW腳穩壓之后仍然得到5V電壓,Arduino本身執行不受影響。

但是如果把RAW的穩壓輸出用於外設供電,就要仍然使用5V的外設。因此最好是外置一個3.3V的穩壓電源供Arduino和外設使用。

准備工作

1、  如果你從來沒有使用過Arduino,你首先需要下載IDE。如何安裝在此不贅述。

2、  准備兩塊板板,一塊是我們要刷成3.3V的Arduino Pro Mini目標板。另一塊是用來燒寫Bootloader的AVR ISP編程器,本文使用一塊Arduino Pro Mini來制作AVR ISP編程器。(沒有特殊原因,只因為博主剛好有兩塊Arduino Pro Mini)。

  

3、  一塊USB轉R232轉接板,作為Arduino ISP編程器。最好是可選擇3.3V和5V供電電壓的,方便最后測試。

注意AVR ISP和Arduino ISP的區別。前面說的AVR ISP是用來燒Bootloader的(Bootloader實際上是一個AVR程序),而這里的Arduino ISP是用來下載Arduino程序的。

   

制作流程

一、制作AVR ISP

首先我們要使用Arduino Pro Mini來制作一個AVR ISP,再用這個AVR ISP來刷目標Arduino的Bootloader。

1、進行這樣的連接:Arduino Pro Mini --- 連接RS-232 --- USB轉RS-232板 --- 連接USB --- 電腦

如圖所示:

  

注意:

  1) 串口的RXD和TXD是交換連接的,即Arduino的RXD連接ISP的TXD;Arduino的TXD連接ISP的RXD。

  2) Arduino ISP上的電源選擇5V。

2、連接完畢后,確認串口COM號選擇無誤。

3、在IDE的File的Examples中選擇“ArduinoISP”。這是隨Arduino IDE提供的一個Demo程序,可以把Arduino制作成一個AVR ISP編程器。

如圖所示:

  

OK。現在,Upload。

二、修改目標板的熔絲位並燒寫Bootloader

之前的步驟如果你已經完成,說明你已成功的做了一個AVR ISP,接下來修改目標板的熔絲位和燒Bootloader。

Arduino IDE可以燒寫Bootloader,同時設置熔絲位,這樣就大大方便了我們的操作。

1、在IDE的tools的programmer中選擇“Arduino as ISP”。

如圖所示:

  

2、用管理員權限打開“C:\Program Files\Arduino\hardware\arduino\avr\boards.txt”,注意安裝路徑不同,路徑可能有差別。Anyway,我們要修改“boards.txt”,這個文件指定了各種Arduino板的軟件配置、熔絲位和Bootloader。

對照Datasheet,我們發現擴展熔絲位已經把BOD設為2.7V了,這樣只需要修改時鍾即可。

找到Arduino Pro or Pro Mini (3.3V, 8MHz),(不是Pro Mini的話就找對應的板子)對照下圖修改:

  

  擴展一下:根據Datasheet,只需要修改low_fuses的低4位為0010,即CKSEL3~CKSEL0這4位:

  

 

2、進行這樣的連接:Arduino Pro Mini --- 連接SPI --- AVR ISP --- 連接RS-233 --- USB轉RS-232板 --- 連接USB --- 電腦

如圖所示:

  

注意:

  1)Arduino Pro Mini目標板和AVR ISP板之間的連接按照ArduinoISP Demo的說明:

  

即:

Arduino Pro Mini目標板      AVR ISP板

Rst                                      10

11                                       11

12                                       12

13                                       13

VCC                                    VCC

GND                                    GND  

  2) Arduino ISP的電源仍然選擇5V

3、連接完畢后,從Arduino IDE的tool中選擇boards -> “modified Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328”。(modified是博主自己加的,沒什么用,為了好找罷了)

4、上述一切工作完畢,這時,目標板已經是板上的豬肉,任你宰割了。Arduino ISP實際上只起它本來的作用——USB轉RS-232和供電。

真正刷寫Bootloader的是AVR ISP,被改變的是Arduino Pro Mini目標板。然后點擊IDE的tools -> “Burn Bootloader”。

到這步為止,目標板的熔絲位修改成功,Bootloader也已經刷新,即目標板已經成功變為支持3.3V的板板了。

按下目標板的RST按鈕,則開始執行8MHz的Bootloader了。

三、測試一把

1、進行這樣的連接:Arduino Pro Mini目標板 --- 連接RS-232 --- USB轉RS-232板 --- 連接USB --- 電腦

這里要記得把Arduino ISP的供電電壓選為3.3V。

2、打開IDE的file的examples,選擇blink。然后Upload。

如果目標板按照預期的進行間隔1s,持續1s的閃爍。那么,恭喜你,你已成功制作了一枚支持3.3V的Arduino Pro Mini板板~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM