zoukankan      html  css  js  c++  java
  • 手把手教你把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 FilesArduinohardwarearduinoavroards.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板板~~

  • 相关阅读:
    我的WCF之旅(1):创建一个简单的WCF程序
    网页设计中颜色的搭配
    CSS HACK:全面兼容IE6/IE7/IE8/FF的CSS HACK
    UVa 1326 Jurassic Remains
    UVa 10340 All in All
    UVa 673 Parentheses Balance
    UVa 442 Matrix Chain Multiplication
    UVa 10970 Big Chocolate
    UVa 679 Dropping Balls
    UVa 133 The Dole Queue
  • 原文地址:https://www.cnblogs.com/xiedidan/p/3940496.html
Copyright © 2011-2022 走看看