Modellbau Snippets

Modellbau Snippets sind Mini Projekte rund um den Modellbau. Das können Sachen sein, die in anderen Projekten gebraucht wurden, und als Snippet dokumentiert werden, damit sie nicht im eigentlichen Projekt untergehen. Oder aber auch Kleinigkeiten die für eine eigene Seite zu gering sind.
zu den Snippets

Taranis plus update von OpenTX 2.0 nach 2.1

Da ich in den Telemetrie Screens und im Lua auf die einzellen Zellen meines OpenXsensors und der Smart Port Lipo Sensoren FLVSS zugreiffen möchte habe ich mich mal daran gemacht meine Taranis Plus auf OpenTX 2.1.8 upzudaten. Vor dem Update stand ich vor dem Problem, dass ich zwar wusste das sich ein paar Sachen geändert haben, aber ich es nicht eindeutig an einer Stelle gefunden habe.

Was ich vor dem Update gefunden habe:

  • Telemetrie-Scripte sind nicht kompatibel mit 2.0
  • Die Telemetrie-Scripte sind jetzt im Ordner /SCRIPTS/TELEMETRY/ und können beliebig benannt werden so lange der name nicht länger ist als 8 Zeichen ohne Endung. Sie können somit global in allen Modellen genutzt werden. Man kann sie einfach einem Telemetrie-Screen zuweisen. Die Scripte in /SCRIPTS/<Modellname> werden nicht mehr gebraucht und können gelöscht werden.
  • Die Sound Dateien müssen upgedated werden. Link zu den Sound downloads ist auf dem download update screen vom Companion 2.1
  • Es gibt kein fertiges SD-Karten Image, dass man einfach kopieren kann.
  • Man kann das OpenTX Companion für Version 2.1 parallel zu dem alten installieren.
  • Per Zufall im Release Note von OpenTX 2.1.7 noch gelesen, dass es für den Modell-Wizard ein update gibt.

Wie bin ich also vorgeganen?

(Taranis mit nach innen gedrückten Trimmern einschalten - bei Mode2 ist das Seitenruder und Querruder-Trimmung)

  • Also erstmal ein Backup vom EEprom in Companion 2.0 gemacht.
  • Inhalt der SD-Karte auf Rechner speichern.
  • Update auf die letzte OpenTX 2.0.18 gemacht.
  • Taranis einmal gestartet um zu checken ob noch alles okay ist.
  • Taranis wieder an den Rechner und Companion 2.1 gestartet.
  • Update per Companion runterladen.
  • Update auf die Taranis hochladen.
  • Taranis von Rechner trennen.
  • Taranis starten. Es kommt eine Meldung, dass der EEprom konvertiert werden muss. Mit Enter bestättigen und abwarten.
  • Sound Dateien runter laden und damit die alten ersetzen.
  • Ordner /SCRIPTS/TELEMETRY/ angelegt.
  • Alte Telemetrie Scripte gelöscht.
  • Den Wizard mit dem der zu OpenTX 2.1.7 veröffentlicht wurde ersetzt.
  • In allen Modellen in die Modelleinstellungen gehen und bis in die Telemetrie Einstellungen wechseln. Dort nach Sensoren scannen lassen. Modell natürlich auch einschalten ;-)

… ich glaube das wars. Fertig. Mal sehen wie ich die Lua Scripte umbauen muss damit sie wieder gehen.

L298N Brushed RC Doppelregler

Für mein 4WD Rover-Projekt brauchte ich noch einen Brushed Regler die ohne Bremse in den Rückwärtsgang wechseln. Zu erst habe ich Brushlessregler dazu umgeflasht, aber leider waren die nicht sehr haltbar. Dann hab ich mal in der Arduino-Schublade gesucht was ich noch so an Motor-Endstufen da hatte. Und fand eine L298N Platine. Der L298N hat eigentlich mit seinen 2A nicht genug Dampf für die Anwendung, aber ausprobieren geht über studieren. Also schnell einen Pro Mini aus dem Fach daneben geangelt und etwas Code geschrieben.
zum Snippet

L298N_DualBrushedESC.ino
#define DIRECTION_M1_1 5
#define DIRECTION_M1_2 6
#define PWM_M1 3
#define MOTOR_1 PWM_M1
 
#define DIRECTION_M2_1 7
#define DIRECTION_M2_2 8
#define PWM_M2 9
#define MOTOR_2 PWM_M2
 
#define PWM_IN_1 10
#define PWM_IN_2 11
 
#define BACKWARD false
#define FORWARD true
 
boolean dirM1;
boolean dirM2;
 
int pwm_value_1 = 0;
int pwm_value_2 = 0;
 
void setup() {
  pinMode(DIRECTION_M1_1, OUTPUT);
  pinMode(DIRECTION_M1_2, OUTPUT);
  pinMode(PWM_M1, OUTPUT);
 
  pinMode(DIRECTION_M2_1, OUTPUT);
  pinMode(DIRECTION_M2_2, OUTPUT);
  pinMode(PWM_M2, OUTPUT);
 
  stop(MOTOR_1);
  stop(MOTOR_2);
 
  pinMode(PWM_IN_1, INPUT);
  pinMode(PWM_IN_2, INPUT);
}
 
void loop() {
  pwm_value_1 = pulseIn(PWM_IN_1, HIGH);
  pwm_value_2 = pulseIn(PWM_IN_2, HIGH);
 
  pwm_value_1 = map(pwm_value_1, 1000, 2000, -255, 255);
  pwm_value_2 = map(pwm_value_2, 1000, 2000, -255, 255);
 
  if (pwm_value_1 < 10 && pwm_value_1 > -10) {
    stop(MOTOR_1);
  } else {
    setMotor(MOTOR_1, pwm_value_1);
  }
 
  if (pwm_value_2 < 10 && pwm_value_2 > -10) {
    stop(MOTOR_2);
  } else {
    setMotor(MOTOR_2, pwm_value_2);
  }
 
  delay(20);
}
 
void stop(int motor)
{
  analogWrite(motor, 0);
}
 
void setMotor(int motor, int pwm) {
  boolean dir;
 
  if (pwm < 0) {
    dir = BACKWARD;
    pwm *= -1;
  } else {
    dir = FORWARD;
  }
 
  if (motor == MOTOR_1) {
    if (dirM1 != dir) {
      setDirection(MOTOR_1, dir);
    }
    setSpeed(MOTOR_1, pwm);
  } else {
    if (dirM2 != dir) {
      setDirection(MOTOR_2, dir);
    }
    setSpeed(MOTOR_2, pwm);
  }
}
 
void setDirection(int motor, boolean dir) {
  if (motor == MOTOR_1) {
    digitalWrite(DIRECTION_M1_1, dir);
    digitalWrite(DIRECTION_M1_2, !dir);
    dirM1 = dir;
  } else {
    digitalWrite(DIRECTION_M2_1, dir);
    digitalWrite(DIRECTION_M2_2, !dir);
    dirM2 = dir;
  }
}
 
void setSpeed(int motor, int sp) {
  if (motor == MOTOR_1) {
    analogWrite(PWM_M1, sp);
  } else {
    analogWrite(PWM_M2, sp);
  }
}
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information