After implementing and testing the prototype of our Ultraviolet Disinfection Robot successfully, we were able to commercialize several autonomous UV robot designs. To help our country in this pandemic situation, as a team, we decided to donate our prototype to a government institute to help with their disinfection process. Taking this step forward, our team has designed an improved version of our previous robot by giving it a sophisticated look and adding more features. The intention of this is to donate a few more robots fulfilling our duty to help the public. Considering the large number of feedbacks that we received for our previous robot after making it opensource, we have decided to make our improved version opensource to help others as well.
Further, the market price of most robots exceeds 50, 000 USD. We have optimized our design to reduce the cost to make the selected components affordable by even for a developing country. For this design, we have spent only about 1850USD to cover all the expenses.
If you need to understand some basics of Ultraviolet Germicidation, please go through our previous UV robot project.
2. OverviewThe UV Robot is capable of irradiating Bacterial, Fungal, and Virus strains. However, due to the COVID-19 pandemic, the main attention has to be given to that particular strain of the virus.
UV-C fluorescent lamps are used for this robot as the disinfection source following the UVGI procedure of disinfection. Ultraviolet germicidal irradiation (UVGI) is a disinfection method that uses short-wavelength ultraviolet (ultraviolet C or UVC) light to kill or inactivate microorganisms by destroying nucleic acids and disrupting their DNA, leaving them unable to perform vital cellular functions. UVC is absorbed by RNA and DNA bases and can cause the photochemical fusion of two adjacent pyrimidines into covalently linked dimers, which then become non-pairing bases.
This robot can be controlled manually using the wireless ground controller system. This allows the user to,
- Navigate the robot (Forward, Backward, Turn Left, Turn Right)
- Turn on and Off UV lights
- Observe the view from the robot using its fisheye camera
- Get status notifications from the robot.
The robot uses a differential drive system with two DC motors. Four spring-loaded caster wheels have been used to balance the robot.
This robot is fully battery powered. The battery will power up the DC gear motors, controller circuit, and the AC inverter which will be used to power up the UV lamps. The basement of the robot has space for a large 200Ah gel battery. The inverter used in this robot has an inbuilt charging unit that uses the domestic AC power line to recharge the battery avoiding the effort of using any other specific method of charging.
The basement of the robot has two doors to provide access to internal components.
The controller circuit gets feedback from 8 ultrasonic sensors mounted on the robot; 2 sensors facing each main direction to detect obstacles in 360 angled area. When an obstacle is detected, the robot will suddenly stop at the position. Even though it gets a command to move further, it will not proceed while the obstacle is upon its way.
An OLED display and a buzzer speaker have been used for the robot to facilitate the system observations and notifications. The buzzer speaker triggers different alarms in three situations.
- When the UV bulbs are active
- When the battery is low
The OLED display shows the following information,
- Battery voltage and Low battery notification
- Total lamp hour count
A power switch, an OLED display and an emergency stop switch have been fixed to the rear panel of the robot.
The UV tower has space for 16 fluorescent UV lamps. The tower has been mounted on the base of the robot in the shape of a cylindric tower to obtain 360 angled area of coverage. The center of this tower has a hollow mirror steel tube that reflects the UV rays to use them effectively since stainless steel is the commonly used reflective material for commercial UV systems.
The middle of the hollow tube contains mounting brackets for electronic ballasts (power supplies for UV bulbs). Four vertical steel rods are placed around the UV tower as a protective barrier for UV bulbs.
The top of the UV tower has a container with a removable cover. This has the fisheye camera, video transmitter, PIR sensors, and power connectors for UV bulbs. Thus, replacing a UV bulb is a 2-minute task and doesn't require a trained person.
When the robot detects a human presence through the PIR sensors within 5 m of a radius area, the control circuit switches off the UV lamps to avoid human contact with the UV rays. To cover the 360-degree area around the robot, 4 PIR sensors have been placed with 90-degree separations.
For our implementation, we have fixed only 8 * 120W UV bulbs and used an 80Ah gel acid battery which powers the bulbs for 45 minutes continuously. Two power steering motors have been used to drive the robot as it contains electric clutch switches. This helps to push and move the robot when it is switched off.
Following is the full design requirement document of the robot.
The UVC dose calculation is shown in the following document. Here, the dose for only one lamp is included. Our design is capable of accommodating, 16 bulbs. For this version we have used 8 bulbs.
3. DesignWe have followed two design stages for this design. Following is the initial design and its component placement. Only a single change has been done to this design in the second stage which was to add spring-loaded caster wheels.
The UV lights are illuminated using the electronic ballasts 33 in Figure 5 that are mounted in the hollow core of the reflector which is shown in Figure 7. A collective of vertically mounted platforms 13 are mounted supported by the thread bar 32 which extends to the bottom frame 22 to prevent motion of the ballasts 33 and with the plate 38 as the top cover to fix the collective of platforms 13 and the support 32 to the camera assembly’s bottom.maneuvering
Camera assembly 1 supports the ballast top support 38 and houses the wires from the UV lights 3 and the cooling methods for the camera 9. Camera 9 is mounted at an angled orientation to capture the UV robot’s front body as a reference point for the user’s ease of remote maneuvering of the robot.
The four steel bars 2 which are placed 90 degrees apart from each other function as a protective barrier to protect the UV lights 3 from an impact. As well as a support to the UV lights from the top. Top support for the UV lights 8 has extruded that mount the steel bars 2 which is fixed to the steel plates 18 and 17.
On the top front steel plate 17, Switches 5(a), 5(b), and 5(c) are mounted for Emergency stop, Robot Power, and UV power respectively.
Robot's internal is covered with the top front plate 17, top rear plate 18, and the middle plate 21 from the top. From the sides, covered with steel plates, and the hinged from hinge 20(b), plate 7 act as an access point to the control system of the robot from the front, and hinged from hinge 20(a), plate 15 act as an access point to the battery 29. The plates 24(a) and 24(b) cover the bottom of the robot as shown in Figure 3.
The Ultrasound sensors 10 are mounted around the outer shell of the robot to avoid obstacles automatically while in the move.
UV robot is differentially driven using two actuated wheels 11(a) and 11(b). The single Motor assembly along with the wheel is shown in Figure 8. Article 40 is used to mount the flanged bearing 39. 37(a), 37(b), 37(c) brackets are used to mount the motor 16(a) and 16(b) to the bottom plates of the UV robot 24(a) and 24(b). Two caster wheels 12(a) and 12(b) are mounted in the front and back of the UV robot respectively. The caster wheel mechanism is shown in Figure 6. Caster wheel 12(a) is mounted to the frame 22 with the plate 23(a). The wheel is mounted to the inwards offset plate 30(a) with the spring 26 as a damper and fixed with the check nut 27. This will dampen the impacts on the system in case of a bump in the path of the robot.
Platforms 35 and 34 is to rest the control system and the battery inside the robot shell, respectively.
Scalability
This mechanical design supports adding, many functions to the robot. In our case we have used manual navigation using a ground control station. But the design has provided space to mount cameras for vision-based autonomous navigation. Further, line reading sensors or LIDARs can be added to the basement of the robot according to the requirement.
4. AssemblyThe structure and the enclosure of the robot have been made of the following materials.
- 1-inch square metal bar
- 1.5mm Mirror Stainless steel sheet
- 1.5mm - 4mm MS sheets
1-inch square bar is used to make the structure of the basement shown in Figure 9. The mirror stainless steel sheet is used to build the UV reflector.
All other metal sheets were going through a cutting process using a laser cutter, bent and welded or fixed using nuts and bolts. The DXF files used for laser cutting are uploaded to the attachments section and sorted according to the sheet thickness.
The following exploded views will help to understand the assembling procedure.
Most parts of the basement are welded together as in the below picture. The center thread bar with ballast mounts (Figure 7) is connected to the basement using nuts. The mirror steel cylinder is then lowered from the top until it reaches the large center opening of the basement. The top plate (8 in Figure 2) is connected to the top of the thread bar using nuts. This top plate and the basement are connected through 4 stainless steel rods (2 in Figure 1), with both ends tighten using nuts. These act as reinforcement bars for the UV tower and as a protective cage for UV bulbs. The top container is placed on top of the plate 8, and fixed to the thread bar using nuts. The top cover of this container is fixed using 4 screws to allow the user to easily remove and change the bulbs.
The following diagram shows the block diagram of the power section of the circuit. The following are some key points to highlight in the design.
1. FET based power switch
Both motors draw a comparatively large current of several amperes. If the power supply to the motor drivers is controlled through a mechanical switch, it needs to withstand the high current without damaging itself. Rather than using an industrial-grade high current switch, we have used a FET based switch to turn on/off the circuit with a small switch.
2. Inverter
A commercially available inverter has been used with an inbuilt battery charger to reduce the complexity of the circuit. The inverter charges the battery when it plugs to a domestic powerpoint.
3. 12V-5V buck converter
A commercially available buck converter module has been plugged to the circuit board to reduce the complexity.
The battery is connected to the main power switching circuit through an Emergency stop button which is not shown in this diagram.
The following block diagram shows the microcontroller and sensor section of the circuit. NRF radio module acts as the main communication method between the robot and the ground control station. Since there are 8 sonar sensors, a separate Arduino Nano board has been used to read the sensors. The obstacle status around the robot is transmitted to the main STM32 microcontroller using I2C communication.
The on/off switch of the inverter is hacked and connected to the onboard relay thus, the UV lights can be controlled from a 5v signal input from the microcontroller.
A voltage divider has been used to monitor the battery voltage.
12V and 5v power lines, 4 PIR signal wires from the circuit are brought to the top of the tower through the hollow space of the tower.
The rated current draw of the motor driver is 43A. This overpowered driver has been selected to avoid excessive heat generation when operating for longer periods.
Making the PCB
The designed PCB is a double layer PCB. For this robot, we thought of doing a DIY PCB rather than waiting to get the PCB manufactured and shipped. For this, we used a single layer copper board and manually routed the paths in the top layer.
The Bill of Materials for the circuit is attached under the attachment section.
This circuit board has provided extra 5v and 12v power ports to power up the camera, video transmitter, and PIRs which are on the top of the UV tower. When we turn on the main switch, the camera and the transmitter starts transmitting the video feed.
The clutch mechanism of both motors requires a 12V supply. This was given through a 12V power connector of the circuit board.
6. Ground Control StationWe have modified the GCS which we used to test our prototype. The GCS mainly includes the following components.
- Joystick
- Arming Switch
- UV Switch
- 16X2 I2C RGB LCD Display
- 7" TFT Color Monitor
- 5.8GHz Video Receiver
For the joystick, we have selected a 2 axis potentiometer joystick. The corresponding potentiometer changes its resistance when the joystick is moved in the corresponding direction. In the schematic, this has been shown using two potentiometers.
TFT color monitor works using a 12v supply, thus we can add this to a portable GCS. the 5.8GHz receiver is connected to the monitor and tuned it to the correct band of the video transmitter.
16x2 RGB LCD is used to inform the operator about the following situations.
- Obstacle detected in any direction.
- Human detected.
- Low Battery
In case of occurrence of any of the above events, the robot will transmit the message to the GCS and the LCD displays the message while changing its backlight color.
The arming switch has been used as a safety feature to avoid any commands accidentally given by the user. In order to move the robot or turn on UV lights, this switch needs to be turned on.
The battery of the GCS is made with 18650 battery cells. A 12V battery pack has made with a 3S Battery Management Circuit module to control the charging and discharge voltages. A 12V, 5A SMPS power supply has been connected to the BMS circuit as the charger so that the user can charge the GCS from a domestic powerpoint. The voltage of the power supply is adjusted to 12.6 V using its onboard variable resistor which is a common component on SMPS packages.
The total project includes 3 microcontrollers.
- Arduino Nano - GCS
- Arduino Nano - Robot
- STM32 - Robot
Arduino Nano - GCS
The two potentiometers are read as analog inputs and switches are read as digital inputs.
front_pot = analogRead(front_joystick_pin);
side_pot = analogRead(side_joystick_pin);
robot_arm_switch = digitalRead(arming_switch_pin);
uv_switch = digitalRead(uv_switch_pin);
c1 and c2 variables are used to encode the input commands given by the user. c1 is for navigation commands and c2 is for UV light commands.
if (side_pot > 800) c1 = 400; //turn left
else if (side_pot < 200) c1 = 300; //turn right
else if (front_pot > 800) c1 = 100; //go forward
else if (front_pot < 200) c1 = 200; //go backward
if (uv_switch == 1) c2 = 100;
else c2 = 200;
These values are sent to the robot through the NRF module. Robot will decode the message and understand the received command. The robot sends notification messages using the same method. A single ASCII value has been used for this. The cin variable is used to store the received messages, decode using the reference table and display on the LCD.
//obstacle detected in front
if (cin == 10){
lcd.setRGB(100, 100, 0);
lcd.setCursor(0, 1);
lcd.print("Front blocked ");
delay(400);
}
Arduino Nano - Robot
The primary task of this microcontroller is to detect obstacles and communicate the obstacle status to the main STM32 microcontroller through I2C.
The microcontroller triggers each sonar at a time and saves the ping time values in an array. These time values are then converted into centimeter values.
cm[currentSensor] = sonar[currentSensor].ping_result / US_ROUNDTRIP_CM;
The obstacle status around the vehicle is stored in an array of length 4. For this, two sonars in each direction are compared with the threshold distance value for obstacle detection and the obstacle status is stored in the array.
//Represents obstacle status in front,left,rear and right respectively.
//0 for obstacle free. 1 for obstacle detected.
int obstacle_array[4] = {0,0,0,0};
Only this array is communicated to the STM32 via I2C.
Wire.beginTransmission(4);
for (int i=0; i<5 ; i++){
Wire.write(obstacle_array[i]);
}
Wire.endTransmission();
STM32
The STM32 has an initialized even to trigger automatically when an I2C message is received from the Arduino Nano. This function will save the obstacle status in an array.
void receiveEvent(int howMany){
int i = 0;
while(1 < Wire.available()){
int c = Wire.read();
obstacle_status[i] = c;
i++;
}
}
The
battery voltage is measured once in a minute using the voltage divider circuit. To smoot the voltage reading, the mean value of 10 readings are considered.
//measure battery voltage once in 60 seconds
if ((millis() - t1) > 60000){
for (int i = 0; i<10; i++){
v_sense = v_sense + analogRead(bat_voltage_pin);
}
v_sense = v_sense /10;
v_sense = (v_sense/ 1365 )*11;
v_sense = v_sense + 1.2;
t1 = millis();
}
Total illuminated time of UV lights is counted and stored in EEPROM. These values are read back from the EEPROM at the system initialization.
LAMP_HOUR = readFromEEPROM(lamp_hour_addr);
LAMP_MIN = readFromEEPROM(lamp_min_addr);
The following function calculates the illuminated time and writes to the EEPROM.
if (uv_on_flag== 1) {
if ((millis()-t4) > 60000) {
LAMP_MIN = LAMP_MIN + 1;
t4 = millis();
if (LAMP_MIN == 60){
LAMP_HOUR = LAMP_HOUR + 1;
LAMP_MIN = 0;
}
//Write to EEPROM
writetoEEPROM(lamp_min_addr, LAMP_MIN);
writetoEEPROM(lamp_hour_addr, LAMP_HOUR);
}
}
The voltage and lamp hour values are displayed on the OLED screen.
//display battery voltage
display.setTextSize(1);
display.setTextColor(WHITE);
display.println("Battery - ");
display.setCursor(55,8);
display.print(v_sense);
display.setCursor(80,8);
display.print(" V");
//display lamp hour count
display.setCursor(0,23);
display.println("Lamp Hrs - ");
display.setCursor(55,23);
display.print(LAMP_HOUR);
Make sure the emergency switch is unpressed before turning on the power switch of the robot. After it turns on, the robot will take 30 seconds for the sensor initialization procedure (Calibrating PIRs with ambient rays) and give a short beep when it is done.
Make sure both UV and Arming switches are turned off before turning on the GCS. After turning on the GCS, it will start showing the robot's view through the TFT monitor and system notifications through the LCD.
The arming button needs to be turned on to make user inputs active. This avoids the user accidentally moving the robot or turning on UV lights.
The joystick can be used to move the robot forward, backward, turn left, and turn right. If there is an obstacle closer than 30cm of the moving direction, the robot will stop moving and a notification will be shown on the GCS screen. The robot will not move to the direction in which the obstacle is detected thus, the operator has to move the robot to any other direction or remove the obstacle.
After turning on UV lights, the robot will trigger an alarm to notify nearby people. If the robot detects a person through its PIR sensors, it will shut off UV lights and notify the operator through a notification message. When the person moves away from the 5m safe radius it will automatically turn on UV lights again.
The OLED screen of the robot shows the battery voltage and low battery notification on both display and buzzer to notify the user to charge the battery. Further, the screen shows the total functioned hour count of lamps to get a rough idea when to replace the lamps.
When the robot is turned on, it cannot move manually by pushing since motor clutches are active. For this, the main power switch needs to be turned off.
Single-ended 4 pin UV bulbs have been chosen for the robot to make the wiring and replacing easier.
9. Test SetupIn order to verify the disinfection process, we have conducted a series of lab testings in collaboration with the Microbiology department of a reputed local university. These tests were done for the prototype of our first robot which was made open-source and an extended test was done to the commercial version.
Usually, viruses are tested under controlled laboratory environments which are known as level 3 bio-security labs and this process is associated with a huge cost. As a solution for this, most disinfection processes are tested for substitute microorganisms which are more stable than the desired virus. In our case, we have used Escherichia coli bacteria since it is considered as a much more stable microorganism than viruses. If our device can inactivate this bacteria, it is able to inactivate most of the viruses.
This microorganism is cultured in dishes and incubated for 24 hours to grow their colonies. Then culture plates were divided into 5 groups. Each group was intended to expose for the UV light for different time periods which are 1, 3, 5, 10, and 15 minutes. The UV source is placed in the middle of a 4m x 3m room and culture plates are placed at different locations around the robot according to the pre-planned test setup. For each time group plates are placed at the same locations.
After the exposure to the UV light, all plates were incubated again for 24 hours and the number of grown colonies was calculated. According to the results a 99.997% disinfection rate was achieved during the considered time.
The following images and the lab report which is related to the prototype robot help to understand this procedure furthermore.
Please consider that the following is not the full laboratory report and this part is only to understand the procedure.
This is a teamwork of 6 members. The team has spent about a month on the design and a month for manufacturing two units. Two robots have been donated to government institutes. Following is our team.
- Tharindu Suraj Chathuranga
- Charith Jayaweera
- Iresh Jayawardana
- Sandali Jayaweera
- Sachith Kasthuri
- Pasan Liyanaarachchi
Comments