INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Motorantrieb für Follow Focus
05.12.2014, 22:41
Beitrag #9
RE: Motorantrieb für Follow Focus
Hi,
das wundert mich jetzt etwas. Versuch mal "drehen(-1,1)" bzw. "drehen(1,1)".
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.12.2014, 22:48
Beitrag #10
RE: Motorantrieb für Follow Focus
Servus Thorsten

Also mit der Einstellung geht es schon besser, allerdings macht der Motor bei einer Umdrehung des Encoders gerade mal eine viertel Umdrehung, bzw, noch weniger !

Späten Gruß
Walter
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.12.2014, 23:10
Beitrag #11
RE: Motorantrieb für Follow Focus
Hi,
dann versuch "drehen(-4,1)" bzw. "drehen(4,1)".
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.12.2014, 23:29 (Dieser Beitrag wurde zuletzt bearbeitet: 05.12.2014 23:30 von Plexxart.)
Beitrag #12
RE: Motorantrieb für Follow Focus
(05.12.2014 23:10)Thorsten Pferdekämper schrieb:  Hi,
dann versuch "drehen(-4,1)" bzw. "drehen(4,1)".
Gruß,
Thorsten
Servus

Das wars ..........ich habe jetzt den Code soweit verändert, daß sich bei einer Umdrehung des Encoders auch der Motor um eine Umdrehung bewegt.
Hier zur Archivierung der gesamte Code:

Code:
#include <Encoder.h>


int pinE2 = 2;
int pinE3 = 3;

Encoder myEnc(pinE2, pinE3);

int pinDir = 8;
int pinStep = 9;

void setup()
{
pinMode(pinDir, OUTPUT);
pinMode(pinStep, OUTPUT);
}
void loop()
{
//den Wert einlesen
int encoderWert = myEnc.read();
//grösser 0
if(encoderWert > 0)
{
   //Motor drehen, Grösse der Schritte und Tempofrei wählbar
   drehen(-60,1);
}
//kleiner 0
else if(encoderWert < 0)
{
   //Motor drehen, Grösse der Schritte und Tempofrei wählbar
   drehen(60,1);
}
   delay(5);
   //Wert des Encoders wieder auf 0 stellen
   myEnc.write(0);
   delay(5);

}
//Drehfunktion für Schrittmotor
void drehen(int schritte, int tempo)
{

  
   if(schritte > 0)
   digitalWrite(pinDir,HIGH);
   else
   digitalWrite(pinDir,LOW);
  
   schritte = abs(schritte);
  
   for(int i=0; i < schritte; i++)
   {
     digitalWrite(pinStep, HIGH);
     delay(tempo);
     digitalWrite(pinStep, LOW);
     delay(tempo);
   }
}

Danke dir Thorsten für die späte aber wirkungsvolle Hilfe. Eine Danke Smilie wäre hier nicht schlecht; macht nichts dann nehme ich halt aus meinem Forum eines. [Bild: dankeschoen.gif]

Gruß Walter
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2014, 10:29
Beitrag #13
RE: Motorantrieb für Follow Focus
Servus Allemiteinand

Also weil der Thorsten es ganz gerne hat, wenn man ein Video eines erfolgreichen Themas postet, habe ich ein Video auf Youtube rauf geladen und auch dort gleich ein bisschen Werbung in einem Kommentar von mir für euch gemacht Smile





Ich bin fürs Erste mal zufrieden, was mich allerdings noch etwas stört, ist die träge und ungenaue Steuerung.
Wobei ich aber annehme, daß dies mit dem Billigprodukt des Encoders zusammen hängt.
Auch wird, wenn man das Encoderrad schneller dreht, einfach Schritte verschluckt. (Sieht man im Video ganz gut)
Ideal wärs halt wenn der Motor alle Schritte abarbeitet und zwar auch jene die in der Sekunde nicht nicht bearbeitet werden können. Praktisch wäre das dann so, daß der Motor dann genau auf die Position hinfährt, welche ich auch mit dem Encoder eingestellt habe, egal wie schnell oder langsam ich den Encoderstift drehe.

Ich hoffe daß ich mich verständlich ausgedrückt habe.

Gruß
Walter
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2014, 11:24
Beitrag #14
RE: Motorantrieb für Follow Focus
(06.12.2014 10:29)Plexxart schrieb:  Also weil der Thorsten es ganz gerne hat, wenn man ein Video eines erfolgreichen Themas postet, habe ich ein Video auf Youtube rauf geladen
Danke :-)

Zitat:Ich bin fürs Erste mal zufrieden, was mich allerdings noch etwas stört, ist die träge und ungenaue Steuerung.
Mal sehen...

Zitat:Wobei ich aber annehme, daß dies mit dem Billigprodukt des Encoders zusammen hängt.
Ich weiß nicht, ob es da viel bessere gibt, zumindest wohl nicht in der Größe. Das "Problem" dürfte sein, dass der Encoder nur 24 Schritte pro Umdrehung hat, aber der Motor 200. (Wobei mich dann die 60 in Deinem Sketch etwas wundern...)

Zitat:Auch wird, wenn man das Encoderrad schneller dreht, einfach Schritte verschluckt. (Sieht man im Video ganz gut)
Das könnte am Sketch liegen.

Zitat:Ideal wärs halt wenn der Motor alle Schritte abarbeitet und zwar auch jene die in der Sekunde nicht nicht bearbeitet werden können. Praktisch wäre das dann so, daß der Motor dann genau auf die Position hinfährt, welche ich auch mit dem Encoder eingestellt habe, egal wie schnell oder langsam ich den Encoderstift drehe.
Ich denke zwar nicht, dass das eine Sekunde dauern sollte. Es sind eigentlich 2 Millisekunden. Allerdings könnte hier das Problem sein, dass der Motor mehr als 2 Millisekunden braucht, um einen Step zu machen. ...ah jetzt ja. Jetzt machen auch die 60 Sinn. Eigentlich müsste es ja ungefähr 8 sein. D.h. das Ding macht in etwa 120ms 8 Schritte, also 15ms pro Schritt.
Außerdem gehen momentan Schritte verloren, das liegt daran, dass Du wahrscheinlich schneller am Encoder drehst als der Sketch das umsetzen kann. Das liegt wiederum daran, dass der Sketch einfach ignoriert, wie viele Klicks seit der letzten Abfrage vorkamen.
...dann versuchen ich jetzt mal, das Coding entsprechend zu verändern:

Code:
#include <Encoder.h>


int pinE2 = 2;
int pinE3 = 3;

Encoder myEnc(pinE2, pinE3);

int pinDir = 8;
int pinStep = 9;

void setup()
{
pinMode(pinDir, OUTPUT);
pinMode(pinStep, OUTPUT);
}

void loop()
{
//den Wert einlesen
int encoderWert = myEnc.read();
//Wert des Encoders wieder auf 0 stellen
// Thorsten: Hierher verschoben, damit auch Drehungen
//                richtig mitgenommen werden waehrend der
//                Motor neu positioniert
   myEnc.write(0);

// Thorsten: Die groesser/kleiner 0 Abfrage brauchen wir nicht mehr
  //Motor drehen, Grösse der Schritte und Tempofrei wählbar
// Thorsten:
// Das naechste bedeutet "8 Motor-Steps pro Encoder-Step"
// ...und ein Motor-Step dauert 20ms (10ms jeweils fuer LOW und HIGH)
    drehen(encoderWert * 8, 10 );
  }


//Drehfunktion für Schrittmotor
void drehen(int schritte, int tempo)
{

  
    if(schritte > 0)
    digitalWrite(pinDir,HIGH);
    else
    digitalWrite(pinDir,LOW);
    
    schritte = abs(schritte);
    
    for(int i=0; i < schritte; i++)
    {
      digitalWrite(pinStep, HIGH);
      delay(tempo);
      digitalWrite(pinStep, LOW);
      delay(tempo);
    }
}

Meiner Meinung nach müsste das so sein, wie Du es Dir vorstellst. Allerdings hast Du damit nur eine Genauigkeit von 15°. D.h. jeder einzelne Step am Endocer dreht den Motor um 14,4° weiter. (Soweit ich das verstehe.) Wenn Du das verbessern willst, dann musst Du z.B. statt "encoderWert * 8" z.B. "encoderWert * 4" hinschreiben. Dann bedeutet ein Klick 7,2°. Dann musst Du den Encoder zweimal drehen, um eine Drehung am Motor hinzubekommen.
...oder Du kaufst Dir einen Encoder, der 200 Steps pro Umdrehung macht.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2014, 11:58
Beitrag #15
RE: Motorantrieb für Follow Focus
Servus Torsten
Danke dir für die samstägliche Mitarbeit !

Ich habe jetzt den Code auf folgende Parameter geändert und es dieser erscheint mir noch am Besten:

Zitat:"drehen(encoderWert * 8, 1 );

Allerdings verschluckt er sich hier auch noch manchmal und dann macht der Motor ein paar Gratisrunden Confused

Das dürfte doch eigentlich nicht sein, oder ? Und kann ich die Reaktionszeit der Software noch erhöhen oder soll ich mir gleich einen anderen Encoder kaufen ?

Gruß
Walter
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2014, 12:05
Beitrag #16
RE: Motorantrieb für Follow Focus
Hi,
"drehen(encoderWert * 8, 1 )"
Die "1" am Ende gibt dem Motor nur 2ms Zeit für einen Step. Das ist wahrscheinlich zu wenig. Ich denke mal, dass das mindestens eine 8 sein sollte, also "drehen(encoderWert * 8, 8 )".
Der Motor macht wirklich ein paar komplette Umdrehungen? Das dürfte eigentlich nur passieren, wenn Du auch am Encoder ein paar Umdrehungen gemacht hast. Beim derzeitigen Coding macht der Motor das halt nach, wenn auch verspätet.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste