Controlo de um Step Motor

download Controlo de um Step Motor

of 8

Transcript of Controlo de um Step Motor

  • 8/18/2019 Controlo de um Step Motor

    1/8

     

    Relatório de Microprocessadores2007/2008

    Engenharia Física Tecnológica

    CONTROLO DE UM S TEP M OTOR  Laboratório III

     Trabalho realizado por: André Cunha, nº53757 João Pereira, nº 55315

    Grupo 3; 5ªfeira 13:00-16:00h

    Lisboa, 22 de Outubro de 2007

  • 8/18/2019 Controlo de um Step Motor

    2/8

    Introdução e Objectivos

    O objectivo deste trabalho consiste em controlar um step motor   através da introdução decomandos pela consola que os envia pela porta série. O comando deverá incluir umparâmetro para o número de steps  dado pelo motor, outro para a precisão dos micro passos

    dados pelo motor e ainda outro para o sentido de rotação.

     Adicionalmente fazer-se-á um pequeno estudo adicional para determinar a velocidademáxima de rotação do motor escolhido.

    Implementação, Procedimento e Análise

    Em termos concretos, começaremos por seleccionar um step motor   disponível,determinaremos a sequência correcta dos pinos do motor e depois as sequências bináriaspara a precisão normal e dupla de forma a criar os movimentos de rotação pretendidos.

    Construir-se-á então um algoritmo em C para efectuar a rotação do motor com osparâmetros desejados e integrar-se-á isto com um sistema estruturado de recepção,interpretação e execução de comandos atingindo-se assim o objectivo deste trabalholaboratorial.

    1ª sessão de laboratório

    Material utilizado:

    •  Step motor  OEM de 6 fios; 

    •  Osciloscópio digital; 

    • 

    Multímetro; 

    Foi-nos então atribuído o step motor  da figura 1. Sem entrar em detalhes sobre a estruturados step motors , começou-se por determinar com que tipo de step motor  se ia trabalhar atravésda medição da resistência entre os vários fios. Os resultados estão expressos na seguintetabela para melhor visualização:

    0!

      11,3!

      22,3!

     

    !  0 !  11,3 !  22,3

    11,3 !  0 !  11,3 ! 

    !  11,3 !  0 !  11,3

    22,3 !  11,3 !  0 ! 

    !  22,3 !  11,3 !  0

     Tabela 1 – Resistência entre os diferentes pinos do step motor

  • 8/18/2019 Controlo de um Step Motor

    3/8

    Concluíu-se então que a estrutura do step motor  usado era a seguinte:

    Figura 1 – Esquemático do step motor  usado

     Tendo então determinado a estrutura do step motor  usado, restava agora saber a sequência dedisposição das bobines internas para saber com que ordem se deve fornecer correnteatravés dos terminais do step motor. 

    Para descobrir a sequência correcta fazer-se-á uso da Lei de Indução de Faraday. Se a

    passagem de corrente através das bobines gera um campo nas bobines que induz omovimento do núcleo magnético do motor, o processo inverso, isto é, a rotação externa(neste caso manual) do núcleo magnético do motor (agora gerador) vai induzir corrente nasbobines de forma sequencial, corrente essa que podemos visualizar se ligarmos os terminaisdo motor (agora gerador) às pontas de prova do osciloscópio.

     Visuzalizando a diferença de fase entre os vários sinais gerados, podemos então determinarcom facilidade a sequencia correcta de rotação.

    Canal (osciloscópio) Pino ( step motor  )

     Tabela 2 – Bijecção ordenada entre pinos e canais do osciloscópio

    Figura 2 – Sinais gerados no osciloscópio (sentido horário) 

  • 8/18/2019 Controlo de um Step Motor

    4/8

     

    Por fim, estabeleceram-se as sequências binárias que irão ser usadas no programa paracontrolar o step motor  e que tendo em conta o princípio de funcionamento deste e os dadosrecolhidos acima, se tornam imediatas. Quando queremos efectuar movimentos emprecisão simples, basta-nos fornecer corrente de forma sequencial a cada pino

    correspondendo isso à sequência binária:

    1000, 0100, 0010, 0001, 1000, ...

    Quando queremos efectuar movimentos em precisão dulpa, criamos um estado intermédioatravés do fornecimento de corrente em simultâneo a dois pinos sucessivos. Isto vaiobrigar o núcleo magnético a colocar-se numa posição intermédia entre as duas bobinesgerando assim mais precisão. A sequência é naturalmente maior devido ao aumento deresolução:

    1000, 1100, 0100, 0110, 0010, 0011, 0001, 1001, 1000, ...

    E aqui se concluiu a primeira sessão de laboratório.

    2ª sessão de laboratório

    •  MPLAB IDE e compilador de C para este IDE

    •  SDK PIC184550

    •  Breadboard  

    • 

    Base de trabalho (para fornecimento de alimentação de 5V)

    •  ULN2803

    Nota:  Todo o código se encontra em anexo devidamente comentado e explicado. Esterelatório explícita apenas a filosofia usada bem como as escolhas efectuadas naimplementação.

    Na segunda sessão começou-se por construir o algoritmo principal do programa que será onúcleo da função responsável pela rotação do motor. A função de rotação deverá prever aexistência de orientação, precisão e assegurar que não existem saltos entre estados nãoconsecutivos (saltos bruscos).

    Para resolver a questão da orientação resolveu-se utilizar o sinal do número de passos a darpelo motor, estabelecendo o sinal positivo para rotação no sentido anti-horário e sinalnegativo para o sentido inverso.

    Para o segundo ponto, apesar da primeira sequência sugerir fortemente a utilização de umshift right/left , a segunda lista torna esta solução pouco vantajosa uma vez que não ésuficientemente geral para prever o segundo caso. Desta forma, resolveu-se utilizar listasque serão escolhidas de acordo com o modo de rotação desejado. Este método é muitogeral e facilita a futura implementação de situações que envolvam sequências numéricascaóticas.

  • 8/18/2019 Controlo de um Step Motor

    5/8

     

    Por fim, para assegurar que não temos saltos bruscos tinham-se duas hipóteses, ou guardarsempre o último estado do motor e rodar a partir desse ponto ou obrigar o motor aefectuar sempre um determinado número de passos que assegure que estou sempre emsituação conhecida. Por questões de conveniência e sugestão do docente, escolheu-se a

    segunda opção.

    Como nota adicional, convém referir que a velocidade de rotação será controlada atravésde um parâmetro interno do programa utilizando uma função de delay .

     A função responsável pela interpretação e armazenamento dos parâmetros de orientação,precisão e número de passos é a função interpreterRoda. A função responsável pela execuçãodo ciclo de rotação é a função executeRoda. 

    Utilizando a estrutura básica de interrupções e comunicação via porta série dos programasanteriores já extensivamente explicados aquando dos mesmos, construíram-se as fundaçõesda interacção com o utilizador deste programa.

     Ao contrário do que se fez nos programas anteriores, procedeu-se finalmente a umaestruturação em blocos de todo o programa, estrutura essa já sub-entendida na explicaçãodo algoritmo principal. Convém referir neste contexto que todas as variáveis de relevoforam armazenadas em estruturas para facilitar o aproveitamento futuro deste programanoutras aplicações ou adição de funcionalidades.

    Desta forma, a função principal é agora apenas directamente responsável pela gestão

    directa das consequências das interrupções geradas o que se reflecte na gestão indirecta decomandos. O ponto mais importante desta gestão indirecta que liga o algoritmo principal àinteracção com o utilizador, é feita através da função findCommand  que trata da gestão doscomandos introduzidos a pedido da função principal.

    Regressando ao procedimento laboratorial propriamente dito, consultou-se então a datasheet  do ULN2803 que se vai usar como amplificador dos sinais lógicos que provêm do nossoCPU para o step motor .

    Efectuaram-se as ligações aos outputs  do CPU para as entradas do ULN2803, ligaram-se as

    suas saídas ao step motor de acordo com a ordem determinada na primeira sessão laboratoriale por fim ligou-se a alimentação ao ULN2803 e também ao ponto comum do step motor  tendo o cuidado de usar uma resistência em série para protecção do motor.

  • 8/18/2019 Controlo de um Step Motor

    6/8

     Figura 3 – Pequeno esquemático de ligações entre ULN2803, step motor  e alimentação 

    Finalmente, correu-se o programa utilizando o ambiente de desenvolvimento MPLAB etestou-se o motor tendo este funcionado como previsto.

    Por fim, para determinação da velocidade máxima de operação do step motor , conhecendo ocomportamento caótico das bobines aquando da recepção de sinais eléctricos e que apenasestabilizam passado um determinado período de tempo, é nosso objectivo determinar este

    limite, uma vez que representa o momento a partir do qual temos a certeza de que asbobines se comportam correctamente assegurando o funcionamento eficiente do motor.

    Com a utilização de um osciloscópio para medir a diferença entre steps lógicos consecutivosbem como para visualizar o comportamento de uma das bobines do step motor, rapidamentese verificou que as velocidades limite se encontravam utilizando delays   de entre 5000 a10000 ciclos de relógio.

    Percorrendo estes valores conclui-se que o valor limite era de 6000 ciclos de relógio porstep, ou seja, tendo em conta que se usa um clock de 4 MHz , temos então que o tempomínimo de cada micro step é de 1,5 ms.

  • 8/18/2019 Controlo de um Step Motor

    7/8

     

    Figura 4 – Sinais da bobine e de dois steps consecutivos a 5000 ciclos de relógio (irregular) 

    Figura 5 – Sinais da bobine e de dois steps consecutivos a 6000 ciclos de relógio (limite) 

    Figura 6 – Sinais da bobine e de dois steps consecutivos a 10000 ciclos de relógio (estável) 

  • 8/18/2019 Controlo de um Step Motor

    8/8

     

    Figura 7 – Sinais da bobine e de dois steps consecutivos a 50000 ciclos de relógio (estável)