3D Scanner Holder

From Digitálne technológie výroby
Revision as of 09:57, 16 June 2017 by Vlado (talk | contribs) (Držiak)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Prečo?

Pri používaní 3D Davis scanner [1] sme zistili, že jemná manipulácia s malým objektom je náročná a komplikuje skenovanie, preto sme sa rozhodli uľahčiť si robotu a vyrobiť otáčavý držiak na malé objekty.

Postup

Vytvoríme si v 3D programe držiak, ktorý sa umiestni na motorček (steper, alebo servo), ktorý bude ovládaný pomocou arduina, aby sa vedel otáčať o presne definovaný uhol dokopy o 360° okolo vertikálnej osi.

Držiak by mal plošinu, ktorá by sa vedela otáčať ešte aj o 90° okolo horizontálne osi. Keďže program si vyžaduje, skenovanie aj z hora, čo je samozrejmé a namsieto toho, aby sa manipulovalo s kamerou, sa skenovaný objekt otočí o po horizontálnej osi a tak sa následne otáča.

Čo k tomu potrebujeme?

Hardware- hmotné veci: motor, arduino + súčiastky, držiak, krabička. Software- program ktorý bude spracovávať analógový signál z joysticku a ovládať motor, ktorý bude otáčať podnos.


Motor

Na tento projekt sme použili 5 žilový krokový motor z tlačiarne napájaný 12 V DC (typ: msgb048a54 01). Jeho veľkosti sú prispôsobené všetky vyrobené časti. Tento motorček je veľmi výhodný v tom, že sa dokáže jednoducho ovládať a vykonávať jeden krok čo je v prípade nášho krokového motora 1/51 z celej otáčky
vizualizácia krokového motora, použitého v tomto projekte

Držiak

V programe FreeCAD sme si vytvorili 3D model držiaka. Vďaka technológii 3D tlače, dokážeme veľmi jednoducho vytvoriť to čo potrebujeme a tak sa vyhneme známemu problému pri zostavovaní ľubovoľnej aparatúry "držiak držiaku držiaku..." tu je link na stiahnutie súbor pre FreeCad stiahnúť tu

Držiak sa skladá z nasledujúcich častí:

Základňa

Slúži na držanie krokového motora v stabilnej polohe a taktiež drží aj nosnú časť na ktorej je klzná plocha.
základňa



Nosná časť

Slúži na držanie Klznej plochy a je umiestnená na základni prostredníctvom koľajničky, ktorá dovoľuje jemnú manipuláciu, aby ozubené kolesá do seba správne zapadli.
nosná časť
nosná časť + základňa

Klzná plocha

Aby sa celý systém mohol otáčať musí mať malé trenie, najjednoduchším riešením je klzné ložisko- keďže sú materiály dostatočne tvrdé a hladké, nie je to problém. Klzná plocha je umiestnená na nosnej časti.
klzna plocha
základňa + nosná časť+ klzná plocha

Ozubené koleso na osi motorčeka

je to jednoduché ozubené koleso prispôsobené na upevnenie o krokový motor, má 12 zubov.
ozubené koleso
ozubené koleso umiestnené na krokovom motore
umiestnenie krokového motora v základni

Veža

Veža je umiestnená na klznej ploche, na ktorej je na spodnej strane ozubené koleso ktoré má 27 zubov, čo je viac oproti ozubenému kolesu ktoré je umiestnené na motorčeku, tým je zabezpečený prevod do pomala 2,25:1. Cez stred ozubeného kolesa je diera, ktorá slúži na to aby dochádzalo iba k rotácii okolo vertikálnej osi. Veža je tak pohyblivá o 360° okolo vertikálnej osi. Taktiež sú na nej ramená, ktoré držia podnos.
veža
veža umiesnená na klznej ploche

Podnos

Posledná časť držiaka, na ktorý sa pokladá objekt, ktorý chceme skenovať. Pomocou jednoduchého kĺbu sa dá otáčať okolo horizontálnej osi.
podnos
podnos umiestnený na veži pomocou horizontálnej tyče spolu s vežou

Arduino

Systém ovládanie je veľmi jednoduchý. Využíva sa joystick na ovládanie krokového motora, ktorý následne otáča vežu. Na displeji sa zobrazí počet stupňov o koľko sa otočí vzhľadom na určený štartovací bod.

Potrebné súčiastky: Arduino, joystick, LED displej, motor (v našom prípade krokový), ULN2003, 12V DC zdroj a dostatočný počet káblov.


Zapojenie

Krokový motor je napojený na ULN2003, kde sú 4 ovládacie piny a 1 spoločné napájanie. Návod ako správne zapojiť 5 žilový krokový motor je na youtube

ULN2003 je napojená na arduino na piny (D8, D9, D10, D11)
schéma zapojenia krokového motora a ULN2003, farba drôtov nezodpovedá realite je potrebné určiť spoločný drôt a potom v správnom poradí pozapájať ostatné. zrdoj:https://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino
. Joystick, je patrične zapojený na analógový vstup do arduina A0- stačí iba 1 vstup, keďže ovládame iba 1 os. Napájanie motora iba z arduina nie je dostačujúce, preto je potrebné mať dodatočný DC zdroj. LED displej je napojené na (piny) a zobrazuje uhol o ktorý sme už otočili náš držiak.
      Kód:
 
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Stepper.h>



LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // nastavenie LCD na I2C adrese 0x3f
int joyX = A7; //analogovy vstup pre joystick, x-os
int push = 7; // optional, digitalny vstup pre joystick, stlacenie joysticku- môže byť na vymazanie polohy
int joyVal; // hodnota prečítana na x osi
float uhol;
float a;

const int stepsPerRevolution = 51;  //pocet krokov potrebnych na jednu otocku, treba nastavit podla motora
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // inicializacia kniznice pre motor (pocet otacok potrebnych na 1 otocku, vystup z arduina do drivera 1(VAD1),(VAD2),(VAD3),(VAD4))
int stepCount = 0;         // ratanie krokov motora

void setup() {
  Serial.begin(9600); //inicializacia komunikacie cez usb s kompom
  lcd.begin(16,2); //inicializacia lcdka s 16 stlpcami, 2 riadkami
  lcd.clear();
}


void loop() {

  joyVal = analogRead(joyX); //precitanie hodnoty z x osi, hodnota vystupu z joysticku ak je uplne nalavo-> 0, ak je uplne napravo-> 1023, poloha medzi tym-> hodnoty medzi 0-1023
  // KROK DOPRAVA POMALY:
  if (joyVal > 600 && joyVal <= 900 ) { // ak je joystick trochu vychyleny doprava
  //lcd.println(joyVal); //toto sa vypisuje na LCD -> hodnota vystupu z joysticku
  myStepper.step(1); //spravy jeden krok
  stepCount++;
  //lcd.print("UHOL:"); //toto sa vypisuje na LCD
  //toto sa vypisuje na LCD ->pocet krokov ktorych sa doteraz spravilo
  //prida sa hodnota k poctu krokov sa spravilo
  delay(500); // pocka pol sekundy a ptm sa opakuje loop => cim mensia hodnota tym rychlejsie sa bude opakovat loop => rychlejsie otacanie motora
  }
  //KROK DOPRAVA RYCHLO:
 if (joyVal > 900 ) {
    //lcd.println(joyVal);
    myStepper.step(1);
    stepCount++;
    //lcd.print("UHOL:");
    delay(100);// pocka 0,1 sekundy a ptm sa opakuje loop => otaca sa rychlejsie nez v podmienke vyssie
  }
  // KROK DOLAVA POMALY: //podobne ako vyssie len dolava
if (joyVal < 400 && joyVal >= 100 ) {
   // lcd.println(joyVal);
    myStepper.step(-1);
    stepCount--;
    //lcd.print("UHOL:");
    delay(500);
}
//KROK DOLAVA RYCHLO: //podobne ako vyssie len dolava
if (joyVal < 100) {
   // lcd.println(joyVal);
    myStepper.step(-1);
    stepCount--;
    //lcd.print("UHOL:");
    delay(100);
}

    uhol=stepCount*3.3; // 1 krok zanamená, že sa veža posunie o 3,3 stupňa
    if (a!=uhol)        // ak sa uhol zmení, tak ho vypíše na LCD 
    {
    lcd.setCursor(1,12);
    if(uhol>=100)
    lcd.print(uhol, 1);
    else
    lcd.print(uhol, 2);
    a=uhol;           // // ak sa uhol nezmení, tak nech nerobí nič
    }
    delay(1);
if (stepCount==109 or stepCount==-109)
  {
    stepCount=0;
    }
}

Krabička

Celý systém je uložený v krabičke, ktorá sa skladá z dvoch častí strojovňa a garáž, ktorá tak zabezpečí prehľadnosť a ľahkú manipuláciu. Na vytvorenie krabičky odporúčame Rozšírenie do Inkscapu laser tool- Tabbed box [2]

Pre tento projekt sm echeli vyskúšať ako zvládneme presnosť rezu pri 8 mm plexiskle. Pri nastavení lasera rýchlosť 0,7 a výkon 90 sme dokázali takýto hrubý materiál prerezať.

V inkscape sme využili rozšírenie Tabbed box, kde sú rozmery a nastavenia nasledovné:
Nastavenia Laser Tool pre výrobu krabičky z 8 mm plexiskla

strojovňa

V tejto časti krabičky je umiestnené arduino, joystick a LED displej a vstup na DC zdroj a výstup na kontrolu držiaka.

garáž

V tejto oddelenej časti je umiestnený samotný držiak, ktorý má dostatočne dlhý kábel, aby sa vedel pohodlne umiestniť na požadované miesto skenovania . Toto káblové spojenie strojovne s držiakom zaručí, aby sme sa náhodou neposunuli celý systém, keď budeme pomocou joysticku ovládať otáčanie.