Jump to content
elektro-skateboard.de

Wii Nunchuck mit Ardruino


benediktsamuel

Empfohlene Beiträge

Geschrieben
Danke sehr net von dir.

 

Wenn du willst kann ich es gleich testen.

Bin gerade am werkeln.

 

Gruß Gerald

Sehr gerne, ich habe gerade keine Testumgebung und muss die Werte im Kopf nachrechnen.

 

Schreib mal...

Geschrieben

Hi Gerald-Z,

 

da ich nichts mehr von dir höre, gehe ich im ungünstigsten Fall davon aus, dass du eine Probefahrt gemacht hast und jetzt an der nächsten Häuserwand klebst :pizza:

 

Er war doch so jung......

Geschrieben

Hallo Barney

Nein ich bin noch am Leben. ;)

Ich hab dich falsch verstanden. Ich dachte du korrigierst die beiden Zeilen und schreibst es hier noch mal rein.

Um dich nicht zu stressen habe ich dann auf eine Antwort gewartet. Am Nachmittag musste ich dann in die Arbeit.

 

Das zweite Relai ist direkt an 5 Volt angeschlossen und Schaltet sobald der Bec 5 Volt liefert.

Das benötige ich um die Lipo Anzeige mit einzuschalten. So brauche ich nicht immer den Balancer Anschluss abzuziehen.

 

Das erste Relai (für Hupe) wird von einem Transistor angesteuert der mit dem Basis Anschluss über ein 5kOhm an das Arduino Board angeschlossen ist.

Durch den Transistor sollte keine Überspannung zurück zum Arduino kommen.

 

Das mit dem Dämpfungswert werde ich auch noch probieren.

 

Kann du vielleicht bei Gelegenheit die "Hase - Schildkröte" Funktion mit programmieren?

Ich stell mir das ca so vor:

Beim einschalten ist automatisch die "Schildkröte" aktiv und das Board hat nur die halbe Geschwindigkeit.

Durch Tastenkombination zb: Joystick rechts und gleichzeitig dreimal die Z Taste drücken wird die "Hase" Funktion aktiv. Das Board läuft jetzt mit maximaler Geschwindigkeit.

 

Mit der Selben Tastenkombination könnte man das ganze wider deaktivieren.

 

Gruß Gerald

Geschrieben

Das erste Relai (für Hupe) wird von einem Transistor angesteuert der mit dem Basis Anschluss über ein 5kOhm an das Arduino Board angeschlossen ist.

Durch den Transistor sollte keine Überspannung zurück zum Arduino kommen.

 

Aber der Transistor kann sterben. Über ihm liegt nämlich die hohe Spannung beim Abschalten. Eine Diode (z.B. 1N4148) mit Kathode (Ring) an die Plus-Seite und Anode an die Transistor-Seite vom Relais verhindert das wirkungsvoll.

 

Nebenbei kann man die Hupe doch aber auch direkt per (evtl. etwas leistungsfähigerem) Transistor schalten. Das erspart 1x Klappertechnik.

Geschrieben
Hallo Barney

Nein ich bin noch am Leben. ;)

Ich hab dich falsch verstanden. Ich dachte du korrigierst die beiden Zeilen und schreibst es hier noch mal rein.

Um dich nicht zu stressen habe ich dann auf eine Antwort gewartet. Am Nachmittag musste ich dann in die Arbeit.

 

Das zweite Relai ist direkt an 5 Volt angeschlossen und Schaltet sobald der Bec 5 Volt liefert.

Das benötige ich um die Lipo Anzeige mit einzuschalten. So brauche ich nicht immer den Balancer Anschluss abzuziehen.

 

Das erste Relai (für Hupe) wird von einem Transistor angesteuert der mit dem Basis Anschluss über ein 5kOhm an das Arduino Board angeschlossen ist.

Durch den Transistor sollte keine Überspannung zurück zum Arduino kommen.

 

Das mit dem Dämpfungswert werde ich auch noch probieren.

 

Kann du vielleicht bei Gelegenheit die "Hase - Schildkröte" Funktion mit programmieren?

Ich stell mir das ca so vor:

Beim einschalten ist automatisch die "Schildkröte" aktiv und das Board hat nur die halbe Geschwindigkeit.

Durch Tastenkombination zb: Joystick rechts und gleichzeitig dreimal die Z Taste drücken wird die "Hase" Funktion aktiv. Das Board läuft jetzt mit maximaler Geschwindigkeit.

 

Mit der Selben Tastenkombination könnte man das ganze wider deaktivieren.

 

Gruß Gerald

 

Hi Gerald-Z,

ups, die Welt ist voller Missverständnisse. Ich hatte die Korrektur schon ins Forum eingepflegt.

 

Hase- Igel werde ich bald umsetzen, ich grübel schon darüber.

 

Beatbuzzer hat eindeutig recht. Eine Freilaufdiode ist "Plflicht" und nicht die Kür. :P

 

Viele Grüße

 

Barney

Geschrieben

Hallo Barney hab soeben das Programm probiert und es funktioniert nicht so recht.

Getestet hab ich das ganze mit einem Servo.

Bremse funktioniert.

Wenn ich die Z Taste drücke und ein bisschen gas gebe. Dreht der Servo bis er ansteht und die Zahnräder knarren.

Erst wenn ich die Taste loslasse geht er wider in Grundstellung. ;)

 

Danke das mit der Hupe werde ich noch ändern müssen.

Ich hätte auch einen Mosfet wo drauf steht CDIL, BD243C, G1 kann ich mit dem direkt die Hupe ansteuern 25 Volt?

 

Gruß Gerald

Geschrieben

Ich habe gerade nachgerechnet:

Da ist ein Fehler im Divisor. Es müsste nicht leerlauf/neutralstellung heissen. Ich schreibe gerade mit dem Handy...

Mach mal aus leerlauf/neutral

1000/neutral

Geschrieben

Ich hab das jetzt so probiert:

// Subroutine fuer die Motorsteuerung

void Motorsteuerung(){

// Beschleunigen bei gehaltenen Z-Knopf und überschreiten des Oberern Totpunktes

if (nunchuk.zButton == HIGH && nunchuk.analogY > ObererTotpunkt && F_Ueberstrom == LOW){

// StellWertMotor=StellWertMotor+((nunchuk.analogY-NeutralstellungYAchse)/BeschleunigungsDaempfung);

StellWertMotor = nunchuk.analogY-1000/NeutralstellungYAchse; // direkte Ansteuerung

if (StellWertMotor > ObererStellWertMotor) StellWertMotor = ObererStellWertMotor; // obere Grenze fuer den Motorregler........

 

hat sich nichts verändern.

 

Gruß Gerald

Geschrieben

Danke das mit der Hupe werde ich noch ändern müssen.

Ich hätte auch einen Mosfet wo drauf steht CDIL, BD243C, G1 kann ich mit dem direkt die Hupe ansteuern 25 Volt?

 

Der BD243C ist ein Bipolar-Transistor und kein MOSFET. Wegen seiner hohen Strombelastbarkeit hat er einen ziemlich niedrigen Verstärkungsfaktor (hfe), deshalb ist er hierfür wohl nicht ganz so gut geeignet, aber vorerst: Hast du mal Daten zu der Hupe, also Spannung und Stromaufnahme und was für eine Bauart bzw. woher die ist?

Geschrieben

alt: StellWertMotor=StellWertMotor+((nunchuk.analogY-NeutralstellungYAchse)/BeschleunigungsDaempfung);

neu: StellWertMotor = Leerlauf + (nunchuk.analogY-NeutralstellungYAchse)*((ObererStellWertMotor-Leerlauf)/NeutralstellungYAchse); // direkte Ansteuerung

 

Zwei Rechenbeispiele:

 

= Leerlauf + (nunchuk.analogY-NeutralstellungYAchse)*((ObererStellWertMotor-Leerlauf)/NeutralstellungYAchse)

 

= 3000 + (200-127)*((4000-3000)/127)

~ 3500 -> sollte jetzt richtig sein!

Geschrieben

Auch bremsen war falsch!

StellWertMotor = Leerlauf - (NeutralstellungYAchse-nunchuk.analogY)*((Leerlauf-UntererStellWertMotor)/NeutralstellungYAchse); // direkte Ansteuerung

 

 

Probe: leichtes Bremsen und Vollbremsen:

 

leichtes Bremsen

= 3000 - (127-110) * ((3000-2000)/127)

= 3000 - 133

= 2877 passt

 

Vollbremsung

= 3000 - (127-0) * ((3000-2000)/127)

= 3000 -127 * ((1000)/127) jetzt die 127 kürzen:

= 3000 - 10000

= 2000 -> UntererStellWertMotor passt!

 

Schalt mal das Debugging unten an!

Geschrieben

Hi Gerad-Z,

 

Hase Igel habe ich jetzt auch fertig. Ich probiere das lieber selber bei mir aus, bevor ich dir noch weitere Geistige Entgleisungen zukommen lasse. Kann bis ins Wochenende dauern!

 

Bestätigung der Umschaltung durch kurzes Hupensignal! Ich hoffe Du kannst damit leben!

 

VG

 

Barney

Geschrieben

Hallo Gerald-Z,

 

was heißt nicht zufrieden? Die Umschaltung funktioniert einwandfrei. Ich musste aber leider beim Programmieren feststellen, dass ich bei dem if-Statement zu viele Anfragen an den Nunchuk stelle. Ich muss jetzt Hilfsvariablen anlegen, die ca. 10 mal die Sekunde den Nunchuk abfragen und die Ergebnisse speichern. Das Bedeutet ein kleines Redesinn meines Programms. Das werde ich in den nächsten Tagen angehen. Ansonsten habe ich die Umschaltung ausprobiert und kann sagen, es funktioniert einwandfrei.

Auch die Direktsteuerung klappt jetzt ohne große Einschränkungen. Der Nunchuk hat nun mal als Minimum keine Null sondern 10-15 und als Maximum ca. 243. Zu mindestens meiner. Mit der Integrationsroutine war das kein Thema. Ich habe die Ansteuerung auf der Werkbank getestet, ich möchte damit nicht fahren. Der 2400W Motor ist recht giftig und durch die Headway Zellen ist auch der passende Strom vorhanden. Berichte mal aus deiner Sicht, wie sich solch eine direkte Steuerung in der realen Welt so macht.

 

Viel Freude damit

 

Barney

Geschrieben

Hallo

Danke das du das so schnell umgesetzt hast.

Ich bin gerade nicht Zuhause um es auszuprobieren.

Aber man kann damit schon linear beschleunigen oder?

Ich mein jetzt so wie mit einer rc Funk.

 

Gruß Gerald

Geschrieben
Hallo

Danke das du das so schnell umgesetzt hast.

Ich bin gerade nicht Zuhause um es auszuprobieren.

Aber man kann damit schon linear beschleunigen oder?

Ich mein jetzt so wie mit einer rc Funk.

 

Gruß Gerald

 

Ja, das ist so, wie ein Yamaha FJ1200 (offen) mit Kurzhub Gasgriff. Man muss es mögen. :devil:

 

Du musst es nur aktivieren.

Geschrieben
Ja, das ist so, wie ein Yamaha FJ1200 (offen) mit Kurzhub Gasgriff. Man muss es mögen. :devil:

 

Du musst es nur aktivieren.

 

Horcht sich wirklich gut an. :)

Mein Board mit 2x C6374 leisten mit 6s 2670 Watt maximal.

Wenn man auf dem Board gerade oben steht und man die maximale Beschleunigung aktiviert reicht es für einen Willi.

 

Gruß Gerald

Geschrieben

Ich habs gerade mit einem Servo getestet.

Bremse geht perfekt.

Beim Beschleunigen ist mir aufgefallen das wenn ich den Stick loslasse öfter der Servo die Neutralstellung nicht findet. Erst wenn ich die Z Taste loslasse kommt er wider zurück.

 

Wo kann man jetzt den Hasen Igel finden? Oder sind die zwei noch im Käfig eingesperrt?

Werde morgen das mal am Board Testen.

 

Gruß Gerald

Geschrieben

Beim Beschleunigen ist mir aufgefallen das wenn ich den Stick loslasse öfter der Servo die Neutralstellung nicht findet. Erst wenn ich die Z Taste loslasse kommt er wider zurück.

Ja, das liegt an der Eigenschaft der if-Abfrage mit der Erkennung des Totpunktes für den Joystick. Ich werde dir nachher eine neue Zeile senden, wo dieses nicht mehr darin sein wird.

 

Wo kann man jetzt den Hasen Igel finden? Oder sind die zwei noch im Käfig eingesperrt?

Nein, Joystick (wie für Licht) nach links bis zum Anschlag drücken, dann die Z-Taste dreimal drücken. Jedes mal wenn der Umschaltwunsch erkannt wurde, wird ein kurzes Hupsignal ertönen. Beim dritten mal hupt es länger.

 

Wir arbeiten uns langsam ans Ziel!

 

VG

 

Barney

Geschrieben

Tausche mal den Block Motorsteuerung aus, es gibt jetzt keine Einstellmöglichkeit mehr für die Neutralstellung beim Benutzen des Z-Knopfes und Joystick:

 

// Subroutine fuer die Motorsteuerung

void Motorsteuerung(){

// Beschleunigen bei gehaltenen Z-Knopf

if (nunchuk.zButton == HIGH && F_Ueberstrom == LOW){

StellWertMotor = UntererStellWertMotor + (nunchuk.analogY)*((ObererStellWertMotor-UntererStellWertMotor)/256); // direkte Ansteuerung

}

// Freilauf des Motors bei losgelassenen Z-Knopf

else if (nunchuk.zButton == LOW) StellWertMotor = Leerlauf;

 

if (F_Ueberstrom == HIGH){

StellWertMotor = Leerlauf+(StellWertMotor-Leerlauf)*Reduktionsfaktor;

// Serial.print("Reduktionsfaktor: "); // Debugausgabe Reduktionsfaktor

// Serial.println(Reduktionsfaktor);

F_Ueberstrom = LOW; // Flag loeschen

}

OCR1A = StellWertMotor; // Geschwindigkeitsvorgabe Motor in PWM-Register OCR1A setzen

// Serial.print("StellWertMotor: "); // Debugausgabe Motorsteller

// Serial.println(StellWertMotor);

// Ende Abschnitt Motorsteuerung

}

Tritt dem Gespräch bei

Du kannst jetzt posten und dich später registrieren. Wenn du bereits einen Account hast kannst du dich hier anmelden.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...