模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

2908查看 | 4回复

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

[复制链接]
发表于 2018-3-21 15:57:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 TwoOne 于 2018-3-21 15:59 编辑

我前面两篇文章里,讲到了用Arduino主控刷写MWC固件来做空心杯小四轴和小六轴。玩过arduino的童鞋可能知道,官方的arduino有3.3V和5V两个版本之分,有的童鞋可能会问,那我到底用3.3V的还是5V的呢。。。或者说,两个到底有啥区别?

【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 1977

先说答案,当然是用5V的好。不是不可以用3.3v,但原因在这张图里就可以解释。连接好MWC飞控,打开上位机。(图里面是我上一个帖子的图,给大家说明原因即可)


【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 6086

大家注意我花红圈的地方,cycle time:8668
意味着循环时间,顾名思义,也就是程序跑完一圈,进行一个循环的时间。
当我们开启了MWC飞控较多的功能,比如陀螺仪、地磁、气压同时开启,可以很明显地看到这个值变大,程序跑完一个循环的时间就变长了
众所周知,飞控性能越强大越好,程序跑完的时间越短,就越能及时的对飞行姿态进行调整,所以需要这个值降低。

那么为啥要5V的咧?因为5V板子的晶振是16M,而3.3V是8M,5v板子的性能明显强于3.3V

详细的介绍,请继续看下文。下文介绍了怎么把5v的板子改成3.3V,同时解释了3.3V和5V的区别,来源:http://www.cnblogs.com/xiedidan/p/3940496.html

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主频的ArduinoBootloader。
这样改造出来的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编程器。

  

3、 一块USB转R232转接板,作为ArduinoISP编程器。最好是可选择3.3V和5V供电电压的,方便最后测试。
注意AVR ISP和ArduinoISP的区别。前面说的AVR ISP是用来烧Bootloader的(Bootloader实际上是一个AVR程序),而这里的Arduino ISP是用来下载Arduino程序的。
   【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 8325
制作流程
一、制作AVR ISP
首先我们要使用Arduino Pro Mini来制作一个AVR ISP,再用这个AVR ISP来刷目标Arduino的Bootloader。
1、进行这样的连接:ArduinoPro Mini --- 连接RS-232 --- USB转RS-232板 --- 连接USB --- 电脑
如图所示:
   【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 77
注意:
  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编程器。
如图所示:
   【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 9524
OK。现在,Upload。
二、修改目标板的熔丝位并烧写Bootloader
之前的步骤如果你已经完成,说明你已成功的做了一个AVR ISP,接下来修改目标板的熔丝位和烧Bootloader。
Arduino IDE可以烧写Bootloader,同时设置熔丝位,这样就大大方便了我们的操作。
1、在IDE的tools的programmer中选择“Arduinoas ISP”。
如图所示:
   【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 5054
2、用管理员权限打开“C:\ProgramFiles\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的话就找对应的板子)对照下图修改:
   【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 1498
  扩展一下:根据Datasheet,只需要修改low_fuses的低4位为0010,即CKSEL3~CKSEL0这4位:
   【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 8363

2、进行这样的连接:ArduinoPro Mini --- 连接SPI --- AVR ISP --- 连接RS-233 --- USB转RS-232板 --- 连接USB --- 电脑
如图所示:
   【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 57
注意:
  1)Arduino ProMini目标板和AVR ISP板之间的连接按照ArduinoISPDemo的说明:
   【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:TwoOne 5345
即:
Arduino Pro Mini目标板     AVR ISP板
Rst                                     10
11                                     11
12                                     12
13                                     13
VCC                                  VCC
GND                                  GND  
  2) Arduino ISP的电源仍然选择5V
3、连接完毕后,从ArduinoIDE的tool中选择boards ->“modified Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328”。(modified是我自己加的,没什么用,为了好找罢了)
4、上述一切工作完毕,这时,目标板已经是板上的猪肉,任你宰割了。Arduino ISP实际上只起它本来的作用——USB转RS-232和供电。
真正刷写Bootloader的是AVRISP,被改变的是Arduino Pro Mini目标板。然后点击IDE的tools -> “Burn Bootloader”。
到这步为止,目标板的熔丝位修改成功,Bootloader也已经刷新,即目标板已经成功变为支持3.3V的板板了。
按下目标板的RST按钮,则开始执行8MHz的Bootloader了。
三、测试一把
1、进行这样的连接:ArduinoPro Mini目标板 --- 连接RS-232 ---USB转RS-232板 --- 连接USB --- 电脑
这里要记得把Arduino ISP的供电电压选为3.3V。
2、打开IDE的file的examples,选择blink。然后Upload。
如果目标板按照预期的进行间隔1s,持续1s的闪烁。那么,恭喜你,你已成功制作了一枚支持3.3V的Arduino Pro Mini板板~~

附:mega328P的datasheet,大家要养成多插datasheet的好习惯,这样就能从芯片的角度来解决问题。
https://pan.baidu.com/s/1SnOVoyiFajvXEWx3d9FLAA



发表于 2018-3-21 18:39:25 | 显示全部楼层
其实你3.3v跑16Mhz也没啥问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-21 18:48:15 | 显示全部楼层
yaoyonghe 发表于 2018-3-21 18:39
其实你3.3v跑16Mhz也没啥问题

理论上是,但是会存在高低电平不认的情况。接3.3电平的设备可能不识别。我当初直接3.3V改16M,发现这个问题就是由于电压引起的,改5V一切正常
回复 支持 反对

使用道具 举报

发表于 2018-3-21 22:46:42 | 显示全部楼层
本帖最后由 payne.pan 于 2018-3-21 22:56 编辑

直接把 pro mini 的上的稳压换 3.3v的, 看下这个产品

【教程】手把手教你把5V的Arduino改造成3.3V版本 飞控,固件,四轴,六轴 作者:payne.pan 2639

回复 支持 反对

使用道具 举报

发表于 2018-3-24 17:49:59 | 显示全部楼层
学习学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|关于模吧|APP下载|广告报价|手机版|企业会员|商城入驻|联系我们|模吧 ( 黔ICP备2022002348号-1 )

© 2013-2020 Moz8.com 模吧,玩出精彩!