Go Down

Topic: Nano A6 auf high!? (Read 187 times) previous topic - next topic

noknot

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!?

Tommy56

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
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Peter-CAD-HST

Moin noknot
Deine Frage:
Quote
Geht das?
Meine Antwort:
Na Klar
**** ungetestet *****
Code: [Select]
if (analogRead(A6) < 512) macheDies(); else macheDas();
Viel Erfolg
Gruss Peter
und gesund bleiben
KISS Q&D - keep calm and carry on - mind the gap - beware of sharks! -

noknot

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);
}

Peter-CAD-HST

Moin  noknot
und jetzt den Sketch in CODE_TAGS senden und vorher mit Kommentaren und/oder beschreibenden Variablennamen verzieren :)
Gruss Peter
und gesund beliben
KISS Q&D - keep calm and carry on - mind the gap - beware of sharks! -

noiasca

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.
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

noknot

#6
Sep 23, 2020, 07:56 pm Last Edit: Sep 23, 2020, 08:14 pm by noknot
Code: [Select]
}

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?

noiasca

#7
Sep 23, 2020, 08:14 pm Last Edit: Sep 23, 2020, 08:21 pm by noiasca
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?
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

Tommy56

Das war wahrscheinlich zu einfach. ;)

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

noknot

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

Tommy56

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
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

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.
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!

Tommy56

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
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Katsumi_S

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

Code: [Select]
#define BATTERY_SAFE 1      // battery monitoring (1 - allow, 0 - disallow)

Statt 1 eine 0 sollte auch fast Wunder bewirken.  :-)
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

Katsumi_S

#14
Sep 23, 2020, 09:48 pm Last Edit: Sep 23, 2020, 10:02 pm by Katsumi_S Reason: Berechnung eingefügt
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.

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
Code: [Select]
  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


Go Up