williamtorres1 / motor-de-passo-com-arduino

Projeto para nota da 1ª Unidade de Robótica - IFPE, Campus Caruaru

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Motor de passo com arduino

Este repositório foi criado para versionar e armazenar o código da primeira avaliação da disciplina de Robótica.

Indice

Materiais utilizados

Os equipamentos utilizados foram:

  1. 3 Drivers TB6560 v2.
  2. 3 Motores de Passo - UNIPOLAR 9kg - nema23 - BIPOLAR 12kgf - nema23.
  3. 1 Arduino UNO.
  4. 1 Fonte para alimentação dos motores (especificações em breve).
  5. Fios para conexões.

Princípio de funcionamento

Para um motor de passo funcionar, é preciso Ligar e Desligar o clock. Esta ação é 1 (um) pulso.

Porém, precisamos de um tempo entre esse "ligar" e "desligar", senão esse pulso é muito rápido e o motor não sai do lugar.

Logo, utilizamos a função delayMicroseconds(), pois iremos trabalhar na ordem de grandeza dos Microssegundos.

Controle de posição

Fizemos o controle de posição dos motores da seguinte forma:

200 pulsos = 1 volta

Logo, se queremos 20 voltas, conseguimos descobrir quandos pulsos nós temos que enviar para o motor.

    if(numeroPulsos != 0 )
    {
        Liga o pino de clock do motor 1
        delay()
        Desliga o pino de clock do motor 1
        delay()
        //Nessa linha de código, concluímos 1 (um) passo. Então iremos decrementar a variável.
        numeroPulsos = numeroPulsos - 1

    }

Para fazer os 3 motores irem para posições diferentes, é somente repetir o código acima. E quando os 3 motores chegarem nas suas posições definidas, iremos desativar os drivers (porque, como são de alta corrente (A), esquentam MUITO).

    if(numeroPulsosMotor1 == 0 && numeroPulsosMotor2 == 0 && numeroPulsosMotor3 == 0)
        {
            desativa o driver do motor 1
            desativa o driver do motor 2
            desativa o driver do motor 3
        }

Controle de velocidade

O controle de velocidade dos motores já foi mostrado em #Controle de Posição, porém iremos adicionar alguns detalhes.

Temos conhecimento que o passo da rosca que será percorrida é de 0,1 mm (10^-4).

Então, pela fórmula de velocidade, teremos: Fórmula da Velocidade Média

    Vm = ΔS/ΔT
    (Speed) = (Space)/(Time)

Deduzindo, teremos que:

    ΔT = ΔS/Vm

A velocidade será inserida pelo usuário. Então teremos o valor do tempo.

O que é esse tempo? o tempo do começo do período.

Estamos usando a função millis() do arduino. Após a verificação entre millis() e a nossa variável tempo, reatribuímos o valor de millis() para a nossa variável. Sendo assim, teremos controle da frequência do motor.

{
   if(millis() - tempo >= velocidadeMotor)
      {
        clock -> HIGH
        tempo = millis();
      }
      if(millis() - tempo >= velocidadeMotor)
      {
        clock -> LOW
        numeroPulsosMotor--;
      }
}

About

Projeto para nota da 1ª Unidade de Robótica - IFPE, Campus Caruaru

License:MIT License


Languages

Language:C++ 100.0%