Sari la conținut
ELFORUM - Forumul electronistilor

Comanda motor bipolar stepper


Vlad Mihai

Postări Recomandate

Ai incercat sa faci un programel care face orice f simplu in MikroC? Ai descarcat unul de pe internet sa vezi cum e structurat?

 

Ce nu merge? Ai construit programul tau in pseudocod (adica ceva in limbajul tau), gen:

 

1. Daca apas butonul UP, mareste viteza;

2. Daca apas butonul DOWN, micsoreaza viteza;

3. Genereaza pulsurile, etc...

 

Fa-ti lista de actiuni si conditii, in ordinea in care vrei sa se intample si bazat pe ce input data ai. Apoi treci la programare.

 

Ai reusit sa palpai un LED? Exemplul Blink a LED este f important, odata realizat, ai urcat 10 trepte pe scara programarii (si increderii in sine :da ).

 

Apoi programarea pentru proiectul tau:

1. Creezi proiect nou, uite pagina de Edit Project unde specifici tipul de procesor, etc:

post-19977-139829550245_thumb.png

 

2. Setezi PIC (aici citest datasheet de la pagina 1 la sfarsit) si setezi/clear toti bitii dupa cum ai nevoie:

Uite un exemplu pentru un alt tip de PIC (nu 876), in Basic, dar iti arata cum am setat toate registrele care afectau programul meu:

'   Set-up the PICsub procedure InitMain()    OPTION_REG =   0x80              ' Pull-up disabled PORTB    INTCON     =   0x00              ' No INT    OSCCON     =   0x56              ' 2MHz clock    CM1CON0    =   0x00              ' No COMP C1    CM2CON0    =   0x00              ' No COMP C2    CM2CON1    =   0x00              ' No COMP C2    SRCON      =   0x00              ' No SR latch    ANSEL      =   0x00              ' No AN I/Os    ANSELH     =   0x00              ' No AN I/Os    TRISA      =   0x3C              ' A2-A5 inputs, A0-A1 outputs    WPUA       =   0x00              ' Pull-up disabled    IOCA       =   0x00              ' IOC disabled    TRISB      =   0x00              ' All outputs    WPUB       =   0x00              ' Pull-up disabled    IOCB       =   0x00              ' IOC disabled    TRISC      =   0x00              ' All outputs    PORTA      =   0x00              ' Clear PORTA    PORTB      =   0x00              ' Clear PORTB    PORTC      =   0x00              ' Clear PORTCend sub

3. Apoi faci programul:

void main() {AICI SCRII CE VREI SA FACA PROGRAMUL}
Link spre comentariu
  • Răspunsuri 24
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Vlad Mihai

    11

  • Mircea

    8

  • Liviu M

    2

  • dinbooo

    2

Top autori în acest subiect

Imagini postate

Da am făcut un proiect cu LCD+pic+Lm35z cap coadă, citind un tutorial, și am mai facăut și un dual Voltampermetru tot de mine de la 0. deci știu cum se începe un cod dar așa ceva cu motorul pas cu pas nu știu cum se face. habar am cum se începe.

Link spre comentariu

Pai ai secventele de comutare pentru cele 2 faze. Asignezi 4 iesiri ca fiind cele 4 semnale. Apoi faci in asa fel ca iesirile sa urmeze acele comutatii.

 

Uite aici: http://www.stepperworld.com/Tutorials/pgBipolarTutorial.htm

 

Asta-i motorul tau cu identificare conexiuni la PIC (am ignorat L293D):

post-19977-139829550253_thumb.png

LE: Cred ca OUT2 si OUT3 trebuie inversate ca sa mearga si in two-phase mode.

 

Asa se succed iesirile de la PIC ca sa roteasca motorul:

post-19977-139829550255_thumb.png

Link spre comentariu

... cu motorul pas cu pas nu știu cum se face. habar am cum se începe.

Ce zici de modul asta f simplist de a genera secventa de comutare? Tu nu vei avea asta ca cod final, o sa cam rada colegii de noi... dar pentru inceput merge. Vreau ca tu sa ai ideile, doar e proiectul tau.1. Iesirile:OUT1=0OUT2=0OUT3=0OUT4=12. Delay 20 msec - atata stau iesirile ca mai sus.3. Iesirile:OUT1=0OUT2=0OUT3=1OUT4=04. Delay 20 msec - atata stau iesirile ca mai sus.5. Iesirile:OUT1=0OUT2=1OUT3=0OUT4=06. Delay 20 msec - atata stau iesirile ca mai sus.7. Iesirile:OUT1=1OUT2=0OUT3=0OUT4=0Felicitari, ai reusit sa comuti cu 50Hz!!! Faci 50 de pasi pe secunda, cam incet nu?!Data viitoare posteaza codul tau, nu conteaza cat de mandru esti de el. Hai sa facem si treaba, ca de discutat am discutat destul. Un an nou fericit, ca-i trecut de miezul noptii in Romania.
Link spre comentariu

salut .imi cer scuze ca vin cu o intrebare care nu este pt.acest motor dar ,de ceva timp caut o schema pe intelesul meu (nu caut idei de cum se poate face) de a inversa sensul de rotatie la un motor de 220v 2,4kw asincron

Link spre comentariu
  • 2 săptămâni mai târziu...

dupa lungi cautari am gasit o secventa de cod care sa porneasca un motor bipolar, dar acum nu am motorul, adica nu am un motor bipolar cu 2 bobine independente, am unul in 3 faze :rade: .

 

void main(){  CMCON = 0x07; // To turn off comparators  ADCON1 = 0x06; // To turn off analog to digital converters  TRISB = 0; // PORT B as output port  PORTB = 0x0F;  do  {    PORTB = 0b00000001;    Delay_ms(500);    PORTB = 0b00000100;    Delay_ms(500);    PORTB = 0b00000010;    Delay_ms(500);    PORTB = 0b00001000;    Delay_ms(500);  }while(1);}
schema de conectare

http://www.electrosome.com/wp-content/uploads/2012/06/PROTEUS-Bipolar-L293D.png

pornind de aici se poate modifica delayul si astfel viteza.

Link spre comentariu
  • 4 săptămâni mai târziu...

mi-am dezmembrat azi imprimata si am facut rapid un test cu motorul bipolar găsit şi cu codul de mai sus... merge si nu prea... am setat delay la 50 ca să am viteza mai mare, se invarte dar vibreaza, conexiunile sunt ok, probabil din cod ceva nu e ok...

 

schema si codul sunt mai sus.

Link spre comentariu

Daca introduci stari intertmediare, cred ca o sa mearga mai rotund.

void main(){  CMCON = 0x07; // To turn off comparators  ADCON1 = 0x06; // To turn off analog to digital converters  TRISB = 0; // PORT B as output port  PORTB = 0x0F;  do  {    PORTB = 0b00000001;    Delay_ms(500);     PORTB = 0b00000101;    Delay_ms(500);    PORTB = 0b00000100;    Delay_ms(500);    PORTB = 0b00000110;    Delay_ms(500);    PORTB = 0b00000010;    Delay_ms(500);//.....    PORTB = 0b00001000;    Delay_ms(500);  }while(1);}
.
L.E. Uita-te la halfstepping in poza de la wikipedia http://en.m.wikipedia.org/wiki/File:Drive.png
Link spre comentariu

... vibreaza...

E normal sa vibreze. Oricum, filmul tau avea muzica pe fundal deci nu prea se auzea ce zgomote facea motorul. Asa cum zicea Liviu M, poti trece la pasi intermediari.Codul l-as modifica asa:Secventa 1 - alimentezi faza 1Delay_ms(20) - vezi daca motorul este capabil sa comute, altfel vei pierde pasiSecventa 2 - tai alimentare faza 1Delay_ms(cat vrei tu sa fie viteza) - aici motorul nu primeste nici o alimentareSecventa 3 - alimentezi faza 2Delay_ms(20)Secventa 4 - tai alimentare faza 2Delay_ms(cat vrei tu sa fie viteza) - aici motorul nu primeste nici o alimentaresamdDa-ne de stire cum a mers, ce ai mai facut.
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări