Vasamatic
10 жыл бұрын
Пікірлер
@c1a9h9r9
@c1a9h9r9 3 жыл бұрын
Excelente, para evitar la oscilacion debiste usar el PID
@osvaldorivera1897
@osvaldorivera1897 4 жыл бұрын
Hye, Really nice work. Can you send me please .ino code. [email protected]
@gerardoramirez9450
@gerardoramirez9450 4 жыл бұрын
Hola amigo, excelente video. Solo una duda: En el void loop () en la funcion map para el cálculo de actual_angle, ¿de dónde sale el número 5284? Muchísimas gracias y saludos.
@annie0076
@annie0076 3 жыл бұрын
Tengo la misma duda, ¿Si encontraste a que corresponde? Saludos
@davidromero6365
@davidromero6365 3 жыл бұрын
Es el número de pulsos emitidos por el encoder en una vuelta completa del eje del motor
@Knatalius
@Knatalius 4 жыл бұрын
Hola!, agradezco tu vídeo, podrías compartirme tu código por favor, a : [email protected]
@mariosanchez9926
@mariosanchez9926 4 жыл бұрын
me podrias compartir tu proyecto por favor. [email protected] saludos
@laingemexicana9489
@laingemexicana9489 5 жыл бұрын
hola buen trabajo me podrías mandar el código!! mi correo es [email protected]
@juancamiloserranocorrea6239
@juancamiloserranocorrea6239 5 жыл бұрын
Genial, hicieron lo que hace un servomotor pero sin limitación de ángulo.
@aimeriveraruiz3302
@aimeriveraruiz3302 5 жыл бұрын
¿Será que aún tengas el código y el diagrama del circuito? Me sería de mucha yuda [email protected] Gracias de antemano.
@carlosrojo7381
@carlosrojo7381 6 жыл бұрын
hahaha que asco, todos mendigando el código y a nadie le respondió el lerdo este xd
@JONNYTIMES
@JONNYTIMES 6 жыл бұрын
no es un tutorial, que no vez que dice que es su proyecto de la Universidad, algunos profesores te piden que hagas una explicación tipo exposición y lo subas a KZbin
@josealvarez7558
@josealvarez7558 6 жыл бұрын
@@JONNYTIMES 8186608447
@josealvarez7558
@josealvarez7558 6 жыл бұрын
E
@gabrielantoniocruzyupanqui5287
@gabrielantoniocruzyupanqui5287 6 жыл бұрын
hola primera mente quería felicitarte por tu gran aporte y quiera que por favor me puedas pasar el circuito y el codigo de arduino gracias :D [email protected]
@worldelectronicsecurity4933
@worldelectronicsecurity4933 6 жыл бұрын
Hola ,buen video amgigaso me podrías pasar el código y el diagrama del circuito ,te adradeceria mucho . [email protected]
@wilson8709
@wilson8709 6 жыл бұрын
Hola amigo muy buen proyecto, me podrías regalar el código [email protected]
@brauliosanchezavalos6271
@brauliosanchezavalos6271 6 жыл бұрын
amigo me puedes compartir tu proyecto gracias de antemano [email protected]
@erikpalacios7238
@erikpalacios7238 6 жыл бұрын
Muchas gracias!!! excelente video!
@artejohnny2839
@artejohnny2839 6 жыл бұрын
muy buen trabajo me pasarias el programa y el diagrama de conexion porfa mi coreo es [email protected]
@MegaJosepreciado
@MegaJosepreciado 6 жыл бұрын
[email protected] pasalo porfa :(
@MegaJosepreciado
@MegaJosepreciado 6 жыл бұрын
Alguien que me pueda pasar el código y el driagrama de favor? se los agradecería, lo necesito para un proyecto de control clásico igual.
@danielcerezo373
@danielcerezo373 6 жыл бұрын
Genial ejemplo, gracias por compartirlo, para los que anden justos de tiempo os dejo el código en este comentario, esta sin probar y con mis aclaraciones en lenguaje poco formal, puede haber también erratas aunque lo he repasado ya varias veces. Un saludo //declaracion de variables unsigned int order_angle=0; char incomingByte; //Usado para la lectura serial long count=0; //Contador de pulsos de pwm, los cambios emitidos por el encoder int error; int actual_angle; int pwm; int flag=0; int x=4; //pines para el control del giro int y=5; //pines para el control del giro int salida; unsigned long timep, time, etime; //etime==evaluacionTiempo boolean A,B; byte state, statep; //statep==statePasado void setup() { Serial.begin(9600); //Inicializa la comunicacion serial pinMode(2,INPUT); //Canal A del encoder pinMode(3,INPUT); //Canal B del encoder pinMode(x,OUTPUT); // IN1 pinMode(y,OUTPUT); // IN2 pinMode(11,OUTPUT); // ENA ENABLE???Tiene pinta attachInterrupt(0,Achange,CHANGE); //Genera una interrupccion al detectar cambios en el canal A del encoder attachInterrupt(1,Bchange,CHANGE); //Genera una interrupccion al detectar cambios en el canal B del encoder timep=micros(); A = digitalRead(2); //Lectura del canal A B = digitalRead(3); //Lectura del canal B //Declaracion de los estados posibles entre la lectura de los canales A y B del Encoder if((A==HIGH)&&(B==HIGH)) statep=1; if((A==HIGH)&&(B==LOW)) statep=2; if((A==LOW)&&(B==LOW)) statep=3; if((A==LOW)&&(B==HIGH)) statep=4; } void loop() { time = micros(); etime = time - timep; /*********************************************************************** * TODO ESTO ES PARA COGER MAS DE UN CARACTER DEL PUERTO SERIAL!!! ***********************************************************************/ if (Serial.available() > 0) //Primero pregunta si hay algo en el serial { //Este bucle permite capturar mas de un numero en el serial!!!! Porque antes solo podian uno order_angle = 0; //Descarta el valor anterior de order_angle while(1) { // obliga a entrar a un ciclo hasta que se reciba una incomingByte = Serial.read(); if (incomingByte == '/n') break; //Salir del ciclo cuando haya un salto de linea if (incomingByte == -1) continue; //Si no hay caracter... order_angle *= 10; //Multiplica "order_angle" por 10, lo que lo desplaza hacia la izquierda en decimales // Convierte ASCII a valor entero order_angle = ((incomingByte - 48) + order_angle); } } actual_angle=map(count,0,5284,0,360); // Transformamos lo acumulado en grados /*****************************************************************************/ /*********************************************************************** * IMPLEMENTACION EN BUCLE CERRADO!!!! * Calculamos el error como el absoluto de la resta entre la posicion actual * la posicion buscada y tras esto mapeamos el error en una variable que la * introduciremos mas tarde para controlar el ciclo de trabajo, luego cuanto * mas cercano este menor sera el valor del mapeo y a su vez menor ciclo de trabajo * hasta llegar a 0. ***********************************************************************/ error= abs(order_angle-actual_angle); // Calculo del error (abs == absoluto (siempre en positivo)) pwm = map(error,0,360,0,255); // Tranformación del error a un valor de PWM analogWrite(11,pwm); // Se imprime el valor de salida del pwm if (order_angle>actual_angle) // Si el angulo ordenado es mayor que el angulo actual gira a la izquierda { turnRight(); // Motor girando a la derecha flag=1; } else { turnLeft(); // Motor girando a la izquierda } /*****************************************************************************/ if (etime > 1000000) //Si ha pasado 1 segundo (estampos en microsegundos) { //Imprime cada segundo los datos, solamente hace eso Serial.print("Angulo deseado: "); Serial.print(order_angle); Serial.print(", Angulo actual: "); Serial.print(actual_angle); Serial.print(", PWM: "); Serial.print(pwm); if(flag==1) { Serial.print("Girando CW"); //Siguiendo las manecillas de relog } else { Serial.print("Girando CCW"); //Contra las manecillas de relog } timep = time; } } /*********************************************************************** * FUNCION ACHANGE() DETECTA EL CAMBIO DE FLANCO DEL CANAL A DEL ENCODER ***********************************************************************/ void Achange() { A = digitalRead(2); //Lectura del canal A B = digitalRead(3); //Lectura del canal B //Declaracion de los estados posibles entre la lectura de los canales A y B del Encoder if((A==HIGH)&&(B==HIGH)) state =1; if((A==HIGH)&&(B==LOW)) state =2; if((A==LOW)&&(B==LOW)) state =3; if((A==LOW)&&(B==HIGH)) state =4; switch(state) { case 1: //Si el estado actual es 1 { //Comparacion con el estado pasado if(statep == 2) count--; // Si el estado pasado es 2 decrementamos el contador en 1 if(statep == 4) count++; // Si el estado pasado es 4 incrementamos el contador en 1 break; } case 2: //Si el estado actual es 2 { //Comparacion con el estado pasado if(statep == 1) count++; // Si el estado pasado es 1 incrementamos el contador en 1 if(statep == 3) count--; // Si el estado pasado es 3 decrementamos el contador en 1 break; } case 3: //Si el estado actual es 3 { //Comparacion con el estado pasado if(statep == 2) count++; // Si el estado pasado es 2 incrementamos el contador en 1 if(statep == 4) count--; // Si el estado pasado es 4 decrementamos el contador en 1 break; } default: //Utilizado el default como el estado 4 { //Comparacion con el estado pasado if(statep == 1) count--; // Si el estado pasado es 1 decrementamos el contador en 1 if(statep == 3) count++; // Si el estado pasado es 3 incrementamos el contador en 1 //break; } } statep = state; // actualizamos la variable statep con el valor del actual estado para cerrar el circulo } /*********************************************************************** * FUNCION BCHANGE() DETECTA EL CAMBIO DE FLANCO DEL CANAL B DEL ENCODER ***********************************************************************/ void Bchange() { A = digitalRead(2); //Lectura del canal A B = digitalRead(3); //Lectura del canal B //Declaracion de los estados posibles entre la lectura de los canales A y B del Encoder if((A==HIGH)&&(B==HIGH)) state=1; if((A==HIGH)&&(B==LOW)) state=2; if((A==LOW)&&(B==LOW)) state=3; if((A==LOW)&&(B==HIGH)) state=4; switch(state) { case 1: //Si el estado actual es 1 { //Comparacion con el estado pasado if(statep == 2) count--; // Si el estado pasado es 2 decrementamos el contador en 1 if(statep == 4) count++; // Si el estado pasado es 4 incrementamos el contador en 1 break; } case 2: //Si el estado actual es 2 { //Comparacion con el estado pasado if(statep == 1) count++; // Si el estado pasado es 1 incrementamos el contador en 1 if(statep == 3) count--; // Si el estado pasado es 3 decrementamos el contador en 1 break; } case 3: //Si el estado actual es 3 { //Comparacion con el estado pasado if(statep == 2) count++; // Si el estado pasado es 2 incrementamos el contador en 1 if(statep == 4) count--; // Si el estado pasado es 4 decrementamos el contador en 1 break; } default: //Utilizado el default como el estado 4 { //Comparacion con el estado pasado if(statep == 1) count--; // Si el estado pasado es 1 decrementamos el contador en 1 if(statep == 3) count++; // Si el estado pasado es 3 incrementamos el contador en 1 //break; } } statep = state; // actualizamos la variable statep con el valor del actual estado para cerrar el circulo } void turnRight() // Ordena el giro en CW (Clock Way) { digitalWrite(x,HIGH); digitalWrite(y,LOW); } void turnLeft() // Ordena el giro en CCW (Contra Clock Way) { digitalWrite(x,LOW); digitalWrite(y,HIGH); }
@carlosrojo7381
@carlosrojo7381 6 жыл бұрын
ya lo probaste ?
@haroldaguivillar4247
@haroldaguivillar4247 Жыл бұрын
@@carlosrojo7381 sin funciona necesitas el hardware adecuado nomas
@jhonyluiscarbajalquispe2697
@jhonyluiscarbajalquispe2697 7 жыл бұрын
HOLA PORFAVOR. UNA PREGUNTA. COMO INGRESAS ESE ANGULO EN ARDUINO PARA QUE GIRE EL MOTOR. NO ENCUENTRO LAS OPCIONES
@deaelectronic8175
@deaelectronic8175 6 жыл бұрын
A mi me pasa lo mismo no encuentro como ingresar el angulo, lo averiguaste tu. Gracias
@dantejimrandalgallotorres885
@dantejimrandalgallotorres885 6 жыл бұрын
mediante el puerto serial
@piezaspararobotica
@piezaspararobotica 7 жыл бұрын
Si estas en categoria educacion ..creo te falta poner los datos de codigo y diagrama utilizados en el proyecto sino para que sirve???? no podemos experimentar y llevar a la practica...Sdos..
@jacquelinnehernandezlorenz7505
@jacquelinnehernandezlorenz7505 7 жыл бұрын
oye amigo, podrias ayudarme, diciendo que tipo de motor usas?? porfavor.,, que relcion es y de que tipo es el encoders
@alfredomendozaavila8689
@alfredomendozaavila8689 7 жыл бұрын
Hola que tal muy interesante tu proyecto me podrias proporcionar tu codigo ya que estoy trabajando en algo parecido de ante mano te lo agradezco y muchas gracias [email protected]
@alejandragarcia9586
@alejandragarcia9586 7 жыл бұрын
Hola chico, muy buen proyecto. Estoy trabajando en un proyecto parecido , me podrias mandar informacion del tuyo para hacer la simulacion en proteus? Mi motor es DC de 24 voltios con encoder incluido. Este es mi correo [email protected] SOY DE VENEZUELA
@jhonpreciado5380
@jhonpreciado5380 7 жыл бұрын
mi reina estaras disponible para mi......
@efrainramos6836
@efrainramos6836 7 жыл бұрын
amigo muy bueno, ¿me podrias ayudar con el codigo?
@victorjimenez694
@victorjimenez694 8 жыл бұрын
Buenas tardes amigo por favor me puede pasar su código y el diagrama de conexiones gracias n.n mi correro es: [email protected]
@ivanmanuelasmatburgos279
@ivanmanuelasmatburgos279 8 жыл бұрын
un favor me podrias pasar tu código y el diagrama de las conexiones te agradecería mucho mi correo es : [email protected]
@bikeblogsmx7251
@bikeblogsmx7251 8 жыл бұрын
me podrías pasar tu código por favor y el diagrama de las confecciones. mi correo es [email protected]
@khalilnallarcamacho299
@khalilnallarcamacho299 8 жыл бұрын
hola buen video, bien explicado me puedes mandar el código utilizado? mi correo es [email protected] gracias saludos
@CarlosSanchez-dx4cg
@CarlosSanchez-dx4cg 8 жыл бұрын
Muy Buen trabajo. Disculpa, me podrías compartir el código y tu diagrama por favor. Mi correo es: [email protected]. Muchas gracias!!!
@enrikeprz9885
@enrikeprz9885 8 жыл бұрын
hola excelente trabajo un favor me podrias mandar el codigo y diagrama del circuito mi correo es [email protected]
@urielbonillaperez2223
@urielbonillaperez2223 8 жыл бұрын
me podrian compartir el codigo y el circuito para analizarlo mejor, de antemano excelente trabajo [email protected] .... gracias
@cesarcastillo8255
@cesarcastillo8255 8 жыл бұрын
excelente trabajo, podrías compartir me tu código, mi correo es; [email protected]
@juanpablorendon838
@juanpablorendon838 9 жыл бұрын
Hola soy nuevo en este campo; pero me parece muy interesante este proyecto.Me puede compartir el codigo y el diagrama del circuito? para poder analizarlo y aprender mas. Le agradezco su colaboracion . Gracias. mi correo es [email protected] un amigo mas.
@carlosivanresendiztapia1783
@carlosivanresendiztapia1783 7 жыл бұрын
hola amigo una pregunta si te paso el codigo y diagrama ?????
@3ST3BANJIMENEZ
@3ST3BANJIMENEZ 9 жыл бұрын
Una pregunta, Tlacalel, Si en lugar de encoder adaptamos un potenciometro al motor (de manera fisica) para que nos indique la posición actual del motor, cómo adaptamos ese cambio en programación??
@3ST3BANJIMENEZ
@3ST3BANJIMENEZ 9 жыл бұрын
Hola me podrías compartir el codigo que utilizaron. Saludos
@blackwuay14hg60
@blackwuay14hg60 9 жыл бұрын
me podrias mandar el diagrama del circuito mi correo es [email protected]
@jomahero23
@jomahero23 9 жыл бұрын
Buen trabajo, gracias por compartirlo ya que me ha sido de mucha utilidad