DIY Electric Projector Masking

unreel

Active Member
Just finishing off a project I've wanted to do for a long time an electric masking system for my home cinema. I went for the biggest 16:9 screen I could which is 106" its about 1 inch clear on either side of the walls of the room. As I have virtually no space to play with on either side of the screen I went with two roller blind motors for 2 way horizontal masking, and as I watch lots of Scifi / films with subtitles I wanted separate control of each mask.

Well 9 Months after ordering the bits to build the control circuit its finally up and running. I need to finish off the sewing on the blinds and tidy up, but overall I'm extremely happy how it turned out. It feels like I had projector upgrade !

A friend has coded and built the electronics. The control is via a webpage which I'm accessing via my tablet this runs on custom coded Raspberry pi which controls the relays for each of the motors Its infinitely customisable, top and bottom rollers are separately controlled and adjustable. I may get around to IR / App control at some point

The masks enable me to watch Hateful 8 which is the widest format film I've encountered with no grey bars. Getting rid of the black bars which appear in most films really does help draw you into the film, I nearly have full devore coverage now.

I'll let the video do the talking - Excuse the quality its rather dark in here !
There is final tweaking to do, but the project is 95% complete, feels like one of best upgrades I ever did.


Updated with Pictures now:-
 

Attachments

Last edited:

unreel

Active Member
A few shots of the build

I have a friend with an engineering company and he machined me up some brackets and bushes to allow the motors to fit and a spline inside the tube to allow the tube motors to spin the 40mm diameter alloy tubes. The tubes are cut to exactly fit to the width of the room.

The bottom mask is supported on either side by 550mm ball bearing drawer runners, I have an aluminium extrusion reinforced with wood for the bottom bar.

The bottom motor pulls down against tightly strung double bungy cord, so its under tension at the lowest setting and gradually pulls the mask up as the motor unwinds.

The top roller simply unwinds as a normal roller blind, I will be putting something in to guide it down nearer the screen.

The control box is a raspberry pi which drives some electronic wizardry and a bunch of relays to control the 240 volt motors.

Pictures below.
 

Attachments

Last edited:

unreel

Active Member
For any one interested here's a break down on the software and hardware controlling the masking.

Software:
* The electonics are run from a raspberry pi 3 built with Raspbian Jessie, which is running python2.7, mariadb and supervisor.
* There's a python flask app running on port 80 (unauthenticated because the port is locked down behind NAT on the internal router so security is not essential, I'm is aware of these considerations so will keep it safe)
* flask-sqlalchemy for mariadb connection (database used for storing programs; as well as relay lock flags to stop issues if concurrent users tried to trigger the rollers at the same time)
* supervisord controlling the flask app and ensuring it starts up. (Could have done a systemd unit but for the sake of simplicity if i needed to support Unreel over the phone etc. supervisord configs are easier.)

Electronics:
* The rpi GPIO pins connect to an 8channel relay board equivalent to
SainSmart 8 Channel DC 5V Relay Module for Arduino PIC ARM DSP AVR MSP430 TTL Logic 3D Printing, Arduino, Robotics | Sainsmart
* This relay board can handle 10A at 240v (more than enough for the rollers, which are fused at 3A) and use Optical Isolation (basically a light and an LDR in a single chip that acts as a switch, which means that there's no solid wire connection through) between the trigger pins and the relays themselves. This ensures that any surge on the rollers will not fry the Pi. Originally I built this with a relay/transistor/resistor combo to drive each relay but due to thrownback surges etc. this was scrapped for a prebuilt board with Optical isolation.
* The roller motors have 2 positive terminals (one for each direction) and one common ground. 3 SPDT relays are used for each roller. A main power relay (default off) splits it's output to 2 other relays both in default off position. One relay is for forward, one for reverse and will be turned on dependant on the direction. 6 relays in total with some splitting of wiring. A common ground and negative terminal is connected between both rollers. The roller speed is consistent so precise distance measurement can be achieved using time rather than sensors. The rollers have distance stops - i.e. a manual control which stops the motors from rolling in any direction too far. These were manually set when the rollers were installed.

Process:
When a roller is triggered to move the Python flask app spawns a multiprocessing thread:
* Either the forward or reverse roller lock is updated in the database (this ensures that only one relay can be triggered per-roller at once)
* The direction relay is opened (GPIO low for the relevant pin)
* Delay 0.1seconds to ensure manual trigger of direction relay
* The main power relay is opened (GPIO low for the pin)
* delay for length of programs
* Close main power relay for the roller
* Delay 0.1seconds
* Close direction relay
* remove lock from database
I'm not sure what would happen if both relays were opened together (forward and reverse), and I'm not prepared to find out.
Using the 2 relays set to off position ensures that any misfiring of the main power relay or directional relays cannot make a circuit on their own. A safety feature. 2 relays would need to be in the incorrect state to trigger a full circuit and this is less likely in case of fault.

* The web app is just a basic html page with javascript POSTing button clicks to the app which will run the relevant flask route and function.
* To set programs, buttons trigger JS to call a function which moves a roller either 0.5s or 0.1s and tracks the total time +/- each roller has moved. Saving it then stores the total runtime in the database for each roller.
* Running a program just triggers a multiprocessing thread for each roller for the total runtime saved on that program.
* Manual control also has the 0.5s or 0.1s buttons but will not store anything. Just moves the rollers precisely.
* To open the masking, a runtime of ~6seconds is sent to both rollers. This relies on the mechanical stops mentioned above to ensure the rollers don't overrun, but covers any placement of the roller either manually or from a program so always opens the masking completely.
 

CableGuy

Active Member
Awesome. Great job, and nice looking room by the looks of it. :)
 

Garioch

Well-known Member
@unreel - this is amazing. Well done and thanks for posting on here.

Is the masking material made from Devore? I notice from your video, that as the masking material slides into position (i.e. going from fullscreen to widescreen), the projected image doesn't show on the masking material (and only on the screen itself).

Also, do you have any issues with shadows being generated on the screen from the masking material? Certainly doesn't look like it from your video.

It's such a slick solution, very impressed. :)
 

unreel

Active Member
@unreel - this is amazing. Well done and thanks for posting on here.

Is the masking material made from Devore? I notice from your video, that as the masking material slides into position (i.e. going from fullscreen to widescreen), the projected image doesn't show on the masking material (and only on the screen itself).

Also, do you have any issues with shadows being generated on the screen from the masking material? Certainly doesn't look like it from your video.

It's such a slick solution, very impressed. :)
Hi yeah the masks are made from curtain blackout material and faced with Devore velvet. They really do absorb the projected image very well. I really struggle to see the status bar on playing films back on the PC !

The bottom mask is within 5-10mm of the screen material and casts no shadow. The top mask is just a basic roller and the mask rolls down in front of the screen. I haven't actually fixed any guide rails in yet, there is the tiniest of shadows, which would be fixed by guiding the top mask down closer to the screen. In real life when I have the mask down and actually watching a film this isn't actually noticeable, its more noticeable if I dropped the mask on a Windows desktop which I wouldn't actually do!.

If you have a fixed screen I'd highly recommend masking it. Everyone who's seen it in action has been impressed.
 

Paulyc1864

Active Member
Awesome unreel, really impressed! :clap: Way beyond my expertise as someone else mentioned. Just read your build thread as well, I'll comment on that one seperately.
 

SparkerB

Active Member
I'm a techhead and I would hesitate to try this. Respect.. Looks great. I opted for a manual mask using skirting covered with black out velvet cloth. Adjustable on the top and bottom. Basic but works well. I also did a few foot along the side walls. Pic looks narrow but it's just under 3m.
20180121_234718.jpg
 

IWC Dopplel

Well-known Member

The latest video from AVForums

Podcast: Samsung HW-Q950T Soundbar Review, Filmmaker Mode, Disney+ $30 for Mulan, AV news and more

Trending threads

Top Bottom