arduino舵机控制程序怎么根据电路设计程序

《动手玩转Arduino》—— 第11章 认识Arduino系列
11.1 作品37:在面包板上做自己的Arduino
本节书摘来自异步社区《动手玩转Arduino》一书中的第11章,第11.1节,作者【澳】John Boxall,译者 翁恺,更多章节内容可以访问云栖社区“异步社区”公众号查看。
###第11章 认识Arduino系列
在本章,我们将:
学习如何在面包板上做自己的Arduino电路;
研究各种Arduino兼容板的特性和优点;
学习开源硬件。
本节书摘来自异步社区《动手玩转Arduino》一书中的第11章,第11.1节,作者【澳】John Boxall,译者 翁恺,更多章节内容可以访问云栖社区“异步社区”公众号查看。
###第11章 认识Arduino系列
在本章,我们将:
学习如何在面包板上做自己的Arduino电路;
研究各种Arduino兼容板的特性和优点;
学习开源硬件。
我们要把整个Arduino分解成若干个元件,然后在面包板上搭出自己的Arduino电路来。自己搭电路可以省钱,在作品和原型都在不断变化时特别有用。我们还会学习一些新的元件和电路知识。然后研究如何能不借助额外的硬件把程序上传到自己做的Arduino上去。最后,我们要尝试Arduino Uno以外的常见的版本,找出它们的不同。
11.1 作品37:在面包板上做自己的Arduino
随着作品和实验在复杂度和数量上逐渐加大,为每个任务购买Arduino板的成本很容易会失去控制,特别是当你希望同时做不止一个作品的时候。因此,如果在面包板上搭一个Arduino电路,然后再扩展来搭出整个电路,以这样的方式把Arduino板组合进整个电路,会更便宜也更方便。在面包板上把基本的Arduino电路搭出来所需的元件成本应该低于10美元,而且如果没有损坏,这些元件通常还可以再用于其他作品。如果作品需要大量外部电路,自己做会更容易,这样可以省下大量在Arduino板和面包板之间来来回回的导线。
11.1.1 元件
要做一个最小集的Arduino,需要以下的元件:
一块面包板;
一些导线;
一个7805线性稳压器;
一个16MHz晶体振荡器(比如Newark的元件编号为16C8140的晶体振荡器);
一个ATmega328P-PU单片机,预先烧录了Arduino的引导装载程序;
一个1μF/25V电解电容(C1);
一个100μF/25V电解电容(C2);
两个22pF/50V瓷片电容(C3和C4);
两个100nF/50V瓷片电容(C5);
两个560Ω电阻(R1和R2);
一个10kΩ电阻(R3);
两个任意规格的LED(LED1和LED2);
一个按钮(S1);
一个6位插针;
一个PP3型电池扣;
一个9V PP3型电池(叠层电池)。
有些元件可能你还没见过。在下面的小节里,我会解释每个元件,给你看每个元件的样子和电路图符号。
1.7805线性稳压器
线性稳压器里有一个简单的电路,能把一个电压转换成另一个。元件清单里的稳压器的型号是7805,它能把7~30V的电压转换成固定的5V,最大的电流是1A,所以用它来给面包板Arduino供电是很合适的。图11-1所示是一种TO-220封装的7805,封装是指它的外形。
图11-2所示是7805的电路图符号。把7805标字的一面朝向自己,左边的管脚是输入电压,中间的管脚是地,而右边的管脚是5V输出。顶部的金属层钻了个孔,这样它就可以和一个更大的金属固定在一起,那片金属就成了散热器。当电流接近它的最大能力1A的时候要用散热器,因为那样使用的话,7805会变得非常热。金属层也是接在地上的。我们的电路需要一个7805稳压器。
2.16MHz晶体振荡器
这东西一般就叫做晶振,晶体振荡器能产生非常准确频率上的电信号。这里用的频率是16MHz,图11-3所示是我们要用的晶振的样子。
和你的Arduino板上的晶振比较一下,它们的形状和尺寸应该都是相同的。
晶振是没有极性的,它的电路图符号如图11-4所示。
晶振决定了单片机的运行速度。比如,我们要组装的单片机电路运行在16MHz,意思是它每秒能执行1600万条处理器指令。不过,这并不是说它能那么快地运行一行程序或是一个函数,因为一行代码要用很多处理器指令来执行。
3.Atmel ATmega328-PU单片机集成电路
单片机是一台微型计算机,里面有执行指令的处理器、不同类型的存放数据和程序指令的存储器,还能以各种方式收发数据。第2章讲到,单片机是面包板Arduino的大脑。图11-5所示就是一片ATmega328P。图中这样的集成电路的1脚,是在集成电路的左下角,标着一个小点的那个脚。
这个单片机的电路图符号如图11-6所示。
Arduino引导装载程序是一个软件,能将程序写入Arduino,不是所有的单片机芯片都有这样的引导装载程序的。自己做Arduino的时候,要购买已经烧录了引导装载程序的芯片。一般卖Arduino板的店家也会卖这样的芯片,比如adafruit、Freetronics和SparkFun。
11.1.2 电路图
图11-7所示是电路图。
这个电路图由两个部分组成。首先,左边是电源部分,能把电压降到稳压的5V。当有电的时候,一个LED就会亮。右边的部分,包括单片机、重启按钮、编程引脚和另一个LED。这个LED接到ATmega328上用在Arduino引脚13的那个管脚上。按照这个电路图接好Arduino。别忘了接线到那个6位插针(见图11-8),这个6位插座就是电路图中底部的6个圆圈。本章后面我们会用这个插针来上传程序到自己做的Arduino。
这个电路只是用一个9V电池和对应的电池扣供电,如图11-9所示。左边电路的正极(+)接电池扣的红色线,而负极(-)接黑色线。
![screenshot](
在自制的Arduino上,那些Arduino的引脚在哪里?普通Arduino板上有的那些模拟、数字和其他用途的引脚在我们的面包板版本上也都是有的,只要直接接到单片机上就行。
在面包板Arduino上,R2和LED2是接在数字引脚13上的。表11-1的左边列出了Arduino引脚,而右边是对应的ATmega328的管脚。
为避免混淆,像adafruit和Freetronics这样的厂家卖一种贴在单片机芯片上的不干胶标签,如图11-10所示的这个单片机(在 可以购买)。
11.1.3 运行测试程序
现在可以上传一个程序了。我们用一个简单的闪烁LED的程序开始。
// 作品37 - 做自己的面包板Arduino
void setup() 
{        
 pinMode(13, OUTPUT);   
void loop() 
 digitalWrite(13, HIGH);
 delay(1000);      
 digitalWrite(13, LOW); 
 delay(1000);      
有3种方法上传这个程序。
1.用交换单片机的方法
上传程序最便宜的方法,是把已有的Arduino里的单片机拔出来,插上我们自制的Arduino里的单片机,上传程序,然后再插回自制的Arduino里。
要从Arduino里安全地拔出单片机,要用到集成电路拔取钳,如图11-11所示。
在拔出单片机的时候,要保证慢慢地同时均衡地拔两端,别心急。拔出来可能不那么容易,但是最终单片机会出来的。
把单片机插进面包板或Arduino的时候,可能先得把管脚稍微向内弯一下,这样就能比较容易插进去。为此,把芯片的一边放在一个平面上,小心地按下,然后重复另一边,如图11-12所示。
最后,把原来的单片机插回到Arduino板的时候,要注意有标记的那端应该在右侧,如图11-13所示。
2.连接到另一块Arduino板
我们可以用Arduino Uno的USB接口上传程序给面包板上的Arduino的单片机。用这个方法既不会磨损Arduino板上的集成电路插座,又可以省钱,因为不需要另外购买USB编程线了。
以下是使用Arduino板的USB接口电路给另一块单片机上传程序的步骤。
(1)拔掉USB线,取下单片机芯片。
(2)断开面包板Arduino电路的电源。
(3)从Arduino的数字引脚0接一根线到面包板上的ATmega328P的管脚2,另一根线从Arduino的数字引脚1接到ATmega328的管脚3。
(4)把Uno的5V和GND接到面包板上对应的地方。
(5)从Arduino的RST接一根线到ATmega328的管脚1。
(6)给Arduino Uno板插上USB线。
这样,这个系统就好像是一个普通的Arduino Uno一样,我们就可以正常地把程序上传到面包板电路去了,需要的时候也可以使用串口监视器。
3.用FTDI编程线
最后的方法也是最简单的,但是需要购买一根USB编程线,叫做FTDI线(这个名字是因为里面用的接口电路的芯片是一家叫做FTDI的公司生产的)。在购买FTDI线的时候,要确认是5V型号的,因为3.3V型号的不能正常工作。这种线(见图11-14)的一头有一个USB插头,另一头是6线的插头。线的USB那头有等价于Arduino Uno板上的USB接口的电路。6线的插头是连到图11-7和图11-8所示的插针那里的。
连接这根线的时候,要确保插头的黑线这边插在面包板的插针的GND上。一旦这根线接好,它也会给电路供电,就像普通的Arduino板子一样。
在上传程序或使用串口监视器之前,要选择Tool -& Board确定板子类型为“Arduino Duemilanove”或“Nano(ATMega328)”,然后选择正确的单片机型号(见图11-15)。
一旦选择了一种上传的方法,就上传作品37的程序来做测试。现在,我们应该可以只用一块面包板来设计更复杂的电路了,这样我们能用更少的钱做出更多的作品来。如果学会了如何做自己的印刷电路板,甚至可以做出更长久的作品来。
版权声明:本文内容由互联网用户自发贡献,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至: 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】红轴机械键盘、无线鼠标等753个大奖,先到先得,云栖社区首届博主招募大赛9月21日-11月20日限时开启,为你再添一个高端技术交流场所&&
阿里云机器学习是基于阿里云分布式计算引擎的一款机器学习算法平台。用户通过拖拉拽的方式可视化的操作组件来进行试验,...
消息队列(Message Queue,简称MQ)是阿里云商用的专业消息中间件,是企业级互联网架构的核心产品,基于...
是根据用户的业务需求和策略,经济地自动调整其弹性计算资源的管理服务,能够在业务增长时自动增加 ECS 实例,并在...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
阿里云双11狂欢,不只是5折
Loading...自制Arduino最小系统
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
自制Arduino最小系统
& & &&Arduino 在电子爱好者和设计师中的影响力极其深远,可能都不亚于早些年代个人电脑所带来的影响(例如家庭计算机俱乐部等等)。市场上的Arduino数以百万计, 据估计,如果把衍生产品中的Arduino也算在内就更多了。预测在接下来的 5到10年里,学校将会使用Arduino来教授电子学和交互式系统原理。
Arduino封装了很多函数,以前很复杂的功能,现在通过一个简单的函数就搞定了。特别适合没有太多专业知识,但又热爱DIY的朋友。
  虽然Arduino板子的价格不高,但忠于DIY精神,动手至上。成本大约在10元。
  和常规的最小系统不同,这次用的是Arduino1.0,并且使用了&Upload using Programmer&功能,直接使用USBtinyISP下载程序,省去了usb转串口的下载器,同时也最大限度的避免了许多麻烦。
材料准备:
  1、ATmega 8(可以是&ATmega 8A-PU&、&ATmega 8PU-8PU&或&ATmega 8-16PU&,具体的差别下面会说)
  2、22pF陶瓷电容两个
  3、晶振一个(&ATmega 8A-PU&、&ATmega 8PU-8PU&用8M,&ATmega 8-16PU&用16M)
  4、USBtinyISP一个
先看Atmega8引脚示意图
电路一共分两个部分
  1、震荡电路:
  晶振连接Atmega8的pin9(PB6)、pin10(PB7),在分别连接连个22pF的电容,最后让一只电容接地。 2、程序下载以及供电部分:
  ICSP引脚连接图:
  +5V & pin7(VCC)
  GND & ping22(GND)
  D11 & pin17(PB3)
  D12 & pin18(PB4)
  D13 & pin19(PB5)
  reset & pin1(reset)
  这是连接好的板子:
  加了一个红色的LED做电源指示
下面就该给Atmega8下载bootloader了,现在就有两种情况:
  1、如果是&ATmega 8A-PU&和&ATmega 8PU-8PU&,因为IDE里没有直接支持8M的板子,所以要自己改造一下:
  下载下面的文件,解压后放在hardware\arduino\bootloaders\optiboot目录下,并在hardware\arduino\boards.txt里添加如下信息:
  01.##############################################################
  03.atmega8_8M.name=ATmega8_8MHz
  05.atmega8_8M.upload.protocol=arduino
  06.atmega8_8M.upload.maximum_size=7168
  07.atmega8_8M.upload.speed=115200
  09.atmega8_8M.bootloader.low_fuses=0xa4
  10.atmega8_8M.bootloader.high_fuses=0xdc
  11.atmega8_8M.bootloader.path=optiboot
  12.atmega8_8M.bootloader.file=optiboot_atmega8_8M.hex
  13.atmega8_8M.bootloader.unlock_bits=0x3F
  14.atmega8_8M.bootloader.lock_bits=0x0F
  16.atmega8_8M.build.mcu=atmega8
  17.atmega8_8M.build.f_cpu=8000000L
  18.atmega8_8M.build.core=arduino
  19.atmega8_8M.build.variant=standard
  这时启动IDE,你就能在board里看到&Atmega8_8M&,选择他就对了。
  2、如果是ATmega 8-16PU,在选板子时直接选择&arduino NG or w / ATmega 8&就可以了。
  选好板子后,使用USBtinyISP下载bootloader,当看到如下图片是,就说明下载成功了。
  好了,从这里开始就是和其他最小系统不同的地方了,通常我们会使用一个USB转TTL的下载器来下载程序,但因为种种原因,很多时候会出错。所以今天我们使用Arduino 1.0的&Upload using Programmer&功能来下载程序。&
  首先电路连接不变,还是使用下载bootloader的线路。然后确保你使用的IDE是Arduino
1.0(在Arduino的官网,一进下载软件页面的就看得见了),然后选择板子,还是和上面一样,ATmega
8-16PU可以直接用;&ATmega 8A-PU&和&ATmega
8PU-8PU&请先改造程序,然后写代码(我写了一个LED闪烁的程序来测试)。
  int led = 12;
  void setup()
  pinMode(led,OUTPUT);
  void loop()
  digitalWrite(led,HIGH);
  delay(1000);
  digitalWrite(led,LOW);
  delay(1000);
  写好后点击最左边的那个钩(编译)。
  最后是下载,大家可以看一下,在tools下新增加了一个&Programmer&,点开后选择USBtinyISP,Serial Port就不用选择了。
  最后打开&File&,你可以看到&Upload using Programmer&,点击后程序就开始下载了。
这是程序下载完后的照片,如果图片能动,你就能看见绿色的LED在闪烁。
   总结:如果按照以前的方法制作最小系统,下载bootloader和程序要使用两套电路。而且在下载程序时,TX和DX对下载线路的要求很高,还需要连 接复位电路。而使用Upload using
Programmer下载程序,仅需使用一套电路,简化了连接电路带来的不便,不需要转换器、不需要复位电路。最大限度地避免了许多麻烦。
  有兴趣的同学可以来试试。
  这是之后焊在洞洞板上的最小系统,效果还不错~
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reserved鍙?渶涓

我要回帖

更多关于 arduino怎么下载程序 的文章

 

随机推荐