Alle Beiträge von fs

Arduino Testschaltung für Servos

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/.sites/674/site7434035/web/wp/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Servos sind aufgrund Ihres Preises und der relative einfachen Ansteuerung für vieles rund um die Modelleisenbahn zu gebrauchen.

Ich steuere Servos meistens über Arduinos oder andere ATMEL Mikroprozessoren die sich über die Arduino IDE programmieren lassen.
Um nicht immer den ganzen Sketch neu zu schreiben, oder ein Servo einfach direkt nach oder während des Einbaus zu Testen habe ich mir folgende Testschaltung aufgebaut:

20181123_212416

Das ganze ist einArduino Uno mit einem LCD Shield. Das Servo hängt mit der Steuerleitung an einem PWM Pin (in dem Fall Pin 2) und der Stromversorgung an den entsprechenden 5V und GND Pins am Arduino. Die Stromversorgung erfolgt über den USB Port mit einer Powerbank, damit das ganze mobil ist.
Mit LEFT – RIGHT wird der Startwinkel und mit UP – DOWN die Endposition des Sevos justiert. SELECT löst die Bewegung aus.
Somit kann man die benötigten Winkel zB für Weichen einfach austesten um sie später in einen Decoder Sketch übernehmen.

Viel Spass beim Nachbau!

 
#include <LiquidCrystal.h>
#include <Servo.h>
 
 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
Servo  s_servo;
 
int readkey;
char keypressed ='x';
int start_angle = 75;
int end_angle = 115;
int s_data = 2;
char last_pos = 'e';
int s_pos;
int s_speed = 20;
 
 
 
void setup() {
  lcd.begin(16, 2);
  lcd.print("Servotest 2018");
  lcd.setCursor(0, 1);
  lcd.print("by XFLOW");
  delay(3000);
  lcd.clear();
  s_servo.attach(s_data);
 
}
 
void display_write(){
  lcd.setCursor(0, 0);
  lcd.print("Start");
  lcd.setCursor (8,0);
  lcd.print(start_angle);
 
  lcd.setCursor(0, 1);
  lcd.print("End");
  lcd.setCursor (8,1);
  lcd.print(end_angle);
 
  lcd.setCursor (14,0);
  lcd.print(last_pos);
}
 
void read_key(){
   readkey=analogRead(0);
  if (readkey<50) {
  lcd.setCursor (14,1);
  lcd.print("R");
  keypressed = 'r';
  }
  else if(readkey<195) {
  lcd.setCursor (14,1);
    lcd.print("U");
    keypressed = 'u';
  }
  else if(readkey<380) {
    lcd.setCursor (14,1);
    lcd.print("D");
    keypressed = 'd';
  }
  else if(readkey<600) {
    lcd.setCursor (14,1);
    lcd.print("L");
    keypressed = 'l';
     }
  else if(readkey<900) {
    lcd.setCursor (14,1);
    lcd.print("S");
    keypressed = 's';
         }
  delay (200);
}
 
void keyprocess(){
  if (keypressed == 'r'){
    start_angle++;
  }
    else if (keypressed =='l'){
      start_angle--;
    }
     else if (keypressed =='u'){
      end_angle++;
    }
   else if (keypressed =='d'){
      end_angle--;
    }
    else if (keypressed =='s'){
      servo_action();
    }
 
    keypressed = 'x';
  }
 
 void servo_action(){
 
 
   if (last_pos=='e')
     {
 
     s_servo.write(start_angle);
 
  last_pos = 's';
  }
  else if (last_pos=='s')
  {
   s_servo.write(end_angle);
    last_pos = 'e';
  }
 delay (200);
  }
 
 
 
void loop() {
  display_write();
  read_key();
  keyprocess(); 
  lcd.clear();
}

Weathering – Waggon Alterung

Ich hab mich wieder einmal ans Altern von Waggons gewagt,
diesmal waren ein Kleinbahn Postwagen und 2 Liliput 286 Eilzugwagen dran.

Der Kleinbahn Postwagen ist so gut wie fertig und hat auch eine Innenbeleuchtung und zwei, über einen Schalter im Wagenboden schaltbare, Schlussleuchten bekommen.
ausserdem habe ich bei dem Wagen Griffstangen aus Messingdraht angebracht.

Die Liliput Wagen warten noch auf die Innenaustattung mit Fahrgästen und Innenbleuchtung. Ausserdem sind für alle 3 Waggons RP25 Radsätze unterwegs.

 

 

Die Alterung habe ich diesmal auch auf Video festgehalten:

3D Drucker Update und Upgrade

Nachdem mein Geeetech i3 Pro X  in letzter Zeit immer mehr Mucken gemacht hatt, habe ich ein paar Umbauten vorgenommen und bin mit der Qualität wieder sehr zufrieden! 

Das Hauptproblem war, dass die Ausdrucke immer instabiler und löchriger wurde. Ein Tausch der Druckdüse brachte nichts, darum habe ich einmal den Extruder unter die Lupe genommen und bemerkt dass einer der Kunststoffteile einen Riss hatte und so das Filament nicht mehr richtig gegen das Extruderzahnrad gedrückt wurde.

Also habe ich versucht dem ganzen mit verschiedenen, leider alle nicht ganz passenden Extruder-Einzelteilen Herr zu werden, was aber leider auch nur bedingten Erfolg brachte.

Zu guter Letzt half dann der Einbau des kompletten Redrex Assembled MK8 Extruder  bei dem sämtliche Teile aus Metall sind.

Nachdem mein Annäherungssensor seit dem Umbau auf die Anycubic Ultrabase zwar noch funktionierte aber schon beinahe auf die Höhe der Druckdüse heruntergeschraubt werden musste, habe ich den Sensor noch gegen einen Sensor mit etwas höherer Reichweite getauscht und die Versorgungsspannung von 6 auf 12V erhöht. Gleichzeitig habe ich in der Marlin Firmware das Punktraster für das Autobed Level von 3×3 auf 4×4 Punkte erhöht, und den Versatz (PROBE_OFFSET) des Sensors auch noch etwas genauer angepasst.

Der letzte Schritt war der Umbau von Gewindespindeln (die ich schon mehrmals auf etwas weniger verzogene getauscht habe)  auf T8 Trapezspindeln. Für den Umbau braucht man auch noch passende Wellenkupplungen 5mm auf 8mm. Auch bei diesem Umbau muss die Marlin Firmware angepasst werden.

Am Schluss habe ich dann noch alle Kabellängen angepasst, damit es rund ums Mainboard ein bisschen sauberer aussieht.

Alles in allem bin ich mit den 3 Umbauten sehr zufrieden und konnte die Druckqualität mit rund  EUR 100,00 wesentlich verbessern!