Arduino with shift registers to control 70 devices.

I am thinking of using Arduino with shift registers to control 70 devices.
Is this feasible ? Any pointers if it is ?

I am putting approx 60-70 cameras in series - Setup for CHDK matrix bullet-time rig with Powershot A450 and A460 cameras - Hotwire! Hardware Mods, Accessories and Insights - CHDK Forum
For a film - www.mishra.tv
To film some gymnasts.

The camera is running CHDK firmware and is triggered with a 5V pulse. I want each camera to have a 10ms delay over the previous one.

So, if C1, C2 ... Cn are cameras
and D1, D2, ... Dn are delay circuits
and Pulse denotes the ON trigger pulse (just a simple switch I will turn on and off) which is started at time - t0.

The circuit is
Pulse --- D1-C1---D2-C2--...--Dn-Cn

How precise does your delay have to be?
10ms precision

How wide is the pulse?
100ms per camera. Input Pulse can be held high as needed.

Does the pulse repeat?
Nope. 1 pulse activates C1, which propagates to C2 then to C3. The delay circuits D1..Dn are initially open and then stay closed to allow the voltage to trigger to the next one.
In another way, C1 gets a 100ms pulse which starts at t0+10 ms
C2 gets 100ms pulse at t0+210 ms
.
.
.
Cn gets 100ms pulse at t0+n
10 ms

So C1's pulse overlaps C2's pulse by 90mS etc etc, Like this?
------_____
-------__
-------
____-------

Yes that can be done, no "delay circuits" as such, do it all in software.

How many cameras? EDIT: don't anwer, you said 60-70.


Rob

@Richard Its actually a budget production. I accumulated user Powershot A450 A460 for a year. Total cost 2.5-3K for 60 cameras. Sniping ebay bids worked really well.
Could you point me to a sample IC I could research ? Are you suggesting connecting the Shift registers in series and just taking each output to the cameras ?

@Graynomad Yes thats the pulse cycle.

I think that what is being suggested is just a string of regular 8-bit shift registers, one feeding the next (like 74HC595), with a clock every 10mS - then you clock in a 1 ten times and zeros after that. That way the 1st bit is high for 100mS, and goes low after that, as GrayNomad has pictured. The shift register outputs go to the cameras, either directly or with whatever buffering you need.

You could have a el cheapo dual 556 timer chip at each camera, with one 10mS delay, and one 100ms, both triggered from the previous chips falling edge of the 10ms timer - one 50 cent chip, 4 capacitors, and 3 resistors.

You would just need a 3 core cable between each camera ( ground, 5v, and trigger )

Of course you could have an Arduino to tell it when to fire ( keeping with the forum )

Thats a lot of chips to wire up - really just 9 are all that is needed with 3 wire control from the arduino - maybe 4-wire if you want to wire up the clear line too.
I don't know if the cameras just need the shift register output and a ground line to work.

Then a simple sketch:

write shift clock low
write load clock low

read the start button, when pressed:

for x = 1 to 10{
write dataout High
write shift clock hi, then low
write load clock hi, then low
wait 10ms}

write dataout Low

for x = 1 to 62{
write shift clock hi, then low
write load clock hi, then low
wait 10ms}

true, but theres a lot of wiring that way, I was suggesting just a 3 wire daisy chain between all 70 cameras, with a chip on some perfboard in a matchbox sized box at each camera.
Imgur

I havn't worked out how to put pictures in 8)

I don't know where zcream is, but I see that Radio Shack is charging $1.99 for the 556, that's 5 times what I am paying in South Africa !

To reduce wiring and remove any analogue components how about we combine the two approaches, just have a flip flop at each camera.

Even using "old" 4013s or whatever this would be very small, with the new SMD single gate FFs it would be tiny.


Rob

You know your application sounds a lot like what they use in demolition firing circuits. Controlled sequence and duration for phased explosions to bring down buildings in a 'controlled manner'. Also large fire work displays would be similar and I think they now use PC based scripting GUI programs that let them setup a display and simulate and all that fancy stuff. I think the demotion guys use industrial PLC controllers.

Lefty

Lefty- now that sounds like a fun project for an Arduino !

Rob - You need the 2 overlapping outputs, the 100mS carrying on after the trigger has been passed on, how do you see that with the 4013?

To insert pictures use the traditional method

'bracket img bracket' url 'bracket /img bracket' ,

or click on Additional Options when you reply and then browse to a file on your hard drive.

So what's easier to manage:

9 chips on a breadboard with 70 sets of screw terminals in one box for a 2 wire connection to each camera,
or 70 boxes and 70 boards wired up with an input/output connector on each?

The OP has to build it up (or have it built), if it was me I'd go with 9 chips and a row of screw terminals, or some kind of 2-contact connecter to plug a wire into, like a bank of RCA cable jacks such as
http://www.bgmicro.com/AUDCA074.aspx

Hey a Seeeduino mega board has 70 digital outputs if you need to use them all. Just run RS-485 drivers to each camera's trigger input and do all the timing/duration stuff inside the sketch. Simple.

http://www.seeedstudio.com/depot/seeeduino-mega-p-717.html?cPath=132_133&zenid=9f6118c193cee9f8b7337d4df91a2eca

Lefty

Thanks Crossroads,
I will try that next time with the pics ( I'm half asleep 5am here )

With the wiring, we dont know his layout, but 70 wires in a gymnasium ??

Depending on the connector in the camera, he could build the chip into (say) a rca splitter.

Anyway, he has a few suggestions , now I like the idea of a wireless web :stuck_out_tongue_closed_eyes:

If each camera has a flash, you could have a wireless version where the second camera counts one flash and shoots 10mS later, the next counts 2 flashes and so on. No RF or wires, but of course you would need a board and a battery at each camera. :frowning:

You need the 2 overlapping outputs, the 100mS carrying on after the trigger has been passed on, how do you see that with the 4013?

Half a 4013 is just 1/8th of a shift register, so if it works with an SR it works with 8 (or 70) FFs. Just route Q forward to D and tap off Q for the local control and feed the 10 high bits into one end as mentioned above.

I reckon this is by for the simplest option (wiring wise at least), just needing a single 4-core wire.


Rob

"I reckon this is by for the simplest option (wiring wise at least), just needing a single 4-core wire."

Well, that and making up 70 circuit cards and boxes...

I am a bit thick here, I will try and work that out when I wake up, :slight_smile: I dont understand the 10 bits.

I was suggesting only 3 wires + gnd and trigger looping through each camera.

The 10 bits refers to 10 1's being clocked thru the shift registers at 10mS to create a 100mS wide pulse.

Well, that and making up 70 circuit cards and boxes...

Yeah there is that :),

I'd knock up a PCB with a matrix of 7x10 tiny circuit boards and snap-off slots so you can just break off the boards. Probably $100 total cost then easy to build.

It depends on the physical layout of the setup, making 70 boards may be preferable to having 70 wires over the floor. Also the modular approach is easily scalable.

But either way it's simple, just need to know about the non-electronic/software issues to see what fits the application better.

@boffin
Using FFs needs 4 wires GND, PWR, CLK, and DATA but it's really just the digital equivelant of what you suggested with the 556s. Fewer components though.


Rob

The description "I am putting approx 60-70 cameras in series ... To film some gymnasts." leads me to believe he will filming a gymnast going over a vault kind of thing, where you end up with a series of still shots and can compare one gymnast's form with another doing the same action kind of thing. In which case the cameras will not be spread that far apart around a gymnasium, but concentrated along a 3-4 meter kind of distance.