User Tools

Site Tools


Automated Irradiance Chart Measurement Setup

Knowledge about the irradiance underneath a lamp on a larger area is very helpful in order to compare the size of the basking area with the size of the animal. However, measuring the irradiance underneath a lamp is a tedious and lengthy task. Frances Baines has a guide How to make Yourself an Iso-Irradiance-Chart on her website.

Around 2013-2016 I constructed an automated setup based on a Raspberry Pi mini-computer, a rail-system, stepper motors, a webcam and of course the meter (Solarmeter, Lux-Meter or other, even thermometer!). The software is written in python with use of the open-cv (computer vision) library. The setup moves a meter underneath a lamp and records the meter reading. The final intention was to have two modes of operation: In the (cheaper) horizontal mode an upright mounted meter is moved in a horizontal plane underneath the lamp. In (more expensive) vertical mode the meter is moved in a vertical plane underneath the lamp and at every position tilt the meter (one axis only), so that it points in the direction of the maximum reading.

The current setup is working in horizontal mode, but due to time constraints, it has not made it to the level I wanted it to be, yet. I will surely be working on it at a later stage. If you would like to collaborate, please contact me:

Description of the setup

Stage with meter

The Solarmeter is housed inside a cardboard box that shield the meter's display from almost all external light. A hole in the box allows light to hit the UV sensor. Inside the box, the LCD display of the Solarmeter is illuminated by a white LED. A webcam is mounted inside the box and takes photos from the display which are then analyized by the software to read the numbers on the display.

I chose this method using a webcam in order to be able to use the same meters as other people. There exist meters that have a direct data interface and are connected to a computer by cable. However, these meters are different to the meters others are using. It might also have been possible to open the Solarmeter and attach such cable myself. But I decided that the webcam method is more flexible and does not bear the risk of damaging the meter.

Rail System

For the horizontal and the vertical movement the stage with the meter moves on a rail system made of castor wheels (German: Kastenrolle) and aluminium L profiles. For the horizontal movement the aluminium L profiles are glued to a wood plate. The stage is driven by toothed rails. For vertical movements the stage is made from aluminium profiles which are advertised to built terrariums ( The vertical movement driven by a threaded rod.


I use stepper motors, because these motors intrinsically know their position and no measurement device is necessary.

For my first experiments I used the 28BYJ-48 motor which costs less then 2,50 € including ULN2003A driver board and (even more important) lots of tutorials are available how to connect this motor to a raspberry pi. This 12 V 2-phase stepper motor has a pull-in-torque of 300 gcm (2.94 Ncm) at a rate of 500 pulses per second with a step angle of 5,625°/64 = 0,0879°. For a full rotation by 360° this motor needs 4096 steps (which can be divided by the 8 sub-steps to switch on and off the 4 magnets, 4096/8 = 512). This step angle at a rate of 500 pps means a rotation speed of 500/s x 0,0879° = 46,8°/s. It can move and hold a torque of 300 gcm, which could be a weight of 30 g attached to a 10 cm lever arm. It is a wonderful motor for first experiments and is just strong enough for the horizontal movements.

The toothed rack has 80 teeth per 25 cm and the pinion has 20 teeth. A 360° rotation (520 8-steps) moves the pinion 20 teeth which is 25cm*20/80 = 25/4 cm = 6.25 cm. So for 1 cm, 520/6.25 = 82 8-steps are needed.

Sadly, the motor is not fast enough for the vertical movement and not strong enough for the rotation of the meter. The solarmeter has a height of 10 cm and weight (including battery) of 125 g. Assuming that the weight is equally distributed along the height of 10 cm, the torque is 0.5 x 10 cm x 125 g = 625 gcm. With unfavorable weight distribution the torque will be up to 1250 gcm. Adding the weight of the webcam and the holder the pull-in-torque of the motor for rotating the meter should be at least 2 kgcm (19.6 Ncm).

An M6 screw thread has a pitch of 1.00 mm. To move the setup in height by 10 mm in less than 10 seconds, an angle of 360° per second is needed. Thus the motor's rate (pulses per second) multiplied with the step angle needs to be at least 360°/s - (important!) at the required torque to move the screw. The ULN2003A has 500 ppm x 0,0879° = 46,8°/s which is also not at the torque needed.


The software is a command line python program. At first it asks the parameters of the measurement like lamp, distance to the lamp, size of measurement area, type of meter, …, then the meter is moved underneath the lamp and the irradiance measured at every point. In horizontal mode the meter moves in a horizontal x-y-plane underneath the lamp. In vertical mode, the meter moves in a vertical x-z-plane and the meter is rotated towards the lamp at every point. The measured intensities a written to a data file which can be further processed in excel or any other program. Also a graph of the irradiance is created and saved together with the data file.

Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website. Datenschutzerklärung und Erläuterung der Cookies


Enter your comment. Wiki syntax is allowed:
   ___  __  __   __  ___   ____     __   __ __  _____   ___ 
  / _ | \ \/ /  /  |/  /  /  _/ __ / /  / //_/ / ___/  / _ )
 / __ |  \  /  / /|_/ /  _/ /  / // /  / ,<   / (_ /  / _  |
/_/ |_|  /_/  /_/  /_/  /___/  \___/  /_/|_|  \___/  /____/
mess/irradiance_setup.txt · Last modified: 2019/02/23 16:34 by

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki