Go Down

Topic: I need help with datalogger (Read 1 time) previous topic - next topic

ptool64ar

I have successfully uploaded a sketch (datalogger,   from arduino/file/ examples/SD/datalogger) onto an Arduino-pro(atmega328, 5v, 16htz). SD card is attached
I need to know how to insert data into the assembly.  What type of data will be accepted (pulses from a Hall Effdect sensor?).

I will appreciate any help and advice,

Patrick

Quote

/*
  SD card datalogger
 
 This example shows how to log data from three analog sensors 
 to an SD card using the SD library.
    
 The circuit:
 * analog sensors on analog ins 0, 1, and 2
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4
 
 created  24 Nov 2010
 updated 2 Dec 2010
 by Tom Igoe
 
 This example code is in the public domain.
     
 */

#include <SD.h>

// On the Ethernet Shield, CS is pin 4. Note that even if it's not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
const int chipSelect = 4;

void setup()
{
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  // make sure that the default chip select pin is set to
  // output, even if you don't use it:
  pinMode(10, OUTPUT);
  
  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
}

void loop()
{
  // make a string for assembling the data to log:
  String dataString = "";

  // read three sensors and append to the string:
  for (int analogPin = 0; analogPin < 3; analogPin++) {
    int sensor = analogRead(analogPin);
    dataString += String(sensor);
    if (analogPin < 2) {
      dataString += ",";
    }
  }

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  File dataFile = SD.open("datalog.txt", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    // print to the serial port too:
    Serial.println(dataString);
  }  
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  } 
}












johnwasser

Typically you would use dataFile.print(value); to write some text into the file.  Use dataFile.println(value); for the last value on the line.  If you separate the values with commas (dataFile.print(".");) you can read the lines of values into a spreadsheet by giving the file extension '.csv' (Comma Separated Values.  If your data might include strings that contain commas, put double-quotes before and after the string so the spreadsheet will know that comma is not a separator.

What kind of stuff did you want to log?
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

ptool64ar

"What kind of stuff did you want to log?"

5 to 8v pulses from a Hall Effect sensor.  The sensor would be activated by magnets spaced round the circumference of a wheel.
I want to count the pulses per second, which would indicate the wheel's rpm.

Thank you

johnwasser

Probably the easiest way is to connect the pulses to Pin 2 and use the associated interrupt (see: attachInterrupt()) and increment a counter in the interrupt service routine.  In loop() you can use the "Blink Without Delay" example as a model and sample (and reset) the counter every second (1000 milliseconds).  Then just write the value to the log with dataFile.println(value, DEC) which will give you one decimal number per line in the file.
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

PaulS

Quote
5 to 8v pulses from a Hall Effect sensor.

They better not be anything greater than 5V, or you'll toast the Arduino.

What good would a log file like:
Code: [Select]
I got a pulse.
I got a pulse.
I got a pulse.
.
.
.
I got a pulse.

be?

Quote
I want to count the pulses per second, which would indicate the wheel's rpm.

So, count them. Calculate the speed from the count, and (maybe) log that.

ptool64ar


Go Up