Como alterar a velocidade de um motor DC com o Arduino

Às vezes, você precisa ter um maior controle sobre a velocidade do seu motor, que o Arduino permite que você faça com o esboço MotorSpeed. A seguir mostra-lhe como controlar a velocidade do seu motor com o mesmo circuito.

O esboço MotorSpeed

Abra um novo sketch Arduino, salve-o com um nome memorável, como myMotorSpeed ​​e digite o código a seguir.

int motorPin = 9-vazio setup () {pinMode(MotorPin, SAÍDA) -} Void loop () {para(int motorValue = 0 - motorValue lt; = 255- motorValue + = 5) {analogWrite(MotorPin, motorValue) -demora(30) -}para(int motorValue = 255 - motorValue> = 0- motorValue - = 5) {analogWrite(MotorPin, motorValue) -demora(30) -}}

Depois de ter digitado o esboço, salve-o e pressione o botão Compilar para verificar o seu código. O Arduino Ambiente deve destacar quaisquer erros gramaticais na área da mensagem, se eles são descobertos.

Se o esboço compila corretamente, clique em Upload para fazer o upload do esboço para sua placa. Ao fazer o upload é feito, você deve ter um motor que gira muito lentamente para começar, acelera a sua rotação mais rápida, gira para trás para baixo a uma parada, e depois repete. Pode ser difícil ver isso, então você deve corrigir algo mais visíveis, como massa de vidraceiro adesivo, para mostrar o que está acontecendo.

Você pode achar que em seu ponto mais lento, o motor apenas cantarola. Se assim for, este não é um problema-isso significa apenas que o eletroímã não tem tensão suficiente para girar o motor-que precisa de mais tensão para gerar o magnetismo e ganhar impulso.

A repartição esboço MotorSpeed

O pino que você está usando para controlar o circuito motor, pino digital 9, é declarada.

int motorPin = 9-

Porque é uma saída, você defini-lo na configuração.

void setup () {pinMode(MotorPin, SAÍDA) -}

No circuito principal, você usa analogWrite para enviar um valor PWM ao pino 9. Este é o mesmo princípio que no esboço desvanece-se, para fazer a transição de um LED. O primeiro para ciclo envia um valor a aumentar gradualmente ao pino 9 até atingir o valor máximo de PWM 255. A segunda para loop de volta gradualmente esse valor para 0-, em seguida, o ciclo se repete

void loop () {para(int motorValue = 0 - motorValue lt; = 255- motorValue + = 5) {analogWrite(MotorPin, motorValue) -demora(30) -}para(int motorValue = 255 - motorValue> = 0- motorValue - = 5) {analogWrite(MotorPin, motorValue) -demora(30) -}}

Este processo poderia ser comparado a rotação de um motor de carro. Se você apertar o pedal para baixo, você acelera até a velocidade máxima. Se tocar no pedal do acelerador, o motor acelera e, em seguida, desacelera. Se você toca nele a uma velocidade constante antes de ele diminui, você vai manter um pouco da dinâmica do motor girar e atingir uma média (se um pouco jerky) velocidade.

Isto é o que o transistor está fazendo, mas muito rapidamente. Os intervalos entre ligado e desligado eo impulso do motor permitir-lhe atingir o comportamento analógico de um sinal digital.

menu