极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: mylife1213

2月2号-外置采集温度_让arduino用2颗5号电池运行1年以上

  [复制链接]
发表于 2015-2-4 00:49:40 | 显示全部楼层
mylife1213 发表于 2015-2-2 21:08
你用同一个芯片测试的代码吗?

是的,就是我发的那一段代码,最低只有4-5uA,每8秒有一次唤醒,大概10-20uA,
回复 支持 反对

使用道具 举报

发表于 2015-2-4 09:02:47 | 显示全部楼层
ranqingfa 发表于 2014-12-31 09:42
节耗也是一门学问……

群主你好,群主再见!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-6 13:59:19 | 显示全部楼层
164335413 发表于 2015-2-4 09:02
群主你好,群主再见!


为什么要加再见,你好就好了
回复 支持 反对

使用道具 举报

发表于 2015-2-9 15:06:28 | 显示全部楼层
好贴,强顶!用纽扣电池会是一个很好的解决方案。
回复 支持 反对

使用道具 举报

发表于 2015-2-10 12:54:01 | 显示全部楼层
楼主,你好,这个微功耗电路的DS18B20的供电怎么解决?直接接电源,DS18B20不会一直耗电么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-10 14:19:03 | 显示全部楼层
gp.coder 发表于 2015-2-10 12:54
楼主,你好,这个微功耗电路的DS18B20的供电怎么解决?直接接电源,DS18B20不会一直耗电么?

直接接电源不会耗电,只有在转换温度和传输数据才会消耗电流,当然也可以使用寄生电源
回复 支持 反对

使用道具 举报

发表于 2015-3-5 05:52:24 | 显示全部楼层

谢谢分享,学习一下
回复 支持 反对

使用道具 举报

发表于 2015-3-5 18:34:56 来自手机 | 显示全部楼层
原理图有没有?没有加稳压器?无线模块有没有使用低功耗模式?还是不使用的时候直接关闭电源?
回复 支持 反对

使用道具 举报

发表于 2015-3-20 17:49:57 | 显示全部楼层
LZ,请求帮助,如果我想使用外部唤醒怎么弄呢?比如我想用一个DS1307的闹钟脉冲输出唤醒328,等328完成动作了就进入掉电模式,等待下一次外部唤醒
回复 支持 反对

使用道具 举报

发表于 2015-3-21 09:53:27 | 显示全部楼层
好厉害的样子!
回复 支持 反对

使用道具 举报

发表于 2015-3-22 22:06:10 | 显示全部楼层
楼主,发现个问题,用你的程序后,模拟口读出的数据都是0,不知怎么回事?比如说要每隔8秒后读下模拟口A2的数据,发现读出都是0,而没有加看门狗的程序都能正常读数。
回复 支持 反对

使用道具 举报

发表于 2015-3-22 22:09:57 | 显示全部楼层
上个程序,各位高手看看什么问题?
#include <avr/sleep.h>
#include <avr/wdt.h>

volatile byte data=0;

#define Pot A2                        //电位器引脚命名

int PotBuffer = 0;                //AD读取数据缓存变量


void setup() {
  pinMode(13,OUTPUT);
  setup_watchdog(9);
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
  ACSR |=_BV(ACD);//OFF ACD
  ADCSRA=0;//OFF ADC
  Sleep_avr();//Sleep_Mode
  
  Serial.begin(9600);                        //初始化串口波特率为9600
}

void loop() {

if(data>=1){
  data=0;
//-------------------------------
   digitalWrite(13,HIGH);
  delay(100);                      //此处是到达设置唤醒时间允许的程序
  digitalWrite(13,LOW);
  PotBuffer = analogRead(Pot);        //读取AD值
  Serial.print("Pot = ");                                //串口输出“Pot = ”
  Serial.println(PotBuffer);                //串口输出PotBuffer的值
  delay(500);                                                                                //延时500ms
  
  
  
//--------------------------------   
Sleep_avr();
}
else {
  Sleep_avr();  //Continue Sleep
}

}

//Sleep mode is activated
void setup_watchdog(int ii) {

  byte bb;

  if (ii > 9 ) ii=9;
  bb=ii & 7;
  if (ii > 7) bb|= (1<<5);
  bb|= (1<<WDCE);

  MCUSR &= ~(1<<WDRF);
  // start timed sequence
  WDTCSR |= (1<<WDCE) | (1<<WDE);
  // set new watchdog timeout value
  WDTCSR = bb;
  WDTCSR |= _BV(WDIE);


}
//WDT interrupt
ISR(WDT_vect) {

  ++data;
// wdt_reset();

}

void Sleep_avr(){
  set_sleep_mode(SLEEP_MODE_PWR_DOWN  ); // sleep mode is set here
  sleep_enable();
  sleep_mode();                        // System sleeps here
}
回复 支持 反对

使用道具 举报

发表于 2015-3-22 22:11:24 | 显示全部楼层
模拟口读的数据都是0,难道看门狗与模拟口有冲突?
回复 支持 反对

使用道具 举报

发表于 2015-3-24 14:54:28 | 显示全部楼层
涨姿势了
回复 支持 反对

使用道具 举报

发表于 2015-3-27 10:38:07 | 显示全部楼层
zjbhm 发表于 2015-3-22 22:11
模拟口读的数据都是0,难道看门狗与模拟口有冲突?

  ADCSRA=0;//OFF ADC
把这行注释掉就行了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-9-29 14:58 , Processed in 0.047179 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表