耳又又 发表于 2015-2-4 00:49:40

mylife1213 发表于 2015-2-2 21:08 static/image/common/back.gif
你用同一个芯片测试的代码吗?

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

164335413 发表于 2015-2-4 09:02:47

ranqingfa 发表于 2014-12-31 09:42 static/image/common/back.gif
节耗也是一门学问……

群主你好,群主再见!

mylife1213 发表于 2015-2-6 13:59:19

164335413 发表于 2015-2-4 09:02 static/image/common/back.gif
群主你好,群主再见!

:o为什么要加再见,你好就好了:D

ITEAD创易工作室 发表于 2015-2-9 15:06:28

好贴,强顶!用纽扣电池会是一个很好的解决方案。

gp.coder 发表于 2015-2-10 12:54:01

楼主,你好,这个微功耗电路的DS18B20的供电怎么解决?直接接电源,DS18B20不会一直耗电么?

mylife1213 发表于 2015-2-10 14:19:03

gp.coder 发表于 2015-2-10 12:54 static/image/common/back.gif
楼主,你好,这个微功耗电路的DS18B20的供电怎么解决?直接接电源,DS18B20不会一直耗电么?

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

wacha1221 发表于 2015-3-5 05:52:24


谢谢分享,学习一下

ofourme 发表于 2015-3-5 18:34:56

原理图有没有?没有加稳压器?无线模块有没有使用低功耗模式?还是不使用的时候直接关闭电源?

shenhaiyu 发表于 2015-3-20 17:49:57

LZ,请求帮助,如果我想使用外部唤醒怎么弄呢?比如我想用一个DS1307的闹钟脉冲输出唤醒328,等328完成动作了就进入掉电模式,等待下一次外部唤醒

yuanhaoliang 发表于 2015-3-21 09:53:27

好厉害的样子!

zjbhm 发表于 2015-3-22 22:06:10

楼主,发现个问题,用你的程序后,模拟口读出的数据都是0,不知怎么回事?比如说要每隔8秒后读下模拟口A2的数据,发现读出都是0,而没有加看门狗的程序都能正常读数。

zjbhm 发表于 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
}

zjbhm 发表于 2015-3-22 22:11:24

模拟口读的数据都是0,难道看门狗与模拟口有冲突?

yahan 发表于 2015-3-24 14:54:28

涨姿势了:$

loneress 发表于 2015-3-27 10:38:07

zjbhm 发表于 2015-3-22 22:11 static/image/common/back.gif
模拟口读的数据都是0,难道看门狗与模拟口有冲突?

ADCSRA=0;//OFF ADC
把这行注释掉就行了
页: 1 2 3 4 [5] 6 7
查看完整版本: 2月2号-外置采集温度_让arduino用2颗5号电池运行1年以上