手把手教你把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版本有什么不一样?ui

实际上AtMega328P能够支持很宽的电压范围。可是在不一样工做电压下,能够跑到的最大主频是不一样的。spa

在5V下能够跑到16MHz,而在3.3V下只能跑到8MHz。因此咱们首先须要解决时钟问题。3d

5V的版本配备的外置晶振是16MHz的,为了获得8MHz的主时钟,咱们能够修改熔丝位,使用328内部的8MHz RC振荡器。blog

另外,328内部还有BOD检测,当电压低于设置值的时候会自动停机。使用3.3V电源应该把BOD阈值修改成2.7V。扩展

最后,还要刷入支持8MHz主频的Arduino Bootloader。软件

这样改造出来的Arduino,支持3.3V电源电压,RAW脚稳压以后仍然获得5V电压,Arduino自己执行不受影响。配置

可是若是把RAW的稳压输出用于外设供电,就要仍然使用5V的外设。所以最好是外置一个3.3V的稳压电源供Arduino和外设使用。file

准备工做

一、  若是你历来没有使用过Arduino,你首先须要下载IDE。如何安装在此不赘述。

二、  准备两块板板,一块是咱们要刷成3.3V的Arduino Pro Mini目标板。另外一块是用来烧写Bootloader的AVR ISP编程器,本文使用一块Arduino Pro Mini来制做AVR ISP编程器。(没有特殊缘由,只由于博主恰好有两块Arduino Pro Mini)。

  

三、  一块USB转R232转接板,做为Arduino ISP编程器。最好是可选择3.3V和5V供电电压的,方便最后测试。

注意AVR ISP和Arduino ISP的区别。前面说的AVR ISP是用来烧Bootloader的(Bootloader其实是一个AVR程序),而这里的Arduino ISP是用来下载Arduino程序的。

   

制做流程

1、制做AVR ISP

首先咱们要使用Arduino Pro Mini来制做一个AVR ISP,再用这个AVR ISP来刷目标Arduino的Bootloader。

一、进行这样的链接:Arduino Pro Mini --- 链接RS-232 --- USB转RS-232板 --- 链接USB --- 电脑

如图所示:

  

注意:

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

  2) Arduino ISP上的电源选择5V。

二、链接完毕后,确认串口COM号选择无误。

三、在IDE的File的Examples中选择“ArduinoISP”。这是随Arduino IDE提供的一个Demo程序,能够把Arduino制做成一个AVR ISP编程器。

如图所示:

  

OK。如今,Upload。

2、修改目标板的熔丝位并烧写Bootloader

以前的步骤若是你已经完成,说明你已成功的作了一个AVR ISP,接下来修改目标板的熔丝位和烧Bootloader。

Arduino IDE能够烧写Bootloader,同时设置熔丝位,这样就大大方便了咱们的操做。

一、在IDE的tools的programmer中选择“Arduino as ISP”。

如图所示:

  

二、用管理员权限打开“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位:

  

 

二、进行这样的链接: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

三、链接完毕后,从Arduino IDE的tool中选择boards -> “modified Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328”。(modified是博主本身加的,没什么用,为了好找罢了)

四、上述一切工做完毕,这时,目标板已是板上的猪肉,任你宰割了。Arduino ISP实际上只起它原本的做用——USB转RS-232和供电。

真正刷写Bootloader的是AVR ISP,被改变的是Arduino Pro Mini目标板。而后点击IDE的tools -> “Burn Bootloader”。

到这步为止,目标板的熔丝位修改为功,Bootloader也已经刷新,即目标板已经成功变为支持3.3V的板板了。

按下目标板的RST按钮,则开始执行8MHz的Bootloader了。

3、测试一把

一、进行这样的链接:Arduino Pro Mini目标板 --- 链接RS-232 --- USB转RS-232板 --- 链接USB --- 电脑

这里要记得把Arduino ISP的供电电压选为3.3V。

二、打开IDE的file的examples,选择blink。而后Upload。

若是目标板按照预期的进行间隔1s,持续1s的闪烁。那么,恭喜你,你已成功制做了一枚支持3.3V的Arduino Pro Mini板板~~