[Arduino]使用ATmega8-16PU制作Arduino最小系统

Photobucket

Arduino_Testor是使用ATMEGA8-16PU-DIP28制作的Arduino最小系统。感谢Arduino社区提供丰富而强悍的各类软硬件资源,开源的魅力就在于人人都可以参与进来。目前暂时命名为“Arduino_Testor”,其本质更接近于Arduino Prototype,是连电源部分也都剥离的最小系统,搭接完成以后,可以直接与Arduino IDE实现串口通信,在手动复位以后完成程序下载,基本与Arduino成品板一样使用。虽然ATmega8是AVR系列单片机中Flash最小的一款,但是作为初学者进行实验,想必应该是绰绰有余啦。

本文主要参考了@Togke的极客工坊的《arduino学习笔记19 – Atmega8制作最小arduino系统》,以及《Arduino on a prototype board》一文,复位电路,采用了《avr单片机复位电路》的方案,在此感谢各位的分享。

查阅了不少文档,不过真要做出来,也是没少费周折呀,特写下此文,做个记录,并配合视频,分享一下制作的过程。视频的信息量较大,还请配合视频阅读本文。

元件清单:

元件 数量 备注
22孔x22孔洞洞板 1片 电路基板
ATMEGA8-16PU-DIP28 1枚 主芯片
16M晶振 1片 外部时钟源
22pF 瓷片电容 2颗 起振电容
104瓷片电容 2颗 电源滤波及复位电路滤波
10K电阻 1颗 复位电路上拉电阻
1N4148二极管 1颗 复位电路
6mm轻触开关 1颗 复位按键
杜邦线及接头 若干

辅助工具:

  • 串口模块(Max232 || CP2102 || PL2303)
  • USB-ISP模块
  • AVR最小系统,很关键哦~

布线图:
Photobucket
实物对比照片:
Photobucket

将普通的刷成Arduino的芯片,需要2个步骤:

  • 修改熔丝位
  • 烧Bootloader

倒是和前一阵的刷安卓的经历有点异曲同工之妙。^_^,而这2步,都是使用USB-ISP模块,配合AVR最小系统实现的。因为在Arduino_Testor上只有串口通讯的接口,没有把那MOSI,MISO,SCK,RST这4条线引出来。

此处的熔丝位和纯AVR开发系统的熔丝位略有不同,请按下图进行设置。

Photobucket

主要的区别在于主程序的启动位置(毕竟要保护好BootLoader嘛),以及启动延时。同时,ATMEGA8相比较与ATMEGA8L,熔丝位CKOP也有所变化。

烧的Hex文件,位于”Arduino IDE文件夹\hardware\arduino\bootloaders\atmega8\ATmegaBOOT.hex”

具体烧写办法,同样参考《【硬件】AVR之旅的第一步~ | Beginning AVR》一文。

理论上,这个步骤是Once and For All的,也就是使用一次,终生受用的那种。毕竟在未来使用Arduino IDE进行开发及测试的时候,是不会轻易去重写 Bootloader 的。相当于说在Android系统中,ROM随便刷,底包没事不要乱刷,以免变砖,是一样的道理。

Photobucket

接下来,就可以把芯片转移到 Arduino_Testor 上,进入 Aruino IDE 以后,选择好串口号以及板型(“Arduino NG or order /w ATmega8”),就能实现Arduino程序的下载。在下载过程中,注意手动按Reset按键的时机。我个人现在使用的是截至目前最新的“Arduino 1.0”。相比较于0022的版本,在程序下载(或者叫“上传”吧,毕竟英文是“Uploading”,伤不起……)中分为“Compiling Sketch…”和“Uploading…” 两个步骤。我个人是在Compling结束的刹那,消息栏提示编译完成后文件大小以后,按下Reset按键,就能完成下载(“上传”),操作成功时,IDE提示“Done uploading.”。约10秒钟后,Arduino程序开始运行。如果不成功,请检查硬件电路,并注意Reset的时机。而旧版的IDE中,似乎没有细分这2个步骤,一直都是Uploading,所以时机把握会更困难一些。

视频中演示了同一片ATmega8芯片,从原先运行无arduino框架的程序,切换为arduino芯片的全过程,不但烧写Arduino的标准Blink例程,并也烧进去我写的Arduino驱动3D8的例程,可见系统目前运行正常。

对于这个系统是否稳定,我会进一步进行实验,届时与大家分享心得吧。Arduino的商业板,一片售价再便宜也要100元左右,难得买一片,就不太舍得到处实验,毕竟接了拆,拆完又接总是让人比较郁闷,而面包板的接头接触……,也就是那么回事吧,各种不给力。还是自己焊板子比较踏实。而且Arduino_Testor上所有IO都集成了3种插口,用起来一定很爽,^_^

愿大家也玩得开心~

特别感谢:@Togke@新车间@微笑的Rockets

关于aGuegu

阿古 真名:官微宏,技术Geek,玩Arduino,玩Linux,爱Google,爱开源;现居福州
此条目发表在内功心法分类目录,贴了, , , 标签。将固定链接加入收藏夹。
  • 这个最小系统省钱呀~!不过对工作电压要求比较高吧,不知道是4.5-5.5V还是2.7-5.5V ?

    • 现在是总USB取电,所以电压就是4.5-5.5v咯。因为主芯片是ATmega8-16PU,所以按照datasheet上面,电压还是稳定在5v左右比较好。

      • 可惜实际应用中电压比较难达到5V,一般都是6V,9V或者12V做电源的。
        我想再加个LM7805稳压就爽了,可以在小车或者其他地方使用了。

        • 加7805是很常见的电源处理啦,做好滤波就是了。不过集成电路的设计这一块,基本还是以5V为主吧,毕竟周边电路的设计也是基于5v。我这边基本都是从USB取电,所以电源部分也简化了。

    • darkorigin

      可以自己加个线性稳压器,比如7805。

  • yangqiang

    根据你的教程,把AVR最小系统作好了,但是要做Arduino最小系统的时候发现手上没有usb转串口模块,但好在我的电脑有串口,所以想问一下:使用Arduino IDE下载程序的时候不使用usb转串口模块,而是直接使用串口怎么连线?

    • 说的是DB9串口吗?串口通讯,本来就只有这么2条数据线,加一个GND啦,没有转串口模块的话,就相当于直接接出来,应该是更加“纯正”的连接吧,应该是没有问题,熟悉51最小系统的话,可以依葫芦画瓢,套用到AVR上。

  • tiana3

    是不是把熔丝位atmega8(低df,高ca)弄错了,应该是atmega8(低e1,高d9)

    • tiana3

      我查了手册,上面是这样写的,不知道是不是,说明一下

    • 应该是没有错吧,要不然怎么能和视频对上呢?熔丝位的设置也是有依据的嘛,参考自(ADE)\hardware\arduino\boards.txt文件。熔丝位算是最底层的配置芯片的设置了,并没有统一的标准,一定要怎么样。文章里这个配置,就是按arduino进行的咯~

  • Pingback: [Arduino]用 ATmega8L-8PU 体验 Arduino | Agu's Mill 古作坊()

  • Pingback: [Arduino|Micro] TCA1602 红外遥控液晶屏时钟 | Agu's Mill 古作坊()

  • Pingback: [Arduino|Zero]做块 Arduino“开发板” | Agu's Mill 古作坊()

  • Pingback: 用ATmega8L自制串口Arduino()

  • 年前去电子城找不到Arduino的商业板,网上哪里能买到?

    • 电子城主要销售一下基本常用元件,网上选择很多,如果不嫌弃,可以到博客下方链接中的圣源电子的淘宝店买。

  • 孤傲龙杨

    我的怎么熔丝为配置了!单片机就锁了那

    • 烧写熔丝要特别小心,尤其是设计到时钟源的时候。如果动了时钟源,而又无硬件时钟,就会出现锁死的情况,其实是因为缺少时钟源,单片机无法运行导致的。

  • t01051

    偶然间看到这篇文章,想问一下:我的芯片是ATMEGA8L-8PU的,照了你的电路做好了板子,但是你在文章中说ATMEGA8和ATMEGA8L的熔丝位不同,我不知道怎么设置,还请赐教!另外我想知到你用什么软件改的熔丝位?

    • 在board文件里面有体现呀。熔丝为不同主要是因为m8L可以用内部时钟,运行在8MHz

  • 刘立

    怎么感觉你的电路图与你实际的电路板有出入啊!?那个复位开关附近的电容和串行接口附近的电容,能解释下用途吗?谢谢咯!

    • 出入的也就是这个电容的部分,这个电容连接的是串口的DTR和单片机的RST,实现打开串口设备时单片机的自动复位。

  • Pingback: arduino学习笔记19 - Atmega8制作最小arduino系统 - FreelectryFreelectry()