Zammoda VS 2004 Zammoda VS 2004
Projektni zadatak Kamera Motor Klijent - Poslužitelj Web design Download

UPRAVLJANJE KORAČNIM MOTOROM POMOĆU LPT-a


Općenito o koračnim motorima

Jedan zaokret osovine koračnog motora sastavljen je od unaprijed poznatog broja koraka. Brzinu vrtnje određuje frekvencija koračanja (takta). Veličina odnosno broj koraka potrebnih za jedan zaokret osovine ovisi o konstrukciji motora. Najčešći načini upravljanja koračnim motorima jesu unipolarno i bipolarno upravljanje. Razlika među njima je prije svega u tome što promjenu polariteta statorskih polova u unipolarnoj izvedbi vršimo izmjeničnim uključivanjem polovica faznog namota, a kod bipolarne promjenom smjera struje u namotima pojedinih faza.


Unipolarno upravljanje koračnim motorom

Motor ima šest izvoda. Svaki fazni namot podijeljen je na dva dijela. Srednje izvode obično vežemo zajedno na pozitivnu stezaljku napona napajanja motora, dok krajnje izvode preko tranzistora određenom logikom vežemo na negativnu stezaljku. Time osiguravamo da struja kroz namote jednom teće u jednom, a drugi put u drugom smjeru. Time na statorskim polovima mijenjamo polaritet magnetskog polja čime zapravo vršimo komutaciju koračnog motora. Veliki nedostatak unipolarnih motora je neiskorištenost namota, a prednost jednostavna izvedba sklopa za upravljanje budući da nam je za promjenu smjera struje u jednom namotu potrebna samo jedna sklopka, što znači dva tranzistora po namotu.


Bipolarno upravljanje koračnim motorom

S obzirom da su kod bipolarnih motora iskorištena oba namota u cijelosti, kod njih postižemo veće momente i više frekvencije djelovanja, a time i više brzine vrtnje osi motora. Pomoću odgovarajućeg sklopa za bipolarno upravljanje kod svakog punog koraka u jednom od faznih namota promijenimo smjer struje. To izvodimo tzv. H-mostom. Za promjenu smjera struje u namotima bipolarnog motora potrebne su nam po dvije sklopke po namotu, što znači po četiri tranzistora.


Princip rada unipolarnog koračnog motora

  1. Puni korak: struja se propušta redom kroz faze 1a, 1b, 2a pa 2b itd.

    Nedostatak ovakvog načina rada je mali okretni moment pa se puni korak realizira istovremenim propuštanjem struje kroz faze 1a i 1b, zatim 1b i 2a, 2a i 2b, 2b i 1a itd.


  2. Polukorak: struja se propušta kroz fazu 1a, zatim 1a i 1b, 1b, 1b i 2a, 2a, 2a i 2b, 2b, 2b i 1a itd. Na ovaj način se postiže dvostruko veći broj koraka po okretaju, ali je maksimalni moment nešto manji.


LPT

Paralelni port na PC-u ima ukupno 12 digitalnih izlaza i 5 digitalnih ulaza podijeljenih u 3 funkcijske cjeline.

  • 8 izlaznih pinova - DATA Port
  • 5 ulaznih pinova - STATUS Port
  • 4 izlazna pina - CONTROL Port
  • 8 pinova spojenih na masu.

Pin (I/O) Namjena
Pin 1 PC Output nSTROBE
Pin 2 PC Output Data 0
Pin 3 PC Output Data 1
Pin 4 PC Output Data 2
Pin 5 PC Output Data 3
Pin 6 PC Output Data 4
Pin 7 PC Output Data 5
Pin 8 PC Output Data 6
Pin 9 PC Output Data 7
Pin 10 PC Input nACK
Pin 11 PC Input Busy
Pin 12 PC Input Paper Empty
Pin 13 PC Input Select
Pin 14 PC Output nAUTOFEED
Pin 15 PC Input nERROR
Pin 16 PC Output Initialize Printer
Pin 17 PC Output nSelect Input
Pin 18 - 25   Ground


Driver za koračni motor

Zbog male izlazne struje paralelnog porta od oko 10-ak mA potreban nam je driver za upravljanjem koračnim motorom. U tu svrhu koristimo ULN2003 koji služi kao strujni izvor.


Napajanje koračnog motora

Izvedba posebnog napajanja za koračni motor i sklopovlje za upravljanje njime nije nužno jer možemo koristiti napajanje PC-a. Naponi koji su nam na raspolaganju su +5V i +12V.

>

CEE-type connector (male)
Pin Funkcija
Pin 1

+5V

Pin 2 GND
Pin 3 GND
Pin 4 +12V


Hardware

Sama izvedba hardvera nije složena što se da vidjeti iz sheme.

Kao upravljačke signale za upravljanje koračnim motorom koriste se podatkovne linije 2, 3, 4 i 5 paralelnog porta PC-a. Zbog male izlazne struje na izlazu porta koristi se driver ULN 2003. Njega napajamo iz napajanja PC-a s +12V. Zener dioda služi za zaštitu kod pojave reverznog napona koji uzrokuje motor.


Software

Da bi koristili paralelni port na PC-u potrebno ga je inicijalizirati. Pod Linux OS koristimo naredbe (pri tome moramo biti logirani kao root):

modprobe parport_pc
insmod lp.o

Provjeru inicijalizacije vršimo naredbom :

cat /proc/devices

nakon čega nam se izlistaju aktivni devices i tamo mora biti i lp.

Sam program step.c izgleda:

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <asm/io.h>

 

#define base 0x378

 

#define step1 0x01

#define step2 0x04

#define step3 0x02

#define step4 0x08

 

void main(int argc, char *argv[]){

               if(ioperm(base,1,1))

                              fprintf(stderr,"ne otvara port %x\n",base), exit (1);

               printf("argv1=%c",argv[1][0]);

               int j;

               j=1;

               if(argv[1][0]=='r'){           

               while(j<50){

                              int i=0;

                              outb(step1,base);

                              while(i<500000)i++;

                              i=0;

                              outb(step2,base);

                              while(i<500000)i++;

                              i=0;

                              outb(step3,base);

                              while(i<1000000)i++;

                              i=0;

                              outb(step4,base);

                              while(i<800000)i++;

                              j++;

                              }

               }

               else if(argv[1][0]=='l'){

               while(j<50){

                              int i=0;

                              outb(step1,base);

                              while(i<500000)i++;

                              i=0;

                              outb(step4,base);

                              while(i<500000)i++;

                              i=0;

                              outb(step3,base);

                              while(i<1000000)i++;

                              i=0;

                              outb(step2,base);

                              while(i<800000)i++;

                              j++;

                              }

               }            

               }

Program ima ulazni parametar koji određuje smjer vrtnje motora i može biti 'l' kao left ili 'r' kao right.

Program prevodimo naredbom:

gcc step.c -o step

Program se pokreće naredbama:

./step l

ili

./step r

I na kraju mali prikaz gotovog uređaja: