如何使用定制PCB测试和编程ATtiny控制器

发布者:科技梦行者最新更新时间:2022-07-25 来源: csdn关键字:PCB测试  编程 手机看文章 扫描二维码
随时随地手机看文章

在前面的文章中,我们已经介绍了Arduino与ATtiny系列AVR微控制器之间在规格参数方面的差异。但是,它们两者之间的另一个主要区别在于微控制器的编程方式。


只需通过USB电缆将Arduino开发板插入计算机即可对Arduino板进行编程。除自举程序外,这些开发板还集成了许多外围组件,使它们无需任何特殊连接或软件即可进行编程。


但是,ATtiny系列微控制器不是这种情况。根据项目的规模,可以使用几种不同的方式对ATtiny系列微控制器进行编程。


编程ATtiny微控制器的方法



本文上已经介绍了一种编程ATtiny的方法是使用Arduino Uno作为ISP编程器。使用Arduino作为AVR编程器是对单个单元进行原型制作的不错选择,但是对于生产产品的企业来说是不切实际的。对于使用SMD微控制器的设计而言尤其如此,因为它们无法插入Arduino或面包板。


在本文中,我们将研究对ATtiny微控制器进行编程的三种不同方法,这些方法允许对SMD封装进行编程,并且可以用于从不超过100个单元的小型原型运行扩大到数百个批量生产:

●    使用IC测试夹和ISP编程器进行编程

●    PCB插头连接器或测试点,使用插头连接器或pogo引脚将ISP编程器与PCB进行连接;

●    在将微控制器焊接到板上之前,可以使用SMT测试夹直接进行编程,也可以对芯片进行工厂编程。


定制设计测试PCB

为了测试对ATtiny系列微控制器进行编程的各种方法,我设计了一个简单的测试PCB。


PCB是一个温度计,背面带有DHT22温湿度传感器。在本例中,此传感器仅读取温度。


使用DHT22传感器的定制PCB的后视图。


测试板的正面还带有一排LED,类似于模拟温度计上的汞/酒精管。在较高的温度下更多的LED点亮,此外,LED在低温和高温之间将颜色从蓝色变为红色。


在低温下(例如冬天的外面),LED会发出蓝色光,并且较少的LED灯点亮。


在高温下(例如在热风枪前面),LED会亮红色,并且更多LED灯会亮起。


测试板的主要部分包含多种封装,用于安装以下ATtiny系列微控制器之一:ATtiny84、ATtiny85、ATtiny2313和ATmega328。每个微控制器还具有一些无源组件,以使一切正常工作。


PCB还包含用于安装ATtiny 84,ATtiny 85,ATtiny2313或ATmega328的封装。


最后,系统由电路板底部的Micro USB端口供电。


生产的PCB为红色,匹配酒精温度计的颜色。除了DHT22之外,所有其他组件都是SMD部件,因此可以通过回流焊接组装电路板。


运行测试PCB的代码

运行测试PCB的代码不太复杂。


在每次循环开始时,微控制器都会从DHT22获取温度读数。然后,使用两个不同的map()语句将温度读数转换为LED的颜色和要点亮的LED个数。

  1. /*

  2.    Project:  ATtiny Microcontroller Test Platform

  3.    Published on Maker Pro

  4.    Author:  Scott Hatfield (Toglefritz)  

  5. */


  6. // CONFIGURATION  //


  7. // If you are using an ATint84, the LEDs are connected to pin 2. For any of the other

  8. // microcontrollers, the LEDs are connected to pin 4.


  9. // ATtiny84

  10. // #define PIN 2


  11. // ATtiny85 or ATTiny2313 or ATmega328

  12. #define PIN 4


  13. // NEOPIXEL SETUP //


  14. // Include the Adafruit NeoPixel library

  15. #include


  16. #define NUMPIXELS 7   // There are seven LEDs on the board


  17. // Set up the NeoPixel library

  18. Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);


  19. // DHT22 SETUP  //

  20. #include "TinyDHT.h"


  21. // The temperature sensor is connected to pin 3 for all microcontrollers

  22. #define DHTPIN 3


  23. #define DHTTYPE DHT22   // DHT 22  (AM2302)

  24. DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor


  25. // SKETCH VARIABLES  //

  26. float temp;  // Stores temperature value

  27. int color;   // The color of the LEDs, for use with the Wheel() function

  28. int number;  // The number of LEDs to illuminate



  29. void setup() {

  30.   // Set up the LEDs

  31.   pixels.begin();   // Initialize NeoPixel object

  32.   pixels.clear();   // Set all pixel colors to 'off' to start

  33.   pixels.setBrightness(50);   // The LEDs do not need to be super bright


  34.   dht.begin();    // Initialize the DHT22 object

  35. }


  36. void loop() {

  37.   // Read the temperature

  38.   int16_t temp = 30;//dht.readTemperature();

  39.   // Reading temperature or humidity takes about 250 milliseconds!

  40.   delay(250);

  41.   /*

  42.      The DHT22 is capable of measuring temperatures between -40C and 125C. But, because this is supposed to

  43.      be hand-held device, we will map the temperatures only to between -25C and  40C.

  44.   */


  45.   // Map the temperature reading to a color number used for the LEDs. At the coldest temperatures, the light will be blue,

  46.   // at the hottest, the light will be red.

  47.   color = map(temp, -18, 30, 75, 1);


  48.   // Then, map the temperature reading to a number of LEDs to illuminate. At the lowest temperatures, only the bottom LED will

  49.   // illuminate, at the hightest temperatures, all LEDs will illuminate.

  50.   number = map(temp, -18, 30, 0, 6);


  51.   // Set the LEDs to the color corresponding to the current temperature reading

  52.   for(int i = 0; i <= number; i++) {

  53.     pixels.setPixelColor(i, Wheel(color));

  54.   }

  55.   pixels.show();

  56. }


  57. // Wheel() is a helper function to get colors from single values between 0 and 255  

  58. // Input a value 0 to 255 to get a color value.

  59. // The colours are a transition r - g - b - back to r.

  60. // For a visual representation of the values, see https://docs.google.com/spreadsheets/d/1vYsRDL4QzcZtP30jqQByM2pK3_Xq2RPOyVwkcxQOnPI/edit?usp=sharing

  61. uint32_t Wheel(byte WheelPos) {

  62.     if(WheelPos < 85) {

  63.         return pixels.Color(255 - WheelPos * 3, 0, WheelPos * 3);

  64.     }

  65.     else if(WheelPos < 170) {

  66.         WheelPos -= 85;

  67.         return pixels.Color(0, WheelPos * 3, 255 - WheelPos * 3);

  68.     }

  69.     else {

  70.         WheelPos -= 170;

  71.         return pixels.Color(WheelPos * 3, 255 - WheelPos * 3, 0);

  72.     }

  73. }


使用测试PCB尝试ATtiny编程方法

如前所述,有三种主要的ATtiny系列微控制器编程方法。PCB电路板是一种温度计,带有DHT22温度传感器以及一排LED,用于根据颜色和发光LED的数量指示当前温度。 本系列的后续部分将全部使用同一测试板来说明如何使用上述编程方法。


关键字:PCB测试  编程 引用地址:如何使用定制PCB测试和编程ATtiny控制器

上一篇:使用IC测试夹编程ATtiny微控制器的方法
下一篇:使用ATtiny85控制器制作高速摄像机触发器

推荐阅读最新更新时间:2024-11-07 14:01

图形点阵LCD液晶模块显示界面的可视化编程方案与实践
随着图形点阵LCD液晶显示模块在各行各业的逐步使用,使得人机界面变得越来越直观,尤其对于国内大多数需要有汉字和图形显示的用户来说,显示界面的友好与否,将直接影响到其产品的形象和市场竞争力,但一般涉及有关图形点阵液晶模块显示界面开发的技术人员由于缺乏经验而往往感到力不从心,尤其当用户的控制电路资源非常缺乏的条件下(如家用电器),图形点阵液晶模块则更是望尘莫及,而市面上所能见到的仍是那些“不顾客户死活而又自认清高”的传统型液晶显示模块,虽然其成本已经降到普遍能接受的地步,但还是因其控制方法的特殊性和复杂性严重阻碍液晶显示器的推广应用。 针对目前的这种状况,深圳联合电子有限公司开发出一种图形点阵液晶模块,将LCD所有的底层操
[电源管理]
图形点阵LCD液晶模块显示界面的可视化<font color='red'>编程</font>方案与实践
单片机串行接口的编程方法和应用
在单片机系统以及现代单片机测控系统中,广泛使用了串行通信方式。本文主要学习串行接口的编程方法和了解常用的串口通信应用。我们首先应该掌握串口基础知识,包括其各个工作方式的特点和接收、发送逻辑,掌握串口控制寄存器的设置方法。在此基础上,通过学习本文的示例来了解串口编程的基本方法。 一、串口通信的典型应用 单片机与PC机的通信。例如将单片机测控系统采集的数据通过RS-232接口发送到上位机。如图1、2所示。通常需要使用辅助软件,如图3串口调试助手、图4上位机通信软件。 图1 单片机串口连接 图2 单片机与PC机通信 图3 串口调试助手 图4 上位机通信软件 二、串行接口的编程方法举例 例1:利用串行口工作方式0扩展出8
[单片机]
单片机串行接口的<font color='red'>编程</font>方法和应用
s3c2440裸机-电阻触摸屏编程(2.触摸屏TS控制器)
触摸屏接口模式 Normal Conversion Mode: 正常转换模式,一般情况下可以配置ADCCON和ADCDAT0来读取数据。 Separate X/Y position conversion Mode: x,y坐标分离转换格式,x坐标会写入ADCDAT0, y坐标会写入ADCDAT1,所以会产生2次中断开分开完成x,y的坐标转换。 Auto(Sequential) X/Y Position Conversion Mode 自动转换模式,当触摸屏按下后,会一次性对x,y方向的坐标进行转换,x坐标会写入ADCDAT0, x坐标会写入ADCDAT1。会产生一次中断进行x,y坐标的自动转换。 Waiting
[单片机]
s3c2440裸机-电阻触摸屏<font color='red'>编程</font>(2.触摸屏TS<font color='red'>控制器</font>)
MPEG-4实时编码器在ADSP-BF533上的实现
引言 MPEG-4视频编码技术可以在较小的带宽下传输高质量的视频数据,节省大量存储空间,但编码复杂度也较高,目前丰要有3种实现方案:在通用PC上编程实现;通过ASIC硬件实现以及使用通用DSP芯片实现。与前两者相比,通用DSP芯片实现方案具有以下优势:运算性能强;可升级性好,与PC类似,通用DSP芯片的功能仍是通过编程来实现的,能快速、方便地进行软件升级及添加新的功能,以适应技术发展和市场变化;成本低、功耗低、适应场合广泛。 系统硬件设计 编码系统处理核心为ADSP-BF533(以下简称BF533),利用其多功能并行接口PPI采集视频数据,该PPI具有DMA功能,无需内核干预便可进行高速数据传输,传输完成后可自动向内核发出D
[嵌入式]
单片机入门教程第22课-串行口应用编程实例
1. 串口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就可以扩展一个并行口。 例:用8051串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,可以靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。无论采用什么方式,在开始通讯之前,都要先对控制
[单片机]
单片机入门教程第22课-串行口应用<font color='red'>编程</font>实例
高速数据流盘处理:编程与标定
概览 PXI Express正在改变着工程师们设计系统的方式。本文讨论了支持高速数据流处理的技术、最大化系统流处理性能的应用设计和在数据流导入磁盘与数据流导入存储器应用中可获得的数据速率基准。 引言 流处理是指以足够维持连续采集或信号生成的高速率将数据传输至仪器或从仪器输出。这就意味着任一项流处理应用的性能总是受限于数据的大小和传输速度。许多工程师利用了“流处理”技术,但是在很多应用中,数据无法以足够快的速率被生成或采集。在这些情况下,工程师们必须折衷处理,或者以足够低的采样率对要通过总线传输的数据进行采样,或者以所需的高速率进行采样但所持续时间较短(这个时间受限于仪器的板载存储器)。然而,无论哪一种的牺牲都不是
[嵌入式]
机器人编程是学的什么
机器人编程其实是一个很大的范围。 机器人编程涉及的学科很多,集成应用(机器人编程和生产工艺)、机器人研发、电气、、机械、、等等。 机器人编程要学的哪些? 1.工业机器人应用编程,就学对应厂家的,如ABB的RAD,,这个要平台动手实操。 2.机器人算法开发,就得学习/C++,或者; 3.机器人控制器开发,C/C++,RTX等,也有在 ROS下开发的,界面MFC.QT.; 4.opencv等,再带点,可能用到 机器人学作为人工智能领域的六大主要研究方向之一,目前是比较热门的学习方向之一。 机器人编程课程主要包括两个方面:搭建和软件编程,在组装搭建过程中,会涉及物理、数学、机械结构、工程结构上的知识。
[机器人]
三菱plc编程定时器编程咋输入
三菱PLC(Programmable Logic Controller,可编程逻辑控制器)是一种广泛应用于工业自动化控制领域的设备。在三菱PLC中,定时器是实现时间控制功能的重要组件。本文将详细介绍三菱PLC定时器的编程方法和应用场景。 1. 定时器的基本概念 定时器是一种用于测量时间间隔的设备,它可以在PLC程序中实现延时、计时等功能。三菱PLC中的定时器有多种类型,包括T、TW、TD等,每种类型的定时器都有其特定的应用场景。 2. 定时器的分类 2.1 T型定时器 T型定时器是最常用的定时器类型,它可以设置一个预设的时间值,当PLC程序运行到定时器指令时,定时器开始计时,直到达到预设时间后,定时器输出一个信号。 2.2 T
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved