bclose

aumento de velocidad con pulsadores

Prometec.net Foros Motores aumento de velocidad con pulsadores

Este debate contiene 3 respuestas, tiene 2 mensajes y lo actualizó Imagen de perfil de Jesús Sánchez Jesús Sánchez hace 3 meses, 1 semana.

Viendo 4 publicaciones - del 1 al 4 (de un total de 4)
  • Autor
    Publicaciones
  • #17000
    Imagen de perfil de matias
    matias
    Participante

    buenas tardes gente me llamo Matias (soy de Argentina). quería hacerles la siguiente consulta: (soy un tanto nuevo en programación con arduino así que perdón si pregunto bobadas) quiero aumentar y disminuir la velocidad de un motor con dos pulsadores, es decir un pulsador para aumentar la velocidad y otro para disminuirla. la verdad es que me he roto la cabeza pensando como hacerlo y no logro deducirlo, tengo la duda también de que un pulsador al tener solo dos estados no puede realizar esta acción de aumentar o disminuir una velocidad en esa caso que medio físico tengo para realizar esta acción que no sea un potenciometro?. desde ya muchas gracias y saludos

    • Este debate fue modificado hace 3 meses, 2 semanas por Imagen de perfil de matias matias.
    #17102
    Imagen de perfil de Jesús Sánchez
    Jesús Sánchez
    Participante

    Hola Matias.

    Pues es muy sencillo. El motor imagino que es de corriente contínua. Entonces, para controlar la velocidad usamos PWM, que con Arduino lo que hacemos es mandar un valor de entre 0 y 255 por un pin PWM. Si mandamos 0 el motor estará parado, y con 255 irá a la máxima velocidad. Pues con un pulsador aumentas el valor de una variable que definas, que puedes llamar “velocidad”, por ejemplo, y con el otro pulsador disminuyes el valor.
    Así, al comenzar el programa, “velocidad” valdrá “0”, y el motor estará parado.
    – Añades unos condicionales que lean los dos pulsadores, tanto el de aumentar como el de disminuir.
    – Si pulsas el de aumento, aumentas en “1” el valor de “velocidad”.
    – Si pulsas el de disminuir, disminuyes en “1” el valor.
    – En ambos casos debes añadir condicionales que no permitan que el valor de la variable baje de “0” ni suba de “255”.
    – Luego colocar un analogWrite() y le colocas la variable “velocidad” como parámetro para el PWM.

    No olvides que si el motor es de cierta potencia debes usar un transistor con diodo de protección para moverlo, no directamente con Arduino, pues las FEM que genera el motor pueden destruir el pin al que esté conectado.

    Espero se entienda.

    Saludos.

    #17219
    Imagen de perfil de matias
    matias
    Participante

    Jesus muchas gracias por tomarte la molestias de contestar. podrías escribir un ej. porque e estado probando algunas combinaciones y no logro dar en el clavo. gracias nuevamente y saludos.

    #17222
    Imagen de perfil de Jesús Sánchez
    Jesús Sánchez
    Participante

    Hola Matias.

    Te he escrito este pequeño sketch. Pruébalo tú porque lo he escrito de memoria, y no lo he probado.

    /*
     * Control de la velocidad de un motor con 
     * dos pulsadores.
     * -----------------------------
     * CONEXIONES:
     * Pulsador arriba = pin 2
     * Pulsador abajo = pin4
     * Conectar cada pin a 5V y a su vez a su pulsador correspondiente. 
     * Luego colocar una resistencia de 1K entre la salida del pulsador y GND.
     * 
     * Motor = pin 9
     * Si el motor es de cierta potencia, hay que intercalar un transistor
     * entre el motor y el pin 9, más una resistencia de 1K, además de un 
     * diodo 1N4007 para proteger el transistor.
     * La resistencia iría entre el pin 9 y la base del transistor. El colector
     * del transistor a un cable del motor, y el emisor a GND. El otro cable del
     * motor a la fuente de alimentación que lo alimenta.
     * El diodo se coloca en inversa entre el colector del transitor (ánodo) y 
     * el positivo de la fuente de alimentación del motor (cátodo).
     */
    byte botonUp=2;
    byte botonDown=4;
    int vel=0;
    byte motor=9;
    int pulsoUp=0;
    int pulsoDown=0;
    
    void setup() {
      pinMode(botonUp, INPUT);
      pinMode(botonDown, INPUT);
      pinMode(motor, OUTPUT);
      Serial.begin(9600);
    }
    
    void loop() {
      pulsoUp = digitalRead(botonUp); // Leemos si hay pulsación
      delay(100);
      if (pulsoUp == LOW){ // Si hemos pulsado
        vel++; // Aumentamos velocidad
        if (vel>255){ // Si sobrepasamos el valor de 255
          vel=255; // Detenemos la suma
        } 
        Serial.println(vel); // Mostramos por monitor
        
      pulsoDown = digitalRead(botonDown); // Leemos si hay pulsación
      delay(100);
      if (pulsoDown == LOW){ // Si hemos pulsado
        vel--; // Disminuimos velocidad
        if (vel>0){ // Si sobrepasamos el valor de 0
          vel=0; // Detenemos la resta
        }
        Serial.println(vel);
      }
      analogWrite(motor,vel); // Movemos el motor con la velocidad
                              // Elegida
      }
     
    }
    // ============ Fin de programa =================================
    

    Recuerda que si el motor es de cierta potencia debes usar un transistor para moverlo con Arduino, o te puedes cargar la placa.

    Saludos.

Viendo 4 publicaciones - del 1 al 4 (de un total de 4)

Debes estar registrado para responder a este debate.