Data-Logger by DL2FP

FIXME ToDo: DL2FP

Zusätzlich wird noch die PC Software gobetwino benötigt. http://mikmo.dk/gobetwinodownload.html

Version 1

Womo_Volt_messen.ino
/*
  Wohnmobil Board Spannungsmesser und Lichtwert mit LCD-Anzeige und seriel-out
 (c) by DL2FP 2013-19-02
 
   (( am EPC auf COM1 mit Arduino verbinden , USB links vorne am EPC, 
      da bei COM9 die USB nach einiger Zeit abschaltet!))
 
  Arduino Pins !!!
  ___________________
  mini USB   !!! EPC
  DC Buchse
  ISP 6 POL
 
  IOREF
  Reset
  +3,3 V  (Power)
  +5 V    (Power) !!! Versorgungsspannung
  GND     (Power) !!! Versorgungsspannung  
  GND     (Power)
  +Vin    (Power)
 
  A0 analog in !!! sensor1 Volt
  A1 analog in !!! sensor2 Licht
  A2 analog in
  A3 analog in
  A4 analog in
  A5 analog in
 
  SCL
  SDA
  AREF
  GND
 -13 digital PWM  intern LED morse Status
  12 digital     !!! LCD-Display
 -11 digital PWM !!! LCD-Display
 -10 digital PWM 
  -9 digital PWM !!! Lautsprecher
   8 digital 
 
  7 digital 
 -6 digital PWM 
 -5 digital PWM  !!! LCD-Display
  4 digital      !!! LCD-Display
 -3 digital PWM  !!! LCD-Display
  2 digital      !!! LCD-Display
  TX->1
  RX<-0
   */
 
// include the library codes:
  #include <LiquidCrystal.h> // include LCD Display
  #include <Morse.h> // include morse code.
 
// initialize the LCD-Display library with the numbers of the interface pins
   // LCD-Display Pin1 GND, Pin2 +5V, Pin3 Poti, Pin5 GND, 4-12, 6-11, 11-5, 12-4, 13-3, 14-2, (Display_Pin-Arduiono_Pin)
   // 540 Ohm nach GND, 1k2 Ohm nach +5V, Mitte an Pin3 anstelle des Poti!
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
    Morse morse1(9, 30, 1); // initialize Morse and Setup speaker to pin 9
 
    int z = (0); // varialble z, Zähler für Einschalt-Verzögerung
    const int mz=(5000); // mz = Zeit zwischen 2 Messwerterfassungen.
 
// the setup routine runs once when you press reset:
void setup() {
   lcd.begin(16, 2); // set up the LCD's number of columns and rows: 
   lcd.print("MOMMENT BITTE");  // Print a message to the LCD.
   Serial.begin(9600);   // initialize serial communication at 9600 bits per second:
    // nur für Leonardo Board, warten -- bis die serielle Scnittstelle abgefragt wird.
    // while (!Serial) {
    //   ;
    // }
}
 
// the loop routine runs over and over again forever:
void loop() {
 // Einschaltverzögerung
   while (z < 2) {
 // delay = Zeit der Einschalt-Verzögerung
    delay (5); 
     z++;
   morse1.sendmsg("OK"); // Status morse LSP
 } 
// Meßwert einlesen und für die Anzeige umrechnen
  int sensor1 = analogRead(A0); // read the input Voltage on analog pin A0:
   float Anzeige1 = (sensor1/51.2); //  durch 51.2 umskalieren auf 20V
  char buffer1[5]; // Umwandlung int in Char für Serial.print
 
  int sensor2 = analogRead(A1);  // read the input Light on analog pin A1:
   float Anzeige2 = (sensor2/10.24); // durch 10,24 um auf 100% zu  skalieren. 
  char buffer2[5]; // Umwandlung int in Char für Serial.print
 
// print out the value you read Sensor1 Volt, sensor2 Licht :  to seriel-Monotor
  // Format für speichern in Datei   c:\Programme\gobetwino\daten1.txt
   Serial.print ("#S|SENSOR1|[");
     Serial.print(itoa((sensor1), buffer1, 10));
    Serial.print (";");
     Serial.print(itoa((sensor2), buffer2, 10));
      Serial.println ("]#");
 
   delay(mz);   // Zeit zwischen zwei Messwerten
 
// Status Ausgabe auf Lautsprecher pin 9 in morsecode
 Morse morse1(9, 30, 1);
  if (Anzeige1 < 10.00) morse1.sendmsg("E");  // EMPTY
  if (Anzeige1 > 14.00) morse1.sendmsg("V");  // VOLL
  if (Anzeige1 > 12.00 && Anzeige1 < 14.00) morse1.sendmsg("R");  // READY
  if (Anzeige1 > 10.00 && Anzeige1 < 12.00) morse1.sendmsg("L");  // LOAD need
 {
 }
 
// LCD - Display Anzeige setzen
   lcd.begin(16, 2);  // (note: line 1 is the second row, since counting begins with 0):
   lcd.print("SPANNUNG  LICHT ");  // Überschrift setzen Zeile 1
   lcd.setCursor(0, 1);  // set the cursor to column 0, line 2
   lcd.print("                "); // Zeile 2 löschen
// Werte Anzeigen
   lcd.setCursor(1,1);
   lcd.print(Anzeige1); // Volt
   lcd.setCursor(7,1);
   lcd.print("V");
   lcd.setCursor(10,1);
   lcd.print(Anzeige2); // Licht
   lcd.setCursor(15,1);
   lcd.print("%");
   delay(1); // Sicherheitshalber !
} 
// ENDE

Version 2

Data_Logger.ino
/*
 (c) by DL2FP 2014-07-25 10:45:00
    Datenlogger für 2 x 6 Messtellen 
 
    !!  Die Pin Belgung ist am Ende des Programmes zu finden. !!
*/
// -------------  beginning of the Program Code -----------
  #include <LiquidCrystal.h> // needed to display, include LCD Display 16x4
  #include <Morse.h>         // a little bit HAM RADIO  ....  ..
  #include <Wire.h>          // needed for the temrature Sensor
  #include <Encoder.h>       // needed for the KNOB
  #include <Time.h>          // nedded for the DATE and TIME STAMP
   #define TIME_HEADER  "T"  // Header tag for serial time sync message
   #define TIME_REQUEST  7   // ASCII bell character requests a time sync message 
   LiquidCrystal lcd(11, 10, 9, 8, 7, 6);
   Encoder knob(2, 3); // Pins des Drehgebers , pin 2 und 3
   const int Taster = 12; 
   int A=0;      
void setup()  {
  lcd.begin(16, 4); // set up the LCD's number of columns and rows: 
   lcd.setCursor(0,0);   lcd.print(" MOMMENT  BITTE ");
   lcd.setCursor(0,1);   lcd.print("                ");
   lcd.setCursor(16,0);  lcd.print("SETUP LAEUFT....");
   lcd.setCursor(16,1);  lcd.print("                ");
 
 Serial.begin(38400);
  pinMode(13, OUTPUT);
    pinMode (Taster, INPUT_PULLUP);
  // initial Time
      if (timeStatus() == timeNotSet) {  //  T1405944000 startzeit setzen 
      const long inittime=1405944000; unsigned long pctime=inittime; setTime(pctime);
      }
   int A=0;  
}
// ------------------------------ Ende   VOID - SETUP -------------------------------------
void loop(){ 
//     morseout(); // Eine Meßstelle wird per morsecode überwacht falls gewünscht.
     AusgabeSerial();
// Taster abfragen und die Menues durchschalten
  int  buttonState;             // the current reading from the input pin
    int  lastButtonState = LOW;   // the previous reading from the input pin
    long lastDebounceTime = 0;    // the last time the output pin was toggled
    long debounceDelay = 50;      // the debounce time; increase if the output flickers
    int reading = digitalRead (Taster);
 
   if (reading != lastButtonState) {
    lastDebounceTime = millis();      // reset the debouncing timer
  } 
    if ((millis() - lastDebounceTime) > debounceDelay) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:
    buttonState = reading;
   }
 
   if (A > 7) {  // variable A steuert die swich case Menues.
     A=A-7; // Anzahl der Menues +1
   }
      if ((reading == LOW) && (reading == lastButtonState)) { // Taster gedrückt
       A=A+1;
       delay(1000);
     }
    else {
        delay(1000);
  }
 lastButtonState = reading;
// swichcase schaltet in die Menues
    switch (A) {
    case 1:    
       menue1(); // ALLE Messwerte anzeigen
      delay(500);
      break;
    case 2:    // ???
      menue2();
           delay(500);
      break;
    case 3:    // ???
      menue3();
           delay(500);
      break;
          case 4:    // Jahr  und sekunde aendern
      menue4();
           delay(500);
      break;
    case 5: // Datum aendern
      menue5();
           delay(500);
       break; 
    case 6: // Zeit aendern
      menue6();
           delay(500);
      break;
     case 7: 
        hauptmenue();
        A=0;
             delay(500);
      break;   
    default:
    hauptmenue();
    delay(1000); // je nach delay werden Serial Daten geschrieben, delay=1000 entspr. ca. alle 2 Sekunden einmal.
  }
}
// ------------------------------ Ende   VOID - LOOP ---------------------------------------------------------
// Unterprogramme:
//------------------  void digitalClockDisplay(){   ------------------------------------------ 
void digitalClockSerial(){
  // digital clock display of the time
   printDigits(day());  Serial.print("."); printDigits(month());   Serial.print(".");  Serial.print(year()); Serial.print(";");
   printDigits(hour()); Serial.print(":"); printDigits(minute());  Serial.print(":"); printDigits(second()); Serial.print(";");
 
   delay(10);
}
//------------------  void digitalClockLcdDatum(){   ------------------------------------------ 
void digitalClockLcdDatum(){
  // digital clock display of the time
   printlcdDigits(day());  lcd.print("."); printlcdDigits(month());   lcd.print(".");  lcd.print(year()); lcd.print("      ");
 
   delay(10);
}
//------------------  void digitalClockLcdZeit(){   ------------------------------------------ 
void digitalClockLcdZeit(){
  // digital clock display of the time
   printlcdDigits(hour()); lcd.print(":"); printlcdDigits(minute());  lcd.print(":"); printlcdDigits(second()); lcd.print("        ");
 
   delay(10);
}
//------------------  void digitalClockLcdyyyyss(){   ------------------------------------------ 
void digitalClockLcdyyyyss(){
  // digital clock display of the time
   lcd.print(year()); lcd.print("    ");
   printlcdDigits(hour()); lcd.print(":"); printlcdDigits(minute());  lcd.print(":"); printlcdDigits(second()); lcd.print("        ");
 
   delay(10);
}
//-------------  void digitalClockLcdHauptmenue(){   ------------------------------------------ 
void digitalClockLcdHauptmenue(){
  // digital clock display of the time
   printlcdDigits(day());  lcd.print("."); printlcdDigits(month());  lcd.print("   ");
   printlcdDigits(hour()); lcd.print(":"); printlcdDigits(minute());  lcd.print(":"); printlcdDigits(second()); lcd.print(" ");
 
   delay(10);
}
//-------------  void digitalClockDisplay(){   ------------------------------------------ 
void digitalClockDisplay(){
  // digital clock display of the time
   printlcdDigits(day());  lcd.print("."); printlcdDigits(month()); lcd.print("."); lcd.print(year()-2000); lcd.print("");
   printlcdDigits(hour()); lcd.print(":"); printlcdDigits(minute());  lcd.print(":"); printlcdDigits(second()); lcd.print(" ");
 
   delay(10);
}
//-------------   void printDigits(int digits){   ------------------------------------------------
void printDigits(int digits){
     // utility function for digital clock displaySerial: prints preceding colon and leading 0
     if(digits < 10)
      Serial.print('0');
      Serial.print(digits);
}
//-------------   void printlcdDigits(int digits){   -----------------------------------------
void printlcdDigits(int digits){
     // utility function for digital clock displayLCD: prints preceding colon and leading 0
     if(digits < 10)
      lcd.print('0');
      lcd.print(digits);
}
//-------------   void morseout() {   -----------------------
void morseout() {
// Status Ausgabe auf Lautsprecher or LED Pin 13 in morsecode
// Meßwert einlesen und für die Anzeige umrechnen
  int M06 = analogRead(A5); float AnzM06 = (M06*15/1024); char buffer6[5];
 Morse morse(13, 20, 1);
    if (AnzM06 < 10.00) morse.sendmsg("E");  // EMPTY
    if (AnzM06 > 14.40) morse.sendmsg("O");  // overload
    if (AnzM06 > 13.80 && AnzM06 < 14.40) morse.sendmsg("L");  // loading
    if (AnzM06 > 12.00 && AnzM06 < 13.80) morse.sendmsg("R");  // READY
    if (AnzM06 > 10.00 && AnzM06 < 12.00) morse.sendmsg("N");  // need LOAD
}
//-------------   void AusgabeLcdMesswerte() {   -----------------------------
void AusgabeLcdMesswerte() {
  // Meßwert einlesen und für die Anzeige umrechnen
  int M01 = analogRead(A0); float AnzM01 = (M01/10.24); char buffer1[5];
  int M02 = analogRead(A1); float AnzM02 = (M02/51.20); char buffer2[5]; 
  int M03 = analogRead(A2); float AnzM03 = (M03/51.20); char buffer3[5];   
  int M04 = analogRead(A3); float AnzM04 = (M04/51.20); char buffer4[5]; 
  int M05= analogRead(A4);  float AnzM05 = (M05/10.24); char buffer5[5];  
  int M06= analogRead(A5);  float AnzM06 = ((M06*15)/1024); char buffer6[5];
  int M07= analogRead(A0); float AnzM07 = (M07/10.24); char buffer7[5];  
  int M08= analogRead(A1); float AnzM08 = (M08/10.24); char buffer8[5];  
  int M09= analogRead(A2); float AnzM09 = (M09/10.24); char buffer9[5];  
  int M10= analogRead(A3); float AnzM10 = (M10/10.24); char buffer10[5];   
  int M11= analogRead(4);  float AnzM11 = (M11/10.24); char buffer11[5];  
  int M12= analogRead(A5); float AnzM12 = ((M12*15)/1024); char buffer12[5];
//   Anzeige LCD - Display 1
  lcd.clear();
   lcd.begin(16, 4);
   lcd.setCursor(0,0); lcd.print("01 "); lcd.print(AnzM01); lcd.setCursor(9,0); lcd.print("02 "); lcd.print(AnzM02);
   lcd.setCursor(0,1); lcd.print("03 "); lcd.print(AnzM03); lcd.setCursor(9,1); lcd.print("04 "); lcd.print(AnzM04); 
   lcd.setCursor(16,0); lcd.print("05 "); lcd.print(AnzM05); lcd.setCursor(25,0); lcd.print("06 "); lcd.print(AnzM06);
   lcd.setCursor(16,1);digitalClockDisplay() ;
   delay(2000);
 //   Anzeige LCD - Display 2
  lcd.clear();
   lcd.setCursor(0,0); lcd.print("07 "); lcd.print(AnzM07); lcd.setCursor(9,0); lcd.print("08 "); lcd.print(AnzM08);
   lcd.setCursor(0,1); lcd.print("09 "); lcd.print(AnzM09); lcd.setCursor(9,1); lcd.print("10 "); lcd.print(AnzM10); 
   lcd.setCursor(16,0); lcd.print("11 "); lcd.print(AnzM11); lcd.setCursor(25,0); lcd.print("12 "); lcd.print(AnzM12); 
   lcd.setCursor(16,1);digitalClockDisplay();
 delay(1);
} 
//-------------   void AusgabeSerial() {  --------------------------
void AusgabeSerial() { 
  // Meßwert einlesen und für die Anzeige umrechnen
  int M01 = analogRead(A0); float AnzM01 = (M01/10.24); char buffer1[5];
  int M02 = analogRead(A1); float AnzM02 = (M02/51.20); char buffer2[5]; 
  int M03 = analogRead(A2); float AnzM03 = (M03/51.20); char buffer3[5];   
  int M04 = analogRead(A3); float AnzM04 = (M04/51.20); char buffer4[5]; 
  int M05= analogRead(A4);  float AnzM05 = (M05/10.24); char buffer5[5];  
  int M06= analogRead(A5);  float AnzM06 = ((M06*15)/1024); char buffer6[5];
  int M07= analogRead(A0); float AnzM07 = (M07/10.24); char buffer7[5];  
  int M08= analogRead(A1); float AnzM08 = (M08/10.24); char buffer8[5];  
  int M09= analogRead(A2); float AnzM09 = (M09/10.24); char buffer9[5];  
  int M10= analogRead(A3); float AnzM10 = (M10/10.24); char buffer10[5];   
  int M11= analogRead(4);  float AnzM11 = (M11/10.24); char buffer11[5];  
  int M12= analogRead(A5); float AnzM12 = ((M12*15)/1024); char buffer12[5];
 
   digitalClockSerial();  // Date und Time STAMP
     Serial.print(itoa((M01), buffer1, 10)) ; Serial.print (";");
     Serial.print(itoa((M02), buffer2, 10)) ; Serial.print (";");
     Serial.print(itoa((M03), buffer3, 10)) ; Serial.print (";");
     Serial.print(itoa((M04), buffer4, 10)) ; Serial.print (";");
     Serial.print(itoa((M05), buffer5, 10)) ; Serial.print (";");
     Serial.print(itoa((M06), buffer6, 10)) ; Serial.print (";");
     Serial.print(itoa((M07), buffer7, 10)) ; Serial.print (";");
     Serial.print(itoa((M08), buffer8, 10)) ; Serial.print (";");
     Serial.print(itoa((M09), buffer9, 10)) ; Serial.print (";");
     Serial.print(itoa((M10), buffer10, 10)); Serial.print (";"); 
     Serial.print(itoa((M11), buffer11, 10)); Serial.print (";");
     Serial.print(itoa((M12), buffer12, 10)); Serial.print (";"); 
    Serial.println ();
     }
//-------------   void hauptmenue{   -----------------------------------------
void hauptmenue() {
     // Display-LCD-hauptmenue
        lcd.setCursor(0,0);  // beginning ROW 1
        lcd.print  ("(c)by DL2FP 2014");
        lcd.setCursor(0,1);  // beginning ROW 2
        lcd.print  ("  Haupt-Menue   ");
        lcd.setCursor(16,0); // beginning ROW 3
        lcd.println("Taster => Menues");
        lcd.setCursor(16,1); // beginning ROW 4
      digitalClockLcdHauptmenue();
}
//--------   void menue1 Alle Messwerte auf LCD ausgeben --------------------------
void menue1() {
     // Display-LCD-menue1
        AusgabeLcdMesswerte();
        delay(500);
}
//-------------   void menue2 ???   -----------------------------------------
void menue2() {
     // Display-LCD-menue2
        lcd.setCursor(0,0);
        lcd.print("    Menue 2     ");
        lcd.setCursor(0,1);
        lcd.println("Anzeige in Volt ");
        lcd.setCursor(16,0);
        lcd.print("Spannungs Werte ");
        lcd.setCursor(16,1);
        digitalClockDisplay();
   }
//-------------   void menue3 ???   -----------------------------------------
void menue3() {
     // Display-LCD-menue3
        lcd.setCursor(0,0);
        lcd.print("    Menue 3     ");
        lcd.setCursor(0,1);
        lcd.println(" Anzeige in AMP ");
        lcd.setCursor(16,0);
        lcd.print(" Strom Messwerte ");
        lcd.setCursor(16,1);
        digitalClockDisplay();
}
//-------------   void menue4 Jahr + Sekunde aendern   -----------------------------------------
void menue4() {
     // Display-LCD-menue4 Jahr + Sekunde aendern
        lcd.setCursor(0,0);
        lcd.print  ("Menue 4  yyyy+ss");
        lcd.setCursor(0,1);
        lcd.print  ("Schnell == Jahr ");
        lcd.setCursor(16,0);
        lcd.println("Langsam = Second");
        lcd.setCursor(16,1);
        digitalClockLcdyyyyss();
 
  long  newRight;
  long  positionRight;
       newRight = knob.read()+500;
     if (newRight != positionRight) {
          positionRight = newRight;
     }
     delay(500);
 // Datum aendern
  //  T1405944000 init-Time = 21.07.2014 12:00:00, 1405944000 wird mit (now) gelesen.
 unsigned long mytime;
   mytime=(now());
 
   unsigned long change_sec; change_sec=1;
   unsigned long change_yy; change_yy=31104000;
 
   if (positionRight > 500&&positionRight<520) {
      mytime=mytime+change_sec; //Tag ändern plus !!!
     setTime(mytime);
      knob.write(0); // reset Knob
   }
    if (positionRight < 500&&positionRight>480) {
      mytime=mytime-change_sec; //Tag ändern minus !!!
     setTime(mytime);
      knob.write(0); // reset Knob
  }
     if (positionRight > 520) {
      mytime=mytime+change_yy; //Monat ändern plus !!!
     setTime(mytime);
      knob.write(0); // reset Knob
   }
    if (positionRight < 480) {
      mytime=mytime-change_yy; //Monat ändern minus !!!
     setTime(mytime);
      knob.write(0); // reset Knob
  }
     knob.write(0); // reset Knob            
}
//-------------   void menue5 Datum aendern   -----------------------------------------
void menue5() {
     // Display-LCD-menue5 Datum aendern
        lcd.setCursor(0,0);
        lcd.print("Menue 5    Datum");
        lcd.setCursor(0,1);
        lcd.print("Langsam == TAG  ");
        lcd.setCursor(16,0);
        lcd.println("Schnell == Monat");
        lcd.setCursor(16,1);
        digitalClockLcdDatum();
 
  long  newRight;
  long  positionRight;
       newRight = knob.read()+500;
     if (newRight != positionRight) {
          positionRight = newRight;
     }
     delay(500);
 // Datum aendern
  //  T1405944000 init-Time = 21.07.2014 12:00:00, 1405944000 wird mit (now) gelesen.
 unsigned long mytime;
   mytime=(now());
 
   unsigned long change_dd; change_dd=86400;
   unsigned long change_mon; change_mon=2592000;
 
   if (positionRight > 500&&positionRight<520) {
      mytime=mytime+change_dd; //Tag ändern plus !!!
     setTime(mytime);
      knob.write(0); // reset Knob
   }
    if (positionRight < 500&&positionRight>480) {
      mytime=mytime-change_dd; //Tag ändern minus !!!
     setTime(mytime);
      knob.write(0); // reset Knob
  }
     if (positionRight > 520) {
      mytime=mytime+change_mon; //Monat ändern plus !!!
     setTime(mytime);
      knob.write(0); // reset Knob
   }
    if (positionRight < 480) {
      mytime=mytime-change_mon; //Monat ändern minus !!!
     setTime(mytime);
      knob.write(0); // reset Knob
  }
     knob.write(0); // reset Knob            
}
//-------------   void menue6 Zeit aendern---------------------------------
void menue6() {
     // Display-LCD-menue6 Zeit aendern
        lcd.setCursor(0,0);
        lcd.print  ("Menue 6     ZEIT");
        lcd.setCursor(0,1);
        lcd.print  ("Langsam = Minute");
        lcd.setCursor(16,0);
        lcd.println("SCHNELL = Stunde");
        lcd.setCursor(16,1);
        digitalClockLcdZeit();
 
  long  newRight;
  long  positionRight;
       newRight = knob.read()+500;
     if (newRight != positionRight) {
          positionRight = newRight;
     }
     delay(500);
 // Zeit aendern
  //  T1405944000 init-Time = 21.07.2014 12:00:00, 1405944000 wird mit (now) gelesen.
 unsigned long mytime;
   mytime=(now());
   unsigned long change_min; change_min=60;
   unsigned long change_hh; change_hh=3600;
 
   if (positionRight > 500&&positionRight<510) {   // langsam rechtsrum drehen
      mytime=mytime+change_min;                    // Minute ändern plus!!!
     setTime(mytime);
      knob.write(0); // reset Knob
   }
    if (positionRight < 500&&positionRight>490) {   // langsam linksrum drehen
      mytime=mytime-change_min;                     // Minute ändern minus!!!
     setTime(mytime);
      knob.write(0); // reset Knob
  }
     if (positionRight > 510) {    // schnell rechtsrum drehen
      mytime=mytime+change_hh;     // Stunde ändern plus!!!
     setTime(mytime);
      knob.write(0); // reset Knob
   }
    if (positionRight < 490) {     // schnell linksrum drehen
      mytime=mytime-change_hh;     // Stunde ändern minus!!!
     setTime(mytime);
      knob.write(0); // reset Knob
  }
     knob.write(0); // reset Knob            
}
// ------------------------------ Ende   VOID - Unterprogramme -------------------------------------
//END
/*
----------------------------Benötigte Hardware-------------------------
1 x PC, Laptop o.ä. zum Daten speichern und zum programmieren des Arduino
1 x Arduino Leonardo
1x LCD-Display 16x4
1x Poti 1k Ohm für LCD-Display-Contrast
1x Lautsprecher
1x LED und R 1K Ohm
1x Drehimpulsgeber mit Taster
1x LDR und 2 Wiederstaende , Werte ????
1x Temeraturfühler, z.B. DS1208 sihe http://wiki.fox11.de Temperatur Logger
sowie Vorwiederstände an den Messtellen für Spannungs-Messung, z.B. 4x 10K Ohm um 20V+ zu messen.
sowie Shunt-Widerstände bei den Strom Messungen.
*/
// -------------------------  benötigte Software ----------------------
/*
Arduino V 1.0.5-r2
RS232 Datalogger, zu finden auf http://www.eltima.com
*/
//  ---  PIN Belegungen -----------------------------------------------
// vom Arduino Leonardo
/*
   Arduino Pins !!!
   ___________________
   mini USB   !!! EPC
   DC Buchse   (+5 bis +20V)
   ISP 6 POL
 
   IOREF
   Reset   (Hardware - Reset)
   +3,3 V  (Power)
   +5 V    (Power) !!! Versorgungsspannung
   GND     (Power) !!! Versorgungsspannung  
   GND     (Power)
   +Vin    (Power) (+5 - +20V)
 
   A0 analog in (MUB1), (MIB1) 
   A1 analog in (MUB2), (MIB2)  
   A2 analog in (MUS1), (MIS1) 
   A3 analog in (MUS2), (MIS2) 
   A4 analog in (MUNT), (MINT) 
   A5 analog in (Temp), (Light) 
 
   SCL   (CAN-BUS 1)
   SDA   (CAN-BUS 2)
   AREF  (Hardware-Interrupt)
   GND
   -13 digital PWM  Lautsprecher(morse) or LED (intern LED) 
    12 digital      Taster
   -11 digital PWM  !!! LCD-Display  4 RS selcting Registers 
   -10 digital PWM  !!! LCD-Display  6 DATA enable signal for write/read data
    -9 digital PWM  !!! LCD-Display 11 DATA 4
     8 digital      !!! LCD-Display 12 DATA 5
 
     7 digital       !!! LCD-Display 13 DATA 6
    -6 digital PWM   !!! LCD-Display 14 DATA 7
    -5 digital PWM   Reset
     4 digital       Relais Leitungsmultiplexer
    -3 digital PWM   Drehimpulsegeber 1 // Pins 2+3 wegen der Interruptfähigkeit
     2 digital       Drehimpulsegeber 2 // dadurch funktioniert der Drehgeber besser
    TX->1
    RX<-0
    */
// vom LCD Display
/*
LCD - Display pins:
 initialize the LCD-Display library with the numbers of the interface pins
      4K7 Ohm nach GND, 1k2 Ohm nach +5V, Mitte an Pin3 anstelle des Poti!
      Contrast Pin 3 benötigt ca. 1V +
---------------  LCD 16x4  pins
     1   GND  || GND
     2   +5V  || +5V
     3   Poti || Mittelpin Poti // Contrast
     4   RS selcting Registers || pin 11 am Arduino
     5   GND L = write Mode || GND
     6   DATA enable signal for writze/read data || pin 10 am Arduino
     7  DATA 0
     8  DATA 1
     9  DATA 2
     10 DATA 3
     11 DATA 4 || pin 9 am Arduino
     12 DATA 5 || pin 8 am Arduino
     13 DATA 6 || pin 7 am Arduino
     14 DATA 7 || pin 6 am Arduino
     15 (Backlight +5V)
     16 (Backlight GND)
*/
// Belegung der Mess-Stellen
/*
-------- Messwerte für erstes Display----------
  M01 = U Womo Batterie
  M02 = U Auto Batterie
  M03 = U Slo1
  M04 = U Sol2
  M05 = U Ladegerät +14,4V
  M06 = U 230V
-------- Messwerte für zweites Display----------
  M07 = I Womo
  M08 = I Auto
  M09 = I Sol1
  M10 = I Sol2
  M11 = Temp
  M12 = Licht
*/
f11/technik/arduino/programme/data-logger-dl2fp.txt · Zuletzt geändert: 2019/09/29 12:03 (Externe Bearbeitung)
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0