Go Down

Topic: Widerstandskaskade auswerten von lenkradfernbedienung LFB, Spannung Messen (Read 197 times) previous topic - next topic

Akropolis

Hi Zusammen, habe wohl zu lange nicht mehr in die Tasten gehauen :) Jedenfalls komme ich nicht mehr weiter und brauche mal eure hilfe Betreffend:

Widerstandskaskade auswerten von lenkradfernbedienung Strom Messen.

Die Strom erkennung läuft gut, also ausreichend genau, (Nachgemessen mit Voltmeter).

Ich schaffe es nur eine led mit diesem code zu aktivieren!

hier mal der code:
Code: [Select]

 if (analogRead(analogPin)*REF_VOLTAGE/PIN_STEPS <= 2.65 ) {   //2. Vorwerts.2.2-2.8
     digitalWrite(BTLFB_vorwerts, HIGH);
     delay(3000);            
     digitalWrite(BTLFB_vorwerts, LOW);
     delay(1000);}

 

mit <= oder >= macht die Variable was Sie soll.

mit == macht sie gar nichts... auch wen ich den ganzen möglichen Volt bereich reinschreibe 2.65 2.64 2.63 usw. oder einzelne Variablen mit einem grossen abdeckungsbereich der Spannung schreibe.

Mache ich  eine Variable mit "oder", 2.50||2.51||2.52||2.53||2.54||2.55||2.56||2.57||2.58||2.59||2.60||2.61||2.62||2.63||2.64||2.65||2.66||2.67||2.68||2.69||2.70||2.71||2.72||2.73||2.74||2.75||2.76||2.77

Leuchtet die Led abfolge nonstop, ohne das Volt level anliegt. ohne tasten druck.
Das währe der Spannungsbereich eines Tasters der LFB, gross abgedeckt und liegt weit weg vom nächsten Taster Spannung der LFB.  

Wie schaffe ich es, dass ich eine kleinere auflösung der Volt erreiche?
anstatt 2.56V nur noch 2.5.. 2.6.. 2.7 V. Das würde es doch vereinfachen? Ich weiss nicht wie ich eine Variable mit einem Spannungsbereich von 2.50 V bis 2.77 V schreibe/Formulieren soll..???

Da sind 6 Taster an der Auto Lenkrad Fernbedienung die ich auf einer Widerstandskaskaden Leitung auslesen möchte , die Spannung und Widerstandswerte kenne ich, diese dienen zur Steuerung eines vorhandenen BT5.0 audio Tel Steuerung für den Radio. Die 5v Digitalen ausgänge gehen dann direkt auf die taster in der vorhandenen BT Steuerung (gekauftes gerät) Hardware mässig geht alles.. gemessen getestet.. es liegt nur noch am code.. und einigen Tests.

Kann mir ja demnad bitte Helfen oder Tipps geben :)

So versuche ich das ganze.. ein Beispiel:

Code: [Select]

int analogPin = A0; // Achtung Max. 5V Input GMLFB Resistiv Leitung.
int val = 0; // Variable, die den gelesenen Wert speichert
#define REF_VOLTAGE 4.7          // 4.7V @ USB Port. Immer Messen! Stromversorgung vom Arduino.
#define PIN_STEPS 1024.0         // @ Analog Pin A0

#define BTLFB_vorwerts 2         // D2.
#define BTLFB_rueckwerts 3       // D3.
#define BTLFB_Vol_up 4           // D4.
#define BTLFB_Vol_down 5         // D5.
#define BTLFB_mfb 6              // D6.

void setup(){
    pinMode(BTLFB_vorwerts, OUTPUT);        //2. 2,5V ->>
    pinMode(BTLFB_rueckwerts, OUTPUT);      //3. 3.1V <<-
    pinMode(BTLFB_Vol_up, OUTPUT);          //4. 1.3V -
    pinMode(BTLFB_Vol_down, OUTPUT);        //5. 0.8V +
    pinMode(BTLFB_mfb, OUTPUT);             //6. 1.9V "0"=Source
    pinMode(GMLFB_Relais_Switch, OUTPUT);   //7. 3.7V "=>" Radiospeicher
    Serial.begin(9600);
}

void loop(){
  val = analogRead(analogPin); // Pin einlesen

    Serial.print("Opel WK LFB = ");
    Serial.print(analogRead(analogPin)*REF_VOLTAGE/PIN_STEPS);            // Umrechnung von GMLFB Volt * Ref. Volt / Pin steps Analog 1024.0
    Serial.println(" V");
   // delay(200);

  if (analogRead(analogPin)*REF_VOLTAGE/PIN_STEPS <= 2.65 ) {   //2. Vorwerts. 2-2.8V
     digitalWrite(BTLFB_vorwerts, HIGH);
     delay(3000);            
     digitalWrite(BTLFB_vorwerts, LOW);
     delay(1000);}
}


Die Spannungswerte stimmen bei Tastendruck sehr genau im Serialmonitor und direkt an dem Analogen eingangs pin gemessen mit Voltmeter, vlt 0,03V Abweichung.
Langsam ist Präzise und Präzise ist schnell ;)

Tommy56

Meinst Du, dass Du mehr oder schneller Antworten bekommst, wenn Du 2 Mal den gleichen Thread auf machst?

@Mod: Bitte einen löschen

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

HotSystems

Und bitte verwende zukünftig die richtigen Begriffe.
Widerstandskaskade nicht kaske. Und Widerstand nur mit i.
Auch hast du sicher den Strom mit einem Amperemeter gemessen, nicht mit einem Voltmeter.
Dies nur als gut gemeinter Hinweis.

Weiterhin ist dein Beitrag sehr unverständlich und vermute du verwechselst ständig Spannung und Strom.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Akropolis

Meinst Du, dass Du mehr oder schneller Antworten bekommst, wenn Du 2 Mal den gleichen Thread auf machst?

@Mod: Bitte einen löschen

Gruß Tommy
Weiss auch nicht was dar zur Hölle schief geloffen ist...?? Hatte den Beutrag Editiert und auf einmal waren es 2.. wollte es selber löschen, aber die Option gibt es ja nicht.. SRY
Langsam ist Präzise und Präzise ist schnell ;)

Franz54

Mache ich  eine Variable mit "oder", 2.50||2.51||2.52||2.53||2.54||2.55||2.56||2.57||2.58||2.59||2.60||2.61||2.62||2.63||2.64||2.65||2.66||2.67||2.68||2.69||2.70||2.71||2.72||2.73||2.74||2.75||2.76||2.77
Wieso hast du da lauter kommawerte???? Ein Analogeingang A0 bringt bei Auslesen 0-1023. Und die muss ich dann auswerten. Da brauchst du keine Kommawerte.
Da mache ich z.B.:

if ((messwert > 150)&&(messwert < 200)) // Ist ein wert zwischen 151 und 199 von 1023
{
dann mache ich das
und das
und...
}

if ((messwert > 200)&&(messwert < 250))
{
dann mache ich das
und das
und...
}

if ((messwert > 250)&&(messwert < 300))
{
dann mache ich das
und das
und...
}

u.s.w.

Akropolis

Und bitte verwende zukünftig die richtigen Begriffe.
Widerstandskaskade nicht kaske. Und Widerstand nur mit i.
Auch hast du sicher den Strom mit einem Amperemeter gemessen, nicht mit einem Voltmeter.
Dies nur als gut gemeinter Hinweis.

Weiterhin ist dein Beitrag sehr unverständlich und vermute du verwechselst ständig Spannung und Strom.

Da hast du recht.. ;) "DUCK" und die Schreibfehler sind korrigiert. Ist schon ein Multimeter.. Ohm, Wechsel und Gleich Spannung, Ampere, und paar sachen kann es.
Langsam ist Präzise und Präzise ist schnell ;)

Tommy56

wollte es selber löschen, aber die Option gibt es ja nicht.. SRY
Doch, gibt es unter More.

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

HotSystems

Prima, aber bitte auch noch im Titel ändern, das kannst du auch noch anpassen.
Danke.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Akropolis

Wieso hast du da lauter kommawerte???? Ein Analogeingang A0 bringt bei Auslesen 0-1023. Und die muss ich dann auswerten. Da brauchst du keine Kommawerte.
Da mache ich z.B.:

Ja so sollte das funktionieren Danke, werde ich mal Testen, angeblich ist es so eine genauere Messung mit der Umrechnung

#define REF_VOLTAGE 4.7          
#define PIN_STEPS 1024.0

(analogRead(analogPin)*REF_VOLTAGE/PIN_STEPS);
//Umrechnung: GMLFB Volt * Ref. Volt / Pin steps Analog 1024.0

Hab das so aus dem Netz..
Langsam ist Präzise und Präzise ist schnell ;)

Akropolis

Prima, aber bitte auch noch im Titel ändern, das kannst du auch noch anpassen.
Danke.

erledigt
Langsam ist Präzise und Präzise ist schnell ;)

Akropolis

Wieso hast du da lauter kommawerte???? Ein Analogeingang A0 bringt bei Auslesen 0-1023. Und die muss ich dann auswerten. Da brauchst du keine Kommawerte.
Da mache ich z.B.:

if ((messwert > 150)&&(messwert < 200)) // Ist ein wert zwischen 151 und 199 von 1023
{
dann mache ich das
und das
und...
}

if ((messwert > 200)&&(messwert < 250))
{
dann mache ich das
und das
und...
}

if ((messwert > 250)&&(messwert < 300))
{
dann mache ich das
und das
und...
}

u.s.w.
Danke nochmals.. die if abfrage anderst formuliert, wie in deinem Beispiel und der Code macht schon was er soll.. bis hier hin. DANKE
Langsam ist Präzise und Präzise ist schnell ;)

Peter-CAD-HST

Ja so sollte das funktionieren Danke, werde ich mal Testen, angeblich ist es so eine genauere Messung mit der Umrechnung

#define REF_VOLTAGE 4.7          
#define PIN_STEPS 1024.0

(analogRead(analogPin)*REF_VOLTAGE/PIN_STEPS);
//Umrechnung: GMLFB Volt * Ref. Volt / Pin steps Analog 1024.0

Hab das so aus dem Netz..
Moin Akropolis
hier kommt ein Vorschlag von meiner Seite. Ich habe mir mal mit meinen ambulanten und gefährlichen Halbwissen eine Fallunterscheidung mit der Switch/Case Anweisung ausgedacht. Diese läßt sich einfach durch weitere Fallunterscheidungen erweitern. Alles was nicht durch eine Fallunterscheidung abgefischt wird, wird in im Fall DEFAULT: bearbeitet. Die jeweiligen Umrechnungen können innerhalb der Fallunterscheidungen vorgnommmen werden.
*** nicht getestet ***
switch (messwert)
 {
   case 150 ... 199:
     dann mache ich das
     und das
     und...
     break;
     case 200 ... 249:
     dann mache ich das
     und das
     und...
     break;
     case 250 ... 299:
     dann mache ich das
     und das
     und...
     break;
     default:
     dann mache ich das
     und das
     und...
     break;
 }
Viel Spass beim Testen
Gruß Peter
und gesund bleiben
KISS Q&D - keep calm and carry on - mind the gap - beware of sharks! -

Akropolis

Moin Akropolis
hier kommt ein Vorschlag von meiner Seite. Ich habe mir mal mit meinen ambulanten und gefährlichen Halbwissen eine Fallunterscheidung mit der Switch/Case Anweisung ausgedacht. Diese läßt sich einfach durch weitere Fallunterscheidungen erweitern. Alles was nicht durch eine Fallunterscheidung abgefischt wird, wird in im Fall DEFAULT: bearbeitet. Die jeweiligen Umrechnungen können innerhalb der Fallunterscheidungen vorgnommmen werden.
*** nicht getestet ***
switch (messwert)
 {
   case 150 ... 199:
     dann mache ich das
     und das
     und...
     break;
     case 200 ... 249:
     dann mache ich das
     und das
     und...
     break;
     case 250 ... 299:
     dann mache ich das
     und das
     und...
     break;
     default:
     dann mache ich das
     und das
     und...
     break;
 }
Viel Spass beim Testen
Gruß Peter
und gesund bleiben
Danke ja das hört sich auch gut an, bei gelegenheit werde ich es testen :) Danke alles gute dir auch
Langsam ist Präzise und Präzise ist schnell ;)

uwefed


agmue

Man sollte else nicht unterschätzen:

if (messwert < 150) // Ist ein Wert kleiner 150
{
 dann mache ich das
 und das
 und...
}
else if (messwert < 200) // Ist ein Wert zwischen 150 und 199
{
 dann mache ich das
 und das
 und...
}
else if (messwert < 250)
{
 dann mache ich das
 und das
 und...
}
else if (messwert < 300)
{
 dann mache ich das
 und das
 und...
}
else // Ist ein Wert zwischen 300 und 1023
{
 dann mache ich das
 und das
 und...
}

Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Go Up