Nano A6 auf high!?

Hallo,

Stehe echt auf dem Schlauch. Habe einen Sketch für ein Lichtschwert. Habe jedoch alles ein wenig verändert (Hardware)
In dem Sketch ist ein ich nenne es mal "Gadget" eingebaut das sich das Schwert ab einer bestimmten Spannung nicht mehr einschalten lässt (Tiefenentladung)
Da ich under dieser Spannung bin und diese Funktion auch nicht brauche/möchte frage ich mich was ich machen muss um das zu umgehen. Muss ich diese Passage aus dem Sketch löschen? Habe irgendwo gelesen das ich den Pin A6 auf "high" setzen soll. Geht das? Ist doch kein digitaler Pin!?

Wenn Du den Pin auf 5V legst, ist der bestimmt nicht zu niedrig. A6 misst ja die Spannung, die anliegt.
Das ist natürlich nur geraten, da ich Deinen Sketch nicht kenne.

Gruß Tommy

(deleted)

Erstmal Vielen Dank für eure Antworten. Aber irgendwie komme ich da noch immer nicht durch.
Ich poste mal den Part vom Sketch.

}

void batteryTick() {
if (millis() - battery_timer > 30000 && ls_state && BATTERY_SAFE) {
if (voltage_measure() < 15) {
ls_chg_state = 1;
}
battery_timer = millis();
}
}

byte voltage_measure() {
voltage = 0;
for (int i = 0; i < 10; i++) {
voltage += (float)analogRead(VOLT_PIN) * 5 / 1023 * (R1 + R2) / R2;
}
voltage = voltage / 10;
int volts = voltage / 3 * 100; // 3 cells!!!
if (volts > 387)
return map(volts, 420, 387, 100, 77);
else if ((volts <= 387) && (volts > 375) )
return map(volts, 387, 375, 77, 54);
else if ((volts <= 375) && (volts > 368) )
return map(volts, 375, 368, 54, 31);
else if ((volts <= 368) && (volts > 340) )
return map(volts, 368, 340, 31, 8);
else if (volts <= 340)
return map(volts, 340, 260, 8, 0);
}

(deleted)

würdest du den ganzen Sketch in Code Tags posten
sowie einen Schaltplan, damit wir wissen wo was angeschlossen ist

könnte man dir vieleicht weiterhelfen.

}

void batteryTick() {
  if (millis() - battery_timer > 30000 && ls_state && BATTERY_SAFE) {
    if (voltage_measure() < 15) {
      ls_chg_state = 1;
    }
    battery_timer = millis();
  }
}

byte voltage_measure() {
  voltage = 0;
  for (int i = 0; i < 10; i++) {    
    voltage += (float)analogRead(VOLT_PIN) * 5 / 1023 * (R1 + R2) / R2;
  }
  voltage = voltage / 10;           
  int volts = voltage / 3 * 100;    // 3 cells!!!
  if (volts > 387)
    return map(volts, 420, 387, 100, 77);
  else if ((volts <= 387) && (volts > 375) )
    return map(volts, 387, 375, 77, 54);
  else if ((volts <= 375) && (volts > 368) )
    return map(volts, 375, 368, 54, 31);
  else if ((volts <= 368) && (volts > 340) )
    return map(volts, 368, 340, 31, 8);
  else if (volts <= 340)
    return map(volts, 340, 260, 8, 0);
}/code]

Habe es anders realisiert mit 5V und einem WS2812B 5V LED strip. Brauche die Überwachung der Batterien nicht.
Sorry wenn ich nerve aber ich bekomme die Kurve nicht.
Den ganzen Code bekomme ich leider nicht gepostet da die Zahl der max. zulässigen Zeichen überschritten wird.
Wäre noch etwas anderes wichtig?

Der Sketch ist immer noch unvollständig.

So wie dir Tommy schon in #1 schrieb:
löse die Verbindung von A6 auf den 51K Widerstand und verbinde stattdessen A6 mit dem 5V pin. Dann ist A6 immer "high" egal was der Spannungsteiler bei der Batteriespannung misst.

Einfacher wäre das ganze in Software zu lösen.
Das ist aber nicht erratbar, da du keinen vollständigen Sketch gepostet hast.

