Introduction: Auto Trash by Arduino

Picture of Auto Trash by Arduino

This instructable is so called Auto Trash, but do not overlook it, it just open the lid when you closed to it. This is a not a fancy toy, you can actually buy a factory make from warehouse store, but the price is often beyond your imagination. I made this instructable for experiment purpose, I had previously made the H-bridge motor driver (https://www.instructables.com/id/Bipolar-Stepper-Motor-Driver/) that could be useful here, I connected the driver with bipolar stepper motor to arduino broad and the supersonic transducer.

Step 1: The Litter Bin

Picture of The Litter Bin

I choose a small litter bin, originally I wanted to install a large bin, but the motor was not powerful enough to pull up the lid. I installed a small rod extended the back side of the lid, and pull the rod with a wire connected to the motor disc or crank shaft. Actually this can be done with servo motor, I just transplanted the assembly from large bin to small bin.

Step 2: The Code

Picture of The Code

The connection is shown here

#include <Stepper.h>

const int stepsPerRevolution = 20;

// change this to fit the number of steps per revolution // for your motor

// initialize the stepper library on pins 8 through 11: Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {

// put your setup code here, to run once:

// set the speed at 60 rpm:

myStepper.setSpeed(60);

pinMode(7, OUTPUT);//trig

pinMode(6, INPUT);//echo

}

void loop() {

// put your main code here, to run repeatedly:

myStepper.step(0);

if (scan()<15) {

myStepper.step(stepsPerRevolution);

delay (1500);

myStepper.step(-stepsPerRevolution);

delay (1000);

watchdogSetup();

}

}

long scan() {

long duration;

digitalWrite(7, LOW);

delayMicroseconds(2);

digitalWrite(7, HIGH);

delayMicroseconds(10);

digitalWrite(7, LOW);

duration = pulseIn(6, HIGH);

return (duration/2) / 29.1;

}

void watchdogSetup(void){

WDTCSR |= (1<<WDCE) | (1<<WDE);

WDTCSR = (1<<WDIE) | (1<<WDW) | (0<<WDP3) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);

ISR(WDT_vect) {

// Watchdog timer interrupt.

}

Step 3: A Special Feature

I noticed the bipolar motor consumed 1A current at 5V even no movement, the motor pitches are engaged, this made the motor hot without any work done, but when I reset the board the current can ceased, so I add a watchdogsetup() code to reset the board, check the end of video.

Comments

AshkanK1 (author)2016-11-24

nice ideas

tytower (author)2016-10-22

The electronics needed are about as big as the bin. Not real practical at that size but if you can get them smaller and the bin bigger its a brilliant idea

About This Instructable

2,997views

31favorites

License:

More by martinhui:Kitchen TimerESP8266 Wall Clock 2.0Easy Wire Wrap Tools
Add instructable to: