我使用 micro SD 卡记录从连接到微控制器(MSP430G2553)的四个力传感器读取的数据。 控制器每15分钟记录一次 SD 卡读数并进入睡眠模式。 我使用的是1000 mAh 电池、电池使用寿命长达一周以上。 是否可以降低功耗、使其持续一个月。
(#)即使微控制器休眠15分钟、SD 卡仍在持续耗电。
(#)写入过程需要几 mA 的电流。
帮助提出任何建议以大幅降低功耗。
原理图如下所示、 原理图后面插入了代码。
#include
#include
/*------------------
将文件 Log.txt 从该文件的位置复制到
SD 卡的根目录。
//
#include "spi.h"
#include "pfatfs.h"
#define cs_pin 8. //芯片选择引脚
#define READ_BUFFER 128 //读取缓冲区的大小(以字节为单位)
//#define LOG_DELAY 200 // 5000ms -> 5sec
unsigned short int bw、br;
char buffer[read_buffer];
int rc;
DIR dir;/*目录对象*/
FILINFO fno;/*文件信息对象*/
uint32_t sensor1;
uint32_t sensor2;
uint32_t sensor3;
uint32_t Sensor4;
uint8_t StringLength = 0;
char buf[50];
uint32_t counter = 0;uint32_t intc
= 0;t intt intt intt count = 0;t unsigned time int t intt intt intt intt intt intt 长度= 0;t intt intt 计数
uint32_t T1 = 0;
uint32_t T2 = 0;
uint32_t T3 = 0;
uint32_t T4 = 0;
void setup ()
{
analogReference (INTERNAL2V5);
引脚模式(9、输出);
引脚模式(10、输出);
Serial.begin(9600);
FatFs.begin(cs_pin);
serial.print ("\n 串行输出\n\r\n);
}
/*停止并显示死亡消息*/
void 裸片(int pff_err)
{
Serial.println();
Serial.print("FAILED with RC=");
Serial.print(pff_err,DEC);
for (;;);
}
void printdec (UINT32_t ui)
{
Serial.print(ui/10,DEC);
Serial.print(".");
Serial.print(ui.print");Serial.print(<.print)<.10(ui);seri%10(ui)
void loop()
{if
(c=1)
{digitalWrite(10,
high);
delay(300);
digitalWrite(10, low);
delay(300);delay(300);
C++;
}
sensor1 = analogRead (2);
delay (5);
t1 = sensor1;
Sensor2 = analogRead (3);
延迟(5);
T2 = sensor2;
sensor3 = analogRead (5);
延迟(5);
T3 = sensor3;
Sensor4 = analogRead (6);
延迟(5);
T4 = Sensor4;
if (d=5)
{{
{RC = Fatfs.open ("log.TXT");
if (RC) die (RC);
delay (5);
bw=0;
sprintf (buf、"%lu 输出为%lu、%lu、%lu、%lu、%lu\r\n"、counter、t1、t2、t3、t4);
counter+
(stringf+);stringbuf+(strtlf);stringf.pringf+(串行长度);
RC = Fatfs.lseek (AccStringLength);
IF (RC) DIE (RC);
AccStringLength = AccStringLength + 1024;
RC = FatFs.write (buf、StringLength、&bw);
if (RC) die (RC);
RC = FatFs.write (0、0、&bw);//完成 if
(RC) die (RC)的写入;
RC = FatFs.close (); //关闭文件
IF (RC)裸片(RC);
D=0;
}}
{
d=d+1;
}
digitalWrite (9、low);
SLEEP (7500);
digitalWrite (9、high);
}