Go Down

Topic: Bei einem bestimmten Spannungswert soll Arduino schalten (Read 316 times) previous topic - next topic

postmaster-ino

#15
Jun 20, 2019, 05:10 pm Last Edit: Jun 20, 2019, 05:11 pm by postmaster-ino
Hi

Um den Eingang zu schützen, kann man noch 5,1V Z-Dioden verbauen.

Welche Werte die Widerstände im Spannungsteiler haben, ist relativ unkritisch - Du hast einen µC, Dem man jedes Verhältnis vorgeben kann - Da müssen keine 5,00000V anliegen, dmait Du Deine 12V 'sehen' kannst - Das könnten auch 4,37665V sein - eine Zahl im Sketch und der Käfer zeigt dennoch 12V an.

Du musst 'nur' wissen, was Du bei welcher angelegten Spannung am ADC erwartest und daraus wieder Deine angelegte Spannung berechnen.

MfG

PS: '15V sollten NIE ...' riecht schon wieder stark nach KFZ ... Da ist's mit einem Spannungsteiler nicht getan - Da wird Dir der Arduino entweder nicht zufriedenstellend arbeiten, oder einfach nur sterben.
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Sturmfront

Ich bins nochmal wieder. Es funktioniert einwandfrei mit dem Spannungsteiler. Jedoch möchte ich noch, wenn am Spannungsteiler an U2 eine Spannung von 3,83V anliegt. Eine LED leuchtet die am Arduino hängt. Ich habe den Code dann so bearbeitet, dass wenn 3,83V oder mehr anliegen der Pin 12 schaltet. Jedoch tut er das nicht und beim erreichen der Spannung 3,83V hat der Ausgang 12 0V. Woran liegt das? LG

Code:
int OUT = 12;

void setup() {
  pinMode(OUT, OUTPUT);
  Serial.begin(9600);
}

void loop() {
 int max = (3,83);
 int sensor = analogRead(A0);
 float voltage = sensor * (5 / 1023.00);
 

 if (voltage < max){
  digitalWrite(OUT, LOW);
  Serial.println("Voltage lower 3,83V");
 }
 else{
  digitalWrite(OUT, HIGH);
  Serial.println("Voltage higher 3,83V");
 }

 delay(5000);

}

Rentner

Hallo,


 int max = (3,83); ist falsch

float max = 3,83;

Heinz

Sturmfront

Habe da eine Fehlermeldung erhalten, habe dann bei der if abfrage statt "voltage < max" einfach "voltage < 3,83" eingetragen. Leider funktioniert es immer noch nicht, der Ausgang gibt keine Spannung.

combie

Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

Sturmfront


postmaster-ino

Hi

Jetzt, wo ich Das Mal getestet habe ... Ja, Das hatten wir schon Mal.
Habe mir gestattet, Deinen Sketch überprüfen zu lassen.
Denke, bei Dir sind die Warnungen AUSgeschaltet (Standard).
Sonst:
Code: [Select]

C:\...\sketch_jun20a.ino: In function 'void loop()':

C:\...\sketch_jun20a.ino:9:15: warning: left operand of comma operator has no effect [-Wunused-value]

  int max = (3,83);
             ^

Durch das Komma wird Das eine Art Aufzählung und nur der letzte Wert wird gesetzt - deshalb hattest Du auch keine Reaktion - da Du einfach nicht bis auf 83V hoch kamst ;)

MfG

PS: In den Einstellungen ALLE Warnungen anschalten - und dann den ganzen roten Kram beseitigen ;)
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Sturmfront

Habe die Warnungen nun angeschaltet. Danke für deinen Tipp! Bin auf "Voreinstellungen -> Compiler Warnungen -> Alle" gegangen. War das so richtig? LG

Rentner

3,83

3.83


 :smiley-twist:  :smiley-twist:  :smiley-twist:  :smiley-twist:
Sorry hätte ich auch sehen müssen, wenn man einfach nur eine Zeile kopiert und dann ändert fällt einem das nicht auf  :)

Heinz

combie

Macht nix...
Denn hier gilt das tausend Augen Prinzip. :o
Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

Serenifly

Durch das Komma wird Das eine Art Aufzählung und nur der letzte Wert wird gesetzt
Das Komma ist ein Operator. Es führt das vor dem Komma aus und verwirft das Ergebnis (was bei einem einzelnen Integer-Literal nichts macht) und gibt das dahinter zurück.

Wird kaum verwendet, aber lässt sich in for-Schleifen verwenden um etwas mehr Code auszuführen

Go Up