- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Arduino - Batterietester

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    04.05.2015
    Beiträge
    41

    Arduino - Batterietester

    Anzeige

    E-Bike
    Hallo,

    als Elektronikeinsteiger habe ich mir das Buch Arduino-Workshops gekauft. Bei Projekt 6 hänge ich aber, da ich noch nie vorher einen Schaltplan gelesen, aber versucht habe genau nach diesem, meine Steckplatine aufzubauen.

    Hier ist der Schaltplan:

    Klicke auf die Grafik für eine größere Ansicht

Name:	Batterietester-Schaltung.jpg
Hits:	34
Größe:	25,2 KB
ID:	30447

    Hier, wie ich es gesteckt habe:

    Klicke auf die Grafik für eine größere Ansicht

Name:	Batterietester-Steckplatine.jpg
Hits:	30
Größe:	49,5 KB
ID:	30448

    Und hier noch ein Bild meines Aufbaus:

    Klicke auf die Grafik für eine größere Ansicht

Name:	WP_20150711_13_01_22_Pro.jpg
Hits:	23
Größe:	55,5 KB
ID:	30449

    Der Aufbau dient dazu zum Beispiel eine 1,5V AAA Batterie zu prüfen, welche Spannung sie noch liefert. Bei einem Wer von 1,5V und darüber soll grüne LED leuchten, bei kleiner 1,5V aber höher als 1,4V soll gelb leuchten und darunter dann rot.

    Momentan leuchten nacheinander die drei LEDs, obwohl ich die Batterie zum testen nicht ranhalte. Wenn ich sie prüfen will, passiert nichts, nur die LEDs leuchten weiter, was sie vorher nicht mal gemacht haben.

    Anbei noch der Sketch:

    Code:
    //Projekt 6 Testgerät für Einzelbatterien
    
    #define newLED 2
    #define okLED 4
    #define oldLED 6
    
    int analogValue = 0;
    float voltage = 0;
    int ledDelay = 2000;
     
    
    
    void setup() {
      // put your setup code here, to run once:
    
    pinMode (newLED, OUTPUT);
    pinMode (okLED, OUTPUT);
    pinMode (oldLED, OUTPUT);
    
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    analogValue = analogRead(0);
    voltage = 0.0048*analogValue;
    
    if (voltage >=1.5)
    
    {
      digitalWrite(newLED, HIGH);
      delay(ledDelay);
      digitalWrite(newLED, LOW);
      
    }
    
    else if (voltage < 1.5 && voltage > 1.4)
    
    {
      digitalWrite(okLED, HIGH);
      delay(ledDelay);
      digitalWrite(okLED, LOW);
    }
    
    else if (voltage <=1.4)
    
    {
      digitalWrite(oldLED, HIGH);
      delay(ledDelay);
      digitalWrite(oldLED, LOW);
    }
    
    }
    Habe ich etwas beim Aufbau übersehen? Warum werden die LEDs nicht bei Anschluss der Batterie angesteuert? Die Batterie hat laut Multimeter ca. 1,599V.

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Hallo,

    ich sehe jetzt auf den ersten Blick keinen Fehler. Außer das der Schutzdiode am Analogeingang im Controller ordentlich auf die Füße getreten wird, wenn man mal die Batterie falsch rum dranhält.

    Den Sketch habe ich gerade mal etwas besser eingerückt und auf einen Uno geladen. Statt LEDs habe ich eine zusätzliche Ausgabe über Serial eingebaut:
    Code:
    const int newLED = 2;
    const int okLED = 4;
    const int oldLED = 6;
    
    int analogValue = 0;
    float voltage = 0;
    int ledDelay = 2000;
    
    void setup() {
      // put your setup code here, to run once:
    
      pinMode (newLED, OUTPUT);
      pinMode (okLED, OUTPUT);
      pinMode (oldLED, OUTPUT);
      
      Serial.begin(9600);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      analogValue = analogRead(0);
      voltage = 0.0048*analogValue;
    
      if (voltage >=1.5)
      {
        Serial.write("New\r\n");
        digitalWrite(newLED, HIGH);
        delay(ledDelay);
        digitalWrite(newLED, LOW); 
      }
      else if (voltage < 1.5 && voltage > 1.4)
      {
        Serial.write("Ok\r\n");
        digitalWrite(okLED, HIGH);
        delay(ledDelay);
        digitalWrite(okLED, LOW);
      }
      else if (voltage <=1.4)
      {
        Serial.write("Old\r\n");
        digitalWrite(oldLED, HIGH);
        delay(ledDelay);
        digitalWrite(oldLED, LOW);
      }
    }
    Er gibt immer nur "New" aus, wenn nichts angeschlossen ist. Das hatte ich auch so erwartet. Dass die LEDs nacheinander angehen, kann ich mir dabei eigentlich nicht vorstellen.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ich hab mit dem Programm ein wenig experimentiert. Bei mir hat AnalogIn0 ein anderes Verhalten, als die anderen. Vielleicht defekt? Auf jeden Fall funktioniert der Code so, wie er soll. (Hier AnalogIn 4 benutzt). Ich messe sowohl mit Arduino als auch mit Multimeter 1,44V an meiner Testbatterie.

    Code:
    #define LED_NEW 2
    #define LED_OK  4
    #define LED_OLD 6
    #define VOLTAGE_IN 4
    
    #define DELAY_LED 2000
    // mit Multimeter gemessen: 5,07V zwischen GND-Pin und 5V-Pin
    // mit Arduino gemessen: 1015 als Analogwert (A0) am 5V-Pin
    #define VOLTAGE_FACTOR 5.07/1015
    
    void setup() {
      pinMode (LED_NEW, OUTPUT);
      pinMode (LED_OK,  OUTPUT);
      pinMode (LED_OLD, OUTPUT);
      Serial.begin(9600);
    }
    
    void switchLED(byte ledPin) {
      digitalWrite(ledPin, HIGH);
      delay(DELAY_LED);
      digitalWrite(ledPin, LOW);
    }
    
    void loop() {
      float voltage = VOLTAGE_FACTOR * analogRead(VOLTAGE_IN);
      Serial.println(voltage);
      if (voltage >= 1.5)                       
        switchLED(LED_NEW); 
      else if (voltage < 1.5 && voltage > 1.4) 
        switchLED(LED_OK); 
      else                                     
        switchLED(LED_OLD);  
    }

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    04.05.2015
    Beiträge
    41
    Danke für die Antworten. Ich bin froh, dass ich die Schaltung doch wohl richtig nachgebaut habe. Als Anfänger ist man da immer unsicher.

    Da es bei euch soweit geklappt hat, dachte ich mir heute Morgen, ich tausche einfach mal das Steckbrett aus. Ich habe noch eines von einem kleinen Elektronikbaukasten von Conrad da gehabt. Ich würde sagen, mein normales Brett ist defekt, denn mit dem kleinen aus dem Kasten funktioniert es wie es sein soll.

    Ich habe die 1,5V drangehangen und es leuchtete grün, ich habe eine ältere aus meinem Asuro drangehangen und sie ward gelb.

    Danke für die Hilfe. Thema geschlossen .

Ähnliche Themen

  1. Rosenkrieg: Arduino zahlt Arduino keine Lizenzgebühren
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 20.03.2015, 09:00
  2. Rosenkrieg: Arduino verklagt Arduino
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 16.02.2015, 08:11
  3. Arduino: laufendes Programm auf Arduino Uno beenden?
    Von Ford Prefect im Forum Arduino -Plattform
    Antworten: 2
    Letzter Beitrag: 15.06.2014, 09:25
  4. [ERLEDIGT] [ARDUINO] 2 Motoren + Servo mit dem Arduino Uno steuern
    Von Torrentula im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 31.08.2011, 17:31
  5. Batterietester / anzeige
    Von ProgDom im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 30.01.2006, 02:48

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress