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板板~~