dropController V3

dropControllerV3 is now available in beta version. Download links are on the download page. Please be aware I am still tweaking things.

 

Circuit

Updated 30-07-2019
Circuit 3.01
dropController_V3.0_Circuit_3.01_2019-07-30_2400
Download a hires image of the circuit
I removed the GND labels from the camera and flash trigger connections. A couple of people had commented that they had connected these to the GND on the PCB and I realised the labels were misleading. The labels on the trigger plugs have changed to FLASH TRIGGER GND, FLASH TRIGGER VCC to show that they are the flash connection only.

 

Breadboard Prototype


Updated 07.06.2019
I built the prototype using 3 breadboards to give me plenty of space. With a bit of work you could reduce it to 2 boards. I tried to keep the circuit as simple as possible and have used multiple components instead combined components. For example, I have used 5 separate 4N25 optocouplers. These can be condensed in to 1 or 2 chips. I use stereo sockets even when the connection is single channel. The only socket that needs to be stereo is the camera connector.

dropController_Breadboard_20190714_001

dropController_Breadboard_20190714_002dropController_Breadboard_20190714_003

dropController_Breadboard_20190714_004

 
Power

The dropController can use 12v or 24v. The power supply should match the solenoid valves you are using (either 12V or 24V). Only use one type. Do not mix 12V and 24v valves.

The dropController and valves are powered from a single power supply. The power goes directly to the valves and is also converted using a buck converter. On the breadboard prototype I use a buck convertor with a display. This allows me to easily monitor the voltage in and out.

dropController_Breadboard_power_01_1600

dropController_Breadboard_power_02

The Arduino is powered using the 5V pin. This means the power is sent straight to the microprocessor avoiding the onboard regulator. This is fine as long as care is taken and the input voltage is a regulated 5V. You could use the vin pin but would need to raise the voltage to above 6V to compensate for the regulator. You then may have issues with the Bluetooth module which has a maximum input of 6V.

Make sure you set the buck converter output voltage before connecting to the circuit.

Reverse polarity protection
When the dropController is used with a PC it receives power from 2 sources, the usb and the main power supply. I have experienced issues due to this. Not when things are connected but when they are disconnected. Whenever I disconnect the usb my computer crashes (BSOD). To prevent this I added a P-channel mosfet for polarity protection.
dropController_Breadboard_20190714_power_mosfet

See below for an alternative method that does not require the mosfet

 
LEDs

  • D14/A0: Yellow LED
  • D15/A1: Green LED

dropController_Breadboard_LEDs_03_Circuit

The 2 LEDs show the device status:

  • The yellow LED shows the connected status; flashing means not connected. Solid on means connected to an app.
  • The green LED shows when the device is active (making drops).
  • Both LEDs solid on means the device is in sensor mode.

When drops are being produced the yellow LED turns off and the green LED turns on. When the drop sequence is finished they go back to Yellow on, green off.

dropController_Breadboard_20190714_LEDS

 
Bluetooth Module
Either a HC-06 or HC-05 (in slave mode) can be used. I recommend the HC-06 though because it it easier to set up. The Bluetooth module connects to the Arduino using software serial on pins A4 & A5 which are used as digital pins (D18 & D19). Power is delivered directly from the buck converter.

dropController_Breadboard_Bluetooth_04

Voltage Divider
The actual Bluetooth module is a 3.3v device. The HC-06 and HC-05 have breakout boards that include a voltage regulator that converts the input vcc to 3.3v and this is why the boards can be powered with 5V. The RX and TX pins are still 3.3v though. An Arduino reads 3.3v as HIGH which means we can connect the Bluetooth TX directly to the Arduino RX. The Arduino TX is 5V which is too high for the Bluetooth RX and so I use a simply voltage divider to reduce the 5v to 3.3V.

dropController_Breadboard_Bluetooth_03

 
Camera and flash triggers
Optocouplers are used as digital switches to trigger the camera and flash guns. To help keep the circuit as simply as possible I use separate optocouplers. I also use stereo sockets throughout.
dropController_Breadboard_CamTrigger_Circuit
dropController_Breadboard_CamTrigger_01

Shutter and focus triggers always fire together and is required by some cameras to trigger bulb mode. For example, on my Canon 40D, Bulb mode does not start when triggering the shutter only.

Optocoupler
The circuit shows 4N25s (these are very common and very cheap) and similar chips (such s 4N26s) can be used. An optocoupler isolates one circuit from another. Using the 4N25 means the circuit on the dropController side is not electrically connected to the camera circuit and offers the camera a fair amount of protection. It is not 100% fool proof though, check the data sheets for the optocoupler you use for full details.

 
Solenoid Valve Triggers
The valves use higher voltages compared to the camera a flash triggers and optocouplers like the 4N25 are not suitable, instead, mosfets are used. Just like the optocouplers the mosfets are used as digital switches.

dropController_Breadboard_Valves_01
dropController_Breadboard_Valves_03

dropController_Breadboard_Valves_02_1600

Mosfets
To switch the solenoid valves I am using IRLZ44N and IRL540N mosfets (both are common and cheap) but anything similar will work. You just need a 5V logic level mosfet with a low RDS(on) value at 4.5v or 5v (ideally 4.5v or lower). I have a list I can publish if anybody wants it.

Flyback Diode
A solenoid is a electromagnet device and works by using a magnetic force to move a small piston (they are inductive). When the current is removed the magnetic fields collapses and the piston moves back. When the magnetic field collapses it also generates a voltage. This can be very high and if allowed to feed back to the main circuit would likely cause damage. To stop the feed back a flyback diode is used. The diode directs the current back to the solenoid until it dissipates.

Manual Drain Switch
Not shown on the breadboard, a switch can be added to allow for manual control of the valves. This helps with draining and cleaning. The switch is added between the mosfet Drain and the mosfet Source. Closing the switch simply bypasses the mosfet.

dropController_Breadboard_ValveDrain_01

Alternative Power – No polarity protection mosfet
When I first started working on the dropController I had an issue when the Arduiono was powered from a PC via usb and also from a separate power supply. When I removed the usb from the computer it would crach (BSOD). At the time I was using a LM7805 and I initially addressed the issue by adding a diode for one way voltage protection. Since I had a 5V source I had to use the 5V pin not the vin pin. Adding a diode to this was not the ideal solution as the diode had a voltage drop of around .7/.8v meaning the Arduino received around 4.2v only. So I changed the diode for a mosfet which gave the same protection but didn’t have the voltage drop. Later, due to heat from the LM7805 it was replaced with a DC-DC convertor which was simply dropped in as a replacement. It was set to 5V and connected to the 5V pin and so the mosfet was still required.

Using a DC-DC convertor means I do not need to use the 5V pin. I can up the voltage and use the vin pin (this is the recommended method for powering the Arduino from an external source). The vin pin goes to the the Arduino onboard regulator so requires about 7V up. I think the official numbers are 7V-12v for 5V Arduinos.

dropController_V3.0_Circuit_2019-07-15_NewPowerIn_1600

dropController_V3_20190715_newPowerIn_01

The V out from the DC-DC convertor goes to a diode (IN4007) and then to the Arduino vin pin. The DC-DC convertor is set to output 8v. The diode takes around 0.7v which means the Arduino receives around 7.3V

The sensor connections and the Bluetooth module are now connected to the Arduino 5V pin.

 
 

Proto-board Version

This is the first proto-board version. I use the initial version to make sure everything works and to tweak the layout. This is larger than it needs to be but since I don’t have a project box yet I wanted to use the available space. Some of the components can be moved for better placing.

Board with manual drain switches
dropController_20190714_Perboard_withDrainSwitches_1600

And here is the board without the switches

dropController_2019-07-15 - perf_front_1600

dropController_2019-07-15 - perf_back_1600
Excuse the messy soldering, I had to move a few things around.

Here is the perf board with connections.
dropController_V3.0_PerfBoard_2019-07-15_frontWithConnections_1600

dropController_V3.0_PerfBoard_2019-07-15_backWithConnections_1600

 
 

Android App

Drop data controls are the same.
Camera and flash triggers can be turned off.

dropControllerV3_AndroidApp_001_360

dropControllerV3_AndroidApp_002_360

 

Windows App

Cleaner interface using tabs rather than popup windows.
Extra controls for a second flash trigger.
Drop time graph – visual guide to the drop times.

dropController_WinApp_001_300

dropController_WinApp_002_300

 

Setting up a Bluetooth HC-06 module

I have a mini guide that explains how to set up the Bluetooth module.