RMCybernetics offers a range of excellent scientific services. We work with organisations and individuals all over the world on projects involving scientific and technical consultancy, custom electronics, cybernetics and physics research, media production for magazines, television and online.

We also provide wide selection of free science information and support via our website. If you are interested in any of the services mentioned above, please contact us, otherwise, take a look at the links below for a selection of fascinating scientific topics.

Virtual Worlds
Learn Electronics

Other Theory
Zero Point Energy
Other Dimensions
Unexplained Phenomenon

Jet Engines
EHD Thrusters
MHD Thrusters
High VoltageHigh Voltage
Tesla Coils
Voltage Multipliers
Contact Electrification
Electric Minerals
DIY ProjectsDIY Science Projects
This section contains a wide selection of articles showing how devices or experiments can be done at home.

Magnetic Linear Accelerator

Magnetic Linear Accelerator

Magnetic AcceleratorThis experiment is a simple way of demonstrating the distribution of the field inside a solenoid and how it effects ferrous metal objects.

This experiment simply consists of a plastic or cardboard tube with a coil of wire wrapped around one end. The coil can be powered by a set of standard batteries. the more batteries used the more powerful the magnetic field will be.

The tube used to for the coil around should be quite narrow. The case of a pen such as a biro is ideal. You can try using different sized batteries and different numbers of turns on the coil to produce different strength fields.

When a metal object is placed part way into the coil it is ready for firing. The metal should be ferrous (sticks to a magnet) and quite small. A metal rod of about 2 – 3mm wide and 10 – 20mm long is best. Something like a small nail or a screw with the head cut off should work fine. If a small rod magnet is used, it will work much better but make sure it’s inserted the right way around, or it could backfire.

To fire the coil gun you simply tap the switch. If you press it for too long, the projectile will either stop in the middle or come back out the wrong end. You can practice different methods and different coil and battery sizes to see what results you get. An alternative firing method would be to use a circuit such as the PWM-OCX which can give repeated pulses or a time you can set yourself.

For higher speed projectiles, it is possible to  use multiple coils and fire them in sequence so that each one will further accelerate the projectile. Each successive pulse must be shorter than the previous one due to the projectile spending less time in the acceleration region. If the pulses were too long, they would drag the projectile back, slowing it down. Our 3 channel time delay generator could be used for controlling the pulse timing to a transistor on each coil.

Heat and Resistivity

Thermal Effects on Resistance

Temperature Vs ResistanceThe temperature affects the dimensions of the conductor; a higher temperature causes an expansion in a material while a colder temperature causes a contraction. And with this expansion/contraction a change in resistance occurs as a thicker wire has less resistance to current flow than a thinner one. Materials used as conductors typically tend to increase their resistance with a temperature increase while insulators have the adverse effect. Materials used as insulators often only exhibit a drop in resistance at very high temperatures meaning they usually don’t encounter temperatures high enough though typical use. Because of this these changes cannot all be attributed to the change in dimensions. In fact the resistance change is mainly due to the temperature affecting the atomic structure of the material, causing a change in the resistivity of the material.

The flow of current through a material is the movement of electrons. Electrons move under the influence of a magnetic field, they are negatively charged particles making them attracted by a positive electric charge. Therefore an electric potential can be applied to the conductor to move the electrons atom to atom towards the positive terminal. Not all electrons can migrate however, current is the movement of free electrons and the effectivity of an insulator or a conductor depends on the number of free electrons (a good conductor should have many free electrons while a good insulator should have few).

The effect heat has on an atomic scale is causing the atoms to vibrate, the higher the temperature, the more violent the vibration.

In a conductor the vibrations cause the many free electrons to collide with the captive electrons and other free electrons. These collisions use up some of the energy stored in the free electrons which in turn increases the resistance to current flow. Therefore increasing temperature of a conductor increases the resistance.

An insulator is different; the low number of free electrons means very little current can flow. Most of the electrons are tightly bound to their respective atom. Heating will still cause vibration; these vibrations however will cause significantly less collisions. If heated enough the vibrations may actually become violent enough to shake some electrons free, creating free electrons to carry a current. Therefore increasing the temperature of an insulator decreases the resistance.

This graph shows the measured resistance of a solenoid under varying temperatures.

Frozen CoilAny normal conductor will see a drop in resistance with a drop in temperature. With a small range of temperatures like shown here the effect is almost linear. The wiggles in the graph are due to inaccurate data generated by the measurement process.

To demonstrate this you need a solenoid of at least several hundred turns, an ohm meter or multi meter, and some freezer spray.

The resistance of the solenoid used for this test was 6.3 Ohms at room temperature. To increase the temperature of the coil it can simply be connected to a battery and allowed to heat up. The temperature was measured using an infrared thermometer.

You could cool the solenoid in a standard freezer to about -20, but it would take a while so we used some freezer spray to get quicker results. The lowest resistance from our coil was just 4.8 Ohms whereas the highest was 8.2 Ohms.

Reducing the resistance of a coil means that a higher current can be drawn from the same source of EMF (volts). This means that the magnetic field it produces can be much stronger. When the temperature of a conductor drops below a certain level its resistance will suddenly drop to near zero. Under these conditions this is known as a superconductor. Superconducting electromagnets are used in MRI (Magnetic Resonance Imaging) machines so that ultra-strong magnetic fields can be produced. These usually have to be cooled with liquid nitrogen and require a lot of power.



Ferrofluids are made from a suspension of tiny magnetic particles in a liquid such as water or oil. Such a mixture creates a liquid that can be attracted by a magnetic field. NASA discovered Ferrofluids at one of their research centers in the 1960’s while they were looking for different methods of controlling liquids in space.

Ferrofluid StructureThe magnetic materials used are often made from iron or cobalt particles, but compounds such as manganese zinc ferrite are also used. The most common form of ferrofluid is made using particles of a type of iron oxide known as magnetite (Fe334). Making a stable Ferrofluid is not quite as simple as mixing tiny particles into a liquid. First of all the particles must be very small. The average size is around 10nm (0.00000001 meters). These particles can not be made by crushing or grinding a material, but are precipitated out of a solution during a chemical reaction.

During the precipitation the particles would naturally amalgamate (come together) due to magnetic and Van der Waals forces. To prevent this the mixture is heated so that thermal motion of the magnetite particles prevents them from sticking together. In order to prevent the particles from amalgamating after the reaction they must be kept apart from each other. This can be archived by coating each particle with another material known as a surfactant (surface active agent) to produce electrostatic or steric repulsive forces between the particles.

In an oil based ferrofluid, cis-oleic acid can be used as a suffricant. This is a long-chain hydrocarbon with a polar head that sticks to the surface of the magnetite particles. The long molecules stick out in all directions around each magnetite particle preventing them from getting close enough to stick together.

Water based (aqueous) ferrofluids often use ionic sufficants such as tetramethylammonium hydroxide. The negative hydroxide ions stick to the surface of the magnetite, and the tetramethylammonium cations form a positively charged layer around the outside. This means that the magnetite particles are held apart by the electrostatic repulsive force of the surrounding molecules.

Aqueous Ferrofluid StructureFerrofluids have several uses due to their magnetic properties. They can be used inside a magnetized bearing like an o-ring seal so that rotating shafts can pass from high to low pressure zones and vise versa. This is a much more efficient method than using solid seals as there is significantly less friction. This makes them ideal for use in submarines, rotating anode x-ray machines, disk drives, and vacuum chambers with external manipulators.

A more every day use of ferrofluid is in high quality loudspeakers. The fluid is pored into the magnetic cavity so that it surrounds the coil. This acts as a thermal conductor allowing more heat to be dissipated so that the speaker can be used at higher power. The fluid also helps to damp unwanted resonant vibrations giving an better overall sound quality.

Spikes in Ferrofluid

These images show some ferro fluid in a container with a strong magnet placed underneath. The leftmost image shows a few large spikes that are formed as the magnet approaches the container. The other images show a large number of tiny spikes produced by the intense field of a magnet up close.

The spikes form in a manner as if they are following the field lines. In a stronger magnetic field there are more filed lines hence more spikes in the ferrofluid.

If you try this yourself make sure you don’t need the container again as the ferrofluid is very staining.

Video Clips

This Video Clip shows how the spikes of fluid change as a magnet is brought closer and then taken away again. This force is so strong that a normal heavy object such as a penny would appear to float on the fluid because displaced by the liquid moving underneath.

This Video Clip shows how the spikes of ferrofluid over a magnet change as a the magnetic field is oscillated using a coil surrounding the container. Its is possible to tune the vibrating fluid to resonance causing a fine jet to be ejected upwards from the centre. The electromagnetic coil is being powered by a PWM-OCX

Magnetorheological Fluid

Magnetorheological FluidA Magneto-rheological fluid is similar to a ferrofluid in the way that there are magnetic particles suspended in a fluid medium. This type of fluid does not use nano sized particles, but they must be small enough to remain suspended in the liquid. They are typically 2 or 3 times larger than the particles in Ferrofluids and are on the micrometer scale.

The particles in a magnetorheological fluid are magnetically polarisable. This means that when an external field is applied the micron sized particles will line up and form chain like structures. the alignment of the particles will increase the viscosity of the fluid.

A simple magnetorheological fluid can be made at home. Micron sized ferrous particles can be collect from sand or lake beds. By placing a magnet in a plastic bag and dragging it through sandy sediment many particles will be separated out. Turning the bag inside out and removing it from the magnet prevents the particle from becoming permanently stuck to its surface.

These particles can be mixed with a small amount of oil such as vegetable oil. By holding a magnet to the outside of t he container and poring off excess oil you will be left with a basic magnetorheological fluid. This fluid will not remaining stable for long periods due to the lack of a suffricant, but it serves well to demonstrate the scientific principles involved.

Magnetorheological fluids are being used mostly for controlled damping of oscillations. They are ideal for use in the suspension in large vehicles. In its liquid state it will provide limited damping, but when a magnetic field is brought near to the fluid it will greatly dampen any oscillations. This means that a large mechanical force can be controlled with a much smaller mechanical force.

DIY Tesla Coil Tuner

Tesla Coil TunerA DIY Tesla Coil Tuner

By Terry Fritz

The Tesla Coil Tuner (TCT) is a simple and low cost signal source that can be used to find the resonant frequencies of the primary and secondary circuits of Tesla coils. It uses simple commonly available parts. It can be assembled in a few hours with minimal electronic skills. The cost of all the parts is about .

The TCT is simply a LMC555 IC square wave generator. An audio taper pot and a 2% polypropylene timing capacitor control the 50% duty cycle oscillator’s frequency.

A bi-color LED in series with the output senses the current being drawn and a frequency dial indicates the frequency setting.


2Sets red/black alligator clips
1Large Control Knob
1Bi-Colour LED
210uF 16v tantalum capacitors
1LMC555 CMOS IC timer chip
18 pin IC socket
2470 ohm 1/2 watt resistors
110K Audio taper pot with switch
1Plastic Box
1Battery Clip
1Battery Holder
1Prototype Board


There are many ways to put the TCT together and it will work fine. For those less familiar with assembling things like this, I will describe how I did it.

I selected the plastic cover and located two points on the cover. The first was two inches from the bottom and the other one inch from the top. I drilled a 1/4 inch hole at the bottom mark and enlarged it a bit to fit the 10k pot. I then snapped the little tab off the pot with pliers and mounted the pot with the 2.25 x 2.25 inch scale under the nut. I then installed the knob using the off position for alignment. I connected a 470 ohm resistor to the center leg of the pot. I drilled a 3/16 hole at the top mark and was able to force the bi-color led into it. I added a bit of epoxy to hold it in place. I also epoxied the battery holder in the bottom half of the box. I drilled two 9/64 inch holes for two 8 inch lengths of wire to act as test leads in the bottom of the box. I tied and epoxied the leads to the box and installed alligator clips to the ends.

Tesla Coil Tuner Schematic

Tesla Coil TunerI used two other alligator clips to make a 6 inch jumper to short the spark gap for primary testing.

Circuit: Snap the two circuit boards in half and solder the 8 pin socket in the center of one. Following the schematic, solder the components to the circuit boards noting that S1, R2, R3, LED1, and the battery are mounted off the board. Use hookup wire to make the needed connections and bridge the pads with solder where needed. I put leads on the board for parts off the board.

Finish wiring the top and bottom of the box together following the schematic. See the picture for how the pot leads and switch are wired.

Install the battery and assemble the box top with the four screws.

Tesla Coil Tuner cct2Tesla Coil Tuner cctTesla Coil Tuner sw

Tesla Coil Tuner DialCalibration:

The provided scale will be fairly close. However, if you have a frequency counter or voltmeter with that function, you can calibrate your own scale


The TCT is very easy to use for primary and secondary frequency measurements. Obviously, these test should be done will all power removed from the coil and all capacitors completely discharged! The procedures follow:

Insure all power is removed from the coil and all the capacitors are completely discharged!

Testing the TCT: To tests the TCT’s operation, connect the two test leads together. The LED should light and remain lit through the entire frequency range. Replace the battery if the light is dim.

Tesla Coil Tuner secondary coil testSecondary Fo: To test the secondary’s fundamental frequency, simply connect the TCT between the ground and the base wire from the secondary as shown below. Slowly turn the frequency through the range until the brightest spot is found. The lowest and brightest frequency spot is the fundamental. You may see the dimmer 3rd harmonic at ~3 x Fo. It is probably best to test the secondary frequency on the coil in the actual configuration since the secondary frequency is sensitive to the surrounding objects.

Tesla Col Tuner primary coil testPrimary Fo: To test the primary circuit’s frequency, simply connect the TCT across the primary cap and short the spark gap with the jumper. Slowly turn the frequency through the range until the dimmest spot is found and read the frequency on the dial. You may want to remove the secondary coil to prevent the secondary from affecting this test.

DIY Air Quality Meter

DIY Air Quality Meter & Emissions Tester

