Brett BaumaWhitney
Published © CC BY-NC

Mechatronic Accessibility Cabinet

A modular mechatronic solution, for the handicapped and/or physically impaired, to easily access cabinet items.

IntermediateWork in progressOver 1 day2,799
Mechatronic Accessibility Cabinet

Things used in this project

Hardware components

NEMA 17 Stepper Motor
OpenBuilds NEMA 17 Stepper Motor
×1
Arduino 101
Arduino 101
×1
8mm Metric Acme Lead Screw
OpenBuilds 8mm Metric Acme Lead Screw
×1
5mm * 8mm Flexible Coupling
OpenBuilds 5mm * 8mm Flexible Coupling
×1
Adjustable Voltage Regulator 12 vdc reduce to ....
×1
micro switch module , bigtree-tech.com
×2
bearing linear, 8mm
×1
8 mm linear rod
×2

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)
Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Custom parts and enclosures

8mm rod holder

This is the foot/holder for the 8mm rods

Gantry Platform

this is the base plate that the linear bearings mount to.
This is the main unit that moves

Nema 17 Motor Mount

this is the motor mount designed for nema 17

bearing block

this is a space block for the pillow block bearings on the acme rod

limit switch mount

this is a mount for the limit switch modules that mounts to the 8mm rods

Schematics

basic fritzing

this is a basic fritzing, I ran out of time for the deadline to create a full pcb schematic so I created this very basic one. I will be making actual custom pcb files in the future

Code

Arduino Sketch

Arduino
this was my first run at the code. Do to time ending on the contest I was unable debug.
// defines pins numbers
const int stepPin = 3; 
const int dirPin = 4; 
const int upperLimit = 9;
const int lowerLimit = 8;
const int openSwitch = 10;
const int closeSwitch = 11;

int upperStop = 0;
int lowerStop = 0;
int switchOpen = 0;
int switchClose = 0;

void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
  pinMode(lowerLimit, INPUT);
  pinMode(upperLimit, INPUT);
  pinMode(openSwitch, INPUT);
  pinMode(closeSwitch, INPUT);
  Serial.begin (9600);
}
void loop() {
  upperStop = digitalRead(upperLimit);
  lowerStop = digitalRead(lowerLimit);
  switchOpen = digitalRead(openSwitch);
  switchClose = digitalRead (closeSwitch);

//=========================================
if (switchOpen == HIGH)
{
  Serial.println ("open");
  
}

if (switchClose == HIGH)
{
  Serial.println ("close");
}


  
//---------------------Switch is open-----------------------  
 if (upperStop == HIGH)
{
  Serial.println ("1");
}
//---------------------- Switch is Made---------------------
if (upperStop == LOW)
{
  Serial.println ("0");
}
//-------------------------Open ---------------------------------

  if (switchOpen == HIGH);
  {
    while (lowerStop == HIGH)
    {
 //--------------------
     lowerStop = digitalRead(lowerLimit);
      digitalWrite(dirPin,HIGH); // Motor Direction
      for(int x = 0; x < 5; x++) {
        digitalWrite(stepPin,HIGH); 
        delayMicroseconds(500); 
        digitalWrite(stepPin,LOW); 
        delayMicroseconds(500); 
  }
 //--------------------- 
    }
  }
  
  
//---------------------- Close------------------------------  
  
if (switchClose == HIGH)
 {
  while (upperStop == HIGH)
  {
  //---------------------------------------------------------
 upperStop = digitalRead(upperLimit);
 digitalWrite(dirPin,LOW); //Motor direction
        for(int x = 0; x < 5; x++) {
         digitalWrite(stepPin,HIGH);
         delayMicroseconds(500);
         digitalWrite(stepPin,LOW);
         delayMicroseconds(500);
  }
  }
 //------------------------------------------------------------
}
}

Credits

Brett Bauma

Brett Bauma

0 projects • 4 followers
Whitney

Whitney

0 projects • 0 followers

Comments