Você está na página 1de 16

TUTORIAL Controle de Motor de Passo

Autor: Lus Fernando Patsko Nvel: Intermedirio Criao: 22/02/2006 ltima verso: !"/!2/2006

PdP
Pesquisa e Desenvolvimento de Produtos

#tt$://%%%&ma'%ell(o#r&)om&(r )ontato*ma'%ell(o#r&)om&(r

#tt$://%%%&automato&)om&(r atendimento*automato&)om&(r

1 Introduo
Esse tutorial abordar a confeco de uma placa para o controle de um motor de passo e a programao para que se possa control-lo por meio das portas de sadas digitais do MEC1000 ou do KD !000" # motor de passo $ muito utili%ado na rob&tica porque pode ter sua rotao controlada por meio de passos' como o nome ( di%' e isso $ indispens)el em alguns aparel*os onde $ e+igido um maior grau de preciso' pois o uso de motores de corrente contnua con)encionais poderia resultar em danos no aparel*o ou em mal funcionamento"

2 Material
# material necessrio ser um motor de passo' um integrado ,-./000' um conector latc* de 10 )ias mac*o' um conector latc* de 10 )ias f1mea' um cabo flat e uma placa de fenolite"

3 Funcionamento

Figura 1. Motores de passo

#s motores el$tricos so dispositi)os eletromec2nicos que transformam energia el$trica em mo)imento rotati)o por meio de ms e indutores em seu interior" #s modelos de motores de aplicao mais difundida so os motores de corrente contnua 3CC ou DC4' os de corrente alternada 3C5 ou 5C4' os uni)ersais' que funcionam tanto com corrente contnua quanto alternada' os ser)omotores e os de passo" # motor de passo $ um motor com uma preciso muito grande do seu mo)imento" 6o utili%ados onde $ necessrio o controle do n7mero de rota8es $ muito importante' tais como em impressoras' dri)es de disquete e sistemas de automao industrial e rob&tica' pois' se no *ou)esse esse controle' o mo)imento contnuo poderia estrag-los" # passo que esse motor pode dar $ o menor deslocamento angular para o qual est pro(etado" # n7mero de passos destes motores dependem do n7mero de p&los que seu rotor possui" 5ssim' e+istem di)ersas resolu8es para eles como' por e+emplo' 0"9/' 1":' 0";' 9"!' 1! e at$ <0 graus' ou se(a' !00' /00' 100' =:' /= e = passos 1

por rotao' respecti)amente" 5l$m do mais' *o(e e+istem controladores de modulao de largura de pulso onde se obt$m micropassos' desse modo obser)a-se uma resoluo de posicionamento infinitamente preciso" >ara se ter uma id$ia' * controladores que operam na fai+a de !0"000 micropassos por rotao" .o seu interior * estatores formados por bobinas que geram' quando percorridos por uma corrente el$trica' o campo magn$tico necessrio para o mo)imento do rotor' que $ construdo com mas permanentes confeccionados de acordo com o n7mero de passos" Essa rotao $ controlada por meio de um circuito e+terno que promo)e a oscilao do sinal que percorrer os pares de estatores e' por isso' no pode ser conectado diretamente ? alimentao' pois desse modo no *a)eria a pulsao necessria para que o motor possa girar"

# mo)imento se d quando * um ciclo no campo magn$tico dos estatores' ou se(a' a cada )e% que um par de estatores $ magneti%ado' ocorre um passo do ei+o do motor" @ necessrio construir o oscilador para o motor de passo corretamente' conforme o n7mero de passos que se queira adquirir" .o nosso caso' estaremos utili%ando um motor com = pares de estatores e um rotor com 1/ p&los" Desse modo' estaremos trabal*ando com um motor que d =: passos por rotao ou um passo a cada 9'!A" >ara que possamos controlar o motor precisamos saber para qual tenso ele est pro(etado e qual a corrente que ele consome" .o nosso caso estaremos alimentando o motor com uma tenso de 1/ B e pela C-ei de #*mD poderemos calcular a corrente que ser consumida pelo motor" #bser)ando-se os dados do motor descobrimos que sua resist1ncia interna $ de 10!E' ento' fa%endo os clculos descobrimos a corrente que ele consumirF V = R i 12 = 135 i i = 12 135 i 0,09A = 90mA. /

Desse modo poderemos estar utili%ando o ,-./000' que nada mais $ do que um array de transistores Darlington' que trabal*a com tens8es de at$ !0B e suporta uma corrente de at$ !00m5' o suficiente para o controle do nosso motor de passo" Este integrado possui 9 entradas para o controle de at$ 9 sadas que sero ligadas ?s sadas dos estatores" @ necessrio em primeiro lugar descobrir qual a sada comum aos estatores e esta ser ligada ? entrada de 1/B" 5s cone+8es das sadas dos estatores sero ligados aos pinos 1;' 1!' 1= e 10 do integrado e as sadas digitais do Kit correspondentes a eles sero conectadas aos pinos 1' /' 0 e =" # integrado estar ligado ? alimentao por meio dos pinos : 3G.D4 e < 3BH4" 5s portas 1' /' 0 e = sero ligados por meio de cabos flat ao MEC1000 ou ao KD !000"

,-./000 I tr1s modos bsicos de operao do motor de passoF dois onde se usa o passo completo' um com apenas um estator energi%ado por passo' onde o consumo de energia e torque so bai+os' e o outro com dois estatores energi%ados por passo' onde torque e consumo de energia so maioresJ e um de meio-passo' gerando um torque pr&+imo ao de passo completo com dois estatores energi%ados' com um consumo superior de energia' por$m com uma preciso maior deslocamento" Com a finalidade de uma e+plicao mais clara e uma lin*a de c&digo menor' o programa de controle do motor de passo disponibili%ar apenas o uso das opera8es de passo completo"

4 Montagem
>ara a montagem da placa para o motor de passo $ necessrio obser)ar bem a polaridade dos fios para que no *a(a erro na *ora da confeco da placa" # fio comum aos estatores $ aquele cu(a resist1ncia quando medida entre dois fios d o )alor nominal da resist1ncia do motor" Este fio de)e ser ligado ? alimentao de 1/B" 6e medirmos a resist1ncia entre dois fios que so os e+tremos da bobina' esta ser o dobro da resist1ncia nominal do motor"

Comearemos pelo diagrama esquemtico do circuito para que no *a(a erro na *ora de confeccionarmos a placa" >ara isso temos que ter ? mo o integrado ,-./000 pois este $ o 7nico componente eletrKnico que ser soldado ? placa" # esquemtico est mostrado a seguir"

#bser)e que tanto o ,-./000 como o pr&prio motor de passo no utili%aro o pino de alimentao de ! Bolts dispon)el no pino 1 das portas de sadas digitais" Eles de)ero ser alimentados com uma tenso de 1/ Bolts' dispon)el nas sadas de alimentao do Kit" 6endo assim $ poss)el soldar um borne de / )ias ou mesmo soldar dois fios diretamente na placa' sendo que um ser o terminal positi)o e o outro ser o terminal negati)o" Lasta lig-los nas sadas de alimentao correspondentes" # desen*o da placa' )ista pelo lado dos componentes' $ mostrado a seguir"

De)emos transferir o desen*o para o lado cobreado da placa de fenolite tomando o cuidado de in)ert1-lo" Depois disso $ s& fa%er a perfurao da placa e desen*ar as tril*as at$ ?s sadas dos cabos flat" #bser)e que utili%aremos apenas = entradas e sadas do integrado' preferencialmente a dos pinos 1' /' 0 e = como entradas' os pinos 1;' 1!' 1= e 10 respecti)amente como sadas das entradas utili%adas e os pinos de alimentao que so o : 3G.D4 e < 3BH4' podendo ligar o terminal comum do motor de passo com este 7ltimo pino' pois ambos )o ao positi)o" 5p&s o desen*o das tril*as colocamos a placa para ser corroda no percloreto de ferro" Depois de feita a corroso da placa' soldaremos o ,-./000 conforme o diagrama' obser)ando muito bem sua pinagem' pois caso se(a in)ertido' ele poder ser danificado" Com muita ateno' compare a posio em que ser soldado com o esquema e com a pinagem do componente' para conferir se os pinos estaro conectados adequadamente" 6oldaremos tamb$m um conector latc*' com o prop&sito de ligar um cabo flat ao Kit e o conector adequado ao motor de passo" >ara as entradas de alimentao' podemos soldar um borne de / )ias ou ento soldar dois fios diretamente ? placa"

5 Programao
Depois da criao da placa para o controle do motor de passo' $ necessrio criar um programa especfico para control-lo" Msso $ necessrio de)ido ao pr&prio funcionamento do motor" Como )imos logo acima' no basta apenas aliment-lo corretamente' $ necessrio *a)er uma oscilao que faa com que os estatores proporcionem o mo)imento" De)emos ento criar um programa que proporcione essa oscilao nas sadas digitais"

Figura 2. >rograma de controle da placa de motor de passo"

.osso primeiro passo $ criar a interface grfica do programa" Bamos utili%ar o pro(eto criado no tutorial Lase que ( nos fornece algumas funcionalidades interessantes" >ara isso copiamos o pro(eto daquele tutorial e em cima dele )amos adicionar alguns componentes grficos e+tras" 5 interface grfica $ composta por dois 6peedLutton' dois -abels e dois ComboLo+" #s bot8es sero destinados a ligar e desligar o motor nos modos de torque alto e torque bai+o" ,ma ComboLo+ selecionar a porta de sada digital e a outra o sentido da rotao do motor e os -abels apenas indicaro o conte7do de cada ComboLo+" Namb$m e+iste um componente Nimer' que no $ )is)el durante a e+ecuo do programa' mas $ essencial para seu funcionamento" # primeiro passo $ modificar a propriedade Caption do Oorm principal de C>ro(eto LaseD para CMotor de passo P placaD" @ importante dei+ar o nome desse programa um pouco diferente do que $ destinado a controlar o motor de passo do Kit' para e)itar confus8es" Em seguida adicionaremos um -abel e um ComboLo+ para a seleo da porta de sadas digitais na interface" Esses componentes podem ser encontrados na aba C6tandardD"

Figura 3: Aba "Standard" da Barra de componente.

# componente -abel possui o seguinte cone"

Figura 4: cone do componente Label.

E o componente ComboLo+ possui o seguinte cone"

Figura 5: cone do componente ComboBox.

Bamos ento adicion-los e modificar as propriedades do -abel" Name Caption Font/Style/fsBold Q Q Q -abel>orta >ortaF true

Em seguida' modificaremos as propriedades do ComboLo+" Name Style Items.Strings ItemIndex Q Q = Q ComboLo+>orta csDropDoRn-ist >orta 0' >orta 1 0

.esse momento' o nosso Oorm de)er ter a seguinte apar1nciaF

Figura 6: Form aps incluso do Label e do ComboBox.

# pr&+imo passo ser adicionar os componentes respons)eis pela seleo do sentido do motor" Bamos adicionar um -abel e modificar suas propriedades" Name Caption Font/Style/fsBold Q Q Q -abel6entido 6entidoF true

Em seguida' adicionaremos um ComboLo+ e modificaremos as seguintes propriedades"

Name Style Items.Strings ItemIndex

Q Q = Q

ComboLo+6entido csDropDoRn-ist Iorrio' 5nti-*orrio 0

.osso Oorm ento de)er se parecer com o seguinteF

Figura 7: Form aps incluso do Label e do ComboBox.

De)emos agora adicionar os 6peedLuttons' cu(a funo ser acionar ou desligar o motor" Como temos dois modos de operao poss)eis' de)emos colocar dois 6peedLuttons' que encontram-se na aba de componentes C5dditionalD"

Figura 8: Aba "Additional" da barra de componentes.

# componente 6peedLutton possui o seguinte cone nessa barra"

Figura 9: cone do componente Button.

Name Caption Font/Style/fsBold GroupIndex llo! ll"p

Q Q Q Q Q

6peedLuttonLai+o Norque Lai+o true 1 Nrue

Name Caption Font/Style/fsBold GroupIndex llo! ll"p

Q Q Q Q Q

6peedLutton5lto Norque 5lto true / Nrue

# 7ltimo componente a ser adicionado $ um Nimer' que no ser )is)el na interface grfica do programa' no entanto' $ essencial para o seu funcionamento" # componente Nimer encontra-se na aba C6SstemD da barra de componentes" 5 seguir uma imagem dessa aba"

Figura 10: Aba "System" da barra de componentes.

# componente Nimer possui o seguinte coneF

Figura 11: cone do componente imer.

De)emos adicion-lo e modificar as seguintes propriedadesF Name Inter#al Q Q NimerMotor =00

# nosso Oorm ento ficar da seguinte maneiraF

Figura 12: Form aps incluso dos SpeedButtons e do imer.

Com a incluso desse componente' encerramos a criao da parte grfica e podemos partir <

para a implementao do c&digo do programa" @ importante ressaltar que $ necessria muita ateno nesse momento" Como a lin*a de c&digo $ relati)amente e+tensa' $ fcil ocorrerem pequenos desli%es que impeam que o programa funcione" Como ( foi mencionado' $ necessrio criar um programa que acione uma sada digital por )e%' possibilitando o mo)imento do ei+o do motor" 5 cada sada acionada' uma porta do integrado ,-./000 ser acionada que' por sua )e%' acionar um estator do motor" Tuando um estator do motor $ acionado' seu ei+o dar um passo" >ara disponibili%ar um maior torque do motor' basta apenas acionarmos duas sadas digitais a cada )e%' que ligaro dois estatores simultaneamente" # primeiro passo para a implementao do c&digo ser dado no manipulador do e)ento #nNimer' do NimerMotor que adicionamos no Oorm" >ara criar esse manipulador podemos selecionar o componente' ir no $%&e't Inspe'tor' selecionar a aba E)ents e dar um duplo clique sobre a lin*a que est escrito #nNimer" ,ma forma mais fcil de isso $ apenas dar um duplo clique sobre o timer no Oorm e com isso o Delp*i ir criar automaticamente um manipulador para o e)ento #nNimer" procedure TFormMain.TimerCheckTimer(Sender: TObject); begin end; Como esse componente timer ser respons)el por en)iar continuamente para o Kit as informa8es sobre o modo de operao' porta utili%ada e sentido' de)emos colocar um bloco try( ex'ept para e)itar que o programa tra)e caso no *a(a nen*um Kit conectado" procedure TFormMain.TimerCheckTimer(Sender: TObject); begin try begin end; except end; end; # pr&+imo passo ser ento implementar o c&digo para os bot8es que acionaro o motor" .o mesmo procedimento' )amos utili%ar uma estrutura de repetio !)ile e uma estrutura de deciso if para cada boto" procedure TFormMain.TimerCheckTimer(Sender: TObject); begin try 10

begin while SpeedButtonBaixo.Do n ! true do begin end; if SpeedButtonBaixo.Do n ! "a#$e do begin end; while SpeedButton%#to.Do n ! true do begin end; if SpeedButton%#to.Do n ! "a#$e do begin end; end; except end; end; 5gora' faremos uma pausa para analisar os comandos que sero en)iados pelas sadas digitais" ,tili%aremos o m$todo Digital>ortUrite para en)iar os comandos para a placa de controle de motores-de-passo" Esse m$todo possui a seguinte declaraoF Procedure Di&ita#'ort(rite(port : )nte&er; *a#ue : B+te); Ele possui dois par2metros' um que indica a porta que queremos definir o estado e outro que define o estado da porta" # !dulo de "ntradas# Sa$das e Ser%o&!otores possui duas portas de sadas digitais' logo o primeiro par2metro pode ser C0D' para indicar a primeira porta' ou C1D' para indicar a segunda" Esse par2metro ser selecionado pelo ComboLo+>orta" V o segundo par2metro do m$todo Digital>ortUrite define quais bits da porta de)ero ser setados para o n)el l&gico 1 e quais de)ero ser setados para o n)el l&gico 0" Esse par2metro $ um )alor de : bits sendo que cada bit dele ir definir o estado de um bit da porta sada" # bit 0 da porta ser representado pelo bit 0 do par2metro' o bit 1 pelo bit 1 e assim por diante" Como o motor de passo utili%ado possui = estatores' precisaremos setar apenas = bits" >ara acionar o primeiro estator' basta acionar a primeira sada digital da porta onde o motor est acoplado' utili%ando o m$todo Digital>ortUrite" # primeiro par2metro ser utili%ado para selecionar a porta correta' enquanto que o segundo acionar as sadas dese(adas" En)iando um n7mero 1 no segundo par2metro' acionaremos a primeira sada' pois esse n7mero em c&digo binrio $ 00000001" Caso queiramos acionar a terceira porta' de)emos en)iar o n7mero =' que em c&digo 11

binrio $ 00000100" Caso' queiramos fa%er com que um motor de passo gire' precisamos acionar seus estatores' um de cada )e%" >odemos fa%er isso en)iando um n7mero' cu(o equi)alente em binrio se(a adequado para acionar cada uma das = sadas durante um curto inter)alo" 5 tabela a seguir mostra a relao entre o n7mero en)iado e seu )alor binrio"
'(mero decimal )alor bin*rio

1 ,,,,,,,1

2 ,,,,,,1,

* ,,,,,1,,

+ ,,,,1,,,

1 ,,,,,,,1

En)iando esses )alores' com um pequeno inter)alo entre cada um' acionaremos cada uma das quatro primeiras sadas digitais' e consequentemente' os quatro estatores do motor de passo" 6endo assim' o motor se mo)imentar" >ara fa%er com que ele gire no sentido contrrio' basta apenas in)erter os n7meros a serem en)iados para a porta de sada digital" .o modo descrito acima' acionamos um estator de cada )e%' utili%ando o modo de bai+o torque" >ara um maior torque' basta apenas acionarmos dois estatores simultaneamente" >ara isso' de)emos modificar os )alores a serem en)iados" 5o en)iar esses )alores' com um pequeno inter)alo entre cada um' teremos um maior torque dispon)el no motor de passo' embora o consumo tamb$m se(a maior"
'(mero decimal )alor bin*rio

,,,,,,11

. ,,,,,11,

12 ,,,,11,,

/ ,,,,1,,1

,,,,,,11

5gora ( aprendemos como de)emos acionar as sadas digitais de modo a proporcionar o giro do motor" Mas s& * um problema" >recisamos que esses )alores se repitam indefinidamente" >ara isso utili%amos a estrutura !)ile' cu(a funo $ repetir in7meras )e%es uma determinada funo" .o nosso programa' enquanto um 6peedLutton esti)er acionado' ela en)iar os bits para as sadas digitais infinitas )e%es" Dentro do bloco definido pela estrutura !)ile' utili%aremos a estrutura de deciso if(else" Essa estrutura )erificar o estado da ComboLo+ que indica o sentido e comparar com o )alor 0" 6e o item selecionado na ComboLo+ for igual a %ero 3que $ o primeiro item4' ento ser e+ecutada uma operao" Caso o item no se(a igual a %ero' ento uma outra operao ser e+ecutada' atra)$s da estrutura else" ,tili%aremos a funo 6leep para gerar o inter)alo entre cada estator acionado" Essa funo simplesmente interrompe o andamento do c&digo durante um inter)alo' e+presso em mil$simos de segundo" .o nosso programa' utili%aremos um inter)alo de 100ms" Mnter)alos diferentes podem ser utili%ados' mas um inter)alo menor no $ muito recomendado' pois o motor de passo no suporta )elocidades de giro altas e poder no funcionar" Tuando nen*um 6peedLutton esti)er acionado' o motor de passo de)er ser desligado" >ara isso' basta utili%armos duas estruturas de deciso if' sendo cada uma destinada a um dos bot8es" Ento utili%aremos o m$todo Digital>ortUrite' onde no seu segundo par2metro colocaremos o n7mero 0' que seta todas as sadas digitais da porta que est sendo utili%ada em 0' desligando ento o motor" Desse modo' nossa lin*a de c&digo ficar assim" #bser)e que' de)ido o taman*o da lin*a de c&digo' $ necessrio prestar muita ateno e segui-la rigorosamente" ,m pequeno erro de pontuao ou a falta de um end poder fa%er com que o programa no funcione" 1/

procedure TFormMain.TimerMotorTimer(Sender: TObject); begin try begin ,, -epetir. in"initamente a a/0o en1uanto o ,, SpeedButtonBaixo e$ti*er pre$$ionado while SpeedButtonBaixo.Do n ! true do begin ,,*eri"ica o $entido $e#ecionado if ComboboxSentido.)tem)ndex !2 then begin ,,atua#i3a o e$tado da porta de $a4da $e#ecionada kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 6); ,,&era um inter*a#o de 622m$ S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 7); S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 8); S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 9); S#eep(622); %pp#ication.'roce$$Me$$a&e$(); end else begin kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 S#eep(622); %pp#ication.'roce$$Me$$a&e$(); end; end; ,, -ea#i3ar. a in$tru/0o 1uando o SpeedButtonBaixo n0o ,, e$ti*er acionado if SpeedButtonBaixo.Do n ! "a#$e then begin ,,$eta toda$ a$ $a4da$ di&itai$ em 3ero kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 2); end; 10

9); 8); 7); 6);

,, -epetir. in"initamente a a/0o en1uanto o SpeedButton%#to ,, e$ti*er pre$$ionado while SpeedButton%#to.Do n ! true do begin if ComboboxSentido.)tem)ndex !2 then begin kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 :); S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 ;); S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 67); S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 <); S#eep(622); %pp#ication.'roce$$Me$$a&e$(); end else begin kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 67); S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 ;); S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 :); S#eep(622); kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 <); S#eep(622); %pp#ication.'roce$$Me$$a&e$(); end; end; ,, -ea#i3ar. a in$tru/0o 1uando o SpeedButton%#to n0o ,, e$ti*er acionado if SpeedButton%#to.Do n ! "a#$e then begin kit.Di&ita#'ort(rite(ComboBox'orta.)temindex5 2); end; end; except end; end; end. 5ssim finali%amos a implementao do c&digo do nosso programa e ( podemos utili%-lo" ,ma boa maneira de reali%ar um primeiro teste com ele $ ligar uma barra de -EDs 3cu(a montagem est descrita em outro tutorial4" .o modo de operao em bai+o torque' um -ED de)e ser aceso por )e%' sendo que ao c*egar ao quarto -ED' o ciclo de)er se reiniciar' e no modo de alto torque' dois -EDs" >ara uma mel*or )isualisao' mude o tempo da funao 6leep para !00ms' por e+emplo" 1=

5o )erificar que o programa funciona corretamente' basta apenas conectar a placa de controle com o ,-./000 na porta de sada digital dese(ada e conectar o motor de passo nesta" Namb$m $ necessrio ligar a alimentao do motor de passo' ligando um cabo do terminal positi)o e um do negati)o nas sadas de alimentao de 1/ Bolts e 0 Bolts 3G.D4' presentes no Kit"

Figura 13. +laca de controle de motor de passo ligado ao ,D-.///.

6 Concluso
Com esse tutorial' foi poss)el aprender a construo de uma placa destinada ao controle de um motor de passo utili%ando um integrado ,-./000 e elaborar a programao destinada a control-lo' utili%ando as portas de sadas digitais" Nrata-se de um desen)ol)imento comple+o' mas que pode resultar em &timos resultados' tanto em con*ecimento adquirido quanto em praticidade de operao"

1!

Você também pode gostar