Ardunio Uno Power Source: USB vs Power Jack
hi all,
i purchased arduino uino board , sparkfun microsd shield 1-2 months ago. i'm trying collect pressure data records sd card. got working , installed heartbeat led indicate data being logged. works when use usb cable power i'm having issues when use 9v , 12v power packs. when use power pack connection, heart beat led not pulse , logging unreliable. i'll have data, no date, or corrupted file.
i'm not sure going on , use help. thought must hardware issue since board getting powered not functioning correctly. attached code adapted sdfat library example:
// simple data logger arduino analog pins optional ds1307
// uses rtclib https://github.com/adafruit/rtclib
#include <sdfat.h>
#include <sdfatutil.h> // define freeram()
#define sd_chip_select ss // sd chip select pin
#define use_ds1307 0 // set nonzero use ds1307 rtc
#define log_interval 1000 // mills between entries
#define sensor_count 3 // number of analog pins log
#define echo_to_serial 0 // echo data serial port if nonzero
#define wait_to_start 1 // wait serial input in setup()
#define adc_delay 0 // adc delay high impedence sensors
// file system object
sdfat sd;
// text file logging
ofstream logfile;
// serial print stream
arduinooutstream cout(serial);
// buffer format data - makes eaiser echo serial
char buf[80];
// constants won't change. used here
// set pin numbers:
const int ledpin = 7; // number of led pin
// variables change:
int ledstate = low; // ledstate used set led
//------------------------------------------------------------------------------
#if sensor_count > 6
#error sensor_count large
#endif // sensor_count
//------------------------------------------------------------------------------
// store error strings in flash save ram
#define error(s) sd.errorhalt_p(pstr(s))
//------------------------------------------------------------------------------
void setup() {
// initialize sd card @ spi_half_speed avoid bus errors with
if (!sd.begin(sd_chip_select, spi_half_speed)) sd.initerrorhalt();
// create new file in root, current working directory
char name[] = "logger00.csv";
(uint8_t = 0; < 100; i++) {
name[6] = i/10 + '0';
name[7] = i%10 + '0';
if (sd.exists(name)) continue;
logfile.open(name);
break;
}
if (!logfile.is_open()) error("file.open");
//format header in buffer
obufstream bout(buf, sizeof(buf));
bout << pstr("millis");
(uint8_t = 0; < sensor_count; i++) {
bout << pstr(",sens") << int(i);
}
logfile << buf << endl;
}
//------------------------------------------------------------------------------
void loop() {
uint32_t m;
// wait time multiple of interval
{
m = millis();
} while (m % log_interval);
// use buffer stream format line
obufstream bout(buf, sizeof(buf));
// start time in millis
bout << m;
// read analog pins , format data
(uint8_t ia = 0; ia < sensor_count; ia++) {
#if adc_delay
analogread(ia);
delay(adc_delay);
#endif // adc_delay
bout << ',' << analogread(ia);
}
bout << endl;
// log data , flush sd
logfile << buf << flush;
// check error
if (!logfile) error("write data failed");
// don't log 2 points in same millis
if (m == millis()) delay(1);
// toggle led state
if (ledstate == low)
ledstate = high;
else
ledstate = low;
// set led ledstate of variable:
digitalwrite(ledpin, ledstate);
}
any appreciated!
i purchased arduino uino board , sparkfun microsd shield 1-2 months ago. i'm trying collect pressure data records sd card. got working , installed heartbeat led indicate data being logged. works when use usb cable power i'm having issues when use 9v , 12v power packs. when use power pack connection, heart beat led not pulse , logging unreliable. i'll have data, no date, or corrupted file.
i'm not sure going on , use help. thought must hardware issue since board getting powered not functioning correctly. attached code adapted sdfat library example:
// simple data logger arduino analog pins optional ds1307
// uses rtclib https://github.com/adafruit/rtclib
#include <sdfat.h>
#include <sdfatutil.h> // define freeram()
#define sd_chip_select ss // sd chip select pin
#define use_ds1307 0 // set nonzero use ds1307 rtc
#define log_interval 1000 // mills between entries
#define sensor_count 3 // number of analog pins log
#define echo_to_serial 0 // echo data serial port if nonzero
#define wait_to_start 1 // wait serial input in setup()
#define adc_delay 0 // adc delay high impedence sensors
// file system object
sdfat sd;
// text file logging
ofstream logfile;
// serial print stream
arduinooutstream cout(serial);
// buffer format data - makes eaiser echo serial
char buf[80];
// constants won't change. used here
// set pin numbers:
const int ledpin = 7; // number of led pin
// variables change:
int ledstate = low; // ledstate used set led
//------------------------------------------------------------------------------
#if sensor_count > 6
#error sensor_count large
#endif // sensor_count
//------------------------------------------------------------------------------
// store error strings in flash save ram
#define error(s) sd.errorhalt_p(pstr(s))
//------------------------------------------------------------------------------
void setup() {
// initialize sd card @ spi_half_speed avoid bus errors with
if (!sd.begin(sd_chip_select, spi_half_speed)) sd.initerrorhalt();
// create new file in root, current working directory
char name[] = "logger00.csv";
(uint8_t = 0; < 100; i++) {
name[6] = i/10 + '0';
name[7] = i%10 + '0';
if (sd.exists(name)) continue;
logfile.open(name);
break;
}
if (!logfile.is_open()) error("file.open");
//format header in buffer
obufstream bout(buf, sizeof(buf));
bout << pstr("millis");
(uint8_t = 0; < sensor_count; i++) {
bout << pstr(",sens") << int(i);
}
logfile << buf << endl;
}
//------------------------------------------------------------------------------
void loop() {
uint32_t m;
// wait time multiple of interval
{
m = millis();
} while (m % log_interval);
// use buffer stream format line
obufstream bout(buf, sizeof(buf));
// start time in millis
bout << m;
// read analog pins , format data
(uint8_t ia = 0; ia < sensor_count; ia++) {
#if adc_delay
analogread(ia);
delay(adc_delay);
#endif // adc_delay
bout << ',' << analogread(ia);
}
bout << endl;
// log data , flush sd
logfile << buf << flush;
// check error
if (!logfile) error("write data failed");
// don't log 2 points in same millis
if (m == millis()) delay(1);
// toggle led state
if (ledstate == low)
ledstate = high;
else
ledstate = low;
// set led ledstate of variable:
digitalwrite(ledpin, ledstate);
}
any appreciated!
when external power connected, measure voltage on vin , 5v pin.
the measurement on vin tell voltage external power providing when under load. may lower expected.
measuring 5v pin tell if on-board regulator shutting down.
the measurement on vin tell voltage external power providing when under load. may lower expected.
measuring 5v pin tell if on-board regulator shutting down.
Arduino Forum > Using Arduino > Installation & Troubleshooting > Ardunio Uno Power Source: USB vs Power Jack
arduino
Comments
Post a Comment