4 Legged Spider-Tron

by rozendaalmarc in Circuits > Arduino

277 Views, 0 Favorites, 0 Comments

4 Legged Spider-Tron

WhatsApp Image 2023-01-22 at 23.27.42.jpeg

Voor dit project heb ik besloten een vierpotige robot spin te maken, geinspireerd door een video van Adam Savage's Tested. De spin uit deze video kon in veel verschillende richtingen bewegen, ook konden de poten los van elkaar bewegen, waardoor de spin een grote hoeveelheid bewegingen kon maken.

Gezien er voor dit project echter niet oneindig de tijd was, heb ik er niet voor gekozen alle functionaliteit van die spin over te nemen. Deze robot moet dus maar enkele dingen doen, vooruit lopen, checken voor een obstakel en zodra er een obstakel is, om te draaien tot er geen obstakel meer te zien is en weer verder te lopen.

Supplies

Elektronische onderdelen:

  • Arduino Uno
  • HC-SR04 Ultrasonic sensor
  • 12x SG90 mini servo
  • 16 kanaals PWM servo shield
  • Jumper cables

Overige onderdelen:

  • 4mm mdf plaat
  • 12mm aluminium buis
  • 10mm aluminium buis

Benodigd gereedschap

  • Lasersnijder
  • IJzerzaag
  • Houtlijm

Het Ontwerp

Leg design.jpeg

Om de spin op een geloofwaardige manier te laten lopen heb ik er voor gekozen om de poten op drie verschillende manieren te laten bewegen. De poot moet horizontaal kunnen draaien, de hele poot moet op en neer kunnen bewegen, en het uiteinde moet op en neer kunnen bewegen. Om dit te bereiken heeft elke poot drie servo's nodig. De eerste iteratie van het ontwerp gebruikte een systeem van pezen om de pootdelen te bewegen, met de servo's alle drie in het lichaam van de spin. Het probleem hierbij is dat te groot zijn om ze allemaal in een goede positie neer te kunnen zetten, en deze servo's zijn in een optimale positie al niet erg krachtig.

Om deze reden heb ik ervoor gekozen om twee van de drie servo's in het middelste stuk van de poot te plaatsen, op deze manier was er genoeg ruimte voor de servo's en hoefde er minder gewicht bewogen worden.

Eerste Iteratie

Eerste poot iteratie.jpeg

De eerste iteratie van de robot werkte niet. Een van de voornaamste redenen was de plaatsing van de gaten waaraan de servo's konden trekken om de poot te draaien, op bovenstaande foto is rechts de eerste iteratie. Deze gaten waren niet in een lijn met het rotatie punt van de onderdelen, hierdoor moesten de servo's een stuk meer kracht leveren om de poten te kunnen draaien. Links is het uiteindelijke onderdeel te zien, wat dit probleem verhielp.

Bestand Klaarmaken Voor Lasersnijder

Spider Final All Parts Final.png

Assemblage

Servo connectie.jpeg

Voordat alles in elkaar gezet kan worden, moeten de scharnieren nog gemaakt worden. Deze zijn gemaakt uit twee buizen van 12 en 10 millimeter. De buis van 12mm wordt gezaagd in 24 stukken van 7mm hoog, deze onderdelen fungeren als de lager voor de dunnere buizen. Deze dunnere 10mm buizen worden gezaagd in 12 stukken van 20mm.

De servo's zijn verbonden met de bewegende onderden doormiddel van ijzerdraad. Er is hier voor gekozen vanwege de sterkte van het materiaal. Touw was sterk genoeg maar rekte te veel, waardoor het snel los kwam.

Arduino Aansluiting + Code

Arduino connect.PNG

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver driver = Adafruit_PWMServoDriver(0x40);

int servoMin = 212; //This value equals a rotation of -45 degrees
int servoMax = 386; //This value equals a rotation of 45 degrees
int servoMiddle = 299;

int servoFreq = 50;

//The pin positions for all the servos
int servos[] = {0,1,2, 4,5,6, 8,9,10, 12,13,14};
int horServos[] = {2, 6, 8, 12};
int baseServos[] = {1, 5, 9, 13};
int tipServos[] = {0, 4, 10, 14};

int triggerPin = 11;
int echoPin = 12;

void setup() {

  //Initialization

  Serial.begin(9600);

  driver.begin();

  driver.setOscillatorFrequency(27000000);
  driver.setPWMFreq(servoFreq);

  pinMode(triggerPin, OUTPUT);
  pinMode(echoPin, INPUT);

  delay(10);

}

void loop() {

  //Points the tips down if there is nothing within range, and up if there is
  if(CheckDistance()) {
    for(int i = 0; i < 4; i++) {
      driver.setPWM(tipServos[i], 0, servoMax);
    }
  }
  else {
    for(int i = 0; i < 4; i++) {
      driver.setPWM(tipServos[i], 0, servoMin);
    }
  }

  delay(500);
}


bool CheckDistance() {

  //Pulses the ultrasonic sensor
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(5);
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);

  pinMode(echoPin, INPUT);
  int duration = pulseIn(echoPin, HIGH);
  int cm = duration * 0.5 * 0.0343; //Converts the duration variable into centimeters

  Serial.println(cm);

  if(cm >= 10) {
    return false;
  } 
  return true;

}

Conclusie

Spider bot test

De Spider-Tron is uiteindelijk helaas niet succesvol gebleken, met het huidige ontwerp is de robot te zwaar om op zijn vier poten te blijven staan. Om deze reden was het niet mogelijk om verder te testen dan in bovenstaande video te zien is. Een simpele oplossing voor dit probleem zou sterkere servo motoren zijn, de kleine servo's die nu in de robot zitten zijn niet sterk genoeg om het gehele gewicht van de spin omhoog te kunnen houden. Naast sterkere servo's zou het een oplossing kunnen zijn om terug te gaan naar het pees systeem, zodat er zoveel mogelijk gewicht uit de poten gehaald kan worden. Maar ook dit systeem heeft sterkeren servo motoren nodig.

Uiteindelijk ben ik er wel van overtuigd dat het ontwerp de potentie heeft om te kunnen werken met betere servo motoren. Daarnaast was dit project wellicht iets te hoog gegrepen voor de tijd die er beschikbaar voor was, dus ik hoop in de toekomst nog een keer bij terug te komen om het meer tijd te geven.