This little project shows how a simple hand held meter can be made for testing for air pollutants such as smoke and dust. It is based on the Sharp GP2Y1010AU0F sensor which measures light reflected from airborne particulates passing through the sensor. It is very similar in operation to the popular GP2Y0A21YK0F from Sharp which is used for measuring distance using reflected infrared light.

DIY Emissions Tester

This project came about as we were looking for a simple way of measuring car exhaust emissions. Searching online for other DIY Car Emission Testers did not bring up much, so we decided to create this device and share it here. There is lots of scope for improvement on this project, even in just some more advanced code for more functionality.

Emissions tester wiringWhat’s Inside?

Inside the box is the GP2Y1010AU0F sensor, a small fan, and our PDI-1 which is a simple Arduino based controller with an integrated LCD screen. The code provided should work on any compatible Arduino device such as a Nano, or Arduino Pro Mini. The advantage of the PDI-1 is simply that it already has a display, speaker, buttons, and a rotary encoder built in.

The outer enclosure is made from laser cut acrylic. If you have acress to a laser, you cam make use of the box design file provided. You might want to tweak the design a little as it did not leave much space inside for a battery. The 9V PP3 battery we used did not really give a good service life.

To get the reading, the microcontroller sends a pulse to the sensor. The sensor then takes a measurement and outputs an analogue voltage proportional to the amount of pollution detected. For a stable reading, we take multiple readings 10ms apart and then take an average value. The code then converts this value to be displayed on a graph.

Making use of the built in rotary encoder, it has been set up so that turning it adjust the scale on the graph allowing you to sort of zoom in for more precision on small changes. A single press of the encoder button will switch the graph from a bar chart, to a line graph.

Emission Test ResultsUsing The Meter to Test Car Emissions

For a good reading the sensor needs a continuous flow of air through it. To achieve this a small 40mm fan was mounted inside the box which blew air out of the underside. This created negative pressure in the box allowing the air from outside to be drawn in through the sensor. On the outside of the box a common 8mm barb pipe fitting was added which in part helps to prevent outside light interfering with the sensor and also allows for a silicone hose to be easily fitted. To take the measurements the free end of the silicone pipe was simply put into the car exhaust while observing the screen. In the image here you can see the difference in readings for clean air, the car idling, and when the engine is revved.

The reading given is currently just a number from the analogue input. To improve this project, the system could be calibrated to give an actual particle density value. However for our needs, a simple relative reading was all that was needed.

The code for this project is available here. If you have any suggestions for improvements or have your own examples, we would love to hear from you. Please post your comments using the form below.


DIY Solid State Tesla Coil

A Simple DIY Solid State Tesla Coil

This Solid State Tesla Coil is easy to build, upgradeable and gives great results with only a a little work! This project shows how to make a small Tesla Coil that can run on batteries or any other suitable low voltage DC supply. From as little as 12V input it is possible to make high frequency plasma sparks that even play music! The result of this high voltage, high frequency output is being able to make awesome looking sparks and arcs of plasma in the air.

high voltage danger logoWARNING: High Voltage Device! High Voltages can be very dangerous!

What is an SSTC (Solid State Tesla Coil)?
What it is and how it differs from a classical Tesla Coil (SGTC) which uses a spark gap.

Like all Tesla Coils, a Solid State Tesla Coil (SSTC) is a type of high frequency resonant transformer which can step up a low voltage DC input into a very high frequency AC output. The main difference between a SSTC vs a SGTC is that the SSTC has no spark gap an instead uses modern transistor technology to switch the current in the primary coil. If you are not familiar with them, check our article on how a Tesla Coil works. There are many forms of SSTC which vary by how the transistors are configured or how the system is resonated. In this version, just a single IGBT is used to switch current in the primary at the resonant frequency of the secondary coil. By using a specialised PWM circuit (our Power Pulse Modulator PWM-OCXi v2) it is possible to tune into the right frequency and then adjust the power level with the turn of a knob.

There are a lot of articles online showing how to make an SSTC, but we like to think that this one must be one of the simplest and most cost effective ways of making one and without compromising on performance. 

SSTC SchematicHow to make a SSTC
How to put the parts together to make a SSTC

If you choose to buy all the parts ready made then it is possible to get this Tesla Coil up and running in around five minutes! Only a few parts are required for this SSTC. These are detailed below along with how to put them together in a number of ways to make a simple mini solid state Tesla Coil.

For this project, you will need;

• Power Pulse Modulator PWM-OCXi v2 (Though it is feasible with only one OCXi, you will get a more stable and prolonged effect result with two!)

• A PSU with a voltage between 12V and 30V with a current of at least 5A. A large battery could also work, but take care not to let the voltage drop below 12V.

• A helical coil of around 750 turns (for the secondary coil)

• 10A (or larger) cable for winding primary coil

• A 1000uF, 50V (or more) electrolytic capacitor

• A 22pF timing capacitor (for the OCXi)

The Secondary Coil
The tall helical coil from which the sparks come

SSTC Secondary CoilThis part can be quite difficult and time consuming to produce yourself. If you do not want to wind your own, check out our helical coils or Tesla Coil Secondary coils which include a toroid. The exact size or number of windings are not critical as long as there is a relatively high number of turns on the secondary coil. Our coils use around 750 turns of 0.25mm magnet wire wound onto a PVC pipe of 53mm in diameter. This coil resonates at around 1MHz.

To make one yourself, find a suitable piece of pipe such as some drainage pipe or any other straight plastic tube that is around 20cm long. Start by fixing the start of your wire to one end of the coil then carefully turn the tube while holding the wire tight so that each turn lays right up against the previous turn. It is important to make all the turns tight and with no spaces or overlapping turns otherwise the coil may not operate efficiently. During winding it can be useful to add a small spot of super glue occasionally so that if you accidently let go, it wont all unwind and leave you with a tangled mess. When using magnet wire (enamel coated wire), it is necessary to scrape off the insulating layer at the ends so that a connection can be made. While this is not so important at the output side, it is essential at the base where there must be a good connection to RF ground.

The HV output will come from the top part of the coil. You should let a small bit of wire protrude away from the main body of the coil so that the electric field will be concentrated around it’s tip. The bottom of the coil must be connected to a suitable RF (radio frequency) Ground. This should not mains ground, or the GND connection of your power supply. This is because the high frequency can cause significant interference with other electronics. A suitable RF GND would be a connection to a metal filing cabinet, or a long metal stake in the earth.

The Primary Coil
Small coil pulsed with low voltage, high current

SSTC PrimaryThe primary coil simply consists of around four windings of thick copper wire wrapped around the base of the secondary coil. It is best to use something well insulated as it prevents corona leaking energy from the primary coil. In this example we used 10A silicone insulated wire as it is highly flexible, well insulated and easy to work with. Before coiling the primary winding onto the secondary coil, we wrapped a folded piece of A4 paper around the bottom and then coated the paper with insulating tape. This just helps to protect the fine secondary windings and also reduce corona leakage.

The ends of the primary coil connect directly to the PWM-OCXi’s output terminals (L+ and L-). The length of connecting wire between the OCXi and the base of the coil should be around 10cm. If it is too long, the extra inductance and resistance might reduce the performance of the SSTC.

HV PWM Control CircuitThe SSTC Drive Circuit
Connecting the PWM-OCXi to the primary coil and PSU

It is possible to just use a single OCXi drive circuit to make this work, but this will run the SSTC at a continuous 1MHz. While this will make a great silent plasma plume, it is really hard work for the IGBT in the circuit which means it will quickly heat up and could be damaged if allowed to get too hot. When used in this way it is sometimes refered to as a Continuous Wave SSTC (CWSSTC) due to the fact that the output is a continuous 1MHz high voltage waveform.

It is best to use one OCXi tuned to power the primary coil at 1MHz and then another OCXi (or another low frequency source) to modulate its output. By doing this we can make short 1MHz pulses that create a large spark while not dissipating too much heat over time in the IGBT on the OCXi drive circuit. The OCXi driving the coil will need to have the timing capacitor (C1) replaced with one rated for 22pF so that the frequency range is at the top end.

The diagram shown here shows two OCXi circuits in a Master/Slave setup. The circuits are powered from the same supply and a short wire is connected between the master’s DRV connection and the slave’s EN connection. More details about the master/slave setup can be found in the OCXi datasheet. The slave device is set to power the primary coil at 1MHz with around 50% duty, while the master OCXi is set to around 100Hz and 10% duty. Each time the master OCXi pulses high, the slave circuuit is momentarily activated. The resultant sparks look as good as they would with only one OCXi, but at only 10% of the power used!

It is important to connect a large capacitor such as a 1000uF 50V electrolyitic capacitor close to the power input terminals of the circuit driving the primary coil. This is used to help supply the high current pulses to the coil as a PSU or battery would not be able to do this alone.

DANGER: This device will create a lot of radio frequency interference!

Operating the Solid State Tesla Coil
Tuning and running the SSTC

First of all make sure it is set up in a clear space, and it is not near any sensitive electronics. This can cause a lot of interference with nearby electronics such as computers and phones. When doing this project, one of our computer screens around 10m away from the system would flicker when it was running! It would also cause significant problems when trying to make footage of this on our DSLR camera. Interference would reset the camera, or even corrupt the memory cards.

Before powering on the circuits, ensure that the duty setting of the slave OCXi is set to 0% while the frequency is set to maximum. If also using a slave circuit, set its duty to about 10% and the frequency to minimum.

Turn down the lights and then turn on the power to the circuits and slowly turn up the duty on the slave unit to around 50%. Watch the tip of the secondary winding for any glowing purple discharge and SLOWLY adjust the frequency control on the slave circuit until you get the biggest discharge you can. While doing this be make sure you regulary power off the system and check that the heatsink is not getting too hot on the OCXi. You may also notice that simply moving your hand near the circuit or secondary coil will alter the size of the glowing output. This is because moving near it actually alters the systems resonant frequency and therefore detunes if from what you have set on the controls.

Once satisfied with frequency the tuning, adjust the duty settings and frequency of the master circuit to give the desired effect.

Arduino SSTCMaking a Plasma Speaker
Making music come from the sparks of your SSTC!

The plasma at 1MHz makes almost no sound as 1MHz is well above the audiable range of human ears. When we modulate this frequency with another circuit, we are able to hear the frequency of that modulation. The sound comes from the air expanding around the plasma as it forms during each pulse. We can take advantage of this effect to make the SSTC play music without any speakers at all!

In this example we use an Arduino Nano (programmable circuit) loaded with some code meant to play music on a small speaker. Rather than connecting the output to a speaker, we connect it to the EN connection of the slave OCXi. Doing this causes the Tesla Coil plasma to be modulated at whatever frequency the music is.

SSTC Corona MotorIn the videos you can also see a spinning “corona motor”. This is made by simply bending a thin wire into an S shape and making a small loop in the middle so it can be hooked onto a supporting wire. As the plasma forms at the sharp tips of the wire, the air is heated and pushed away giving it some thrust. This will eventually cause the whole wire to spin quite quickly and give this cool looking effect!

DIY High Speed Flash

DIY High Speed Flash

This DIY project uses a high voltage system to create a very bright and short burst of light which is ideal for high speed photography. Standard flash guns will illuminate a subject for a relatively long time which will create a blur when photographing high speed events such as bullet impacts or exploding objects.

high voltage danger logo

WARNING: This project involves large high voltage capacitors. It is very very dangerous! One small mistake could kill instantly. Only experienced high voltage engineers should attempt this project.

By using this homemade high speed flash, it is possible to generate a very short burst of light which is bright enough to allow you to capture high speed events with a typical SLR or DSLR camera. 

AVAILABLE PARTS: Below you can find links to buy the key parts for this project

High Voltage Diodes (30kV 100mA)
Choke (85uH – 1mH)

How It Works

The flash of light comes from the electrical breakdown of ordinary air at atmospheric pressure. When a large enough capacitor is discharged through an air gap, the intense current will briefly generate a burst of electromagnetic radiation covering a wide spectrum. The optical part of this spectrum is seen as a white flash of light just as in lightning discharges.

The circuit uses two high voltage inverters which will convert 12V DC into about 20kV. One inverter is used to charge up a large high voltage capacitor which will be used for discharging energy as a flash of light. The second inverter circuit is used to create a brief high voltage pulse that will trigger the discharge of the main flash on demand.

The Charging and Trigger Circuit

High Speed Flash DiagramThe primary inverter consists of a Power Pulse Width Modulator circuit which is used as an ignition coil driver to power a small High Voltage Spark Coil. The output of the ignition coil is fed through a HV Diode and a small inductor so that it can charge up a bank of large high voltage pulse capacitors. The capacitor terminals are connected to a pair of electrodes that are spaced a little larger than the spark could normally jump when the capacitor is fully charged.

The second inverter circuit is used to briefly ionize the air around the two main electrodes which will allow the capacitor to discharge. Another Power Pulse Width Modulator circuit is set up to drive an ignition coil whenever it is activated by a button or sensor. The output of the ignition coil is directly connected to a wire which is placed near the main electrodes.

When the flash fires, the capacitors may not be fully discharged. It is possible to fit something known as a bleeder resistor between the capacitor terminals. This resistor will slowly discharge the capacitor when not in use. The resistance will have to be very high; something like 100M ohms should be suitable for this.

The High Speed Flash Tube

Fast Flash BulbThe high speed flash tube consists of two main electrodes on the outside of a small glass tube, plus a third electrode inside the glass tube so that it is isolated from the others.

The main electrodes are made by wrapping some wire around the outside of the tube. The wire used must be thick enough to withstand the high current and heat of the capacitor bank discharge. You could also use something else for the electrodes such as a pair of washers or nuts.

The cables from the electrodes need to be fixed so that they come away from the central tube and do not come close to each other, or anything else. They should be well insulated, especially once they are outside the tube. We used some silicon cable to feed directly from the capacitor to the electrodes and then added extra insulation by feeding the cable through some PVC tubing. This insulation was able to prevent any accidental discharge between the high voltage cables when in use, but should not be considered as safe for handling when live.

The third electrode is a piece of standard solid core wire which is stripped bare at the end. The length of bare wire should be about the length of the gap between the main electrodes. This wire is fitted inside the small glass tube so that the bare section is between the two main electrodes. The other end of the wire leads out of the tube and connects directly to the ignition coil. It can be quite useful to mount the high speed flash tube directly to the end of the HV coil so that it is not necessary to have another large insulated HV cable.

Using the Circuit

Before building the circuit, it is important to become familiar with the PWM Circuits being used for the ignition coil drivers. The setting of the duty control will determine the charge voltage and rate of charge. Setting this too high will overheat the the circuit or damage components.

The circuit should be powered from a 12V power source capable of delivering at least 3A. Check our notes on power supply considerations as there are tips that can help improve performance. This circuit is a high voltage circuit so the GND connection should be suitably earthed. If using a mains operated supply such as a lab bench PSU, this earth will most likely be built in.

The diagram above shows momentary push to make switches being used to charge and fire the circuit. To charge the flash, the ‘charge’ switch is held down for a few seconds. The exact time need will depend on number of capacitors used and the duty setting of the PWM. There is no built in method to determine if the capacitor bank is charged, so this will come down to user experience with the system. To fire the high speed flash the ‘fire’ switch just needs to be pressed briefly. It is possible to add a sensor instead of a push switch for activating the flash. The sensor just needs to be wired so that will pull low the INT connection of the trigger PWM when the flash needs to fire.

DANGER: The pressure waves from the discharging flash can cause the glass tubes to break. The tube should also be housed in a sturdy plastic case with reflector to direct the light and to capture any flying glass.

When using the system is is essential to have a clutter free work area, and to prepare for your photographs carefully. This will improve safety and also increase the chances of getting a good picture. The flash tube and capacitors should be fixed securely in position and mounted in such a way that someone could not accidentally touch or get too close to live parts.

To get the high speed photographs with an ordinary camera, the camera shutter needs to stay open so that an image is only exposed when the flash illuminates the subject. Most DSLR cameras will have a ‘bulb’ setting that allows you to keep the shutter open as long as is needed. It is of course essential that when performing DIY high speed photography like this, the room is totally dark (except during the flash) while the camera shutter is open.

The short bright flash from the tube when fired will be very bright and should never be viewed directly. It might also be helpful to wear sunglasses if the subject will be viewed when the flash is activated.

REMEMBER: This project involves high voltage, high current electrical discharges, potentially exploding glass shards, loud bangs, bright flashes, and must be operated in darkness! It is VERY dangerous! This project is here for educational purposes, we do not recommend that you attempt to replicate this project. You are entirely responsible for the way you use the information presented on this website.

DIY Robot II

A DIY Robot

This Arduino robot is built using the chassis from our old DIY Robot Project, but we have replaced the sensors and the electronics to use more modern parts. We intend to develop this robot as far as possible so there will be many updates to this which will be added to the article. Code and schematics are provided so we hope that if you use them you can post your project and any contributions here.

This project will be a continuation of the original MIRC and will keep the key concept of using ‘animal like’ responses and fuzzy algorithms while keeping logical “If/Then” actions to a minimum. The intention is that this approach will make the system more flexible and adaptable. 

Obstacle Avoider

diy Robot ChassisThis article will cover the initial stage of creating a system so that the robot will be able to get around and avoid obstacles. This requires a basic system for motor control, and also for reading and interpreting sensor information. The processing for this will be done using an Arduino Uno which is an open source electronics prototyping platform using an ATmega328 micro-controller. This has the advantage of being simple to program and interface with. There are also many code libraries available on the Internet which people have shared for making programming of common tasks even more simple.


Starting with just four ultrasonic distance sensors the robot should be able to detect large obstacles such as walls, furniture, and people. The sensors are arranged on the front of the robot so that it can detect obstacles as it approaches them.

The sensors used are the HC-SR04 ultrasonic rangefinders. They were chosen due to the low cost and ease of use. They can connect directly to the Arduino without the need for any other electronics. These are a great alternative to the PING))) sensors from Parallax which cost around 5 times more. The HC-SR04 requires two digital channels on the Arduino which is its main disadvantage over the more expensive PING))) sensors which need only one. The SR04 sensors, when triggered, will emit a series of ultrasonic pulses and measure the time taken for the sound to reflect back. From this they will output a pulse with a duration proportional to that time. Knowing the speed of sound, it just takes some simple calculation to work out the distance of the obstacle from which the sound was reflected. There are a number of Arduino libraries for the SR04 sensors, but the one used here is an excellent one by Tim Eckel and is called NewPing. Using this library means that it just takes one line of code (after the setup) to get the distance in cm (or inches if you prefer) from any of the sensors. They will accurately return a distance reading from 2cm to 500cm with an accuracy of around 0.3cm. You can also limit the maximum distance if you do not need 5m and this will speed up measurement times as there is no need to wait for the return echo.

Motors and Drive System

The two back wheels are directly driven by some gear motors, that can turn independently so that steering is achieved by turning the wheels at different rates. The front wheels are just a pair of casters which move freely.

HC-SR04 distance sensorThe chassis for this robot is quite large and heavy because we intend to add much more to it later. This weight meant that the wheels should not be directly connected to the gearbox output shaft on the motor. Instead they were mounted on separate axles with a couple of bearings so that the weight is taken by them instead of the motor. If you want to replicate this part of the project, it could be done with a tiny robot as the Arduino and sensors are very small and lightweight.

diy Robot Motor EncoderTo the end of each axle is a rotary encoder. It was originally fitted to the motors shaft, but at a count of 64 pulses per turn, and a gearbox of 148:1, we felt that 9472 pulses per turn of the wheel was an unnecessary overhead for the small processor. The encoders were instead placed directly on the axle so that it would give 64 pulses per wheel rotation.

Any time the robot moves the wheel may slip slightly on the floor so this is an important consideration when using encoders to track the movement of the robot. To counter this problem, later versions will combine data from an accelerometer, magnetometer (compass), and the distance measurements with the encoder data to more precisely work out where the robot is and is moving.

Power and Wiring

diy Robot Fritzing layoutThe robot is powered by two 12V SLA batteries. One battery supplies power to the control electronics, while the other is used to power the actuators (motors). By having separate batteries, the high drain from the motor will not interfere with the accuracy of the sensors and control system. The battery for the control electronics feeds into a pair of voltage regulators (5V and 12V) so that the control electronics and sensors have the right voltage levels sent to them.

The power to the motors is controlled using a pair of LMD1800T H-Bridge drivers. They take 2 PWM signals from the Arduino, and two more for the direction of each motor. They also have an output for indicating current flow in each motor. This can be useful for detecting if a wheel is stuck as the current would increase significantly.

The diagram on the right shows the connections to the Arduino I/O ports. Connections for power are not shown for simplicity.

Source Code – Fuzzy Algorithms

The Arduino can be programmed in C# which is a simple and flexible language. In the first part of the code there are declarations for libraries, variables and constants that will be used later in the program. For this program the NewPing library is included so that the SR04 ultrasonic sensors are simple to use.

The main loop function will just be used to call other functions in the correct sequence. These functions are simply ReadSensors, AvoidWalls, SetMotors, and SerialDebug.

ReadSensors will ping all the sensors and store the measured distances in a set of variables. Later this function might also get the values from other sensors on the robot.

AvoidWalls is where all the numbers from the sensor readings are processed and the speeds for each motor are calculated. The algorithms used are known as ‘fuzzy logic’ because the relationship between the sensors and motors is continuously variable rather than any on/off conditions.

For example; To avoid a wall on the left of the robot, the speed of the right motor should decrease relative to the left motor, as it gets closer to the wall. This would have the effect of turning the robot away. The algorithms calculate an ‘urge’ to turn left or right, then these valuse are applied to the motor speeds.

newMotorSPD_L = basicVelocity + urgMotor_L + (urgTurn_R/4) – (urgTurn_L/2) + 60;
newMotorSPD_R = basicVelocity + urgMotor_R + (urgTurn_L/4) – (urgTurn_R/2) + 60;

Download the source code to see more.

When programmed in this way, the robot will simply stay still unless something tells it otherwise. If an object approaches it, then it will retreat from that object and try to maintain a distance from it. If you want the robot to drive around, then the value of basicVelocity should be set to a value above zero. This will give it a constant ‘urge’ to move forward while the algorithms will keep it away from obstacles. However, when moving like this, the robot can come to an equilibrium state when it is facing a corner. This is where the sensor values cancel out the basicVelocity and the robot will cease to move unless the obstacle changes.

SetMotors uses the speed values calculate in AvoidWalls to set the motor direction and PWM output values. It can also be used to accelerate the motors so that a soft start/stop is achieved. The rate of acceleration is determined by the value of urgFatigue which will add delays to the changing of the motor speed if this number is greater than 0. It is named urgFatigue as increasing this value will make the robot more sluggish and slow to respond. It should be noted that when accelerating the motors, delays are used and the sensor values are not being processed.

This system of urges and automatic obstacle avoidance will form the basis of a more advanced robot. Using serial communication, the urges will be manipulated by an external program running on a PC. The software on the PC will deal with more advanced processing such as mapping and route planning but will not directly control the motors. Instead it will simply calculate the relevant urges for the robot to move and then send them to the Arduino.

If you have any comments, questions, or suggestions, please add them using the button below.