Man kann IMMER den Sketch auf das einkürzen, sodass er das Problem zeigt - er muss aber weiterhin kompilierbar bleiben.
Mit Codeschnippsel kann man dir nicht helfen.

Auch kann man den Sketch als Attachement dazuladen. Dann hat man auch einen vollständigen Code zum ansehen.

Botschaft angekommen?

Das war wahrscheinlich zu einfach. :wink:

Gruß Tommy

Habe jetzt mal den ganzen Sketch hochgeladen.
Wie gesagt. Habt ein wenig Geduld mit mir.

GyverSaber.ino (16.9 KB)

Was hat das, was noiasca und ich Dir gepostet haben mit Deinem Sketch zu tun? Oder hast Du es einfach nicht verstanden? Dann kann man konkret fragen.

Gruß Tommy

Das Problem ist da ich mit der Spannung wesentlich niedriger bin als in dem Schema. Ich benutze nur 2 Batterien mit einer Gesamtspannung von 7.4V.
Habe es mit den Step down Modul auf 5 Volt geregelt und bin dann in den 5V Eingang vom Nano.Zudem liegen diese 5 Volt auch an A6 an. Nachdem ich den Power on Knopf betätige startet der Nano und die LED Leiste läuft einmal durch und geht aus. Das ist soweit auch ok denke ich. Jedoch passiert nach dem Drücken des Tasters nichts.
Meine Vermutung ist das die Spannung zu niedrig ist und deshalb der Prozess nicht startet.

Habe mich vielleicht sehr ungünstig ausgedrückt. Dieser Kram beschäftigt mich jetzt schon den ganzen Tag und bekomme das wirklich nicht auf die Kette!

Weil Du eigentlich überhaupt nicht verstehst, was Du da tust. Wenn Du den Pin A6 von den Widerständen trennst und auf den 5V-Pin des Arduino legst, ist die Spannungsüberprüfung ausgeschaltet. Punkt.
Das war es ja, was Du wolltest. Ob das für die Akkus gut ist (was es nicht ist), ist dabei egal.

Man sollte solche Umbauten nur vornehmen, wenn man über die nötigen elektrotechnischen Grundlagenkenntnisse verfügt, was bei Dir augenscheinlich nicht der Fall ist. Weil eigentlich hat der Tiefentladungsschutz seine Bewandnis.

Gruß Tommy

Warum schaltest Du die Prüfung nicht einfach in der Software aus?

#define BATTERY_SAFE 1      // battery monitoring (1 - allow, 0 - disallow)

Statt 1 eine 0 sollte auch fast Wunder bewirken. :slight_smile:
Habe den Code nur kurz überflogen. Messen wird durchgeführt auch wenn da eine 0 drin steht.
Spannung sollte er auch kurz zeigen aber abschalten sollte es nicht.

Gruß, Jürgen

Tommy56:
Man sollte solche Umbauten nur vornehmen, wenn man über die nötigen elektrotechnischen Grundlagenkenntnisse verfügt, was bei Dir augenscheinlich nicht der Fall ist. Weil eigentlich hat der Tiefentladungsschutz seine Bewandnis.

Wenn er ordnungsgemäß dran hängt ja. Aber er hat das ja schon auf die 5V Seite geklemmt. Verstehe aber auch nicht ganz warum.

noknot:
Das Problem ist da ich mit der Spannung wesentlich niedriger bin als in dem Schema. Ich benutze nur 2 Batterien mit einer Gesamtspannung von 7.4V.

Dann passt man die Widerstände an das es wieder passt...

Edit:
Vorher vermutlich 3x3,7V -> 11,1V bei 100k und 51k Widerstand sind das rund 3,74V am analogen Eingang
Jetzt 2x3,7V -> 7,4V also 51k und 51k und dann passt es fast mit 3,7V am Eingang
Also eigentlich gar kein Problem...

Edit2:
Oder noch besser alles so lassen und unten bei

  int volts = voltage / 3 * 100;    // 3 cells!!!

einfach aus 3 eine 2 machen! Dann sollte es sogar mit der bestehenden Schaltung tun...

Gruß, Jürgen

Vielen Dank. Werde mich da am Wochenende nochmal dran versuchen.