Atmega 四路传感器多用途开发板 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 Atmega 四路传感器多用途开发板

简介:基于Atmega48(目前最便宜的Atmega芯片)的传感器开发板,支持Arduino IDE

开源协议: Public Domain

(未经作者授权,禁止转载)

创建时间: 2022-01-12 13:07:22
更新时间: 2022-08-24 14:26:24
描述

项目的说明

 

这一个设计,主要是使用了有限的成本的情况下,便于编程和快速应用,我特意的采用了Atmega48,这个目前算是廉价并且容易获取的,最低只要6元(不含邮费),推力大(单个引脚10ma)并且还是5V。

 

关键,用的Arduino IDE,不过当下没有Bootloader所以你需要一个USBASP或者编程器,我使用的TH866A,这个还挺好用的。

 

在设计原因上,我是想说能建议的配置传感器和执行器,什么是执行器,比如继电器、单路MOS管等等,因此PCB上配了很大的接口,这种接口能拔插并且连接牢固,我很喜欢。

 

非常推荐使用Atmega8。

 

测试的方法

 

首先就是测试代码,这一段代码主要是验证三个灯是否能使用。

 

 

 

void setup() {
  // put your setup code here, to run once:
  pinMode(PD7,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(2,OUTPUT);
  digitalWrite(PD7,HIGH);
  digitalWrite(PB2,HIGH);
  digitalWrite(2,HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:
delay(50);
digitalWrite(PD7,HIGH);
delay(50);
digitalWrite(10,LOW);
delay(50);
digitalWrite(2,LOW);

delay(50);
digitalWrite(PD7,LOW);
delay(50);
digitalWrite(10,HIGH);
delay(50);
digitalWrite(2,HIGH);
}

 

 

在设计考虑上,三个灯分别作用为

 

黄色等待:正在传感中

绿色激活:传感到设置的值或目标,已经触发动作

红色错误:一些问题,比如说传感器数值有毛病

 

两个按钮的作用很明确,就是为了提供很好的手感并且容易安装,所以用的是五个jio的机械键盘轴。

 

这一款在电路元件上面尽量缩减了预算,所以没有设置常见的串口转USB,但是我配置有一套锂电池升压电路,可以稳定输出5V到Atmega48,但输入的电压不能超过5V,不然输入多少就输出多少。

 

因为没有Bootloader可用,所以也没必要引出DTR一类引脚,因此板载上省略。

 

需要注意的是连接的电池必须有保护板,没有设计充电电路,可自选常见的充电模块并联到电池输入端。

 

注:需要安装MiniCore库,在原理图上都已经标注好

 

验证代码

 

配合模块TM1367,接OUT1-2,使用到的库:SevenSegmentTM1637.h

 

附加开发板管理器网址:https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json

 

 

// include the SevenSegmentTM1637 library
#include "SevenSegmentTM1637.h"

/* initialize global TM1637 Display object
*  The constructor takes two arguments, the number of the clock pin and the digital output pin:
* SevenSegmentTM1637(byte pinCLK, byte pinDIO);
*/
//#include"LowPower.h"
const byte PIN_CLK = 5;   // define CLK pin (any digital pin)
const byte PIN_DIO = 6;   // define DIO pin (any digital pin)
#define LEDWAIT PD2
#define LEDACT 7
#define LEDERR 10
#define MODE 4
#define SEL 3
SevenSegmentTM1637    display(PIN_CLK, PIN_DIO);

// run setup code
void setup() {
  Serial.begin(9600);         // initializes the Serial connection @ 9600 baud
  display.begin();            // initializes the display
  display.setBacklight(100);  // set the brightness to 100 %
  pinMode(3,INPUT);
  pinMode(4,INPUT);
  pinMode(LEDWAIT,OUTPUT);
  pinMode(LEDACT,OUTPUT);
  pinMode(LEDERR,OUTPUT);
  pinMode(LEDWAIT,HIGH);
  pinMode(LEDACT,LOW);
  pinMode(LEDERR,LOW);
  display.print((int)((analogRead(A7)/1024.0)*100.0)); 
  delay(1000); 
  display.print("3600");  
};
int overtime = 15000;//sleep
void down()
{
 display.clear(); 
 while(1);
//LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
// run loop (forever)
long int syst=0;
long int lastsyst=0;
void loop() {
  syst=millis();
  if(syst-lastsyst>overtime)
  {
    down();
  }              // display LOOP on the display
  digitalWrite(LEDWAIT,HIGH);
  if(digitalRead(MODE) == HIGH)
  {
    lastsyst = millis();
    Run();
  }
  if(digitalRead(SEL) == HIGH)
  {
    lastsyst = millis();
    timeswitch();
  }
  
}
int mode = 0;
int times = 3600;
void timeswitch()
{
  mode += 1;
  switch(mode){
    case 0:
    times = 3600;
    break;
    case 1:
    times = 1800;
    break;
    case 2:
    times = 600;
    break;
    case 3:
    times = 300; 
    break;
    default:
    mode = 0;
    times = 3600;
    break;
  }
  display.clear(); 
  display.print(times); 
  delay(200);
}
void Run()
{
  digitalWrite(LEDWAIT,LOW);
  digitalWrite(LEDACT,HIGH);
  for (int i=times; i > 0; i--) {     // loop from 0 to 100
    display.print(i);                   // display loop counter
    delay(1000);                         // wait 100 ms
  };
  display.clear();                      // clear the display
  display.print("OVER");                // print SUCC for success
  display.blink();                      // blink SUCC
  delay(10000);                       // wait 1000 ms
  digitalWrite(LEDWAIT,HIGH);
}

 

 

 

设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
序号 文件名称 下载次数
1

ReversTimer.ino.with_bootloader.hex

9
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP