From a8e6e5c9010e474d61a791bff3e135b1ed62bb22 Mon Sep 17 00:00:00 2001 From: mattmcw Date: Sun, 4 May 2025 07:22:54 -0400 Subject: [PATCH] Updated body and whitepaper pdf --- docs/whitepaper/body.html | 8 ++++---- .../whitepaper/contact_printer_whitepaper.pdf | Bin 1206019 -> 1206354 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/whitepaper/body.html b/docs/whitepaper/body.html index 256754a..ba38791 100644 --- a/docs/whitepaper/body.html +++ b/docs/whitepaper/body.html @@ -99,13 +99,13 @@

It would be possible to increase the rigidity, if needed, by adding additional intermediary crossing lengths but for this prototype a total of six (6) lengths connected by five (5) panels and eight (8) corner brackets has been sturdy enough for all tests.

The Firmware

-

The Arduino platform uses a subset of C++ which has the benefits of being approachable and easy to use while at the same time preserving the functionalities of the full C++ language for when they are needed. The project is built with an object-oriented programming style that allows for abstraction over the functionality of the physical hardware and other features at the class level. This approach serves the project’s larger goal to leverage modularity by making use of pre-existing classes and creating reusable ones for other projects.

-

The firmware can be compiled and uploaded using the Arduino IDE18 or the arduino-cli19 application using the “esp32:esp32:esp32” FBQN (Fully Qualified Board Name). The code can be compiled without the ESP32 Arduino libraries and just the standard AVR libraries but the GPIO usage and LED PWM channel usage is such that it would have to be refactored to work on another board. Had this project targeted a different Arduino board from the start there would be limitations in the PWM duty rates of the motors and the ability to add network features.

+

The Arduino platform uses a subset of C++ which has the benefits of being approachable and easy to use while at the same time preserving the capabilities of the full C++ language for when they are needed. The project is built with an object-oriented programming style that allows for abstraction over the functionality of the physical hardware and other features at the class level. This approach serves the project’s larger goal to leverage modularity by making use of pre-existing classes and creating reusable ones for other projects.

+

The firmware can be compiled and uploaded using the Arduino IDE18 or the arduino-cli19 application using the “esp32:esp32:esp32” FBQN (Fully Qualified Board Name). The code can be compiled without the ESP32 Arduino libraries and just the standard AVR libraries but the GPIO usage and LED PWM channel usage is such that it would have to be refactored to work on another board. Had this project targeted a different Arduino board from the start there would be limitations in the PWM duty rates of the motors and the future ability to add network connectivity.

Functionality is abstracted into three classes: the high-level “ContactPrinter” class which then imports the “DriveMotor” and “Lamp” classes. There is a stub for the HTTP networking features named “WebGUI” which does not do anything but host a placeholder page at this time. The ContactPrinter class manages the take-up motors directly but the DriveMotor class is broken out into its own abstraction because it is expected to stabilize and manage the speed of the drive motor more accurately with feedback from the drive motors encoder and also keeps track of the number of frames passed using the same encoder data. The Lamp class, at this time, simply turns the contact printer lamp on or off using a method.

The initial release of the firmware simply starts the printer when a button is pressed, turns the lamp on after 24 frames pass and stops it when that same button is pressed. Additional features, to be discussed in future work, can allow for the adjustment of several behaviors; changing the number of frames that pass before the lamp is struck, running only for a set number of frames, reducing the speed of the printer, etc.

Future Work

Interfaces

-

Physical interfaces are another area of future expansion and development. Requests have been made, for example, to add a dial for controlling lamp brightness. This was avoided in the prototyping phase because it would add parts to the bill of materials and create additional potential points of failure in the wiring.

+

Expanding physical interfaces beyond the simple start/stop button from the initial design phase is one direction to improve the project in future work. Requests have been made, for example, to add a dial for controlling lamp brightness. This was avoided in the prototyping phase because it would add parts to the bill of materials and create additional potential points of failure in the wiring. Any added physical interface will increase build complexity so they should be motivated by actual difficulties that artists face while using the printer.

A simple but robust web interface could be added to control variables for each print: drive motor speed, number of frames to print before stopping, number of frames to run before striking lamp and others. It could also easily show statistics on each print such as actual speed, variation over a run and other information which would highlight any particular issues. With the ESP32 platform the printer could be set up as a standalone Wifi access point (like a router) so that devices can connect to it like clients and allow the web app to be accessed from the connected device. It could also be set up as a Wifi client and exist on a local network and be connected to by any other device on the network with access to it.

Bluetooth is another option as the ESP32 board has dual radios for both Wifi and BLE. This could control the same variables as a web app could but be connected to by a native mobile application or a web app on a browser that supports the Web Bluetooth API.20 There is no reason that both web and BLE features cannot be developed in parallel to have matching APIs to allow the greatest number of clients to connect, the only consideration that should be made is that these features not impact performance-heavy actions such as printing. Introducing delay into, for example, the PID calculations could cause speed fluctuations that would result in uneven exposures on prints.

Sound

@@ -117,7 +117,7 @@

Multi-format

There is nothing, in principle, in this contact printer platform design that would prevent it from being adapted for other movie film formats and there is precedent. The Kinograph DIY scanner project22 presents an example of a 3D-printed multi-format sprocketed roller capable of transporting 16mm, 8mm and 35mm gauge film material. This is a possibility to consider, though it would introduce new design challenges.

First would be the need to create new lamps and gates for each format. The take-ups would have to have their spindles extended to support 35mm cores and the idle rollers would have to be enlarged for the same Next would be the question of speed and the resulting exposure. Could the drive motor be slowed or sped up to allow for these formats to print properly?

-

There is also the question of need: is it necessary to create an 8mm gauge printer at all? 8mm gauge print stock is rare if non-existent though there is, in theory, the capability to slit and re-perforate the stock as is done for the Double 8 and Super 8 formats.

+

There is also the question of need: is it necessary to create an 8mm gauge printer at all? 8mm gauge print stock is rare if non-existent though there is, in theory, the capability to slit and re-perforate the stock as is done for the Double 8 and Super 8 formats. Making the printer capable of printing the gauge could, however, enable more work in this area and motivate filmmakers to seek out print stocks or suitable processes for these projection formats.

Research Supporters

References

diff --git a/docs/whitepaper/contact_printer_whitepaper.pdf b/docs/whitepaper/contact_printer_whitepaper.pdf index 590f130633f6fd5c33640f92c51ef7d506f05f4f..35b4746584c840666f9966d80b89cd912ca8d39a 100644 GIT binary patch delta 16327 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 JaRmvO{{vcGI4%GH delta 15992 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