Zum Inhalt springen

DIY Cinegraph


ruessel

Empfohlene Beiträge

Wie Friedemann schon angedeutet hat, sind Netzspannungs-LED-Lampen nicht generell dimmbar. Wenn auf der Verpackung nichts von einer Dimm-Fähigkeit steht, geht das nicht. Und auf 10% der Nennleistung dimmen geht sowieso nicht. Das Ergebnis ist meist,  das was flackert und die Ansteuerelektronik gut warm bis heiß wird.

 

Da sind LEDs, die mit Konstantstrom betrieben werden, also solche, die quasi als "nacktes Bauelement" verkauft werden, klar im Vorteil. Die liefern ein zum durchfließenden Strom fast proportionales Licht. Bei nahezu konstanter Farbtemperatur.

 

Ich bin gespannt auf Deinen Bericht!

 

Ulrich

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe natürlich vorher geschaut, ja, diese Vollspektrum LED ist dimmbar. Wahrscheinlich stimmt der Farbwert nicht mehr, aber als Einstelllicht - man muss nur den Bildstrich justieren können - brauchbar. Ich habe hier so einen Tischdimmer liegen, LED gerade angeschlossen und ja, funktioniert. Geht so dunkel das ich in das Licht blicken kann ohne nachher eine halbe Stunde bunte Punkte sehen zu müssen. ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Musste eben nochmal mit dem Stepper spielen. Wenn ich an den Steppermotorparametern noch etwas bastel, komme ich auf gefühlte 24B/sec. Jedenfalls wurde ein Probe-Super-8- Film sauber eingezogen und kam auch entspannt auf dem anderen Zahnrad heraus...... ich hatte vermutet, dass durch den fehlenden Greifer evtl. der Film stockt. Man muss ja auch mal etwas Glück haben. Ich denke das Projekt hat schon einen großen Sprung gemacht.

Mir fehlen nun die Wickelarme, die 360 Grad Servos kann ich nun vergessen, die Servo Platine benutze ich nicht mehr. Auf dem CNC Shield sind nun noch 2 Ausgänge frei, genau richtig. Ich habe noch weitere Nema 17 Stepper geordert. Auf diesen Stepper kommt eine noch zu konstruierende Rutschkupplung, so dass wenn der Filmstepper 10 Schritte macht, der Wickelteller 1 Schritt macht (Projektorgetriebe 1:10 ist da ja noch eingebaut). Alles wird gut!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Code bis jetzt:
 

#define EN        8       // stepper motor enable, low level effective
#define X_DIR     5       //X axis, stepper motor direction control
#define Y_DIR     6       //y axis, stepper motor direction control
#define Z_DIR     7       //z axis, stepper motor direction control
#define X_STP     2       //Filmantrieb, stepper motor control
#define Y_STP     3       //Aufwickelteller, stepper motor control
#define Z_STP     4       //Abwickelteller, stepper motor control
#define schrittweite_s8 500
/*
// Function: step   -control the direction and number of steps of the stepper motor
// Parameter: dir  -direction control, dirPin corresponds to DIR pin, stepperPin corresponds to


step pin, steps is the number of steps.
// no return value
*/
void step(boolean dir, byte dirPin, byte stepperPin, int steps)
{
  digitalWrite(dirPin, dir);
  delay(5);
  for (int i = 0; i < steps; i++) {
    digitalWrite(stepperPin, HIGH);
    delayMicroseconds(600);  
    digitalWrite(stepperPin, LOW);
    delayMicroseconds(600);  
  }
}
void setup(){// set the IO pins for the stepper motors as output
  pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);
  pinMode(Y_DIR, OUTPUT); pinMode(Y_STP, OUTPUT);
  pinMode(Z_DIR, OUTPUT); pinMode(Z_STP, OUTPUT);
  pinMode(EN, OUTPUT);
  digitalWrite(EN, LOW);
}
void loop(){
  step(false, X_DIR, X_STP, schrittweite_s8); // filmmotor rotates S8 Frame
  step(false, Y_DIR, Y_STP, 50); // Aufwickelmotor rotates CCW for 1 circle, as in 200 steps
  step(false, Z_DIR, Z_STP, 50); // Abwickelmotor rotates CCW for 1 circle, as in 200 steps
  delay(1);
 
}

delayMicroseconds(600); ist ein Kompromiß. Unter 500 stockt der Stepper und pfeift nur noch, höhere Werte machen die max. Drehzahl langsamer.

Link zu diesem Kommentar
Auf anderen Seiten teilen

In den nächsten Tagen (man muss ja auch noch andere Sachen erledigen) geht es dann an das Programmieren. Da noch weitere Schaltungen und Sensoren dazu kommen, wechsel ich vom Arduino Uno zum Mega, hier sollten trotz aufsitzenden CNC Shield dann noch Ein- u. Ausgänge frei sein. Hoffentlich ist das zu 100% kompatibel?

 

Angedachte Funktionen des ultimativen DIY Cinegraphen (Schalter/Taster ist 3,5 ZollTouchscreen):

 

1. Schalter Licht: An/Einrichten/Aus //2 Relais müssen verzögert einschalten damit Dimmer nicht beschädigt wird

 

2. Ein/Ausspultaster // wenn gedrückt, laufen Zahnräder volle Geschwindigkeit (zum Film Einspulen) und auch Rückläufig zum Ausspulen. Auch Wickelteller bewegen.

 

3. Taster für Bildstrich // Zahnräder + Wickelteller drehen nur einen Zentel Millimeter Film. Richtung auf Wunsch.

 

4. Umspulschalter // Beide Richtungen um Filmrollen max. Geschwindigkeit umzuspulen. Geht nur wenn Film nicht im Gate einliegt (Filmsensor).

 

5. Aufnahmeschalter // Licht zwangsweise 100% an, Schrittweite Framehöhe, Kameraauslöser Relais. Stoppschalter, Auto-Stopp bei Filmende via Filmsensor.

 

6. Filmformatschalter // Super 8, Normal 8 - Stepperschrittweite

 

7. Framezähler // zeigt aktuellen Stand an, zeigt totale Nutzung der Maschine an (EEPROM ??)

 

8. Lampenbrenndauer Total in Stunden (EEPROM??)

 

9. Anzeigen aller Variablen im Servicemodus um schnell Fehler bei Störungen zu finden.

 

10. Gehäuse möglichst einen Kamerakoffer benutzen. Staub und Wasserdicht, leicht auch zu verschicken/verleihen.

 

Etwas vergessen?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auf der CNC Platine habe ich gerade die Endschalter getestet. Prima, damit läßt sich sehr einfach ein Not-Aus für alle Motoren realisieren  (bei evtl. Filmsalat). Der Notaus greift direkt auf die Steppertreiber ein und nicht auf den Arduino, der bemerkt gar nicht den Schalter. Den Arduino habe ich nun gegen den leistungsfähigen Mega getauscht, damit mehr Ein/Ausgänge und völlig Pin kompatibel.... Programm läuft ohne Änderungen, auch hier dreht der Stepper perfekt. Heute geht es an die Bildschirmprogrammierung und die Variablenübergabe an den Arduino.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auf was habe ich mich da eingelassen?

Im Moment steht das Display im Vordergrund. Die mitgelieferten Button/Schalter sehen natürlich nicht besonders hübsch aus, also müssen sie selber gemalt werden - das ist nun abgeschlossen. Schalterzustände an den Arduino zu senden scheint nicht das Problem zu sein, ein Problem ist der andere Weg. Um vom Arduino z.B. den Framezählstand an das Display zu senden, ist bei einer Displayseite noch irgendwie machbar. Besitzt das Display aber 2 Menüseiten wird es kniffelig. Der Arduino sendet den Zählstand, das Display aber steht auf einer anderen Seite wo gar kein Zählstand angezeigt wird - es kommt zum crash! Ich habe eine Lösung im Netz dazu gefunden, ich verstehe sie nicht und es ist ein ellenlanger Auffangcode der den Zählerstand dann in das Nirvana verschwinden lässt - vorher wird kompliziert abgefragt auf welcher Seite das Display eigentlich steht.

 

Meine Lösung mit meiner Unkenntnis: Nur eine Menüseite!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gut gemeint, aber mit dem Display muss ich nun durch, ich benötige die Variablennamen der Schalter, erst dann kann ich die ganzen "if" Schleifen aufbauen. Jeder Schalter eine eigene Abfrage....

Verschätzt habe ich mich noch mit der Displaygröße von 3.5 zoll...... das ist kleiner als ich Gedacht habe, habe schon die Schalter auf das nötigste gekürzt, komme immer noch auf 11 Schalter einen Slider und zwei Textfelder. Bei 3,5 Zoll sind 6 Schalter wohl das optimale - bei Fingerbetrieb. jetzt wird es echt eng auf dem Bildschirm und mein Kodachrome Design ist fast für die Katz. Das nächste mal lieber 5 Zoll oder gleich 7 Zoll.

 

Soeben sind auch die Tellermotoren gekommen. Da kann ich gleich die Aufwicklung mit im Code unterbringen. Ich laß die Motoren immer nur ein Stück laufen, im Verhältnis zum Filmtransportmotor. Den Rest müssen Rutschkupplungen übernehmen. Ich hatte vor, die Kupplungen selber zu printen, habe nun fertige Kupplungen gefunden und bestellt: Mentor Sicherheitskupplung 516, feinfühlig einstellbar (über Federspannung) bis 30Ncm. Ich denke, sollten für 240 Meter Spulen ausreichen.

 

8865209778206.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

gestern abend, habe ich noch die Wickelmotoren angeschlossen und mit dem oberen Skript getestet.

 

void loop(){
  step(false, X_DIR, X_STP, schrittweite_s8); // filmmotor rotates S8 Frame
  step(false, Y_DIR, Y_STP, 50); // Aufwickelmotor rotates CCW for 1 circle, as in 200 steps
  step(false, Z_DIR, Z_STP, 50); // Abwickelmotor rotates CCW for 1 circle, as in 200 steps

 

Der obere "void loop" Teil, läßt die drei Stepper laufen, soweit so gut.

Was ich nicht bedacht habe, der Arduino arbeitet Zeile für Zeile ab, sprich: erst dreht der erste Motor bis er seine Umdrehungen abgearbeitet hat, dann der zweite und so weiter. Niemals drehen 2 oder 3 Motoren gleichzeitig, was natürlich beim Einfädeln vom Film unbedingte Pflicht ist! Ansonsten gibt es Filmsalat.

Auch wäre eine Stopptaste sinnlos, lautet der Befehl bei einem Motor endlos drehen, dreht er endlos und nimmt keine Befehle mehr an, bis die Bedingung endlos erfüllt ist - also nie.

 

Ja, über eine Stepper Bibliothek wäre es möglich mehrere Stepper GLEICHZEITIG laufen zu lassen, nur dumm, funktioniert nicht mit dem CNC Shield und seinen Treibern. Zumindest habe ich kein Skript dazu gefunden was auch nur im Ansatz funzt.

Nach drei Stunden habe ich eine unelegante Lösung gefunden. Das Skript oben bleibt wie es ist, die Motoren aber machen abwechselt nur wenige Stepps, das in schneller Wiederholung fühlt sich bei nur 2 Motoren gleichzeitig an, obwohl sie auch nur hintereinander laufen - nur mit wenigen Millisekunden Verzögerung. Für den Film bedeutet das, das ca. 1/10 Frame abgespult wird und erst dann 1/10 Frame aufgerollt wird. Das dürfte zu keinen Stau in der Filmbahn führen. Je nach Schalter der gedrückt wird, muss eine jeweils unterschiedlich große Schleife diese Mikroschritte ausführen. Ich hoffe eine Schleife kann irgendwie unterbrochen werden, wenn der Stopp Button gedrückt wird.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Tip von Friedemann zu (Finite-)State-Machine ist hier das richtige. Damit zusammen hängt die Ablaufsteuerung mit milis() beim Arduino. Ohne die sind umfangreichere Projekte beim Arduino praktisch zum Scheitern verurteilt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe zwar ziemlich lange nichts mehr hinsichtlich C und Programmierung gemacht,  aber eine Loop-Schleife müsste mit  loop...... until Pin 10 == 0 zum Beispiel abgebrochen werden können.  Oder mit der do ... while Schleife machen , z.B.  do (Befehlsfolge) while Pin 10 == 1  (Solange Taster 10 nicht gedrückt, wird die Schleife ausgeführt).   Wenn Pin 10 auf 0 dann Schleifenabbruch und/oder  halt mit Interrupt, glaube mit millis() bei Arduino.

 

Ach so, ich sehe grad, Theseus hat schon geantwortet.

Bearbeitet von Carena48 (Änderungen anzeigen)
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich werde darüber nachdenken, im Moment muß ich die Spulenarme bauen. Zum testen mit echten Film sollte das Aufspulen schon funktionieren, wäre ja auch ein Teil der Schleife. Zur Vorsicht, habe ich den Strom recht früh an den Stepper begrenzt, viel Kraft wird zum Glück nicht benötigt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jedwede blockende Routine ist für solche Anwendungen Mist. Such Dir unbedingt eine nicht-blockende Bibliothek — oder mach es mit Timern und Interrupts selbst. Wenn du auf Tastendrücke immer reagieren willst und auch mal zwei Motoren gleichzeitig steuern, darf in Deinem Code nirgendwo ein delay() oder eine andere blockende Funktion vorkommen. Du musst rigoros ohne die auskommen. 

Bearbeitet von F. Wachsmuth (Änderungen anzeigen)
Link zu diesem Kommentar
Auf anderen Seiten teilen

9 hours ago, Carena48 said:

müsste mit  loop...... until Pin 10 == 0 zum Beispiel abgebrochen werden

 

Der Hinweis macht hier keinen Sinn - ein Arduino loopt immer. Das ist quasi die main(). 

Das Problem ist auch nicht das Verlassen einer Schleife, sondern der blockende Code. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wolfgang - das ist das spannende am Programmieren lernen. Echtzeit und parallele Ausführung. Es gibt meistens viele verschiedene Wege zum Ziel.

 

 

Hast Du mal bezüglich der Wickelmotoren mal über schlichte Ausgleichsschleifen nachgedacht?

 

- Carsten

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 18.5.2019 um 13:36 schrieb ruessel:

Mentor Sicherheitskupplung 516, feinfühlig einstellbar

 

8865209778206.png

 

 

Ich kenne diese Kupplung, da ich sie in einem Projekt mal verwendet habe. Sie trägt aber die Artikelnummer 716. Eingestellt wird sie mit einem speziellen Pin-Gabelschlüssel. Ausgeliefert wird sie mit der höchsten Kraft vorgespannt. Mit einem Zirkel mal eben drehen wird nix. Und die Löcher haben höchstens 1,5 Millimeter Durchmesser. Ohne Einstellwerkzeug wird das eine ziemliche Quälerei. Die Kupplung hat auch ein deutliches Losbrechmoment, bevor sie wirklich rutscht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zitat

Such Dir unbedingt eine nicht-blockende Bibliothek — oder mach es mit Timern und Interrupts selbst.

Ihr macht mir das nicht leicht. Ich bin so ein Typ, wenn es läuft, läuft es.... ich probiere mal den einfachen weg. Ich habe zu wenig Ahnung, wenn ich Bibliotheken selber schreiben kann, dann schreiben wir das Jahr 2030.
 

Zitat


Die Kupplung hat auch ein deutliches Losbrechmoment, bevor sie wirklich rutscht.

 

Klingt auch nicht gut. Zur Not doch selber drucken....

 

Inzwischen habe ich akzeptable Werte gefunden, der Filmmotor muss nur immer Strecken fahren, die durch 15 Teilbar sind (1:15 der Wickelmotor). Kommen Brüche raus, dreht der Wickelmotor gar nicht, ist auch irgendwie klar, 5.35 Stepps gibt es nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich besorge mir heute eine Sperrholzplatte und baue alle drei Motoren auf, ich benötige nun ein realistisches Testgerät. Dazu muss ich nun Motorhalterungen drucken, melde mich wieder, wenn was dreht und wickelt ?

Oder ich unbedingt Hilfe beim Code brauche, ich fummel aber erst mal alleine - sonst lerne ich nix.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...

Filmvorführer.de mit Werbung, externen Inhalten und Cookies nutzen

  I accept

Filmvorfuehrer.de, die Forenmitglieder und Partner nutzen eingebettete Skripte und Cookies, um die Seite optimal zu gestalten und fortlaufend zu verbessern, sowie zur Ausspielung von externen Inhalten (z.B. youtube, Vimeo, Twitter,..) und Anzeigen.

Die Verarbeitungszwecke im Einzelnen sind:

  • Informationen auf einem Gerät speichern und/oder abrufen
  • Datenübermittlung an Partner, auch n Länder ausserhalb der EU (Drittstaatentransfer)
  • Personalisierte Anzeigen und Inhalte, Anzeigen- und Inhaltsmessungen, Erkenntnisse über Zielgruppen und Produktentwicklungen
Durch das Klicken des „Zustimmen“-Buttons stimmen Sie der Verarbeitung der auf Ihrem Gerät bzw. Ihrer Endeinrichtung gespeicherten Daten wie z.B. persönlichen Identifikatoren oder IP-Adressen für diese Verarbeitungszwecke gem. § 25 Abs. 1 TTDSG sowie Art. 6 Abs. 1 lit. a DSGVO zu. Darüber hinaus willigen Sie gem. Art. 49 Abs. 1 DSGVO ein, dass auch Anbieter in den USA Ihre Daten verarbeiten. In diesem Fall ist es möglich, dass die übermittelten Daten durch lokale Behörden verarbeitet werden. Weiterführende Details finden Sie in unserer  Datenschutzerklärung, die am Ende jeder Seite verlinkt sind. Die Zustimmung kann jederzeit durch Löschen des entsprechenden Cookies widerrufen werden.