Go Down

Topic: dc motor control joystick (Read 336 times) previous topic - next topic

leo_hdtv

Greetings to the community.
Said a little project. I am wanting to make a pan and tilt system with DC motors.
Gain control by reading analog potentiometers joystic and sending the data to the PWM outputs.
  but the bottleneck is in need a ramp acceleration and deceleration.

To be more clear when triggered the need joystic have an acceleration time till the speed set by the joystic and releasing the joystic speed was slow to zero simultaneously.

Here is the code I'm working on, any idea is welcome

Quote

//Control de un Joystick velozidad maxima damp
int ejexpin = 4;  // Declara pin4 entrada analogica como ejexpin 
int ejexmpin = 3; // Declara salida pwm 3 como ejempin
int ejexm2pin = 5; // Delara salida pwm 5 como ejempin2
int ejexd;         // delcara ejexd
int vmaxpin = 3; // Declara pin 3 analog como entrada de vmax
int vmax;        // Declara vmax como valor de trabajo velozidad maxima
int i;
void setup(){
  //Serial.begin(9600);
  pinMode(ejexmpin, OUTPUT); // Configura ejempin como salida
  pinMode(ejexm2pin, OUTPUT);// configura ejexmpin como salida
}
void loop(){
  vmax = analogRead(vmaxpin);
  vmax = map(vmax, 0, 1023, 0, 255); //cambia el valor de la lectua analogica de 0 1203 a 0 255
  ejexd = analogRead(ejexpin); // lee el valor analogico de ejexpin y lo traslada a ejexd

  // Control del Eje X
  if (470 > ejexd) {

    ejexd = map(ejexd, 0, 470, vmax, 0); // se cambia el antiguo valor de 255 por el valor de la etiquetqa vmax   
    analogWrite(ejexm2pin,ejexd);
  }

  else {
    analogWrite(ejexm2pin,0);
  }
  if (ejexd > 530) {
   
    ejexd = map(ejexd, 530, 1023, 0, vmax); // se cambia el antiguo valor de 255 por el valor de la etiquetqa vmax
   
    if ( 0 >= i){
    
    for ( i=0; i<=ejexd; i++){ // el valor de i asciende
    
    analogWrite(ejexmpin, i); // se escribe el valor de i en el pin salida pwm
    delay(10);
     }
    }
     
    analogWrite(ejexmpin,ejexd);
  }
  else {
    analogWrite(ejexmpin,0);
    i = 0;
  }
  

}


This snippet is only for motor control

Go Up