Arduino + Radiation = ?

In this post I’m going to talk about some preliminary radiation tests I’ve been performing on a couple of Arduino Uno modules and present the story so far…

This shows one of the two test plates, with the Orange LED luminaire, 10 230V direct LEDs, an arduino+ prototype shield and a set of terminals for connection to the main test chassis.

A while ago I attended the awesome Lift’12 conference in Geneva. I met some inspirational people and got inspired to test some arduinos in a radioactive environment. I haven’t found anyone else doing this kind of thing, which isn’t surprising as general access to radioactive environments is fortunately quite limited. However, I’m lucky enough to work at CERN and we have plenty of interesting places to test things!

This is very much a first tentative step into testing the arduino’s performance under the influence of radiation – only two devices were tested, there is no control group and I’m only writing down what I did after the event. I’ve been working on an LED lighting test for about a year now with some colleagues and last time we had access to the test facility I persuaded them to let me add two arduinos (which I named Archie and Bob) to the test bench as cheap signal conditioners to monitor the current flowing in our LED samples. I did also check with my boss (a highly recommended stage of the process for anyone else feeling similarly inspired into testing things at work…).

Beyond the glare of the LED's you can just make out the black ABS enclosure with arduino & shield.

Each arduino (UNO, R2) was mounted in an ABS enclosure with a prototype shield mounted on the top. The shields comprise:

  • Homebrew radiation hard power supply (230V to 16ishV)
  • Screw terminals for the connection of terminals to the outside world
  • Miniature CT + burden resistor to measure current in the LED samples

This shot shows the prototype shield with the power supply and the CT measuring the current in the test LEDs.

The ABS boxes are mounted on steel plates approximately 40cms by 60cms, which also contain a set of terminal blocks (for connection to the main test chassis) and a couple of LED samples under test. I should stress at this point that the arduino isn’t an integral part of the test bench, just a cheap way for us to extract additional information.

The ‘homebrew’ radiation hard power supply is a very basic affaire, composed of a cheap PCB mounted 230V-12V transformer and a GBU8k glass passivated full bridge rectifier with an 800V breakdown voltage. The GBU8K has previously been tested at CERN and found to be a reasonably solid performer when subjected to radiation. This PSU is obviously extremely basic, providing only a wobbly DC voltage at about 14-16V with no load. This set of tests relies on the linear regulator onboard the arduino to step down the voltages to a smooth 3.3/5V level.

The CT is hooked up across a burden resistor to the Ain pins, as this is a test bench and I’m using some components which are sized to a full scale deployment (72 led’s instead of 2) the observed voltage is very low – which is where the signal conditioning of the Arduino comes in. The onboard ADC and DAC are used to sample the voltage across the CT several times, take the maximum measured value (in an effort to measure the peak current for the LEDs running on a 230V 50Hz supply), multiply it by a factor of 10 and then send an analogue output (0-5V) reflecting the multiplied value. The analogue output is sent for 5 minutes, followed by a 0V value for 5 minutes before the whole cycle is repeated and the current is re-sampled. Potentially this helps us check that the arudino can still output a 0 volt signal, that the internal clock is reasonably accurate and from the periodic change in output voltage we can rapidly conclude if it’s broken…  the signal also looks rather like a heartbeat, which is intrinsically pleasing (for me as an Engineer anyway!) to see.

This shows the daily heartbeat of one of the test benches, with operation for 1 hour per day in alternating periods of 5 minutes 'sample' and 5 minutes at 0V.

The justification for this is that it would be very hard to measure the raw CT signal (which is just a few mV, for a current of only a few mA in the LED’s) via the experimental infrastructure we have in place (over a kilometer of copper cables), without adding some sensitive and expensive amplifiers – which more likely than not would be rapidly destroyed by the radiation in the test environment. So in this case the Arduino gives us a cheap (<20 euro) alternative, indicating as a minimum that there is still current flowing to the LEDs, and as an added bonus we can monitor and evaluate the performance of both Archie and Bob as they soak up the rays!

So far (over a month into the ‘test beam’) both test benches are still functional, although some distinctive wobbles can be observed on the outputs of the DAC’s from both Archie and Bob. I was personally quite surprised that they lasted more than 1 day, as a previous test had destroyed a number of SMPS (switch mode power supply) within mere hours once the radiation started.

This is a close up of 1 hour of operation, showing the shape of the DAC output in periods of discrete 5 minute operation, interspersed with periods of a 0V output signal.

So far the conclusion is that the two arduino’s tested are still functional, after a 1 hour per day duty cycle within the radiation test area. As time goes on I’ll update this blog post with some more details about the specific type and levels of radiation experienced, plus a more scientific analysis of the outputs taken from the ADC’s. I feel obliged to point out that this is a very long way short of a formal ‘radiation qualification’ , which would require amongst other things components with a fully controlled provenance, a statistically significant sample pool, source code which tests the operation of (ideally) all the silicon within the arduino and peripherals, and of course a detailed scientific analysis of the results. But every journey starts with the first step and so far Archie and Bob are still marching down their radioactive road…

The source code (sorry it’s rather messy, but it works) running on the arduino’s is below:

/*
arduino radiation test code version 1
current monitoring for led sources within CNGS tunnel, CERN. 8/3/12
100:1 CT with four passes of wire (i.e. 4x amplification on current)

written very quickly and based on a bunch of examples by
David Cuartielles
& Tom Igoe

*/

int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 3;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor
int interimValue = 0;

void setup() {
// declare the ledPin as an OUTPUT:
//pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
// read the value from the sensor:

//init and first value read
sensorValue = 0;
interimValue = analogRead(sensorPin);
sensorValue = interimValue;
//start the acquisition process proper
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(123);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(137);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}  interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(123);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(137);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}  interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(113);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(123);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}
delay(137);
interimValue = analogRead(sensorPin);
if (interimValue > sensorValue)
{
sensorValue = interimValue;
}

//Multiply by 10. Typical measured values pre-start were 15-17 raw (150-170 with multiplication)
//then send this value out over the serial and the pwm ports
sensorValue = sensorValue * 10;
analogWrite(ledPin, sensorValue);
Serial.println(“I am alive and my name is Archie”);
Serial.println(sensorValue, DEC);
//now wait another 5 mins
delay(300000);

//send a zero for 5mins to allow measurement calib.
analogWrite(ledPin, 0);
delay(300000);

}

Advertisements
Tagged , , ,

6 thoughts on “Arduino + Radiation = ?

  1. This is great! … of course I don’t quite understand anything regarding radiation haha, I’m an enthusiast of the Arduino board and all the applications possible. I will follow up your post to see the results 😀

  2. segu says:

    very interesting informal way to test “mundane things” for “real” radiation. Stopped for any reason? No reports, other than first. Archie and/or Bob still alive? It would be very instructional to know.
    Thank you very much to let us mere mortals to know this

    • pingu98 says:

      Yes! Thanks for the feedback. Archie and Bob did eventually stop functioning after about a month of radiation exposure. I haven’t yet had chance to recover them from the tunnel… I will update it with the facts and figures of their performance when I have time!

  3. Schlenk says:

    Hi, nice test. Any idea how much radiation dose was collected and of which type?

  4. Christel says:

    Hi! I’m part of a university satellite team that will be sending a CubeSat running an Arduino Lunino into space in 2017. We are naturally very interested in the performance of the Arduino in radiation environments. I wanted to follow up to see if you ever did any more testing or more exactly quantified the results? Or if you know of anyone else who has done similar tests?

    • pingu98 says:

      Hi Christel,
      Best of luck, I still haven’t quantified the radiation dose before failure, or done any more tests. Generally the radiation environment in LEO isn’t as agressive as the environment they were put in as part of the test I did, so should be a positive indication for you. CERN is building a radiation test environment suitable for cubesats, though it isn’t a project I’m working on personally – if you gogle for CHARM, at CERN you should be able to find out some more. I’m not aware of anyone else doing this type of test, but you might also want to look up Hojun Song, who launched his own arduino based cubesat earlier this year (I think!). He gave a talk on the subject at the Lift 12 conference in Geneva.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: