Recycling involves modern instruments and machines to automate the procedure, increase efficiency, and reduce the necessity of direct human interaction with dangerous material. Civil Engineers, Environmental Engineers, and even Computer Engineers are also involved in this process.
Scientists focus on reducing the environmental impacts of recycling methods, and making recycling faster and more efficient.
One aspect of recycling that can be improved upon is the amount of human engagement and manpower currently required in the separation process. Human sorting of recyclable materials is inefficient and has a high error rate. Autonomous machines that use computers and sensors to sort recyclables are currently the best way for humans to deal with dangerous operations. Industrial automation, mechatronics, and robotics are the main engineering fields that work to improve the production lines of many industries, using technology to increase precision, efficiency, and speed.
Materials
Recyclable materials are those that are cost-efficient to reform chemically or physically into newly-made products. Currently, these materials consist of glass, paper, metal, plastic, textiles, and electronics. The natural resources consumed to make these materials make them especially important to recycle. For example, the production of paper from trees results in deforestation and other negative environmental impacts. Metals such as aluminum, silver, and gold are both easily recyclable and extremely expensive to extract from the environment.
Recycling Benefits
Recycling is a way to conserve natural resources and preserve them for future generations. Using recycled materials rather than producing new materials can also be more energy efficient. It can decrease the emission of greenhouse gasses, and decrease the amount of air and water pollution created from the manufacturing processes and landfills.
Methods for Recycling
Current processes for collection, separation, and sorting of recycling materials have many flaws that can be addressed by new technologies. Sanitation trucks that gather recycling waste from a district, the instruments that are used to sort the waste, and the instruments used to reform and change recycling waste physically or chemically can all be redesigned to be more efficient.
As an example, glass is an easily recyclable material that must be separated and sorted by color for the best quality of final products. In today's recycling industry, waste materials are separated by hand by workers on a conveyor line. The sorting process could be automated through the use of infrared sensors.
Parts
- Arduino
- USB cable
- Computer
- Breadboard
- Color LEDs
- 220 Ω resistor
- 100Ω
- 4.70 kΩ resistors
- TCRT5000 IR sensor (IR Transmitter, Phototransistor couple)
- Alligator clips
- 9v battery
- Battery cap
- Solid core wire
- Colored objects
- Multimeter
Assignment
In this experiment, you will use an infrared LED to differentiate the colors of different materials.
The sensor is connected to a microcontroller, which is connected to your computer.
The output voltage from the sensor goes through an analog pin of the arduino for analog to digital conversion.
The outputted values from the arduino are read through a serial port and associated with a color, allowing your
circuit to automatically determine the color of a material.
The TCRT5000 is a reflective sensor which includes an infrared emitter and phototransistor in a leaded package
which blocks visible light. The "blue" LED is the IR emitter.
This circuit can be used for the detection of reflective material such as paper, cards,
magnetic tapes etc.
The TCRT5000 is a reflective infrared sensor, it’s a small plastic holder with an IR led and a photo transistor.
The IR led emits invisible IR light, when an object is placed in front of it the light is bounced back to the phototransistor.
The TCRT5000 has 4 pins and is very easy to connect to an Arduino.
The collector (C) of the phototransistor is connected to the digital pin on the Arduino
The emitter (E) is connected to ground.
The anode (A) of the IR led is connected to a 100ohm resistor
The other end of the resistor goes to 5V
The cathode of the led goes to ground.
The range of these little sensors is not big and they are very sensitive to the light present in the room.
The range is only a couple of centimetres. The best thing about them is that they are very cheap.
// Simple Proximity Sensor using Infrared
// Description: Measure the distance to an obstacle using infrared light emitted by IR LED and
// read the value with a IR photodiode. The accuracy is not perfect, but works great
// with minor projects.
// Author: Ricardo Ouvina
// Date: 01/10/2012
// Version: 1.0
int IRpin = A0; // IR photodiode on analog pin A0
int IRemitter = 2; // IR emitter LED on digital pin 2
int ambientIR; // variable to store the IR coming from the ambient
int obstacleIR; // variable to store the IR coming from the object
int value[10]; // variable to store the IR values
int distance; // variable that will tell if there is an obstacle or not
void setup(){
Serial.begin(9600); // initializing Serial monitor
pinMode(IRemitter,OUTPUT); // IR emitter LED on digital pin 2
digitalWrite(IRemitter,LOW);// setup IR LED as off
pinMode(11,OUTPUT); // buzzer in digital pin 11
}
void loop(){
distance = readIR(5); // calling the function that will read the distance and passing the "accuracy" to it
Serial.println(distance); // writing the read value on Serial monitor
// buzzer(); // uncomment to activate the buzzer function
}
int readIR(int times){
for(int x=0;x<times;x++){
digitalWrite(IRemitter,LOW); // turning the IR LEDs off to read the IR coming from the ambient
delay(1); // minimum delay necessary to read values
ambientIR = analogRead(IRpin); // storing IR coming from the ambient
digitalWrite(IRemitter,HIGH); // turning the IR LEDs on to read the IR coming from the obstacle
delay(1); // minimum delay necessary to read values
obstacleIR = analogRead(IRpin); // storing IR coming from the obstacle
value[x] = ambientIR-obstacleIR; // calculating changes in IR values and storing it for future average
}
for(int x=0;x<times;x++){ // calculating the average based on the "accuracy"
distance+=value[x];
}
return(distance/times); // return the final value
}
//-- Function to sound a buzzer for audible measurements --//
void buzzer(){
if (distance>1){
if(distance>100){ // continuous sound if the obstacle is too close
digitalWrite(11,HIGH);
}
else{ // beeps faster when an obstacle approaches
digitalWrite(11,HIGH);
delay(150-distance); // adjust this value for your convenience
digitalWrite(11,LOW);
delay(150-distance); // adjust this value for your convenience
}
}
else{ // off if there is no obstacle
digitalWrite(11,LOW);
}
}
// Simple Proximity Sensor using Infrared
// Description: Measure the distance to an obstacle using infrared light emitted by IR LED and
// read the value with a IR photodiode. The accuracy is not perfect, but works great
// with minor projects.
// Author: Ricardo Ouvina
// Date: 01/10/2012
// Version: 1.0
int IRpin = A0; // IR photodiode on analog pin A0
int IRemitter = 2; // IR emitter LED on digital pin 2
int ambientIR; // variable to store the IR coming from the ambient
int obstacleIR; // variable to store the IR coming from the object
int value[10]; // variable to store the IR values
int distance; // variable that will tell if there is an obstacle or not
void setup(){
Serial.begin(9600); // initializing Serial monitor
pinMode(IRemitter,OUTPUT); // IR emitter LED on digital pin 2
digitalWrite(IRemitter,LOW);// setup IR LED as off
pinMode(11,OUTPUT); // buzzer in digital pin 11
}
void loop(){
distance = readIR(5); // calling the function that will read the distance and passing the "accuracy" to it
Serial.println(distance); // writing the read value on Serial monitor
// buzzer(); // uncomment to activate the buzzer function
}
int readIR(int times){
for(int x=0;x<times;x++){
digitalWrite(IRemitter,LOW); // turning the IR LEDs off to read the IR coming from the ambient
delay(1); // minimum delay necessary to read values
ambientIR = analogRead(IRpin); // storing IR coming from the ambient
digitalWrite(IRemitter,HIGH); // turning the IR LEDs on to read the IR coming from the obstacle
delay(1); // minimum delay necessary to read values
obstacleIR = analogRead(IRpin); // storing IR coming from the obstacle
value[x] = ambientIR-obstacleIR; // calculating changes in IR values and storing it for future average
}
for(int x=0;x<times;x++){ // calculating the average based on the "accuracy"
distance+=value[x];
}
return(distance/times); // return the final value
}
//-- Function to sound a buzzer for audible measurements --//
void buzzer(){
if (distance>1){
if(distance>100){ // continuous sound if the obstacle is too close
digitalWrite(11,HIGH);
}
else{ // beeps faster when an obstacle approaches
digitalWrite(11,HIGH);
delay(150-distance); // adjust this value for your convenience
digitalWrite(11,LOW);
delay(150-distance); // adjust this value for your convenience
}
}
else{ // off if there is no obstacle
digitalWrite(11,LOW);
}
}
- Place the IR receiver in the breadboard:
- Place the IR transmitter in the board:
- Connect a 100Ω resistor to the positive pin of the IR transmitter. Connect a 4.7 KΩ resistor to the positive pin of the IR receiver and to a row on the bottom half of the breadboard:
- Connect the negative pins of the IR transmitter and receiver to each other. Then connect the two rows of the resistors to each other with a wire:
- Connect the negative pin of the IR transmitter to ground (negative row of the breadboard). Connect the 4.7 K resistor to the positive row of the breadboard:
- Connect the positive pin of the IR receiver analog pin 1 of the arduino:
- Connect the positive and the negative rows of the breadboard to the ground (Gnd) and the 5 volt pins of the arduino(5v):
- Connect the Arduino to the computer. Upload the following program:
//The ranges assigned are to be used as an example and changed upon testing the readings from the varying colors. Let me know if you have any questions.
int analogPin = 3; // potentiometer wiper (middle terminal) connected to analog pin 3
// outside leads to ground and +5V
int val = 0; // variable to store the value read
void setup(){
Serial.begin(9600); // setup serial
}
void loop() {
val = analogRead (analogPin);
if (val <= 30){
Serial.println("White");
}
elseif(31 <= val <= 33){
Serial.println("Yellow");
}
else if(34 <= val <= 37){
Serial.println("Light Blue");
}
else if(38 <= val <= 42){
Serial.println("Pink");
}
else if(43 <= val <= 45){
Serial.println("Orange");
}
else if(46 <= val <= 51){
Serial.println("Green");
}
else if(52 <= val <= 110){
Serial.println("Dark Blue");
}
else if(111 <= val <= 1023){
Serial.println("Black");
}
delay (500);
}
After programming the arduino, to test to see if the transmitter is working, a regular digital
camera can be used to see the light. If the light is working, the serial monitor can be opened to view the ADC value.
Read out the digital numbers from the serial output of the arduino program.
Writing the numbers down for different colors (basic colors), find ranges of outputs for different color papers.
In arduino, print out the name of each color that stands for the number.