Jump to content
ELFORUM - Forumul electronistilor

XY-table cu PIC


Recommended Posts

  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Da, motorul pas cu pas l-am construit si functioneaza foarte bine. Inca nu am inceput sa construiesc masa XY pentru ca nu am un algoritm. Pentru ca masa sa faca linii drepte este simplu, dau (de exemplu) 10 pasi pe motorul X si 100 pe Y. Daca vreau sa continui linia dau 0 pasi pe X si alti 100 pe Y. Pentru o linie diagonala (pe care o fac in Corel Draw si export fisierul cu extensia .PLT , astfel am coordonatele liniei) cred ca trebuie sa impart linia in mai multe bucati si apoi sa le plotez. De exemplu zicem ca un pas inainteaza plotterul un milimetru, avem 50 de pasi pe Y si 200 pe X. Pentru ca PIC-ul nu permite sa comande 2 motoare in acelasi timp trebuie sa le comandam unul dupa altul (primul X si apoi Y) Daca dau sa execute cei 50 de pasi pe Y si apoi cei 200 pe X plotterul ajunge la coordonatele respective dar nu imi face linia diagonala, face o linie verticala si apoi una orizontala Cred ca pot sa impart cei 200 de pasi de pe X la cei 50 de pe Y si obtin un raport 4 la 1 adica dau de fiecare data 4 pasi pe X si 1 pe Y si astfel obtin o linie diagonala. Problema este ca daca am 51 de pasi pe Y si 200 pe X iese o impartire cu virgula (3,92) iar eu nu pot sa dau 1 pas pe Y si 3,92 pe X si atunci am nevoie de un algoritm.

Link to comment

Daca judeci in pasi motor, esti pe o cale gresita. Intre motor si deplasarea X Y este o mare demultiplicare, de obicei de tip surub.Cu o asa demultiplicare se discuta deja in mii de pasi motor unde eroare se estompeaza foarte mult. Nu exista ploter cu eroare 0.Don Mario

Link to comment

satelit PIC-ul poate sa comande nu doua ci mai multe motoare pas cu pas simultan. Ideea ar fi urmatoarea: folosesti intreruperi. Deci in bucla de intreruperi ai mai multe flag-uri (flag= un fel de semafor sau indicator) pe care le setezi sau le resetezi. In bucla din program care se ruleaza ai conditii de testare ( IF ) si daca flag-ul este setat se executa portiunea care urmeaza, daca nu este setat programul trece mai departe si nu executa portiunea de program. Ca sa nu ai mult de scris foloseste pentru codul ce urmeaza a fi executat functii sau daca lucrezi in asm folosesti goto. Singura ta treaba este sa schimbi flagurile in rutina de intreruperi.

 

Ex:

 

rutina intreruperi:

flag_motor_ 1_A = true;

flag_motor_ 1_B = true;

flag_motor_ 1_C = true;

flag_motor_ 1_D = true;

 

flag_motor_ 2_A = true;

flag_motor_ 2_B = true;

flag_motor_ 2_C = true;

flag_motor_ 2_D = true;

sfarsit rutina intreruperi

 

 

program

 

if(flag_motor_ 1_A)

outportb(valoare)

if(flag_motor_ 2_A)

outportc(valoare)

delay()

 

if(flag_motor_ 1_B)

outportb(valoare)

if(flag_motor_ 2_B)

outportc(valoare)

delay()

 

if(flag_motor_ 1_C)

outportb(valoare)

if(flag_motor_ 2_C)

outportc(valoare)

delay()

 

if(flag_motor_ 1_D)

outportb(valoare)

if(flag_motor_ 2_D)

outportc(valoare)

delay()

sfarsit program

 

ce am scris mai sus folosesti daca vrei sa fii super riguros. altfel folosesti doar doua flag-uri:

 

flag_motor_ 1_A = true;

flag_motor_ 2_A = true;

 

 

if(flag_motor_ 1_A)

outportb(valoare)

if(flag_motor_ 2_A)

outportc(valoare)

delay()

 

if(flag_motor_ 1_A)

outportb(valoare)

if(flag_motor_ 2_A)

outportc(valoare)

delay()

 

if(flag_motor_ 1_A)

outportb(valoare)

if(flag_motor_ 2_A)

outportc(valoare)

delay()

 

if(flag_motor_ 1_A)

outportb(valoare)

if(flag_motor_ 2_A)

outportc(valoare)

delay()

 

 

Deci deplasarea pe diagonala o poti face actionand motoarele simultan. Daca numarul de pasi este inegal pentru cele doua motoare ramane setezi sau sa resetezi flagul raspunzator pentru motorul care are mai putini pasi de executat.

 

Pentru o precizie cit mai mare asa cum ti-a zis si sifor iti trebuie demultiplicare. Nu stiu de cati bani dispui dar daca vrei ceva ieftin incearca sa folosesti roti dintate. Alea au raport mare de demultipilicare. Cauta prin ceasuri de perete mai mari. Cu cit raportul de demultiplicare este mai mare cu atat rezolutia va fi mai buna si miscarea va fi pe diagnala o linie dreapta si nu un traseu in forma de trepte.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines