步骤1:刻录引导加载程序之前准备编程器
首先通过从github下载Adafruit ISP程序员来准备程序员Arduino,在Arduino IDE中打开文件“ ArduinoISP.ino”,并将其上传到主机Arduino。
在Arduino中打开“ ArduinoISP.ino” IDE(下载到Sketchbook文件夹中或复制/粘贴)
从“ Board”菜单中选择您的Arduino电路板类型(在本示例中为 UNO )
从串行端口菜单,从Programmer菜单中选择相应的串行端口(例如/dev/ttyACM0 或 COM3 )
,确保您使用的是默认的“ AvrISP mkII “选项
单击上载。
将微控制器放在试验板上(我喜欢从1或11或21 。..开始,以便简化计数)。可以从点状标记识别微控制器的引脚1。将电源和地分别连接到引脚7和8以及引脚20和22。如图所示,将微控制器和编程器连接起来
Arduino Digital 9和uC引脚9
带有uC引脚1的Arduino Digital 10
带有uC引脚17的Arduino Digital 11
带有uC引脚18的Arduino Digital 12
带有uC引脚的Arduino Digital 13 19
如果需要外部晶体,则Arduino数字引脚9会产生频率来驱动uC。
由于面包板上uC上的旧运行软件可能会设置一个ISP将其设置为高电平时(例如引脚13)将引脚向下拨动,您可能希望在每条ICSP线上(引脚11、12、13)连接一个小电阻器
如果您使用的是 Leonardo 而不是UNO,需要在上载之前在ArduinoISP.ino中编辑以下行。
// #define RESET SS
#define RESET 10
,并且需要使用专用的ICSP引脚,如
步骤2:刻录Bootloader(自定义Optiboot5为8MHz)
正在刻录引导加载程序吗?
下载我的自定义Arduino硬件定义(自定义板和optiboot5的自定义版本,运行在8MHz且buad-rate为38400)将存档提取到您的Sketchbook文件夹中(您应该有一个文件夹,用于看起来像“ 速写本/硬件/我的主板”)。
重新启动Arduino IDE时,您应该会看到一个名为“ [Optiboot5] Arduino Uno 8MHz ”的新板,并将编程器更改为“ Arduino As ISP ”,然后从“ 工具”菜单中单击刻录引导程序。您应该看到编程器中的TX/RX闪烁约一分钟,直到通过观察TX/RX LED或查看Arduino IDE底部的状态栏完成刻录为止。
现在,我们的新产品裸露的Arduino(面包板上的一个)已经准备就绪。
自定义板中包含什么并进行构建?
关于板的定义,它与标准UNO相同,除了:
它使用不同的时钟速度(8MHz而不是16MHz)
它设置了不同的保险丝(3字节内存)来激活内部8MHz时钟(称为时钟源)。
它使用38400关于bootloader,buad-rate(具有0.2%的误差幅度)而不是默认的115200(具有7.8%的误差幅度)
,我只是从optboot5中抓取了它,并仅使用非默认配置(未更改任何代码行)以支持上述要求
步骤3:使用USB/TTL上传草图
要确保您的引导程序正常运行,只需重置b提示您,应该看到插针13上的LED闪烁约3次。如果没有发生,请返回前面的步骤并进行修复。
您可以以不到5美元的价格购买便宜的USB/TTL模块,这些模块支持自动重置(这意味着它应该暴露DTR或RTS引脚)。只需确保不要将Arduino REST或RTS与RST混淆(后者是没有用的)。
只需通过从USB/TTL连接VCC和GND来为开发板供电即可。并通过一个100纳米法拉电容将DTR或RTS引脚从USB/TTL模块连接到微控制器中的上拉RESET引脚(引脚1)(与DTR/RTS相连,另一个在引脚1上)。并将微控制器上的TX/RX与模块中的相应模块连接。
打开任何草图(例如Blink),选择右板(我们的自定义Optiboot5 Uno,频率为8MHz),右串行端口(例如/dev/ttyUSB0或COM4)和正确的编程器(原始默认设置为“ AVRISP mkII”,而不是“ Arduino as ISP”),然后单击上载。
如果找不到正确的串行端口您可能要等待操作系统识别它或为USB/TTL模块安装驱动程序。有时您可能需要重新启动Arduino IDE才能显示新内容。
步骤4:将UNO用作USB到TTL串行
您可以从Arduino UNO上移除微控制器(将其贴上标签并放在一旁,因为它具有引导加载程序并且需要外部振荡器),然后使用数字0和1通过TX和RX提供与计算机的串行通信。在这种情况下,UNO中的USB-TTL芯片就可以完成任务,在UNO的先前版本中为FTDI,但在最新版本中,它是具有开放源代码固件的USB支持的小型AVR微控制器Atmega16U2。
第5步:为电路板供电
调节电压
您可以使用1.8-5.5v之间的电压为Atmega328p-pu供电(根据数据表),因此您可以使用两节AA大小的电池(即3.0v)为其供电,除非您有其他需要不同电压的板卡/传感器,否则这没问题。
许多应用需要5v您可以从UNO或USB/TTL模块获得该引脚,因为它们具有可提供5v稳压的引脚。
不使用UNO或USB/TTL模块时,您可以从任何USB充电器获得稳定的5V稳压电压,如果您没有USB模块/插座,则可以通过回收图中所示的任何适配器来制造自己的产品。
获得3v3稳压电压
某些应用取决于两个电压(为5v电源供电)主要uC和某些小型传感器或模块的电压为3v3)。与上一步一样,您可以在Arduino开发板上使用3v3引脚,或者确保选择同时提供5v和3v3的USB/TTL模块。
使用自己的基于齐纳稳压器的稳压器
您可能会考虑使用3个AA电池(4.5v)和一个分压电阻器可提供3.3v电压,我们不能因为电流(以mA为单位)不是恒定的,因为运行在3.3v上的模块或传感器很可能具有有源组件和不同状态。
齐纳二极管可以用作最简单,最便宜的稳压器,尤其是当我们必须处理小电流量时。处于负偏置状态的齐纳·多德斯(Zener Doides)将在低于额定电压(3.3v通常写为3v3)时不允许电流流过,而在超出该限制的情况下则允许所有电流流过,这是稳压器允许的范围。您只需要一个非常小的电阻(如果您的电阻值较小,则并联一些电阻)即可消耗过多的电压。
因此,如果我们有3节AA电池(4.5v),而我们想提供3.3某个模块的电压为4.5v,面包板的电压为4.5v,我们可以使用单个3v3齐纳二极管,并在两端之间采用稳压的3.3v。如果我们使用10欧姆电阻器,则可以提供最高120 mA的功率(因为流经串联的电流会导致电阻器边缘之间的V/R和V超出稳压器的比例,即4.5-3.3 = 1.2,因此1.2/10 = 0.120A = 120mA)
因此,如果我们有4节AA电池(6v),并且可以使用两个齐纳二极管提供5.0v和3.3v的购买,一个显然是3v3,另一个是2v7(这是5v-3.3v = 2.7v),并用一个小电阻(例如10 ohm)串联连接,在这种情况下,我们可以提供高达100 mA的电流。 (过电压是6.0-5.0 = 1.0,所以I = V/R = 1.0/10 = 0.1A = 100mA)
-
Arduino
+关注
关注
187文章
6461浏览量
186570 -
面包板
+关注
关注
3文章
298浏览量
17536
发布评论请先 登录
相关推荐
评论