3 osý manipulátor bez PC

Odpovědět
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

10. 9. 2014, 12:16

jeykey píše:Ahoj, takže ses dostal trochu dál.., ten pomalej rozjezd sem ještě nestih - moc náročnej víkend + navazující povinnosti -
kouknu se na možnosti, jak to tam nejlíp zakomponovat, aby byly funkční koncáky, a Tobě stačí jen jedna osa, nebo jich budeš chtít rozhejbat víc?
Já zkoušel sám ten rozjezd pomocí nějakých funkcí accelstepper, ale nefungovalo mi to dohromady. Neumím to tam správně zapomponovat.
Už mi to běhá na stroji, ale jezdí to prudce a s problémama.
Zatím by mi stačila vyřešit tato jedna osa a pak bych chtěl rozhejbat ty 3 osy. S tím ale taky budu potřebovat nějak nakopnout než pochopím princip.
Zatím díky, jsem rád za pomoc :wink:
jeykey
Příspěvky: 114
Registrován: 25. 8. 2014, 8:02

10. 9. 2014, 1:40

Accelstepper, bys musel použít samostatně, ale tam nevim jak bys dopadl s koncákama, protože to moc neznám

tady je upravenej program, napsal sem to přehledně, aby ses vtom neztratil, je potřeba doladit nastavení pro tvoje motory, když se pak bude předělávat na víc os aby běžely současně, musí se tam dodělat stavový indikátory, do toho se mi zatim moc nechtělo :( . Jinak různý koncáky a spínače se dají dodělat na jakoukoli funkci, takže nejsi omezen jako třeba u Machu3.

#include <SoftwareSerial.h>

#define DIR_PIN 2
#define STEP_PIN 3
int keyStart = A0; // PIN pro připojení tlačítka Start
int keyHome = A1; // PIN pro připojení tlačítka Home
int limitRefer = 1; // PIN pro připojení tlačítka Pause

void setup() {
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
pinMode(keyStart, INPUT_PULLUP); // tady připojuješ tlačítko na pullup, takže stačí zapojit jako normální vypínač (ne přes rezistor na GND)
pinMode(keyHome, INPUT_PULLUP); //tlačítko Home
pinMode(limitRefer, INPUT_PULLUP); //referenční snímač 1 na ose x
}

void loop() {
if (digitalRead(keyStart) == LOW) {
delay(500);
rotate(15000, 4.00); //Rychloposuv + 5000 kroků
delay(100);
rotate(6000, 0.2); //posuv + 6000 kroků
delay(100);
rotate(-6000, 4.0); //rychloposuv - 6000 kroků
delay(300);
rotate(5500, 4.0); //rychloposuv + 5500 kroků
delay(100);
rotate(4500, 0.2); //posuv + 4500 kroků
delay(100);
rotate(-10000, 4.0); //rychloposuv - 10000 kroků
delay(100);
}
if (digitalRead(keyHome) == LOW) {
delay(100);
rotate(-100000, 1.00); //Hledání výchozí polohy. Při najetí koncáku na výchozí poloze sepne reset
}
}
void rotate(int steps, float speed) {
//rotate a specific number of steps - (negitive for reverse movement)
//speed is any number from .01 -> 70 with 1 being fastest - Slower is stronger
int dir = (steps > 0) ? HIGH : LOW;
steps = abs(steps);
int zrychleni = 20; // tady se mění zrychlení motoru při rozjezdu (počet kroků na plnou rychlost)
float maxDelay = 700; // tady se mění prudkost náběhu motoru (když dělá velký rázy, zvýší se číslo)

digitalWrite(DIR_PIN, dir);
int stepsStart = zrychleni;
int stepsMid = steps-zrychleni*2;
int stepsEnd = zrychleni;

float oneStep = maxDelay/zrychleni;

float usDelay = (1 / speed) * 70;

if (steps < 2){
limits(); // kontrola jestli se má něco řešit před dalším pohybem
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);

digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
return;
}

if (steps <=(zrychleni*2)+1){
int stepsMod = steps % 2;
int stepsDiv = steps-stepsMod;
stepsStart = (stepsDiv/2)+stepsMod;
stepsEnd = stepsDiv/2;
stepsMid = 0;
}

for (int i = 0; i <= stepsStart; i++){ //rozjezd motoru
limits();
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);

digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay+(maxDelay-oneStep*i));
}

for (int i = 0; i <= stepsMid; i++) { // středová vzdálenost
limits();
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);

digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}

for (int i = 0; i <= stepsEnd; i++){ //zastavení motoru
limits();
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);

digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay+(oneStep*i));
}
}


void rotateDeg(float deg, float speed) {
//rotate a specific number of degrees (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
int dir = (deg > 0) ? HIGH : LOW;
digitalWrite(DIR_PIN, dir);

int steps = abs(deg) * (1 / 0.225);
float usDelay = (1 / speed) * 70;

for (int i = 0; i < steps; i++) {
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
}

void limits(){
// if (koncák 1 tak...
// if (koncák 2 tak...
// if (spínač 1 tak...
if (digitalRead(limitRefer) == LOW) delay(100);
}



*****

tady je něco Accelstepper na hraní a zkoušení:

#include <AccelStepper.h>

AccelStepper stepper(1, 9, 8); // driver, step, dir

void setup()
{
stepper.setMaxSpeed(300);
stepper.setAcceleration(40);
stepper.setEnablePin(6);
}


void loop(){
stepper.setMaxSpeed(400);
stepper.moveTo(500);
stepper.run();

stepper.setMaxSpeed(400);
stepper.moveTo(-600);
stepper.run();

stepper.setMaxSpeed(200);
stepper.moveTo(70);
stepper.run();

stepper.setMaxSpeed(400);
stepper.moveTo(-70);
stepper.run();


}
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

10. 9. 2014, 7:28

Diky za program. Beha o moc lip a bez problemu.

Mel bych otazku kde mam pripojit pin pro pripojeni tlacitka pause ?
Na vstupu A1 mam pripojeno tlacitko start. Asi jsem natvrdly :D
Ten vstup pause ma spustit najeti na refefenci bod?

Jeste mam takovy dotaz ze kdyz mam arduino pod napetim i driver+motor tak se mi nekdy samo spusti najeti do vychozi polohy a ujede to prednastavene kroky. Vsechny vodice mam oddelene a tedy se samostatne nespojuji. Treba dnes se mi to spustilo i 3 x za sebou.

Ohledne toho 3 oseho manipulatoru bude postacovat kdyz kazda osa bude jezdit samostatne. Tedy ze osa x ujede 1000 kroku, potom prikaz osa y ujede 2000 kroku, sepne rele, osa y ujede -2000 kroku a tak jednoduse. Slozite bych to nedelal pokud neni potreba. Budou tam i nejake koncove spinace na koncich os, aby to nenabouralo a tak. A taky nejakz vstup.

Znovu dekuji za pomoc :)
jeykey
Příspěvky: 114
Registrován: 25. 8. 2014, 8:02

10. 9. 2014, 8:18

Promiň, tam sem zapoměl změnit tu poznámku, nemá tam bejt pause ale limitRefer - jako referenční snímač pro X, ale není nikde ošetřený, chtěl sem aby z toho bylo vidět kam se mají psát případný snímače a spínače, jinak je na digital Pin 1, Ty tam všude používáš analogový vstupy, ale dají se použít i digitální a neplýtvat analogové, ale jestli je (analogový vstupy) nebudeš využívat na nějaká měření, nebo senzory, tak je to jedno.
A teď sem kouk na Arduino a zjistil sem že ani digital 1pin nemá, takže to přepiš na nějaký jiný, třeba 22, jestli ho máš (já mám Arduino Due, tak nevim přesně jak je to na tvých Arduinech).
tarvisio píše: Jeste mam takovy dotaz ze kdyz mam arduino pod napetim i driver+motor tak se mi nekdy samo spusti najeti do vychozi polohy a ujede to prednastavene kroky. Vsechny vodice mam oddelene a tedy se samostatne nespojuji. Treba dnes se mi to spustilo i 3 x za sebou.
to vypadá, že se Ti aktivuje tlačítko Home, záleží jak to máš zapojený, jakou dýlku kabelu a jak blízko nějakýho silnějího magnetickýho nebo elektrickýho pole (jestli neni kabel k tlačítku stíněnej, třeba krokáč má docela silný pole, jestli se v kabelu indukuje napětí, tak může zkratovat pin k tlačítku Home a spustit pojezd), buď dej celej řádek s tlačítkem Home do poznámek, jestli se to spustí nebo ne, a nebo dej, že tlačítko musí bejt stisknutý dýl, aby se aktivovalo.
nejjednodušejc třeba takhle:

if (digitalRead(keyHome) == LOW) {
delay(1000);
if (digitalRead(keyHome) == LOW){ // jestli je tlačítko stisknutý i po vteřině, vykonej příkaz
rotate(-100000, 1.00); //Hledání výchozí polohy. Při najetí koncáku na výchozí poloze sepne reset
}
}

je to jen na zkoušku, když to bude potřeba, tak se to musí udělat složitějc
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

12. 9. 2014, 3:28

Díky za úpravu programu.
Tlačítko se musí držet déle ale už se to samo nespouští, takže je to v pohodě.
jeykey
Příspěvky: 114
Registrován: 25. 8. 2014, 8:02

12. 9. 2014, 8:26

OK, ten delay se dá snížit, kam až to pude, aby ignoroval hranu signálu, teď je tam 1000, to je vteřina, klidně by se dalo jít o hodně níž, vyzkoušej to. Důležitější ale je zjistit co to dělá, protože na koncáky se tohle použít nedá, to je jen pro teď, aby Ti nestál vývoj.

X
jestli chceš jednoduchý a rychlý řešení, tak je to určitě ten robot využívající karteziánskej souřadnej systém, ovládání je zkušebně hotový, jestli se Ti nelíbý to krokování, tak neni problém převýst kroky na mm. To je už minimální zákrok do programu, proti tomu, co sme tam vyvedli doteď, pak se z toho stane vlastně G-kód, bez obráběcích funkcí, navíc jenom nějaký sevři a pusť.

XX
jestli si chceš hrát a nejsi limitovaný časem, tak je to zas určitě ta ruka, arduino to utáhne, já to svoje mám na to samý, kupoval sem dvojku, protože má vyšší výkon a spoustu přerušení(interrupts), ale stejně budu dělat výpočty dráhy na PC a Arduino bude mít na starosti nastavování předdefinovaných otočení motorů (v podstatě to bude vypadat podobně jak to máš teď Ty, jenom, motory musí běžet synchronně, bude jich asi 6 nebo 7, podle toho jak vymyslím klepeta (ten co máš na fotce má 5 motorů, jeden točí podstavou). Vypočítávat dráhy budu asi v javě, nebo pythonu a pak to nahraju do Arduina v podobě nějakýho očesanýho G-kódu.

XXX
pomocí G-kódu by to šlo řídit určitě, jenom se musí udělat kinetický výpočty, některý rovnice můžou mít nekonečnej počet řešení, takže by uživatel musel určit nějaký kritéria, jedna věc je dostat klepeto na souřadnice, jiná jak budou rozdělený úhly na jednotlivých motorech(kloubech) a ještě jiná jak dlouho to bude trvat, podle toho by se pak generoval prováděcí Kód, ten by se nahrál na SD a potom by to už běhalo bez PC. Motory asi přes drivery, to sou tři piny na motor. Takže spočítej piny a budeš vědět, kolik čeho tam napícháš.
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

12. 9. 2014, 8:57

jeykey píše:OK, ten delay se dá snížit, kam až to pude, aby ignoroval hranu signálu, teď je tam 1000, to je vteřina, klidně by se dalo jít o hodně níž, vyzkoušej to. Důležitější ale je zjistit co to dělá, protože na koncáky se tohle použít nedá, to je jen pro teď, aby Ti nestál vývoj.

X
jestli chceš jednoduchý a rychlý řešení, tak je to určitě ten robot využívající karteziánskej souřadnej systém, ovládání je zkušebně hotový, jestli se Ti nelíbý to krokování, tak neni problém převýst kroky na mm. To je už minimální zákrok do programu, proti tomu, co sme tam vyvedli doteď, pak se z toho stane vlastně G-kód, bez obráběcích funkcí, navíc jenom nějaký sevři a pusť.

XX
jestli si chceš hrát a nejsi limitovaný časem, tak je to zas určitě ta ruka, arduino to utáhne, já to svoje mám na to samý, kupoval sem dvojku, protože má vyšší výkon a spoustu přerušení(interrupts), ale stejně budu dělat výpočty dráhy na PC a Arduino bude mít na starosti nastavování předdefinovaných otočení motorů (v podstatě to bude vypadat podobně jak to máš teď Ty, jenom, motory musí běžet synchronně, bude jich asi 6 nebo 7, podle toho jak vymyslím klepeta (ten co máš na fotce má 5 motorů, jeden točí podstavou). Vypočítávat dráhy budu asi v javě, nebo pythonu a pak to nahraju do Arduina v podobě nějakýho očesanýho G-kódu.

XXX
pomocí G-kódu by to šlo řídit určitě, jenom se musí udělat kinetický výpočty, některý rovnice můžou mít nekonečnej počet řešení, takže by uživatel musel určit nějaký kritéria, jedna věc je dostat klepeto na souřadnice, jiná jak budou rozdělený úhly na jednotlivých motorech(kloubech) a ještě jiná jak dlouho to bude trvat, podle toho by se pak generoval prováděcí Kód, ten by se nahrál na SD a potom by to už běhalo bez PC. Motory asi přes drivery, to sou tři piny na motor. Takže spočítej piny a budeš vědět, kolik čeho tam napícháš.
Ok, já ten delay už upravil na 100 ms a dal jsem ho i před spuštění start pro jistotu.

Tak teda bych zkusil tu první variantu X, protože je nejjednoduší. Já moc volného času nemám a i tak mi to zabere dost času.
To jsem něvěděl že jdou ty kroky převést na mm, to by bylo vlastně většina vyřešené na pohyb a nepotřebuju G kódy. Můžeš mi poradit jak to převést na ty mm ? nevím jestli to půjde i s desetinou čárkou. Nemusí být vše, stačí jen ukázka a já si to přepíšu pak :D Nyní mám 1000 kroků na 1 mm.

Mám ještě arduino mega a to použiju na ten manipulátor, takže tam mám asi tolik pinů jako ty. A ještě kdyby si mi poradil jak tam zakomponuju další osu. A příkazy pak budu psát postupně jako..osa X jeď tolik, osa Y jeď tolik ....

Zde je aktualni program: Díky moc !


#include <SoftwareSerial.h>

#define DIR_PIN 2
#define STEP_PIN 3
int keyStart = A0; // PIN pro připojení tlačítka Start
int keyHome = A1; // PIN pro připojení tlačítka Home
int limitRefer = 1; // PIN pro připojení tlačítka Refer

void setup() {
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
pinMode(keyStart, INPUT_PULLUP); // tady připojuješ tlačítko na pullup.
pinMode(keyHome, INPUT_PULLUP); //tlačítko Home
pinMode(limitRefer, INPUT_PULLUP); //referenční snímač 1 na ose x
}

void loop() {
if (digitalRead(keyStart) == LOW) {
delay(500);
rotate(-9765, 0.70); //Rychloposuv
rotate(-2790, 0.07); //posuv
delay(100);
rotate(8000, 0.7); //rychloposuv
delay(100);
rotate(-7700, 0.7); //rychloposuv
rotate(-3488, 0.07); //posuv
delay(100);
rotate(15743, 0.7); //rychloposuv
delay(500);
}
if (digitalRead(keyHome) == LOW) {
delay(500);
rotate(10000, 0.3); //Hledání výchozí polohy.
}
}
void rotate(int steps, float speed) {
//rotate a specific number of steps - (negitive for reverse movement)
//speed is any number from .01 -> 70 with 1 being fastest - Slower is stronger
int dir = (steps > 0) ? HIGH : LOW;
steps = abs(steps);
int zrychleni = 400; // tady se mění zrychlení motoru při rozjezdu (počet kroků na plnou rychlost)
float maxDelay = 700; // tady se mění prudkost náběhu motoru (když dělá velký rázy, zvýší se číslo)

digitalWrite(DIR_PIN, dir);
int stepsStart = zrychleni;
int stepsMid = steps-zrychleni*2;
int stepsEnd = zrychleni;

float oneStep = maxDelay/zrychleni;

float usDelay = (1 / speed) * 70;

if (steps < 2){
limits(); // kontrola jestli se má něco řešit před dalším pohybem
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);

digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
return;
}

if (steps <=(zrychleni*2)+1){
int stepsMod = steps % 2;
int stepsDiv = steps-stepsMod;
stepsStart = (stepsDiv/2)+stepsMod;
stepsEnd = stepsDiv/2;
stepsMid = 0;
}

for (int i = 0; i <= stepsStart; i++){ //rozjezd motoru
limits();
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);

digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay+(maxDelay-oneStep*i));
}

for (int i = 0; i <= stepsMid; i++) { // středová vzdálenost
limits();
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);

digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}

for (int i = 0; i <= stepsEnd; i++){ //zastavení motoru
limits();
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);

digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay+(oneStep*i));
}
}


void rotateDeg(float deg, float speed) {
//rotate a specific number of degrees (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
int dir = (deg > 0) ? HIGH : LOW;
digitalWrite(DIR_PIN, dir);

int steps = abs(deg) * (1 / 0.225);
float usDelay = (1 / speed) * 70;

for (int i = 0; i < steps; i++) {
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
}

void limits(){
// if (koncák 1 tak...
// if (koncák 2 tak...
// if (spínač 1 tak...
if (digitalRead(limitRefer) == LOW) delay(100);
}
jeykey
Příspěvky: 114
Registrován: 25. 8. 2014, 8:02

12. 9. 2014, 10:16

tak teorie přepočtu:
předpoklady:
na driveru nejsou nastavený mikrokroky
na hřídel motoru je připojený trapézový šroub se stoupáním 8mm v poměru 1:1

jedna otáčka motoru = 200 kroků = 8mm;
takže 80mm je 2000 kroků
1mm je 25 kroků
100mm je 2500 kroků

v programu to ale bude vypadat takhle: Move(X, 240, 120);
// X = osa pohybu, 240 = posun v mm na 240mm v systému, takže ne přičíst 240 ale jet na 240(pokud je to tak pro Tebe lepší), 120 je rychlost v m/min, místo Move může bejt klidně G00 a rychlosti nastavený předtim (jakože G00 třeba 1000m/min; G01 650m/min). 0 by se získala z referenčního čidla, to by bylo lepší umístit tak aby se hodnoty osy pohybovaly v + (lepší pro programátora pohybů robota)


dneska už to ale dělat nebudu, zejtra se du zresetovat na akci a v neděli se budu restartovat.
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

16. 9. 2014, 8:18

Ahoj,
Ano může to v programu vypadat takhle jak píšeš Move(X, 240, 120);
G00 a podobně tam nemusí být stačí mi ten první způsob.

Já ještě přesně nevím kolik bude ten přepočet ale vypočtu to potom podle toho jak to nastavíš a já to upravím podle aktuálního nastavení.
Taky souhlasím že se bude získávat 0 z referenčního čidla na každé ose.
Budu tam mít asi 4 osy.

Můžeš mi tam hodit nějaky přiklad že třeba mezi jednotlivými pojezdy bude i výstup například na uchycení kusu chapačem ? (výstup relé třeba)

Děkuji Ti :wink:
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

21. 9. 2014, 5:33

Zdravím tě,

uvažoval jsem nad tím předěláním na rychlost v m/min a ujetí vzdálenosti v mm a myslím že to bude asi složitější předělat.
Myslím že tu rychlost v m/min tam nepotřebuju. Rychlost může zůstat tak jak je ( .5 a podobně)
Kdyby se tam dal vložit ten výpočet převodu na mm (místo kroků) tak by to bylo fajn, ale jestli to taky bude problém tak nevadí, poradím sis s těma krokama.

Nyní mám ale problém v tom že ta jednoosá mašinka mi už chodí, ale je tam problém s tím LimitHome.
Používám to jako reset tláčítko, tedy když stojí na výchozí poloze odkud začíná svůj pohyb tak je stále sepnuto reset a nemůže se rozjet.
Hledal jsem na netu co bych tam dal, ale marně.

Zde po stistknutí tlačítka jeden k výchozí poloze kde narazí na koncák a zastaví sepnutím reset.
Potřeboval bych tam vložit že když jeden tímto směrem a dostane nějaký vstup tak zastaví. Pak se může pustit zase start dopředu.

Kód: Vybrat vše

if (digitalRead(keyHome) == LOW) {
delay(500);
rotate(10000, 0.3); //Hledání výchozí polohy.
}
jeykey
Příspěvky: 114
Registrován: 25. 8. 2014, 8:02

22. 9. 2014, 6:29

Ahoj, měl sem toho teď hodně, s tim přepočtem m/min sem si to taky rozmyslel, protože ta rychlost je hodně závislá na výpočetním výkonu Arduina, a udělat ověřovací algoritmus, jestli je správná rychlost by bylo na dlouho. Nandal sem tam co sem stihl, zrovna teď nemám volný motory, abych to vyzkoušel, takže když něco tak napiš, hlavně si nejsem jistej jestli budou počítadla přičítat nebo odečítat na správnou stranu, udělal sem výstupy na Sériový monitor, takže bys měl vidět jestli to počítá podle skutečnosti
manipulator.txt.txt
(5.81 KiB) Staženo 273 x
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

22. 9. 2014, 7:33

Diky ti za program.

Budu muset tomu jeste porozumet co si vytvoril, ale zitra to nejak vyskousim.
Zkusim nejak nejdrive zprovoznit na te jednoose masince najeti na tu vychozi polohu.
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

23. 9. 2014, 5:02

Program provádí nyní tohle:

Na sériovém monitoru je pořád X0 Y0 Z0

Vstup A1 - tlačitko Home, motor se točí pomalu doleva, pořád dokola
PIN 8 - PIN pro připojení tlačítka Refer osy X leva strana, -motor se točí rychleji doleva při držení tlačítka. Pokud se tlačítko pustí motor se pomalu točí doprava
Vstup A1 - motor se točí několikrát doleva jako Home talčítko

Tady ještě jinak.
Po zapnutí stisknu tlačítko Home - A1. Motor se pomalu točí doleva-najíždí na referenční bod. Když na něj najede tak se sepne PIN 8. Motor to roztočí rychleji směrem doleva a pokud už není seplý koncák na ose přepnou se otáčky na pomalu doprava.

Psal jsem tam i jiné rychlosti a ujetí vzdálenosti a nereaguje, jezdí si to pořád svoje. Program se ale do arduina posílá.

Zkoušel jsem to na napojení jen osy X, mam teď jeden driver jen.

Myslím že to bohužel zatím nefunguje.
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

23. 9. 2014, 7:27

Dám tady i nějaké fotky té mašinky na to dovrtávání dílů i když není ještě dokončená i když to tady možná nepatří. Je to na sériovou výrobu.
A taky aby si měl lepší pocit z vytvořeného programu :D
jeykey
Příspěvky: 114
Registrován: 25. 8. 2014, 8:02

23. 9. 2014, 7:48

jo, chyby sem identifikoval, koncáky maj fungovat tak, že když najede na koncák, tak z něj vycouvá a zastaví těsně před nim, tim se dostane nejpřesnější nula, takže tam sou asi otočený směry motoru, pošlu to opravený a asi i vyzkoušený, a u monitoru polohy sem zapoměl určit který počítadlo použít, fotky určitě přidej, zajímá mě, jakej manipulátor tvoříš.
Odpovědět

Zpět na „roboti a manipulatory“