Home Programmering Step motor kontroller
Step motor kontroller PDF Skriv ut E-post
Skrevet av Jens Christoffersen   
fredag 18. september 2009 20:30
Artikkelindeks
Step motor kontroller
Komponenter
C programmet
Verdien som sendes
Video
Alle sider

I denne  artikkelen, skal jeg vise hvordan jeg har laget en kotroller for to stk step motorer. Vi kommer til å bruke parallelportens pin nr 2, 3, 4 og 5.

For å lage denne kontrolleren trenger du følgende:

 

 

  1. test print plate
  2. 8 stk 1k Ohm motstand
  3. 2 stk zener dioder
  4. 2 stk ULN2003 IC
  5. diverse ledningsbiter
  6. 2 stk unipolar step motorer

 

 

 


 

Komponenter og koblinger.

 

Dette koblet jeg sammen i henhold til dette skjemaet:

 

 

Det ble da seende ut som dette:

 

Det er dobbelt, fordi planen er å kunne styre to stepper motorer med kun 4 pinner fra parallel porten. Hvis dette fungerer, kan vi doble det og da kan vi styre 4 steppermotorer med de 8 pinnene som er tilgjengelig i parallel porten.

 


 

C programmet som styrer dette.

Denne listingen gjør at 2 unipolar stepmotorer snurrer noen runder den ene veien, for så å snurre like mange ganger den andre veien. Det kan sikkert med fordel gjøres på en annen måte, men denne har jeg valgt.

 

Kompileres med gcc -O 2stepmotor.c -o 2stepmotor

Kjøres med kommandoen sudo ./2stepmotor

 

 

/****************************************************
* Program som styrer to steppermotorer synkronisert *
* Laget av Jens Christoffersen                      *
* 2009                                              *
*****************************************************/
//includes
#include
#include
#include
#include
#include

//definitions
#define base 0x3bc
#define sleeping1 7000    // by changeing this, you change the speed og the motor.

//variables
int x;


main(int argc, char **argv)
{
// get access to the parallel port
if (ioperm(base,1,1))
fprintf(stderr, "Couldn't get the port at %x\n", base), exit(1);

// send low, to all pins
outb(0, base);

// start infinit loop
while (1)
{

// start for - loop
for (x=0;x<48;x++)
{
// start sending high nad low to pins start with all pins to low
outb(0, base);
// send high to pin 2 and 4
outb(5, base);
printf ("Pin \t2 and 4 high and \t3 and 5 low.\n");
usleep(sleeping1);

// send low to all pins
outb(0, base);
printf ("Pin \t2 and 4 low and \t3 and 5 low.\n");
usleep(sleeping1);

// send hig to pin 3 and 5
outb(10, base);
printf ("Pin \t2 and 4 low and \t3 and 5 high .\n");
usleep(sleeping1);

// send low to all pins
outb(0, base);   
//send high til pind 2, 3, 4 and 5
outb(15, base);
printf ("Pin \t2 and 4 high and \t3 and 5 high.\n");
usleep(sleeping1);
} // end for loop

// start new for loop
for (x=0;x<48;x++)
{
// do everything again, just the other way around.
outb(0, base);   
outb(15, base);
printf ("Pin \t2 and 4 high and \t3 and 5 high.\n");
usleep(sleeping1);

outb(0, base);
outb(10, base);
printf ("Pin \t2 and 4 low and \t3 and 5 high .\n");
usleep(sleeping1);

outb(0, base);
printf ("Pin \t2 and 4 low and \t3 and 5 low.\n");
usleep(sleeping1);

outb(0, base);
outb(5, base);
printf ("Pin \t2 and 4 high and \t3 and 5 low.\n");
usleep(sleeping1);

} // end for loop


} // end infinite loop

// send low to all pins
outb(0, base);
}

 

 


 

Verdien som sendes

 

For å finne ut hviilken verdi som skal sendes, legger man sammen følgende tall:

 

Pin 2 3 4 5 6 7 8 9
Verdi 1 2 4 8 16 32 64 128

 

Dersom du vil sende high til pin 2 sender du verdien 1 til parallelportaddressen. Hvis du vil sende high til pin 3 og 5 legger du sammen verdiene: 2+8=10. Da sender du verdien 10 til parallelportaddressen.

 

Det er sånn jeg har regnet ut verdien som blir sendt til de forskjellige pinnene i programmet på forrige side.

 


 

Video

 

Klikk på linken for å se en liten videosnutt. Her har jeg koblet på det lille LED-panele som vi har laget tidliegere, for å se hva som blir sendt til parallelporten.

 

Link til video

 

 

 

 

Comments (0)
Write comment
Your Contact Details:
Comment:
[b] [i] [u] [url] [quote] [code] [img]   
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
Sist oppdatert tirsdag 04. mai 2010 10:49
 
Kopirett © 2010 nerdegutta.org. Alle rettigheter reservert.
Joomla! er fri programvare utgitt under GNU/GPL License.