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.
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.
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:
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.
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.
Tome nota do valor apresentado neste momento.
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) -}
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.