Hemmy-Therapie

Hier könnt Ihr Erweiterungen und Modifikationen die mit Arduino UNO, Nano etc. realisiert sind vorstellen oder diskutieren.
Antworten
Benutzeravatar
JoBo
Globaler Moderator
Globaler Moderator
Beiträge: 448
Registriert: Fr 31. Okt 2014, 13:30
Has thanked: 15 times
Been thanked: 59 times

Hemmy-Therapie

Beitrag von JoBo »

Hallo Zusammen,

für diejenigen, die in absehbarer Zeit mal einen Servo am RF1000/RF2000 betreiben wollen, will ich mal kurz eine Möglichkeit vorstellen, wie man dem Servo das Zittern abgewöhnen kann. Die Idee dazu kam bei Digibike's Dualextruderumbau, da seine Neuanschaffung einen Servo verbaut hat. Dieser zeigte laut Digibike ein Zittern wie "Hemmy auf Exstasie". Messungen mit dem Oszilloskop haben gezeigt, dass das Signal vom RF1000 nicht ganz sauber ist und um ca. 30 µs schwanken kann, was das Zittern verursacht.
Um dem Servo das Zittern abzugewöhnen, hab ich einen Arduino Mini Pro, wie unten abgebildet, zw. RF1000 und Servo geschaltet.
Hemmy.jpg
Das folgende kleine Programm wertet das PWM-Signal an A2 aus und gibt ein stabiles PWM-Signal an D9 aus. Mit Hilfe von vordefinierten Schwellwerten (MIN_THR_ANGLE, MAX_THR_ANGLE) und Totbereichen für die Mittelstellung (MIN_ANGLE, MAX_ANGLE), kann man seine Lagen festlegen und so das Zittern los werden.

Code: Alles auswählen

#include "Servo.h"

#define MIN_THR_ANGLE    80
#define MAX_THR_ANGLE    100
#define  MIN_ANGLE       70
#define MID_ANGLE        90
#define MAX_ANGLE        110

int servo_in = 2;
float pos;
int a_pos = 0;
unsigned long t_start, t_stop, t_pulse = 0;
//volatile int state = LOW;
Servo myservo;

void setup() {
  pinMode(servo_in, INPUT);
  myservo.attach(9);
}

void loop() {
  //a_pos = pos;
  t_pulse = pulseIn(servo_in, HIGH, 2400);
  if (t_pulse > 0)
  {
    if (t_pulse < 700)
      t_pulse = 700;
    Serial.println(t_pulse);
    pos = ((t_pulse - 700) / 1500.0) * 180.0;
    a_pos = abs(pos);
    Serial.println(pos);

    if(a_pos < MIN_THR_ANGLE)
       a_pos = MIN_ANGLE;
    else if(a_pos > MAX_THR_ANGLE)
       a_pos = MAX_ANGLE;
    else
       a_pos = MID_ANGLE;
 
    if ( pos != a_pos)
      myservo.write(a_pos);
  }
}
Das Ganze lässt sich natürlich noch um weitere Servos erweitern.

Viel Spaß damit

JoBo
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Zaldo
Globaler Moderator
Globaler Moderator
Beiträge: 630
Registriert: Do 24. Sep 2015, 10:38
Wohnort: Raum Frankfurt
Has thanked: 38 times
Been thanked: 50 times

Re: Hemmy-Therapie

Beitrag von Zaldo »

Das sollte sich relativ problemlos auf einen ATtiny übertragen lassen
· Besserer Z-Referenzschalter · Druckbett Feinjustage · Platinenkühlung · Weiße Bauraumbeleuchtung · Not-Aus
· Dauerdruckplatte · Temperaturgeregelte Einhausung · Repetier Server auf Raspberry · MK8 Vorschubritzel
Benutzeravatar
Digibike
Globaler Moderator
Globaler Moderator
Beiträge: 2419
Registriert: Sa 6. Sep 2014, 13:19
Wohnort: Bei Heilbronn
Has thanked: 280 times
Been thanked: 455 times

Re: Hemmy-Therapie

Beitrag von Digibike »

Ja, mein Hammy lebte leider nicht allzu lang... Haben halt ´ne begrenzte Lebensdauer, die kleinen Kerle... :oops:
Aber das ahnte ich ja schon damals anhand der Temperatur-Entwicklung und dem einhergehenden "Zittern"...
Die Servo´s sind ja sowieso unruhig um Ihre aktuelle Lage und wenn diese dann aufgrund von Signalschwankungen sich auch noch
ändert - ja dann kann er sich ja eigentlich bei einem 8 h Druckauftrag nur noch zu tode regeln... :kill:
Also das brauchts auf jedenfall um "Hammy" zu beruhigen! Vielen Dank nochmal für die Programmierung!

Gruß, Christian :good:
Du suchst Hilfe bei Druck(er) Problemen? Dann lies bei der Anfrage hier "Lösung für Druckeinstellung/Hardwareprobleme gesucht?" durch und beantworte die
Fragen in deiner Anfrage - so wissen wir recht schnell, wo der Schuh drücken könnte!
3dplaner
Profi 3D-Drucker
Profi 3D-Drucker
Beiträge: 373
Registriert: Fr 19. Sep 2014, 06:32
Has thanked: 47 times
Been thanked: 6 times

Re: Hemmy-Therapie

Beitrag von 3dplaner »

Hallo,
ich habe mir Gestern das Arduino -Starter-Kit geschenkt. Software 1.6.10 installiert alles lief und läuft Problemlos. Ich musste ja in den Tools der Software den Arduino Uno anklicken. Was ist jetzt aber mit dem Drucker da war ja immer Mega 2560 angeklickt die Software hatte die Version 1.5.10 glaube ich. Die sollte ich ja vor der Installation der Version 1.6.10 deinstallieren. Wie muss ich mit diesem Problem umgehen.
Danke Helmut
Antworten

Zurück zu „Arduino“