Inhaltsverzeichnis:

Arduino Controller für automatisierte 360° Produktfotografie - Gunook
Arduino Controller für automatisierte 360° Produktfotografie - Gunook

Video: Arduino Controller für automatisierte 360° Produktfotografie - Gunook

Video: Arduino Controller für automatisierte 360° Produktfotografie - Gunook
Video: Hühnerklappe bequem mit Smartphone vom Wohnzimmer fernbedienen - mittels Shelly Plus 1PM. 2024, November
Anonim
Image
Image
Teile und Dateien sammeln
Teile und Dateien sammeln

Lassen Sie uns einen Arduino-basierten Controller bauen, der einen Schrittmotor und einen Kameraverschluss steuert. Zusammen mit einem schrittmotorgetriebenen Drehtisch ist dies ein leistungsstarkes und kostengünstiges System für die automatisierte 360° Produktfotografie oder Photogrammetrie. Der automatische Kameraverschluss basiert auf einer großartigen Bibliothek von „Sebastian Setz“und funktioniert für Infrarotkameras von Nikon, Canon, Minolta, Olympus, Pentax, Sony.

Ich habe zwei Versionen des Controllers vorbereitet:

  • Eine Basisversion, die mit einem einfachen Taster und einer Status-LED bedient wird.
  • Eine erweiterte Version, die ein 16x2 LCD + Tastaturschild verwendet und somit ein Menü hat, um die Variablen „on the fly“und nicht nur im Quellcode zu ändern.

Was macht der Controller?

Wenn Sie per Knopfdruck ein „Fotoshooting“auslösen, führt der Drehteller eine volle Umdrehung aus, aufgeteilt in eine vordefinierte Anzahl von Schritten. Nach jedem Drehschritt macht der Controller eine kurze Pause und löst dann die Kamera aus. Sie können die Variablen der Rotationsgeschwindigkeit, der Verzögerungszeit und der Anzahl der Schritte im Quellcode (für einfache Controller-Version) oder im Anzeigemenü (erweiterte Controller-Version) ändern.

Schritt 1: Teile und Dateien sammeln

Teile und Dateien sammeln
Teile und Dateien sammeln
Teile und Dateien sammeln
Teile und Dateien sammeln

Teile:

  • Arduino Uno (oder ähnlich)
  • Steckbrett (halbes Steckbrett passt)
  • Easydriver Schrittmotortreiber
  • 2X Kühlkörper für Easydriver (optional, aber DRINGEND empfohlen) https://www.sparkfun.com/products/11510Sie benötigen Wärmeleitband, um den Kühlkörper auf dem Chip zu befestigen. Achten Sie bei der Bestellung Ihres Kühlkörpers darauf, dass ein Thermoband mitgeliefert wird oder separat bestellt werden kann.
  • Infrarot-LED 950nm (für IR-Kamera-Trigger)
  • Widerstand 220 Ohm (Vorwiderstände für Infrarot-LED)
  • Piezo-Soundelement (optional, wenn Sie Feedback-Sounds haben möchten)
  • Einige Überbrückungsdrähte
  • Externes Netzteil für Schrittmotor Gute Erfahrungen habe ich mit einem 12V 1A Netzteil zum Antrieb eines 1A NEMA 17 Schrittmotors von Trinamic gemacht. Ich hatte auch ein 24V 3A Netzteil im Einsatz. Das Easydriver Board unterstützt bis zu 30V und 750mA pro Phase. Mehr zu den easydriver-Spezifikationen hier:
  • Buchse für externes Netzteil des Schrittmotors
  • Bipolarer NEMA 17 Schrittmotor und Plattenspieler z. B. die FluxGarage „Automated Turntable With Steppermotor“Link:

Für Basis-Taster-Controller hinzufügen …

  • Druckknopf
  • Widerstand 10k Ohm (für den Taster)
  • LED (Status-LED)
  • Widerstand 220 Ohm (Vorwiderstände für Status-LED)

… ODER für erweiterten Controller mit Display+Keypad-Menü hinzufügen:

Adafruit LCD Shield Kit mit 16x2 Zeichen Display, z. B

Laden Sie die Arduino-Codes und Fritzing-Diagramme für den grundlegenden und erweiterten Controller herunter:

Wenn Sie das Fritzing-Dokument für den Advanced Controller öffnen möchten, stellen Sie sicher, dass Sie die adafruit-Elemente herunterladen und installieren:

Bitte beachten: Auf den Bildern verwende ich die FluxGarage „Tinkerer's Baseplate“und die FluxGarage „Front Plate for 16x2 LCD + Keypad Shield“. Die Verwendung dieser Elemente ist optional, wenn Sie sie auch verwenden möchten, klicken Sie auf die Links für die entsprechenden Anleitungen.

Schritt 2: Schaltung zusammenbauen

Schaltung zusammenbauen
Schaltung zusammenbauen
Schaltung zusammenbauen
Schaltung zusammenbauen
Schaltung zusammenbauen
Schaltung zusammenbauen

Löten Sie die Easydriver-Platine für die Verwendung mit Steckbrettern: Um den Easydriver auf einem Steckbrett zu verwenden, müssen Sie einige Stiftleisten auf die Platine löten. Am besten steckt man die Stiftleisten in das Steckbrett, legt den Easydriver darauf und verlötet dann die Pins.

Verdrahten:Verdrahten Sie die Teile wie in der entsprechenden Fritzing-Grafik für den Basis- oder erweiterten Controller gezeigt. Laden Sie die Firtzing-Diagramme auf github herunter, finden Sie die Links in Schritt 1.

Überprüfen Sie, ob alles wie folgt verbunden ist:

  • Arduino digitaler Pin 02 = Dir-Pin von Easydriver
  • Arduino digitaler Pin 03 = Step-Pin von Easydriver
  • Arduino digitaler Pin 09 = Ausgang für Piezo
  • Arduino digitaler Pin 12 = Ausgang für Infrarot-LED (220 Ohm Vorwiderstand vor LED platzieren)

+ für Basiscontroller:

  • Arduino digitaler Pin 04 = Eingang für Taster (10k Ohm Widerstand vor Tastermasse platzieren)
  • Arduino digitaler Pin 13 = Ausgang für Status-LED (220 Ohm Vorwiderstand vor LED platzieren)

+ für Advanced Controller:

Stapeln Sie das Display + Tastaturschild auf das Arduino, tatsächlich werden diese Pins verwendet: Arduino analoger Pin A4 + A5 und 5V + GND

Schrittmotor anschließen: Beim Verdrahten von bipolaren Schrittmotoren (4 Drähte) werden die beiden Spulen (A und B) des Motors mit den rechten Pins der easydriver-Platine verbunden. Sehen Sie sich die Grafik in der Mitte dieser Seite und die Spezifikationen Ihres spezifischen Schrittmotors:

Weitere Informationen zur Verkabelung Ihres Schrittmotors und des Easydriver finden Sie auch hier:

Externes Netzteil anschließenDie Easydriver-Platine hat oben rechts zwei separate Stromanschlüsse (M+ und Masse). Während die Platine selbst Strom vom Arduino erhält, liefert der separate Eingang Strom für den Schrittmotor. Wenn Sie ein typisches „out of the box“Netzteil und eine Steckdose verwenden, verbinden Sie das „+“Kabel mit dem „M+“Pin des easydriver und das „-“Kabel mit dem „GND“Pin des easydrivers. Normalerweise befindet sich das „+“auf der Innenseite, das „-“auf der Außenseite des Steckers. Aber Vorsicht, bei manchen Netzteilen kann die Polarität umgeschaltet werden! Wenn Sie Ihren easydriver falsch verkabeln, kann und wird er wahrscheinlich beschädigt, denken Sie daran.

Schritt 3: Quellcode auf Arduino hochladen

Quellcode auf Arduino hochladen
Quellcode auf Arduino hochladen

Laden Sie den Arduino-Quellcode bei Github herunter:

Arduino-IDE herunterladen:

www.arduino.cc/en/Main/Software

Laden Sie die Bibliotheken von Drittanbietern herunter und kopieren Sie sie in den Bibliotheksordner Ihrer IDE:… für den Kameraverschluss: https://github.com/dharmapurikar/Arduino/tree/mast…… für das Adafruit 16x2 Display+Keypad Shield:https:// github.com/adafruit/Adafruit-RGB-LCD-Shiel…

Der Code wurde getestet und funktioniert einwandfrei mit der neuesten Arduino IDE (1.8.7 unter Windows) und Arduino Uno + Easydriver Stepper Motor Driver + Adafruit 16x2 Display+Keypad Shield, + einem Trinamic Schrittmotor und einer Nikon D60 Kamera.

Passen Sie den Code an Ihre spezifische Kamera an: Wie bereits erwähnt, habe ich die Bibliothek „multiCameraIrControl.h“von Sebastian Setz verwendet. Damit es für Ihre Kamera funktioniert, müssen Sie die Kommentar-Schrägstriche vor Ihrem Kameraherstellernamen löschen und natürlich Schrägstriche vor allen anderen Herstellernamen hinzufügen:

// Kameratyp einstellenNikon D5000(12);//Canon D5(12);//Minolta A900(12);//Olympus E5(12);//Pentax K7(12);//Sony A900(12);

Führen Sie die ähnliche Einstellung in der „Snap“-Funktion durch:

// Machen Sie einen Picturevoid-Snap(){D5000.shotNow();//D5.shotNow();//A900.shotNow();//E5.shotNow();//K7.shotNow();//A900.shotNow();}

Bitte beachten: Andere IR-getriggerte Kameras als meine eigene Nikon D60 konnte ich leider noch nicht testen. Die Kamera-Shutter-Bibliothek sollte mit mehreren Kameras der verschiedenen Hersteller funktionieren, nicht nur mit den spezifischen Kameramodellen, die im Code erwähnt werden. Es wäre toll, wenn Sie Ihre Erfahrungen mit Ihrer Canon-, Minolta-, Olympus-, Pentax- oder Sony-Kamera kommentieren würden.

Schritt 4: Bedienen Sie den Controller

Bedienen des Controllers
Bedienen des Controllers
Bedienen des Controllers
Bedienen des Controllers

Was macht der Code bzw. der Controller? Wenn Sie den Knopf drücken, wird ein „Fotoshooting“ausgelöst. Jedes Fotoshooting ist eine endliche Schleife der folgenden Sequenz:

  1. Kamera wird ausgelöst
  2. Kurze Verzögerung
  3. Schrittmotor dreht sich um einen vordefinierten Grad
  4. Kurze Verzögerung

Ein Fotoshooting basiert auf einer Reihe von Variablen, die sein genaues Verhalten bestimmen. Sie können diese Variablen im Quellcode (für einfache Controller-Version) oder im Anzeigemenü (erweiterte Controller-Version) ändern.

Bedienung der Grundsteuerung:

Am Basiscontroller zeigt die Status-LED an, wenn das System betriebsbereit ist. Die LED erlischt, wenn Sie eine Fotoaufnahme starten. Sie können ein Fotoshooting unterbrechen, indem Sie die Taste gedrückt halten, bis der „Unterbrechungston“erscheint und der Plattenspieler stoppt. Werfen Sie einen Blick auf das Video im oberen Abschnitt dieses instructable, um dies im "echten Leben" zu sehen.

Die Variablen des Fotoshootings befinden sich im oberen Abschnitt des Codes und können geändert werden, um das Fotoshooting zu ändern. Unten sehen Sie die Anfangswerte:

int Schussschritte = 20; // Anzahl der Schritte für eine volle Umdrehung, sollte 10, 20 oder 40float Schießgeschwindigkeit = 0,01 sein; // Rotationsgeschwindigkeit: beliebige Zahl von.01 -> 1 wobei 1 am schnellsten ist - Langsamer ist stärker (langsamer = besser für „schwere“Objekte)int Shootingdelay = 1000; // Pause in Millisekunden vor und nach jeder Umdrehung

Bedienung des erweiterten Controllers:

Beim Einschalten des erweiterten Controllers wird 4 Sekunden lang ein FluxGarage-Logosplash angezeigt. Danach ist der Controller betriebsbereit und zeigt eine Liste des einstellbaren Variablensatzes:

  • ST = Anzahl der Schritte, kann 10, 20 oder 40. betragen
  • SP = Rotationsgeschwindigkeit, kann 1-5 sein, wobei 1 am langsamsten ist
  • DE = Verzögerung vor und nach jedem Schritt in Zehntelsekunden, kann 5, 10, 25, 50. betragen
  • LI = Bestimmt, ob die Hintergrundbeleuchtung des Displays während der Aufnahme ein- oder ausgeschaltet ist. Kann 1 = ein oder 0 = aus sein

Sie können mit der linken und rechten Taste durch die Variablentypen navigieren und mit den Auf- und Ab-Tasten die Werte ändern. Starten Sie ein Fotoshooting durch Drücken der Auswahltaste und unterbrechen Sie eine Fotoaufnahme, indem Sie die Auswahltaste gedrückt halten, bis der „Unterbrechungston“erscheint. Werfen Sie einen Blick auf das Video im oberen Abschnitt dieses instructable, um dies im "echten Leben" zu sehen.

Schritt 5: Starten Sie die Aufnahme

Aufnahme starten
Aufnahme starten

Wenn Sie Ihren eigenen Controller + Plattenspieler gebaut haben und Ihre Kamera an Ort und Stelle ist, können Sie mit der Aufnahme beginnen … fast. Lassen Sie mich einige Erkenntnisse aus meinen eigenen Experimenten teilen:

  • Verwenden Sie ein Lichtzelt, um Ihre Objekte gleichmäßig auszuleuchten. Hier bei instructables.com finden Sie viele gute Tutorials, die zeigen, wie Sie eine DIY-Lightbox erstellen. Außerdem gibt es preiswerte textile Lichtzelte, die in vielen Online-Shops gekauft werden können.
  • Verwenden Sie Glühbirnen mit derselben Farbtemperatur (Kelvin)
  • Fokussieren Sie das Objekt manuell auf dem Drehteller, deaktivieren Sie den Autofokus Ihrer Kamera
  • Schalten Sie den Bildstabilisator Ihrer Kamera aus, wenn Sie mit einem Stativ arbeiten
  • Wählen Sie im Hintergrund einen Messbereich, in dem das Aufnahmeobjekt nicht erscheint. Dadurch vermeiden Sie Flimmern in Ihrer Bildsequenz. Eine andere Möglichkeit besteht darin, die Belichtungszeiten Ihrer Kamera usw. manuell einzustellen.
  • Wenn Sie Ihre 360-Bilder in Ihre Website einbinden möchten, verwenden Sie Javascript-Plugins wie „Jquery Reel Plugin“von Petr Vostřel alias „PISI“→ https://jquery.vostrel.cz/reel„360 Degrees Product Viewer“von „Codyhouse “→

Dies ist das Ergebnis eines meiner Shootings (erstellt mit der obigen Einstellung):

Empfohlen: