Como controlar a velocidade de um motor DC com o Arduino

Precisa de mais controle de seu motor DC? Você pode usar o esboço MotorControl para o Arduino para colocar um pouco de entrada em um motor de corrente contínua para lhe dar controle total do motor em tempo real.

O esboço MotorControl

Para ganhar o controle da velocidade do seu motor sempre que você precisar, você precisa adicionar um potenciômetro para o seu circuito.

Você precisa:

  • Um Arduino Uno

  • A placa de ensaio

  • Um transistor

  • Um motor DC

  • Um diodo

  • A resistência variável ohm 10k

  • A 2.2k ohm

  • fios de salto

Encontrar um espaço em sua placa de ensaio para colocar seu potenciômetro. O pino central do potenciómetro é ligado de volta ao pino 9, utilizando um fio de salto, e os restantes dois pinos estão ligados a 5V de um lado e do outro GND.

image0.jpg

O 5V e GND pode ser de ambos os lados, mas a mudança deles irá inverter o valor que o potenciômetro envia para o Arduino. Embora o potenciômetro usa o mesmo poder e solo, como o motor, observe que eles são circuitos separados que se comunicam através do Arduino.

image1.jpg

Depois de ter construído o circuito, abrir um novo esboço Arduino e salve-o com outro nome memorável, como myMotorControl. Em seguida, digite o seguinte código.

int potPin = a0-int motorPin = 9-int potValue = 0-int motorValue = configuração 0-void () {Serial.begin (9600) -} vazio loop () {potValue = analogRead(PotPin) -motorValue = mapa(PotValue, 0, 1,023, 0, 255) -analogWrite(MotorPin, motorValue) -Serial.print ( "potenciômetro =") -Serial.print(PotValue) -Serial.print ( " t motor =") -Serial.println(MotorValue) -demora(2) -}

Depois de ter digitado o esboço, salve-o e clique no botão Compilar para destacar erros de sintaxe. .

Se o esboço compila corretamente, clique em Upload para fazer o upload do esboço para sua placa. Quando é feito o upload, você deve ser capaz de controlar o seu motor através do potenciômetro. Virando o potenciômetro em uma direção faz o motor acelerar para cima transformá-lo para o outro lado faz com que a abrandar.

A repartição MotorControl Esboço

Este esboço é uma variação sobre o esboço AnalogInOutSerial e funciona exatamente da mesma maneira, com algumas mudanças de nome para melhor indicar o que está a controlar e monitorar no circuito.

Como sempre, você declarar os diferentes variáveis ​​utilizadas no esboço. Você usa o potPin para atribuir o pino potenciômetro e motorPin para enviar um sinal para o motor. A variável potValue é usado para armazenar o valor bruto do potenciômetro e as lojas variáveis ​​motorValue o valor convertido que deseja a saída para o transistor para ligar o motor.

int potPin = a0-int motorPin = 9-int potValue = 0-int motorValue = 0-

Como ajustar o esboço MotorControl

Você pode achar que há uma velocidade mínima após o qual o motor irá apenas hum. Ele faz isso porque não têm poder suficiente para girar. Ao monitorar os valores enviados para o motor utilizando o esboço MotorControl, você pode encontrar o valor mínimo do motor para transformar e otimizar o motorValue para ligar o motor dentro de seu verdadeiro alcance.

Para encontrar o intervalo de motorValue, Siga esses passos:

  1. Com o esboço MotorControl carregado, clique no botão de série do monitor no canto superior direito da janela do seu Arduino.

    A janela monitor serial irá mostrar-lhe o valor do potenciômetro seguido pelo valor de saída que está sendo enviado para o motor, desta forma:

    potenciômetro = 1,023 motor = 255

    Estes valores são exibidos em uma lista longa e atualizar como você girar o potenciômetro. Se você não ver a lista de rolagem para baixo, certifique-se de que a opção Autoscroll é selecionado.

  2. Começando com seu potenciômetro lendo um valor de 0, transformar seu potenciômetro muito lentamente até que o zumbido pára e o motor começa a girar.

  3. Tome nota do valor apresentado neste momento.

  4. use um E se declaração para contar o motor para mudar a velocidade apenas se o valor é maior do que a velocidade mínima necessária para girar o motor, como se segue:

    (uma). Encontre a parte do seu código que escreve o motorValue para o motor:

    analogWrite(MotorPin, motorValue) -

    (B). Substituí-lo com o seguinte trecho de código:

    E se(MotorValue> yourValue) {analogWrite(MotorPin, motorValue) -} outro {digitalWrite(MotorPin, LOW) -}
  5. agora substitua yourValue com o número que você anotou.

    Se o valor motorValue é maior do que isso, o motor acelera. Se é menor do que isso, o pino é escrito BAIXO de modo que ele é totalmente desligada. Você também pode digitar analogWrite (motorPin, 0) para realizar a mesma coisa. otimizações pequenos como este podem ajudar a sua função de projeto sem problemas, sem movimento ou valores desperdiçado.

menu