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 alguma entrada em um motor de corrente contínua para lhe dar controle total do motor em tempo real.
Conteúdo
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
Um resistor variável ohm 10k
A 2.2k ohm resistor
fios 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 GND do outro.
O 5V e GND pode ser de ambos os lados, mas a mudança deles vai inverter o valor que o potenciômetro envia para o Arduino. Embora o potenciômetro usa a mesma potência e chão, como o motor, observe que eles são circuitos separados que tanto comunicam através do Arduino.
Video: Como controlar um Motor DC com o 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) -} void loop () {potValue = analogRead(PotPin) -motorValue = mapa(PotValue, 0, 1023, 0, 255) -analogWrite(MotorPin, motorValue) -Serial.print ("potenciômetro = " ) -Serial.print(PotValue) -Serial.print ("t = motora ") -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 isso for feito upload, você deve ser capaz de controlar o seu motor através do potenciômetro. Rodar o potenciómetro numa direcção faz com que o motor de velocidade para cima rodando-o 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 você está controlando e monitorando no circuito.
Video: Ponte H L298N | Arduino#02
Como sempre, você declarar as 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. Fá-lo 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 = 255 a motor
Estes valores são exibidos em uma lista longa e atualização 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 de ler 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 dizer o motor para mudar a velocidade somente se o valor for maior do que a velocidade mínima necessária para girar o motor, como 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 gt; 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 for menor do que isso, o pino está escrito BAIXO de modo que é totalmente desligado. 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.