Loading...
  Show Posts
Pages: [1] 2 3 4
1  International / Hardware / Re: Control de motor 24v 4a on: May 16, 2013, 08:58:23 am
hola
mira para algo parecido me arme el puente h de pyroelectro de 10amp
tiene control de giro y velocidad
http://www.pyroelectro.com/tutorials/h_bridge_4_transistor/
tal vez te sirva. no soy experto en electronia y me resulto muy facil hacer el pcb.
2  International / Software / Re: Configurar Mach3 con Arduino on: May 16, 2013, 08:55:05 am
hola
soy medio novato pero tambien intente eso alguna vez.
al final termine usando txapucnc y los driver para pap de txapu tambien
por que el mach se comunica por puerto serie y aunque lo convierta virtualmente a usb tenia problemas con los driver. ya que el mach basicamente utiliza un pin para direccion y otro para velocidad. los driver de txapu son mas basicos. basicamente envian señal por bobina para paso ... pero simplificaron el driver para utilizar solo dos pines por driver.
al menos asi entiendo el tema. por que tambien busque mucho sobre mach y arduino.
suerte si logran algo mas.
si lo que quieres es una cnc con arduino hay mucha info... yo me hice una mini cnc. ahora voy por una tamaño impresora, con esos motores epson. tengo 3 de esos. smiley-grin
saludos.
3  International / Software / Re: consulta. PID u otro modo- para posicion de motor-avances on: February 04, 2013, 05:00:51 pm
ooo super interesante ese trabajo. esperamos el post entero amigo. podrias publicarlo dentro de proyectos supongo
4  International / Software / Re: consulta. PID u otro modo- para posicion de motor-avances on: January 28, 2013, 03:57:54 pm
oooo que bueno esta eso jesus. podrias abrir un post propio con ese proyecto. me resulta interesante.
esta bueno eso de manejar las electrovalvulas. me intereso tambien lo de los mosfet. podrias explicar todo en un post. es interesante D
5  International / Software / Re: consulta. PID u otro modo- para posicion de motor-avances on: January 28, 2013, 09:52:04 am
hola jesus. mira el pwm en realidad es para controlar la velocidad de los motores. pero no es que estan conectados los motores directamente al arduino. el arduino tiene poca capacidad de alimentar.
podrias utilizar en todo caso reles. con el arduino abres un rele que active la electrovalvula. o bien podrias construirte el puente h que yo utilizo. te lo recomiendo puesto que es facil de hacer. fijate que la direccion esta al comienzo del post. pero por mensaje privado te lo puedo pasar y aclarar algunas dudas de la construccion.
prueba  en todo caso el uso de rele. fijate que en este foro hay algunos post al respecto incluso en los tutoriales de la pagina.
suerte. y me parece muy interesante lo que estas haciendo smiley-grin
6  International / Software / Re: consulta. PID u otro modo- para posicion de motor-avances on: January 27, 2013, 04:57:38 pm
hola jesus
a ver. tu pregunta es si podemos variar el pwm con un potenciometro?
si es esa la pregunta. la respuesta es si.
te comento, que yo puse la variable pwm de esa manera para basicamente dejarla fija. por que a velocidades altas del motor. tiende a pasarse del punto o posicion que queriamos dejarlo.
para controlar la velocidad del motor por pwm primero tienes que tener en cuenta que tu puente H tenga esta opcion. en el caso del que utilizo yo funciona perfectamente con pwm
ahora el codigo:
primero obviamente declaramos la variables que utilizaremos como ejemplo podria ser : int pwmxx

necesitariamos tambien un tercer potenciometro que hay que declarar
luego basicamente en el cuerpo del codigo lo que cambia es

valorSensor3 = analogRead (pinSensor3);//lee los datos del potenciometro 3 de pwm
    int pwmxx = valorSensor3

tambien es necesario dar el mapeo antes, ya que el potenciometro tiene valores mucho mas altos que el pwm. el pwm va de 0 a 255
 pwmxx = map(valorSensor3, 0, 1024, 0 ,255 ); (no recuerdo si el potenciometro llega a 1024)

espero que te sirva. pero recuerda que en mi caso opte por mantener variables mas fijas de pwm para no errar en la velocidad del motor. ya que si el motor esta cerca del punto de posicion indicada y se mueve a toda velocidad, seguro se pasara.
saludos
7  International / Software / Re: consulta. PID u otro modo- para posicion de motor-avances on: January 23, 2013, 10:41:52 am
hola zaciatok
mira no se si entiendo bien lo que consultas.
quieres utilizar solo un potenciometro al motor. para darle la posicion y giro como mi ejemplo?
esto seria imposible con solo esos dos componentes. a lo sumo con un potenciometro obtendrias regular la velocidad del motor. y el giro depende de como conectes las polaridades. pero posiblemente se te queme el potenciometro. todo depende del consumo del motor. el funcionamiento es como basicamente la llave de un ventilador de tu hogar smiley-grin
osea. no hay forma de que sin un componente electronico puedas determinar posicion y sentido de giro. a lo sumo utilizando reles y llaves de corte. simulando una especie de puntos limites y puente h de reles. mucho lioooooo
esa es mi humilde opinion.
8  International / Software / Re: consulta. PID u otro modo- para posicion de motor-avances on: January 17, 2013, 12:15:51 pm
hola amigo selda. un gusto saber que te agrado el avance.
el resto del proyecto lo deje un poquito de lado. puesto que comence otro que me tenia volando jeje
es la mini cnc. en el segmento de Proyectos de este foro esta el post smiley-grin espero tu visita ahi smiley-grin
siempre visito tu blog viendo en que avanzas.
saludos amigo
9  International / Español / Re: Háblanos de tu proyecto... on: December 28, 2012, 12:10:29 pm
Buenisimo smiley-grin
pero hay categorias? es decir proyectos novatos, expertos etc?
soy novato pero muy entusiasta y con varios logros publicados smiley-grin
10  International / Proyectos / Mini CNC on: December 28, 2012, 01:42:55 am
Estimados amigos. hoy les quiero mostrar el proyecto de esta ultima semana, se trata de una mini cnc con partes de lectograbadoras de dvd. de estas utilizo los rieles, pap, carcaza etc.
por ahora le acople un pequeño motor a modo de fresadora (en la punta del eje le hice unos cortes pequeños  smiley-draw )
el driver para los motores pap es el que tenemos en el ejemplo en esta pagina de arduino con el l293, la cnc esta controlada por txapu cnc en ubuntu en virtual box.
espero les guste aqui les dejo el video. perdon por la in prolijidad de las fotos y el video. son de celular.
saludos.
11  International / Software / Re: problema con mi arduino UNO (servos) on: December 26, 2012, 08:46:10 am
creo que deberias alimentar con una fuente externa a los servos. no olvides de conectar el ping gnd del arduino a la maza de la fuente.
yo tenia problema similar. por que el servo al llegar al grado 180, el motor seguia haciendo fuerza. y arduino no entrega tanto amperaje.
al menos mi problema fue ese. el servo tenia mala definicion en los grados. igual siempre recomiendan alimentar externamente los servos.
12  International / Software / Re: consulta. PID u otro modo- para posicion de motor on: December 14, 2012, 09:04:52 am
hola gente aquí nuevamente.
con algunos pequeños avances. pero mas que nada otro video con otro mecanismo. mas casero
consta de un motor de vibra de joystick con engranajes y potenciometros de 2.5 k
el puente h es el mismo mencionado anteriormente de pyro.
el codigo es el mismo con algunos ajustes en variables
Code:
/*
 ejemplo mover motor a direcciones dependiendo valores comparados de dos potenciometros.
 uno de posicion actual y otro de posicion futura
 
 */
 
int pinSensor = A0;    // Entrada para el potenciómetro.posicion actual del motor. en este ejemplo moveria el pot manualmente emulando el moviento del motor, indicado por los leds.
int pinSensor2 = A1; //potenciometro de posicion requerida o futura
int pinLed2= 10; // pin de direccion derecha,  señal para el encendido del motor por el puente h en direccion a la derecha
int pinLed = 9; //pin de izquierda. idem anterior a la izquierda.
int valorSensor = 0;   // variable para el valor del sensor.
int posact = 0; //creo que es necesario que la variable empiece de cero.
int valorSensor2 = 0; //variable para el potenciometro 2
int sigpos = 0; // abreviatura de siguiente posición, valor que seria enviado por serial.
int difvalors =0; //diferencia entre sigpos y valor sensor
int pwm = 3 ;//variable constante de pwm
int pwm2 = 60; // para el freno. utilizando la direccion contraria con un delay
int delay1 = 200;// delay para el freno
int error = 10 ;// error para zona muerta
void setup() {
  // Declaramos el pin del Led como salida:
  pinMode(pinLed, OUTPUT);
  pinMode(pinLed2, OUTPUT);
  Serial.begin(9600);
pwm = constrain (pwm, 50 , 250);//valores min y max de pwm.

}
 
void loop() {
  
  
  valorSensor2 = analogRead (pinSensor2)/2;//lee los datos del potenciometro 2 de posicion requerida
    int sigpos = valorSensor2 ;
  valorSensor = analogRead(pinSensor)/2; //valorsensor igual al valor del potenciometro de posicion actual
  
  difvalors = abs (sigpos - valorSensor); //valor absoluto de la diferencia
  
  
  Serial.print ("act");
  Serial.println ( valorSensor); // para chequear en que posición esta el potenciometro del motor.
  //delay(1); //le doy delay para que se pueda leer los datos impresos. de lo contrario pasan demaciado rapido
  Serial.print ("        sig");
  Serial.println(valorSensor2); //para chequear la posicion requerida del pote2
  //delay(1);
  //en este caso si el valor siguiente es menor al del potenciometro, , seria el atraso del motor.
   if (sigpos < valorSensor  && difvalors > error ) {
    //digitalWrite (pinLed, HIGH);
    analogWrite (pinLed, pwm * difvalors); //pwm dependiendo la distancia para la velocidad.
    digitalWrite (pinLed2,LOW);
    delay(1);
switch (difvalors) {
      case 9: // en casos que los valores sean menores a 10 intentare frenar el motor direccioandolo al lado contrario
      analogWrite (pinLed2, pwm2); //pwm2 minima velocidad para frenar
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;
      case 8:
      analogWrite (pinLed2, pwm2); //pwm
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;
  case 7:
      analogWrite (pinLed2, pwm2); //pwm
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;

case 6:
      analogWrite (pinLed2, pwm2); //pwm
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;

case 5:
      analogWrite (pinLed2, pwm2); //pwm
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
    break;

}
}
// en este caso si el valor siguiente es superior al del potenciometro, ,  seria el avance del motor.
else if (sigpos > valorSensor  && difvalors > error)  {
  //digitalWrite (pinLed2, HIGH);
  analogWrite (pinLed2, pwm * difvalors); //pwm
  digitalWrite (pinLed,LOW);
  delay(1);

switch (difvalors) {
  
case 9:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;

case 8:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
break;
case 7:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
break;
case 6:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;
 case 5:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
break;
}
 }
//en este caso al ser iguales los valores se apagaria el motor.
else if (sigpos == valorSensor || difvalors < error ) {
  digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1); }
  
 
}

el video: notaran por momentos alguna lentitud. es el motor que le falta fuerza. es pequeño. pero los movimientos los probé bastante y es preciso. siempre analizando el serial y comparando las ubicaciones de ambos potenciometros. tanto el de posicion de motor como el de posicion deseada.
bueno espero les guste es un ejemplo de un trabajo de un novato smiley-grin


-------modificado 15/12/12
gente aqui les dejo otro video pero con un motor de stereo de 12v. mas potente que el anterior smiley-grin
en el video se puede ver el puente h que uso.
el codigo es el mismo pero con algunas modificaciones en valores. intentando encontrar el punto justo.
basicamente: cambios de valores en las variables:
 
Quote
pwm = 3
pwm2 = 60
delay1 = difvalors

tambien quite el mapeo siguiente
Quote
pwm = constrain (pwm, 50 , 100);//valores min y max de pwm.

espero les guste. este mecanismo se mueve mucho mas rapido y es bastante presiso. siempre teniendo en cuenta que el grado de error es 10.




13  International / Software / Re: consulta. PID u otro modo- para posicion de motor on: December 03, 2012, 12:14:48 pm
gracias Igor. lo voy a leer. saludos
14  International / Software / Re: consulta. PID u otro modo- para posicion de motor on: December 02, 2012, 09:04:32 am
hola selda y gente en general
tengo algunos avances con modificaciones o agregados al codigo.
el video lo subire mas adelante. la diferencia con el video anterior es la velocidad a la que se mueve el motor. antes era una constante en 50 o 60 ya que mas veloz que eso el motor se pasaba del punto y en un intento de encontrar el punto indicado el motor quedaba adelantando y atrasando su direccion constantemente, es decir de << >> <<>> bailando smiley-grin
ahora si bien el motor se mueve mas rapido. dependiendo la distancia entre el valor actual y el deseado, al llegar a la zona el mismo disminuye su velocidad y al estar entre valores menores a 10 hasta 5 de distancia del punto indicado, se hara toque al sentido contrario como un intento de freno.
por ahora funciona bastante bien, en algunos momentos solamente se pasa un poco pero enseguida vuelve. seguramente es por la zona muerta o error y la mala calidad de los potenciometros que varian constantemente en un mismo punto uno o dos valores. entonces si el motor se frena al limite del error y el valor cambia por culpa del pote, intentara volver al punto indicado o zona aceptada.. espero ser claro con la explicaciones smiley-grin
bueno les dejo el codigo. como siempre a la espera de la opinion de los que deseen. y los expertos que puedan aportar algo smiley-grin
Code:
/*
 ejemplo mover motor a direcciones dependiendo valores comparados de dos potenciometros.
 uno de posicion actual y otro de posicion futura
 
 */
 
int pinSensor = A0;    // Entrada para el potenciómetro.posicion actual del motor. en este ejemplo moveria el pot manualmente emulando el moviento del motor, indicado por los leds.
int pinSensor2 = A1; //potenciometro de posicion requerida o futura
int pinLed2= 10; // pin de direccion derecha,  señal para el encendido del motor por el puente h en direccion a la derecha
int pinLed = 9; //pin de izquierda. idem anterior a la izquierda.
int valorSensor = 0;   // variable para el valor del sensor.
int posact = 0; //creo que es necesario que la variable empiece de cero.
int valorSensor2 = 0; //variable para el potenciometro 2
int sigpos = 0; // abreviatura de siguiente posición, valor que seria enviado por serial.
int difvalors =0; //diferencia entre sigpos y valor sensor
int pwm = 10 ;//variable constante de pwm
int pwm2 = 50; // para el freno. utilizando la direccion contraria con un delay
int delay1 = 200;// delay para el freno
int error = 20 ;// error para zona muerta
void setup() {
  // Declaramos el pin del Led como salida:
  pinMode(pinLed, OUTPUT);
  pinMode(pinLed2, OUTPUT);
  Serial.begin(9600);
pwm = constrain (pwm, 50 , 250);//valores min y max de pwm.

}
 
void loop() {
   
 
  valorSensor2 = analogRead (pinSensor2)/2;//lee los datos del potenciometro 2 de posicion requerida
    int sigpos = valorSensor2 ;
  valorSensor = analogRead(pinSensor)/2; //valorsensor igual al valor del potenciometro de posicion actual
 
  difvalors = abs (sigpos - valorSensor); //valor absoluto de la diferencia
 
 
  Serial.print ("act");
  Serial.println ( valorSensor); // para chequear en que posición esta el potenciometro del motor.
  //delay(1); //le doy delay para que se pueda leer los datos impresos. de lo contrario pasan demaciado rapido
  Serial.print ("        sig");
  Serial.println(valorSensor2); //para chequear la posicion requerida del pote2
  //delay(1);
  //en este caso si el valor siguiente es menor al del potenciometro, , seria el atraso del motor.
   if (sigpos < valorSensor  && difvalors > error ) {
    //digitalWrite (pinLed, HIGH);
    analogWrite (pinLed, pwm * difvalors); //pwm dependiendo la distancia para la velocidad.
    digitalWrite (pinLed2,LOW);
    delay(1);
switch (difvalors) {
      case 9: // en casos que los valores sean menores a 10 intentare frenar el motor direccioandolo al lado contrario
      analogWrite (pinLed2, pwm2); //pwm2 minima velocidad para frenar
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;
      case 8:
      analogWrite (pinLed2, pwm2); //pwm
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;
  case 7:
      analogWrite (pinLed2, pwm2); //pwm
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;

case 6:
      analogWrite (pinLed2, pwm2); //pwm
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;

case 5:
      analogWrite (pinLed2, pwm2); //pwm
      digitalWrite (pinLed,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
    break;

}
}
// en este caso si el valor siguiente es superior al del potenciometro, ,  seria el avance del motor.
else if (sigpos > valorSensor  && difvalors > error)  {
  //digitalWrite (pinLed2, HIGH);
  analogWrite (pinLed2, pwm * difvalors); //pwm
  digitalWrite (pinLed,LOW);
  delay(1);

switch (difvalors) {
 
case 9:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;

case 8:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
break;
case 7:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
break;
case 6:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
 break;
 case 5:
      analogWrite (pinLed, pwm2); //pwm
      digitalWrite (pinLed2,LOW);
      delay(delay1);
      digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1);
break;
}
 }
//en este caso al ser iguales los valores se apagaria el motor.
else if (sigpos == valorSensor || difvalors < error ) {
  digitalWrite (pinLed2, LOW);
  digitalWrite (pinLed, LOW);
 delay(1); }

 
 
 
 
}
15  International / Software / Re: consulta. PID u otro modo- para posicion de motor on: November 24, 2012, 08:50:11 am
selda ahora entiendo! muchas gracias por la aclaracion. hoy mismo pruebo eso.
tambien estaba pensando que el motor se me pasaba del punto por ser el del un taladro o atornillador a bateria el cual tiene reductores pero es normal que gire unos grados mas cuando se le corta la alimentacion....
entonces estoy pensando buscar un motor de eleva cristales de automovil. un amigo mecanico me prometio uno.
esos funcionan con un sin fin en el eje del motor lo cual al quitar alimentacion traban el mecanismo. tal vez lograria que se detenga justo a tiempo.eso mas tu consejo seguro lograre algo mejor. espero tenerlo pronto smiley-grin
Pages: [1] 2 3 4