Electric Liquid Sensing System for Railroad Lubricant Tank

advertisement
Electric Liquid Sensing
System
for Railroad Lubricant
Tank
ECE 480 – Team 8
George P. Ballios – Lab Coordinator / Presentation Prep
Michael W. Dow – Webmaster
Nicholas T. Vogtmann – Document Prep
Craig M. Zofchak – Manager
Overview
Sponsor
 Problem
 Design
Specifications
 Results
 Future
Improvements

Sponsor

Sponsored by Norfolk
Southern Corporation
• Class one railway system
operator
• 21,000 route miles in 22 eastern states
• Serves all major eastern ports
• Comprehensive logistic services
• Most extensive intermodal network in
the east
Mission
Norfolk Southern desires a way of
shutting off the pump for there
lubrication system when the liquid
level reaches it low point
 Currently there is no system in place
to measure the lubricant level

• Norfolk Southern visit’s the tank’s site
every one to three months for refilling
Design Requirements

Keep structural integrity intact
• Any modification is impractical while it is
operational
• Debris in the tank can damage the pumps

Low Power Consumption
• Runs off a car sized battery
• Charged by a solar panel


The lubricant has a tendency to bond
to other objects
Lubricant solidifies when exposed to
air for an extended period
End-Product Description:

The level detection system consists of three
unique sensors
• Ensures precision and robustness

A microcontroller calculates the three
sensor’s data
• Shuts off the pump
Audio Frequency Sensor
Solenoid that strikes the tank
 Microphone to pick-up the audio
vibrations
 Resonance frequency changes as
liquid level changes

• Frequency of air opposed to frequency
of water
MATLAB Audio Frequency Code














clc;
close all;
clear all;
figure;
[x, Fs, N]=wavread('MidLevel1.wav');
fx = fft(x,Fs);
fx1 = fx(1:length(fx)/2);
hold on
title 'Mid Level'
plot(abs(fx1),'r')
axis([0 2500 0 1000])
mm(1) = find(fx1==max((fx1)));
ml(1) = max(abs(fx1));
mml = mm(1);









[x, Fs, N]=wavread('MidLevel2.wav');
fx = fft(x,Fs);
fx2 = fx(1:length(fx)/2);
hold on
plot(abs(fx2),'g')
mm(2) = find(fx2==max((fx2)));
ml(2) = max(abs(fx2));
if (ml(2) >= max(ml))
mml = mm(2);
end




















[x, Fs, N]=wavread('MidLevel3.wav');
fx = fft(x,Fs);
fx3 = fx(1:length(fx)/2);
hold on
plot(abs(fx3),'y')
mm(3) = find(fx3==max((fx3)));
ml(3) = max(abs(fx3));
if (ml(3) >= max(ml))
mml = mm(3);
end
[x, Fs, N]=wavread('MidLevel4.wav');
fx = fft(x,Fs);
fx4 = fx(1:length(fx)/2);
hold on
plot(abs(fx4))
mm(4) = find(fx4==max((fx4)));
ml(4) = max(abs(fx4));
if (ml(4) >= max(ml))
mml = mm(4);
end









if(abs(fx1(mml))>400 & abs(fx2(mml))>400 & abs(fx3(mml))>400
& abs(fx4(mml))>400);
MidLevel_Max_Peak = mml
else
MidLevel_mean_Max_Peak = mean(mm)
end
MATLAB Audio Frequency Code
cont.












figure;
clear all;
[x, Fs, N]=wavread('MidLevel-15G1.wav');
fx = fft(x,Fs);
fx1 = fx(1:length(fx)/2);
hold on
title '15 Gallons down from Mid Level'
plot(abs(fx1),'r')
AXIS([0 2500 0 1000])
mm(1) = find(fx1==max((fx1)));
ml(1) = max(abs(fx1));
mml = mm(1);

































[x, Fs, N]=wavread('MidLevel-15G2.wav');
fx = fft(x,Fs);
fx2 = fx(1:length(fx)/2);
hold on
plot(abs(fx2),'g')
mm(2) = find(fx2==max((fx2)));
ml(2) = max(abs(fx2));
if (ml(2) >= max(ml))
mml = mm(2);
end
[x, Fs, N]=wavread('MidLevel-15G3.wav');
fx = fft(x,Fs);
fx3 = fx(1:length(fx)/2);
hold on
plot(abs(fx3),'y')
mm(3) = find(fx3==max((fx3)));
ml(3) = max(abs(fx3));
if (ml(3) >= max(ml))
mml = mm(3);
end
[x, Fs, N]=wavread('MidLevel-15G4.wav');
fx = fft(x,Fs);
fx4 = fx(1:length(fx)/2);
hold on
plot(abs(fx4))
mm(4) = find(fx4==max((fx4)));
ml(4) = max(abs(fx4));
if (ml(4) >= max(ml))
mml = mm(4);
end




if(abs(fx1(mml))>400 & abs(fx2(mml))>400 & abs(fx3(mml))>400
& abs(fx4(mml))>400);
MidLevel_15GD_Max_Peak = mml
else
MidLevel_15GD_mean_Max_Peak = mean(mm)
end
MATLAB Audio Frequency Code
cont.












figure;
clear all;
[x, Fs, N]=wavread('MidLevel-30G1.wav');
fx = fft(x,Fs);
fx1 = fx(1:length(fx)/2);
hold on
title '30 Gallons down from Mid Level'
plot(abs(fx1),'r')
AXIS([0 2500 0 1000])
mm(1) = find(fx1==max((fx1)));
ml(1) = max(abs(fx1));
mml = mm(1);























[x, Fs, N]=wavread('MidLevel-30G2.wav');
fx = fft(x,Fs);
fx2 = fx(1:length(fx)/2);
hold on
plot(abs(fx2),'g')
mm(2) = find(fx2==max((fx2)));
ml(2) = max(abs(fx2));
if (ml(2) >= max(ml))
mml = mm(2);
end











[x, Fs, N]=wavread('MidLevel-30G3.wav');
fx = fft(x,Fs);
fx3 = fx(1:length(fx)/2);
hold on
plot(abs(fx3),'y')
mm(3) = find(fx3==max((fx3)));
ml(3) = max(abs(fx3));
if (ml(3) >= max(ml))
mml = mm(3);
end
[x, Fs, N]=wavread('MidLevel-30G4.wav');
fx = fft(x,Fs);
fx4 = fx(1:length(fx)/2);
hold on
plot(abs(fx4))
mm(4) = find(fx4==max((fx4)));
ml(4) = max(abs(fx4));
if (ml(4) >= max(ml))
mml = mm(4);
end




if(abs(fx1(mml))>400 & abs(fx2(mml))>400 & abs(fx3(mml))>400
& abs(fx4(mml))>400);
MidLevel_30GD_Max_Peak = mml
else
MidLevel_30GD_Max_Peak = mean(mm)
end
MATLAB Audio Frequency Code
cont.












figure;
clear all;
[x, Fs, N]=wavread('MidLevel-45G1.wav');
fx = fft(x,Fs);
fx1 = fx(1:length(fx)/2);
hold on
title '45 Gallons down from Mid Level'
plot(abs(fx1),'r')
AXIS([0 2500 0 1000])
mm(1) = find(fx1==max((fx1)));
ml(1) = max(abs(fx1));
mml = mm(1);























[x, Fs, N]=wavread('MidLevel-45G2.wav');
fx = fft(x,Fs);
fx2 = fx(1:length(fx)/2);
hold on
plot(abs(fx2),'g')
mm(2) = find(fx2==max((fx2)));
ml(2) = max(abs(fx2));
if (ml(2) >= max(ml))
mml = mm(2);
end











[x, Fs, N]=wavread('MidLevel-45G3.wav');
fx = fft(x,Fs);
fx3 = fx(1:length(fx)/2);
hold on
plot(abs(fx3),'y')
mm(3) = find(fx3==max((fx3)));
ml(3) = max(abs(fx3));
if (ml(3) >= max(ml))
mml = mm(3);
end
[x, Fs, N]=wavread('MidLevel-45G4.wav');
fx = fft(x,Fs);
fx4 = fx(1:length(fx)/2);
hold on
plot(abs(fx4))
mm(4) = find(fx4==max((fx4)));
ml(4) = max(abs(fx4));
if (ml(4) >= max(ml))
mml = mm(4);
end




if(abs(fx1(mml))>400 & abs(fx2(mml))>400 & abs(fx3(mml))>400
& abs(fx4(mml))>400);
MidLevel_45GD_Max_Peak = mml
else
MidLevel_45GD_Max_Peak = mean(mm)
end
MATLAB Audio Frequency Code
cont.












figure;
clear all;
[x, Fs, N]=wavread('CriticalLevel1.wav');
fx = fft(x,Fs);
fx1 = fx(1:length(fx)/2);
hold on
title 'Critical Level'
plot(abs(fx1),'r')
AXIS([0 2500 0 1000])
mm(1) = find(fx1==max((fx1)));
ml(1) = max(abs(fx1));
mml = mm(1);























[x, Fs, N]=wavread('CriticalLevel2.wav');
fx = fft(x,Fs);
fx2 = fx(1:length(fx)/2);
hold on
plot(abs(fx2),'g')
mm(2) = find(fx2==max((fx2)));
ml(2) = max(abs(fx2));
if (ml(2) >= max(ml))
mml = mm(2);
end











[x, Fs, N]=wavread('CriticalLevel3.wav');
fx = fft(x,Fs);
fx3 = fx(1:length(fx)/2);
hold on
plot(abs(fx3),'y')
mm(3) = find(fx3==max((fx3)));
ml(3) = max(abs(fx3));
if (ml(3) >= max(ml))
mml = mm(3);
end
[x, Fs, N]=wavread('CriticalLevel4.wav');
fx = fft(x,Fs);
fx4 = fx(1:length(fx)/2);
hold on
plot(abs(fx4))
mm(4) = find(fx4==max((fx4)));
ml(4) = max(abs(fx4));
if (ml(4) >= max(ml))
mml = mm(4);
end




if(abs(fx1(mml))>400 & abs(fx2(mml))>400 & abs(fx3(mml))>400
& abs(fx4(mml))>400);
Cricital_Level_Max_Peak = mml
else
Cricital_Level_Max_Peak = mean(mm)
end
Water is Above Critical Level
15 Gallons down from Mid Level
1000
900
800
700
Mid Level
600
1000
500
900
400
800
300
200
700
100
600
0
0
500
1000
1500
2000
2500
30 Gallons down from Mid Level
500
400
1000
300
900
800
200
700
100
600
0
500
400
300
200
100
0
0
500
1000
1500
2000
2500
0
500
1000
1500
2000
2500
Water is Below Critical Level
Critical Level
45 Gallons down from Mid Level
1000
1000
900
900
800
800
700
700
600
600
500
500
400
400
300
300
200
200
100
100
0
0
0
500
1000
1500
2000
2500
0
500
1000
1500
2000
2500
Temperature-Based Sensor

Series of temperature sensors
• Placed at equally spaced levels along
the tank wall

The difference in temperature
determines the level
Can You Guess the
Lubricant Level?
Float Sensor with Magnetic Reed
Switch

Floating Magnet in an enclosed track
• Enclosed track is 2” from the wall
Reed Switch is placed at shut off
level
 When the floating magnet is in the
range of the reed switch the pump
shuts off

Reed Switch Operation
Budget
Final Estimated Cost per Unit
Qty
Proposed Estimated Cost
Item
Cost
Sonar Gun
$250.00
PCB
$100.00
Windshield Wiper
Motor
$50.00
Precision
Microphone
$50.00
Mallet/Hammer
$15.00
Total
Part
Unit Price
Total
1
Digital Signal Controller
$4.26
$4.26
1
Printed Circuit Board
$50.00
$50.00
1
Suction Cup Microphone
$11.99
$11.99
1
Magnetic Reed Switch
$14.32
$14.32
1
Neodymium Iron-Boron
Magnet Pack
$29.99
$29.99
6
Precision Temperature
Sensor
$2.89
$17.34
1
Plastic Enclosures
$6.82
$6.82
1
Miscellaneous Parts /
Hardware
$20.00
$20.00
Grand Total
$154.72
$465.00
Building it better

The system could be fully external
• Higher cost
• Not as accurate

Items could have a more permanent attachment
• Liquid bonding agent, not duct tape

The audio sensor could have the ability to
determine the level
• Not just the point where the pump needs to be shut off


Use of Ultrasound
Long range communication
Issues Along the Way
Ultrasound
 RFID
 Audio
 Field Demo
 Physical Properties of the Tank

• Steel

Filling of Tank for Level Testing
Summary
When the lubricant reaches the
critical point the pump shuts off
 Three Sensors

• Audio Frequency
• Temperature
• Reed Switch
No Modification of Existing System
 Easily Implemented

Questions
Download