Aviso

El foro está en modo de sólo lectura.

ENCODER Y EPROM DE ARDUINO AYUDA

Más
6 años 4 días antes #1313 por DEA
Respuesta de DEA sobre el tema ENCODER Y EPROM DE ARDUINO AYUDA
Buenas Jose Luis, pues te explico, lo de que se quede son tensión el sistema, pues cuando apaguen la maquina que controla la bandeja donde esta el encoder contando los pulsos para saber la posición, perderé en que posición se a quedado la bandeja y cuando enciendan la maquina y le digan que se mueva 1 metro a la derecha, arduino no sabrá donde esta la bandeja.
Pero me ha dado una idea, le puedo poner una batería al arduino para que se mantenga encendido mientras la maquina este apagada.

Respecto a los errores de lectura de los pulsos, encontré esto en youtube, el código esta bien, aunque no es para mi encoder se podría modificar. Al principio del codigo el tio crea una variable de tipo "unsigned int order_angle=0" y en el minuto 22 de video a través del puerto serie aparece un texto que pone "ingresar el angulo" y supongo que le dará a la variable el valor del angulo que quiere que se mueva el motor,
En el codigo que te lo voy a dejar aqui no encuentro como hace eso, tu sabrias explicarme como se hace. No se si me he explicado, pero cuando puedas mira el video.

Adjuntos:
Más
5 años 11 meses antes #1330 por DEA
Respuesta de DEA sobre el tema ENCODER Y EPROM DE ARDUINO AYUDA
Buenas Jose Luis

Al final he estudiado un poco mas las interrupciones y he echo este código, de momento se maneja por el monitor serial del propio IDE de Arduino.

Lo he probado y funciona bien, ahora lo que quiero hacer es manejarlo desde un PC, voy a ver si puedo hacer algo con python o alguno otro programa, si no pues lo haré con una Nextion o algun LCD.

Os dejo aquí el código.

Saludos
Adjuntos:
Más
5 años 11 meses antes #1331 por Jose Luis
Respuesta de Jose Luis sobre el tema ENCODER Y EPROM DE ARDUINO AYUDA
Gracias por compartir el codigo y tus experiencias con nosotros.

Un saludo compañero.
Más
5 años 11 meses antes #1340 por DEA
Respuesta de DEA sobre el tema ENCODER Y EPROM DE ARDUINO AYUDA
Buenas Jose Luis, haber si me puedes orientar un poco:

En el código que subí para el encoder, a traves del monitor serial de Arduino escribía los mm (los pulsos convertidos) que quería que el encoder contara para parase en esa posición.

Lo hice con la variable de tipo char incomingByte; y este código:

if (Serial.available() > 0)
{
Entrada_movimiento = 0;
while (1) {
incomingByte = Serial.read();
if (incomingByte == '\n') break; //Salir del ciclo cuando haya un salto de linea
if (incomingByte == -1) continue; //Si no hay caracter...
Entrada_movimiento *= 10; //Multiplica por 10, lo que lo desplaza hacia la izquierda en decimales
Entrada_movimiento = ((incomingByte - 48) + Entrada_movimiento); //Convierte ASCII a valor entero
}
}
Serial.print("Movimiento deseado: ");
Serial.print(Entrada_movimiento);
Serial.print(", pulsos = ");
Serial.print(enc_pos);
Serial.print(", milimetros= ");
Serial.print(ml);
Serial.println();
delay(REFRESH_MS);
}

El problema que tengo es que lo quiero hacer al final con Nextion y he creado un par de pantallas (que te adjunto) en la cual en la pagina 0 pulsamos el botón "prog" se va a la pagina 1 y en esta ponemos los mm que queremos que se mueva y pulsamos enter a los pocos segundos pasa a la pagina 0 y el valor escrito aparece en "t5"

Como hago para que arduino lea este valor (t5) y lo interprete para funcione igual que con la variable char.

No se si me he explicado bien, si no me lo dices y lo vemos.

Gracias
Adjuntos:
Más
5 años 11 meses antes #1346 por DEA
Respuesta de DEA sobre el tema ENCODER Y EPROM DE ARDUINO AYUDA
Me respondo yo mismo.

Sabia que habia visto algo en el foro, aqui esta
www.cambatronics.com/web/index.php/foro/...able-de-arduino#1284

Lo aplicare a mi proyecto y voy contando.
Más
5 años 11 meses antes - 5 años 11 meses antes #1357 por DEA
Respuesta de DEA sobre el tema ENCODER Y EPROM DE ARDUINO AYUDA
Buenas si alguno quiere utilizar el sketch que puse del Encoder, deciros que tiene un fallo , después de estar usándolo una temporada me di cuenta que cuando pasaba de 4095 pulsos la conversión que hice a milímetros no funcionaba y empezaba a marcar valores negativos.

Asin que lo que tenéis que hacer es cambiar esta linea, que es la formula que use para pasar a mm:

ml = (enc_pos * 8) / 100;

Por este mapeo que funciona mejor:

ml = map(enc_pos, 0,100, 0, 8);


Saludos
Última Edición: 5 años 11 meses antes por DEA.
Tiempo de carga de la página: 0.118 segundos
Gracias a Foro Kunena