Final Outcome – Ferrofluid with weaker magnets

After having problems with the first magnets I used being too strong, I ordered a pack of 10 weaker magnets to be delivered next day. The good thing about the magnets I ordered is that they are very thin and can be stacked on top of another to create more strength if needed. At first I just tried out the system with just 1 magnet on each end, but this didn’t do a lot in the way of spikes in the fluid, although the good sign was that the motor was still spinning even with the magnets close to the fluid. I then jumped ahead and stacked another two on top of each end, this produced more of a spike when next to the liquid, however it still made the motor jitter and get stuck (first two clips in video below). So I went back down to two magnets on each end, this was the perfect compromise as although the spikes it created weren’t as impressive as when I used the bigger magnets, there were still visible spikes and the motor would also spin which is what I was not achieving before.

(Ferrofluid is very hard to clean so please excuse the dirty perspex box in the video!)

Although the motor is still a little jittery in some places and the sensor sometimes throws out some random data, I am very pleased with how hard I have worked to finally get an outcome close to what I had imagined. The main thing I am pleased that worked is the Arduino circuit with the sensor and motor, as this is what I had spent a lot of time on with coding and wiring. If I hadn’t managed to get the ferrofluid to work today I still would have been happy with using the LED’s as my final outcome, because all I my intention was, was to build an installation using a sensor as the mode of interaction, with some kind of visual display as an output, and this is what I have created.


Building the installation and testing

Today I build my installation using the resources I could:

  1. I started off my using a rubber battery end protector which fitted the point of the motor perfectly.
  2. I then glued two wooden coffee stirrers together and affixed them to the rubber battery protector.
  3. From this I then trimmed the wood so it would fit in the base of the perspex box I bought.
  4. I then attached the magnets to each end of the wooden stirrers.
  5. I finally attached the whole thing into the point of the motor.

This was the basis for the mechanical part of my installation. The weight of the magnets made the base of the motor struggle a little, but I knew all I had to do was secure it in place for it to work properly again.

I then had to construct the physical form of my installation, I already had the perspex box but I needed something to raise it off the table to be able to put the motor under, so I asked around at uni and found a large block of polystyrene which i cut up into even blocks and put under each corner.


(A little make-shift I know, but it did the job!)

The video below shows the process after this:

The first clip shows everything working fine, I used another section of polystyrene which already had a hole in it the perfect size for the motor to be held in. I taped this to the table so it would not move and jitter, meaning the only thing to move would be head of the motor. So everything is working, until I put the ferrofluid into the container. The attraction between the magnets and the fluid was too strong for the motor to continue turning. The motor struggled to turn but every now and then it would complete a full rotation.
I tried adding on an extra bit of cardboard on top of the magnets so there was a greater distance between the magnets and the fluid, this helped a little bit and managed to see a few rotations, but I was still not getting the outcome I was expecting.

I then decided to change the set up, and moved to a different table. This time I put the motor and the magnets underneath the table and the box with the fluid on the top. The sensor, Arduino and battery rest on the lower table, while the motor with the magnets is closely underneath the table, resting on the polystyrene. I had a slightly better outcome from this as there was more occasional rotations, but I still did not have the outcome I was wanting.



The video shows how the motor and fluid was moving when no one was interacting with it – it would jitter and slowly move, then sometimes rotate. It then shows me interacting with it up close – when the motor is supposed to be turning fast, it gets stuck, then when I move out the way (at 1:30) it continues its rotation. This shows that when it is meant to be moving slower, it has the time to move slowly, but when it is meant to be turning fast, it gets more stuck and doesn’t move.

The only two possibly solutions I can think to fix this problem are:

  1. A bigger, more powerful motor
  2. Weaker magnets

So within the time-frame, I am not going to be able to get a bigger motor as this would require a change in the coding and they are also very expensive. So I am going to order some weaker magnets and try again to see if it will make a difference.

Challenges along the way

Since starting to put together the electrical elements and the code for the Arduino, I have had numerous challenges that have held me back. Starting off with the Stepper motor:

I needed to use a stepper motor as I needed a 360 degree continuous rotation, rather than a servo motor which is not a continuous rotation. I also needed a stepper motor powerful enough to pull magnets with, so I went for the bi-polar 12V motor. The problem with this is that the Arduino can only handle 5V, so all my attempts to make the motor work through the Arduino were unsuccessful as there wasn’t enough power. So I tried adding more power using a 9V battery. I went back to basics and used an LED to test that the circuit I was using with the battery was working:

(Stupidly didn’t get the battery in shot but it was attached to the yellow and orange wires to the right of the shot.)

I then tried switching in the stepper motor instead of the LED, but I could not get the wiring right to power it, and it had not been documented anywhere online to help me. After a lot of research it was clear that most stepper motor examples used some sort of motor shield or driver. So I have ordered in a shield and a driver to try both of them out. I would say that one of my main difficulties has been trying to find help online, as I am a first-time user for Arduino I was hoping to find tutorials and simple diagrams for wiring, however for the electronics I was hoping to use there were not that many. I understand a lot of the code from my knowledge of the Processing language, but it is the wiring which I needed to understand. Because there are many different types of stepper motors, it is hard to find help specific to each motor. However I am hoping that once I get to use the motor shield, it will be basic to understand and follow instructions to get the motor spinning. I will then be able to progress with my idea and incorporate the input from the sensor.


Ferrofluid and magnets arrived – it works!

For my final outcome I ordered some Ferrofluid and 2, small, strong Neodymium magnets. It came with a petri dish and pipette. This is a quick post showing it working.


I put the petri dish on top of my glass desk and used the magnet from underneath the glass. The thickness of the glass meant the magnet didn’t get too close to the fluid and made the perfect spike form. If the magnet gets too close to the fluid it does not create the spikes as they have such a strong attraction. I will need to bear this in mind for when I put my final outcome together as there will need to be a small distance between the magnet and the liquid for the spikes to be able to form.

My next step is to get the stepper motor I ordered working, and then I will be able to link the input of the Ping sensor to create the speed change in the motor.

First Attempt at making the motor work

I have been playing around with servo motors and trying to get them to turn with the Arduino using the Servo Knob code example. I also made the Ping sensor work using the Ping code example, so all I need to do is combine the two codes – taking the important elements I need from each code and put them together.

  • const int pingPin = 7;
  • #include <Servo.h>;
  • myservo.attach(9);

These are some of the main aspects of code which I need to include for the Ping sensor and the servo motor to be recognised and included in the sketch.

The video above shows the motor turning depending on how close or far away my hand was. The Ping sensor flashes and the faster the flash the closer it is to an object.

The servo motor only has a 180 degree turning cycle, so when it completes its half rotation clockwise it turns back anti clockwise. For my final outcome I am wanting the motor to be a full rotation motor, so I am going to have to invest in a stepper motor which is a full 360 degree rotation. I will also have be using the SpeedControl example rather than Knob as I am wanting the motor to turn faster or slower depending on the input from the Ping sensor. This is what my next task is going to be.

Revised Ferrofluid Idea

After researching into the Arduino’s capabilities, it is not going to be possible to have an electro magnetic current running through as there is not enough power in the Arduino and it could cause a lot of damage if completed wrong. So my revised idea is to have a motor with magnets on the end of rods, and a Ping sensor that determines how close or far away someone is which will change the speed in which the motor rotates.


(Please excuse my drawing skills!)

I feel that although this is still going to be challenging for me as I am new to Arduino, it is going to be one of the simplest approaches I could do with the outcome being very effective. The audience will have to engage with it in order for it to do anything, and I feel the use of ferrofluid will be very new to most people.



Arduino Uno

For what I am hoping to achieve, I am going to need to use an Arduino board to create the installation I am wishing to make. Arduino is an open source electronics platform with simple hardware and software. The Arduino board I can have access to at University is the Arduino Uno board which looks like this:Arduino_Uno_-_R3The Arduino Uno board allows you to upload sketches onto the board, and “receives input from many sensors and affects its surroundings by controlling lights, motors and other actuators”. The Arduino software uses a code similar to that of Processing, telling the Arduino what to do by programming the code and uploading it onto the board.

This is going to be the best thing for me to use as I am wanting to make a free-standing installation using ferrofluid and magnets. I have been looking into the kinds of things I can use with the Arduino to make it interactive, and I think a PING sensor would best suit my idea.


Use a PING sensor on the Arduino Uno to determine how close or far away someone is. Rig up an electro-magnetic current through the magnet and other screw-like objects to create ferrofluid sculptures. The sensor would determine the strength of the current running through the magnet, so if no one is near nothing will happen, but if someone wishes to engage with it then the current will kick in and the sculpture will be formed.



SparkFun Electronics – Arduino Uno R3.jpg –


Ferrofluid is a magnetic liquid, that when it comes into contact with a magnet, it forms small spikes, as shown in the image below.

Ferrofluid_Magnet_under_glassI have been studying and putting to use ferrofluid for a while and I am always intrigued by it and the forms it creates. So this is why I would like to be able to use it in my final outcome, and incorporate an interactive form into it to entice audiences to engage and learn about it.

Ferrofluid_in_magnetic_fieldThere are a few downsides to using ferrofluid; as you can see from the image above, it stains surfaces very easily, leaving a horrible brown colour behind. Another downside is that the ferrofluid must not come into direct contact with the magnet, otherwise you would not be able to separate them after. However these can be solved if great care is taken, and I think it could create a very interesting installation.

This is what it looks like when ferrofluid is put onto other metal objects with the magnet next to them, and also what ferrofluid is like when it is in water. An electro-magnetic current can also be passed through magnets, so the level of current going through the magnet can be changed by altering the electricity going to it. This could be a very interesting idea what I would like to explore further before I come to my final decision on my outcome.


Gregory.F Maxwell – Ferrofluid Magnet Under Glass.jpg –

Steve Jurvetson – Ferrofluid in magnetic field.jpg –