Manual 1

User Manual: Pdf

Open the PDF directly: View PDF PDF.
Page Count: 16

DownloadManual 1
Open PDF In BrowserView PDF
Sensor Development, Spring 2018
Lois Lee, Srilekha Vangavolu, Hannah Si
May 18, 2018

Abstract
The goal of the Sensor Development subteam is to create sensors that monitor water quality during the water
treatment process. The subteam has previously developed particle concentration and turbidity sensors,
including a fluidized bed solids detector for in-lab experiments conducted in piping. This semester, the subteam
is designing a submersible solids detector for measuring turbidity and sludge blanket height in sedimentation
tanks. The aim is to create a turbidimeter and sludge blanket height detector that is more affordable, easier to
fabricate, and more usable than those currently used in the field. Two designs involving an endoscope and
photodiode, respectively, are being compared for accuracy and usability.

Introduction
The Sensor Development subteam creates sensors to monitor water quality in various stages of the AguaClara
wastewater and drinking water treatment processes, for purposes not limited to facilitating research, gauging the
efficacy of the treatment process, and detecting problems in the treatment process. The subteam's first project
was to develop a gas measurement sensor that would improve experimentation in the Anaerobic Fluidized Bed
(AFB) Reactor and Upflow Anaerobic Sludge Blanket (UASB) wastewater subteams (Fall 2016 report). Afterward,
the subteam worked on a fluidized bed solids concentration sensor to measure clay particle concentration in the
high rate sedimentation (HRS) process for drinking water treatment. Last semester's team refined the fluidized
bed solids concentration sensor, finishing with a working and reliable sensor (Fall 2017 report). This semester,
the subteam is building a submersible solids concentration sensor to measure turbidity and the height of the
sludge blanket in the sedimentation tanks of drinking water treatment plants.
This semester, the Sensor Development subteam is implementing two new designs for a submersible solids
concentration, or turbidity sensor based on the two ideas recommended by our advisor and by other AguaClara
members. The primary design features an endoscope and visual processing in a mobile application, providing an
intuitive and appealing user interface. In the second design, a pre-developed analog turbidity sensor is
interfaced with a microcontroller, a system that is easier and cheaper to implement but provides a difficult user
interface. The end goal of both designs is to provide the treatment plant operators and members of other
subteams with a more affordable, easily used and maintained, and instantaneous method of not only
determining the height of the sludge blanket, but also measuring the turbidity of the sedimentation tank fluid at
varying depths.

Manual
Product Details
Mobile Application-Processed Endoscope (MAPE) Turbidity Sensor
The mobile application-processed endoscope turbidity sensor encompasses three main physical components: 1)
the endoscope, 2) an expandable ruler system, and 3) a mobile device, such as a smartphone, provided by the
user. The sensor system also contains one software component: a mobile application (on the mobile device), that
processes and displays data from the endoscope and interacts with the user.
1. Endoscope
An endoscope is a type of borescope, an optical instrument that is typically slender, illuminated by built in
lights, and attached to a long cable, making it suitable for viewing inside otherwise inaccessible places. An
endoscope specifically was chosen for this turbidity sensor for its small size, accuracy, water resistance,
and device compatibility.

Figure 1. This endoscope purchased from Depstech® features a 5 meter-long semirigid cable, a 2.0 MP
camera ringed with adjustable LED lights, and a type-c USB end with complementary USB and micro-USB
extensions. See Special Components for more details.
The role of the endoscope is to capture images of the sedimentation tank fluid at certain depths. The
images will be lit by its light source, a ring of LED lights around the camera lens. To restrict its view to such
depths, the endoscope is accompanied by a non-reflective material, such as matte rubber, fixed no more
than an inch in front of its lens. The turbidity of the fluid is thus measured by intensity of light reflected back
to the endoscope due to the presence of suspended solids. In fluid of low solids concentration, the
endoscope should detect minimal reflection of light.
2. Expandable Ruler System
Instead of using a marked reel, we are fabricating an expandable ruler system to measuring the length the
endoscope has been lowered by. This system consists of multiple 20 cm long PVC panels marked at each

centimeter. The panels are connected by hinges to expand and collapse in an accordion style, while the
endoscope cable runs down the side of the panels through a series of loops, folding with the panels (see
Figure 2). The width of the panels must be around 2 inches or less in order to fit through the sedimentation
tank opening.
Thus, the user may lower the system panel by panel until the endoscope has reached the sludge blanket.
The height of the sludge blanket would equal the depth of the endoscope (measured by the panel markings)
subtracted from the total height of the sedimentation tank. The advantages of this expandable system are
its collapsibility, making it ideal for transport, and the rigid backing it provides so that the endoscope wire,
which is semi-rigid, remains perpendicular to the bottom of the tank, ensuring an accurate height reading.

Figure 2. The expandable ruler system consists of multiple marked panels connected by hinges end-to-end.
(Only a portion of the entire system is shown.) The endoscope cable runs down the side of the panels
through a series of loops.

Figure 3. Above is a prototype of the expandable ruler system, constructed with two PVC panels, plastic
loops, and plastic hinges. The prototype is able to collapse (left) for compact storage and also expand (right)
to provide a straight, rigid backing for the endoscope cord when hung vertically.
3. Mobile Device and Application
The mobile device is a smartphone or tablet computer provided by the user. It connects to the endoscope
by a USB-C, USB, or Micro USB connection and runs the mobile application that we are in the process of
programming.
The application will collect live images taken by the endoscope, process each one for average light intensity,
and calculate the turbidity of the fluid in each image. This calculation will use an empirically obtained

correlation between turbidity and the intensity of reflected light (yet to be developed), as well as offset for
any light detected during calibration in clear fluid. See MAPE Code for sample processing code.
The mobile application will also provide a user-friendly interface by directing the user to calibrate the sensor,
prompting the user to lower the endoscope to greater depths, and displaying the camera stream and
calculated turbidity at each depth. In addition, it will record and graphically plot each calculation to track the
change in turbidity as the endoscope nears the sludge blanket. The height of the sludge blanket can be
determined once the turbidity rapidly increases or reaches a threshold value.
Microcontroller-Interfaced Analog (MIA) Sensor
The microcontroller-interfaced analog sensor also encompasses three main physical components: 1) the analog
photodiode, 2) an expandable ruler system, and 3) a microcontroller programmed to convert and displays data
from the endoscope and interact with the user.
1. Analog Photodiode
We had previously been using an analog turbidity sensor, however because of its unreliability and sensitivity
to noise, we were forced to use a photodiode instead. The specific photosensor that we used was the
TEMT6000 Ambient Light Sensor. See Special Components for details and image source.
2. Expandable Ruler System
This expandable ruler system is the same as that of the MAPES sensor system. We will fabricate it in the
same way but the endoscope will be replaced by the photosensor.
3. Microcontroller
The microcontroller we are using is the Arduino® UNO. The Arduino will read the output from the analog
photosensor and convert that value into a turbidity reading. The developers of the sensor have published a
tentative relation; however, further testing must be done to prove the validity of the relation. If the readings
do not correlate to accurate turbidity, we may have to empirically develop a relation of our own. The
microcontroller will also feature a digital display for the turbidity reading and a pushbutton for calibrating the
sensor in clear fluid.
See Special Components for details on the Arduino microcontroller and MIA Code for sample code.

Fabrication
Fabrication for the MAPE Turbidity Sensor
The only modification necessary for the endoscope is the addition of an extension for the non-reflective material.
The extension includes two rectangular plates, one attached to the endoscope body, and the other extending off
the endoscope and holding the non-reflective material in front of the camera lens. The two plates are screwed to
and connected by two standoffs. The former standoff contains a hole the size of the endoscope so that the
endoscope may slide through and be fixed to the plate with glue or another sealant.

The optimal distance from the camera lens to the non-reflective material is determined as the lowest distance for
which the material reflects an acceptably low amount of light (with "acceptable" defined as reflecting light almost
uniformly rather than in a bright spot or halo). Note that minimizing the distance minimizes the size and diameter
of the sensor. For our endoscope and with matte rubber as the non-reflective material, we estimate a distance of
1.5 cm. Using the distance (D ) and the field of view (θ ) angle of the endoscope (60º for ours), the minimum width
(W ) of the non-reflective material and the plates is:

W = D ⋅ 2tan( 2θ ) = 1.5 ⋅

2
3

≈ 1.732cm

All parts can be made of plastic or metal, except the non-reflective material, for which we suggest matte rubber.
Below is a rendering of the extension.

Figure 5. The extension includes two rectangular plates, one attached to the endoscope body, and the other
extending off the endoscope and holding the non-reflective material in front of the camera lens. The two plates
are screwed to and connected by two standoffs. Find the Fusion 360™ file for the extension here.
Variables

Table 1: List of Variables Used in MAPE Sensor Fusion Drawing
Variables

Description

rec_width

width of plate

2 cm

rec_length

length of plate

3.5 cm

standoff_diam

diameter of standoffs

.7 cm

rec_thickness

thickness of metal plates

3 cm

endoscope_diam

Value

diameter of endoscope

5/16 in

screw_diam

diameter of threads

5/32 in

disttoedge

distance from screw to edge of plate

.05 cm

Variables

Description

Value

screw_leng

length of threads

.6 cm

screw_poly

diameter of hex screw head rubber

.7 cm

chamfer

length of chamfer at bottom of screw

.6 cm

fillet

length of fillet beneath head of screw

.6 cm

Fabrication for the MIA Turbidity Sensor
The main fabrication required for the MIA turbidity sensor is waterproofing the circuitry. The wires are hidden in
flexible tubing which is thick enough to make sure that no water will enter and damage the sensor. We are still
experimenting with ways to waterproof the photosensor however, because we do not want to damage the
circuitry. The LED should be easily waterproofed with some silicon, which we plan to do the following semester.
We plan to fabricate a case for the microcontroller for protection and easy handling and for holding the digital
display. It will also include a rubber button connected to a pushbutton on the microcontroller to allow the user to
calibrate the sensor. The design for the case not yet been finalized.
Fabrication for the Expandable Ruler System
As mentioned before, the Expandable Ruler System is made up of multiple 20 cm long PVC panels marked at
each centimeter. Each of the panels are connected by double hinges to expand and collapse. The endoscope
cable runs down the side of the panels through a series of loops which we attach to the side of the PVC panel
(see Figure 2). Although we used single hinges for the prototype (see Special Components), we plan to use a
double hinge in future iterations. Please refer to Figure 3 for the prototype.

Special Components
MAPES Turbidity Sensor
Endoscope/ Borescope:
The endoscope we used was purchased through Amazon and was developed by Depstech®. Click here to view.
Product specifications can be found on the given website as well. Although we chose this particular endoscope,
there are other similarly viable endoscopes and borescopes available.

MIA Turbidity Sensor
Analog Turbidity sensor
The specific photosensor used was the TEMT6000 Ambient Light Sensor made by SparkFun. TEMT6000 is a
silicon NPN epitaxial planar photo-transistor in a miniature transparent mold for surface mounting onto a printed
circuit board. The device is sensitive to wavelengths from 390 nm to 700 nm. It is available here.

Arduino® UNO
The Arduino UNO can be purchased through the Arduino website. The Arduino IDE is also available here for free.

Expandable Ruler System
Hinges
The plastic hinges used in the prototype can be found here.

Experimental Methods
Current Experimental Methods
Because we are still in the fabrication and programming process, we are not able to test at this time. However,
we are intermittently checking to see if the analog photosensor for the MIA turbidity work correctly. We do this by
using print statements and checking to see that there is ample fluctuation and a significant difference between
high and low turbidities.
int
int
int
int
int

ledPin = 13;
button = 11;
offset = 0;
turb_input = A1;
flag = 0;

//declaration for LED
//digital input of the pushbutton
//set the offset as zero for now
//input in A0 from sensor
//if flag is 1, start loop

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int test=analogRead(turb_input);
Serial.println('\n');
Serial.println("reading from the input");
Serial.println(test);
}

Future Experimental Methods
To test our sensors, we will submerge each into fluids of known solids concentration and turbidity. We will then
analyze collected outputs for a relation between actual concentration and measured turbidity. It may also be
necessary to test the effects of different types, particularly different colors, of sediment on the turbidity readings.
However, we are not yet at the testing phase and have no experimentation details yet to report.

MAPE Turbidity Sensor Code

This is a sample of code written in Java for displaying a video stream from the endoscope and processing its
images for average light intensity. For the full set of classes required for this program, browse our Github
repository at AguaClara/sensor_dev/code/Endoscope Pilot Code (or click here.

/* Framework for video frame capture, conversion, and display adapted from
* http://computervisionandjava.blogspot.com/2013/10/java-opencv-webcam.html
*/
import java.awt.Graphics;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;
public class EndoscopeFrame extends JFrame {
private JPanel contentPane;
VideoCap videoCap;
public static void main(String[] args) {
try {
EndoscopeFrame frame = new EndoscopeFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public EndoscopeFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(0, 0, 1280, 960);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
videoCap = new VideoCap(1);
//0 or nothing for default camera (for a computer, the webcam)
//1 or higher for additional cameras (e.g. the USB endoscope camera)
new MyThread().start();
}
public void paint(Graphics g){
g = contentPane.getGraphics();
g.drawImage(videoCap.getOneImgFrame(), 0, 0, this);
if (counter % 10 == 0)
System.out.println("Average Light: " + averageLight(videoCap.mat2Img.mat, 10));
}
public static int averageLight(Mat mat, int spacing) {
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_BGR2GRAY);
int[][] pixelShades = new int[mat.rows()/spacing+1][mat.cols()/spacing+1];
int sum = 0;

for (int r = 0; r < mat.rows(); r += spacing) {
for (int c = 0; c < mat.cols(); c += spacing) {
pixelShades[r/spacing][c/spacing] = (int) mat.get(r, c)[0];
sum += pixelShades[r/spacing][c/spacing];
}
}
return sum/pixelShades.length/pixelShades[0].length;
}
class MyThread extends Thread{
@Override
public void run() {
while (true) {
repaint();
try { Thread.sleep(30);
} catch (InterruptedException e) { }
}
}
}
}

Sample Output:

Figure 7. Above is a sample output of the program for the MAPE turbidity sensor produced by exposing the
camera to light and then quickly covering it. Hence, the "Average Light" values that fall from near 200 to 0.
Additional code was written for printing elapsed time between calculations.
Below is a Java file for a mobile Android application that streams camera feedback from the phone's own
camera(s) with constant exposure. For future work, the application must access the endoscope, an external
camera to the smartphone, and integrate the image processing code from above. For the full project, written in

Android Studio® using Android libraries, browse our Github repository at
AguaClara/sensor_dev/code/AguaClara Turbidity (or click here).

package me.aguaclaraturbidity;
import
import
import
import
import

android.content.pm.PackageManager;
android.support.v4.app.ActivityCompat;
android.support.v4.content.ContextCompat;
android.support.v7.app.AppCompatActivity;
android.os.Bundle;

import
import
import
import
import
import

android.util.Log;
android.view.SurfaceHolder;
android.view.SurfaceView;
android.hardware.Camera;
android.widget.SeekBar;
android.widget.TextView;

import java.io.IOException;
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, Camera.Pre
private Camera camera;
private Camera.Parameters camParams;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SurfaceView cameraPreview = (SurfaceView) findViewById(R.id.camera_preview);
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.CAMERA},
if (ContextCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permissio
== PackageManager.PERMISSION_GRANTED) {
openCamera(0);
try {
cameraPreview.getHolder().addCallback(this);
camera.setPreviewDisplay(cameraPreview.getHolder());
camera.setPreviewCallback(this);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void openCamera(int id){
releaseCameraAndPreview();
camera = Camera.open(id);
camera.setDisplayOrientation(90);
camParams = camera.getParameters();
}
private void releaseCameraAndPreview() {
if (camera != null) {
camera.stopPreview();
camera.release();

camera = null;
}
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
} catch (IOException e) {
Log.d("View", "Error setting camera preview: " + e.getMessage());
}
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
if (camera != null) {
camera.stopPreview();
}
}
@Override
public void onPreviewFrame(byte[] bytes, Camera camera) {
camParams.setExposureCompensation(0);
camera.setParameters(camParams);
}
}

Figure 8. This is a screenshot of the mobile Android application for the MAPE turbidity sensor. The camera
feedback is from the phone's rear camera, as the application is not yet able to access an external camera such

as the endoscope. The user may adjust the exposure level, though between adjustments the exposure is held
constant.

MIA Code
This C code is to program the Arduino Uno for the MIA sensor. It uses the input from the sensor and the relation
provided by the vendors and developers to determine a turbidity. (Programmed with the Arduino IDE)

//global variables
int
int
int
int
int

ledPin = 13;
button = 11;
offset = 0;
turb_input = A0;
flag = 0;

float turbidity = 0.0;
int threshold = 700;

//declaration for LED
//digital input of the pushbutton
//set the offset as zero for now
//input in A0 from sensor
//if flag is 1, start loop
//turbidity
//threshold turbidity for sludge blanket

void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(turb_input, INPUT);
pinMode(button, INPUT);

//Baud
//This
//This
//This

rate:
is to
is to
is to

9600
set up the LED
set up the input from sensor
set up the input from pushbutton

//CALIBRATION
Serial.println('\n');
Serial.println("Please calibrate the sensor by pressing the button");
//PUSHBUTTON
if (digitalRead(button)==LOW){
flag = 0;
}
else if(digitalRead(button) == HIGH){
offset = analogRead(turb_input);
Serial.println('\n');
Serial.print("this is the offset value:");
Serial.println(offset);
delay(500);
flag = 1;
}
}
void loop() {
// if (flag == 1){
int sensorValue = analogRead(turb_input);// read the input on A0:
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = sensorValue * (5.0 / 1024.0);
Serial.println("____________________________________");
Serial.print("this is the reading from the analog:");
Serial.println(sensorValue); // print out the value you read:
Serial.print("this is the voltage reading:");
Serial.println(voltage); // print out the value you read:
// Convert voltage to turbidity
// relation from page is -1120.4x^2 +5742.3x-4352.9
// only supports voltages of 2.5-4.2 for the relation

if (voltage > 2.5 && voltage < 4.2){
turbidity = (voltage*voltage*(-1120.4))+(voltage*5742.3)-4352.9-(offset);
}
else if (voltage < 2.5){
turbidity = 3000;
}
else if (voltage > 4.2){
turbidity = 0;
}
Serial.print("this is the turbidity reading:");
Serial.println(turbidity); // print out the value you read:
delay(500);
//threshold value to compare to light up LED
if (turbidity > threshold){
digitalWrite(ledPin, HIGH);
Serial.println("YOU ARE NOW IN THE SLUDGE BLANKET");
}
else {
digitalWrite(ledPin, LOW);
}
}



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : No
Page Count                      : 16
Creator                         : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Producer                        : Skia/PDF m66
Create Date                     : 2018:05:18 16:18:58+00:00
Modify Date                     : 2018:05:18 16:18:58+00:00
EXIF Metadata provided by EXIF.tools

Navigation menu