TODOPIC
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
. ¿Perdiste tu
email de activación
?
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión
Este tema
Este sub-foro
Todo el foro
Google
Inicio
Ayuda
Buscar
Ingresar
Registrarse
TODOPIC
»
Microcontroladores PIC
»
Lenguaje C para microcontroladores PIC
(Moderadores:
pikman
,
pocher
,
vszener
,
Suky
) »
Encoder para posición en grados de un motor DC
« anterior
próximo »
Imprimir
Páginas: [
1
]
Ir Abajo
Autor
Tema: Encoder para posición en grados de un motor DC (Leído 6085 veces)
0 Usuarios y 1 Visitante están viendo este tema.
leotronik
PIC10
Mensajes: 10
Encoder para posición en grados de un motor DC
«
en:
26 de Febrero de 2013, 18:22:13 »
Muy Buenas Tardes Colegas
En esta ocasión me enfrento frente a una duda que tengo con respecto a los encoder.
Quisiera saber si es posible determinar la posición en grados de un motor dc para visualizarlo en una pantalla lcd con un encoder, he leído por algunas paginas pero solo observo que sirve para determinar el numero de vueltas y no la posición.
Les agradezco de antemano que me ayuden a resolver esta duda ya que es un proyecto que estoy desarrollando desde hace rato pero no he encontrado la forma de determinar la posición en grados solo con un encoder.
Muchas gracias por su colaboración.
En línea
planeta9999
Moderadores
DsPIC30
Mensajes: 3520
Re: Encoder para posición en grados de un motor DC
«
Respuesta #1 en:
26 de Febrero de 2013, 20:17:38 »
Puedes utilizar un servo, salvo que el motor deba de girar libremente, o utiliza un motor paso a paso.
En línea
AngelGris
Colaborador
PIC24H
Mensajes: 2480
Re: Encoder para posición en grados de un motor DC
«
Respuesta #2 en:
26 de Febrero de 2013, 20:18:28 »
¿Puedes describir un poco más? Soy un poco lento para comprender
Supongo que el motor no estará en movimiento continuo, ya que de ser así su posición estaría cambiando constantemente.
Tampoco conozco los encoders que van acoplados a los motores, pero imagino que no distarán mucho de los encoders rotativos utilizados por muchos equipos, por ejemplo, como control de volumen.
En línea
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas
KALLITOS
Colaborador
PIC24H
Mensajes: 1256
Re: Encoder para posición en grados de un motor DC
«
Respuesta #3 en:
26 de Febrero de 2013, 20:47:03 »
Existen encoder incremental y absoluto.
El encoder incremental traen pulsos A, B y Z este ultimo es un pulso unico en giro que hace de reset y con el cual se pone a 0 un contador y ya alli puedes saber la posicion exacta contando los pulsos A y B hasta que aparezca la Z y resetee el contador, el problema de este encoder es que cuando enciendas el equipo no sabra su posicion hasta que pase por Z.
Existen tambien los encoder absoluto con codificación fija es decir cada cierta distancia circular lleva un unico valor.
San google te despejara mejor tus dudas.
Buscar como encoder incremental y absoluto.
Saludos.
En línea
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)
Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash
Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!
S34ML08G1TFI200 no necesito mas memoria externa.
RALF2
Moderadores
PIC24H
Mensajes: 2060
Re: Encoder para posición en grados de un motor DC
«
Respuesta #4 en:
26 de Febrero de 2013, 20:50:07 »
leotronik
Tal como lo indicas si el motor es DC o AC por lo general se usa un tacometro para saber la velocidad de giro del eje del motor y no la posicion, ya que, la variable posicion por lo general no es de interes. Ahora bien si lo que quieres es saber la posicion del eje del motor, entonces como te han indicado los colegas del foro, debes emplear un servomotor para ello.
Danos una vision un poco mas amplica de lo que piensas hacer con el encoder para que asi podamos ayudarte mejor, que pic vas a utilizar, compilador a emplear...
Saludos
En línea
rivale
Colaborador
PIC24H
Mensajes: 1707
Re: Encoder para posición en grados de un motor DC
«
Respuesta #5 en:
26 de Febrero de 2013, 23:36:29 »
Hola, en efecto puedes medir el incremento en grados de la posición de un motor, sin embargo, esto depende de la resolución de tu enconder, por ejemplo, si tu encoder tiene 360 divisiones, tu resolución máxima sera de 1 grado
En línea
"Nada es imposible, no si puedes imaginarlo"
leotronik
PIC10
Mensajes: 10
Re: Encoder para posición en grados de un motor DC
«
Respuesta #6 en:
27 de Febrero de 2013, 18:56:46 »
Bueno Colegas Muchas gracias por responder.
Bueno tal y como me han comentado en esencia lo que necesito es identificar las señales de un encoder para que un pic16f877a las reconozca como señales digitales (valores binarios) y poder visualizarlas en una lcd es decir por cada grado que se mueva el eje del motor se pudiera visualizar en la pantalla los grados que se ha movido tanto en un sentido como en otro, por ejemplo si el motor se mueve hacia adelante 3 grados este valor se debe visualizar en la lcd pero si el motor se mueve hacia atrás 10 grados se debe visualizar en la lcd el valor en grados del movimiento hacia atrás.
Espero haberme hecho entender con claridad, cualquier comentario sera bienvenido.
En línea
KALLITOS
Colaborador
PIC24H
Mensajes: 1256
Re: Encoder para posición en grados de un motor DC
«
Respuesta #7 en:
27 de Febrero de 2013, 19:34:28 »
Hola, hace un tiempo estuve jugando con encoder y me hice este codigo:
Código: C
#include <16f628.h>
#fuses INTRC_IO
#fuses NOWDT
#fuses PROTECT
#fuses NOPUT
#fuses BROWNOUT
#fuses NOMCLR
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)
#define encoder_A input(pin_b4)
#define encoder_B input(pin_b5)
#byte tx_reg = 0x19
char
bufer
[
10
]
;
int1 est_ant_1
,
est_ant_2
,
flag_cambio_encoder
=
0
;
int32
encoder
=
0
;
int16
valor
;
int1 enviar
=
0
;
int8
contador
=
0
,
cont
;
#INT_RB
void
lectura_encoder
(
void
)
{
int8
XXX
;
if
(
encoder_A
!=
est_ant_1
)
{
if
(
encoder_A
)
{
if
(
!
encoder_B
)
{
encoder
++;
}
else
{
encoder
--;
}
}
//
else
{
if
(
encoder_B
)
{
encoder
++;
}
else
{
encoder
--;
}
}
//
}
else
if
(
encoder_B
!=
est_ant_2
)
{
if
(
encoder_B
)
{
if
(
encoder_A
)
{
encoder
++;
}
else
{
encoder
--;
}
}
//
else
{
if
(
!
encoder_A
)
{
encoder
++;
}
else
{
encoder
--;
}
}
//
}
est_ant_1
=
encoder_A
;
est_ant_2
=
encoder_B
;
flag_cambio_encoder
=
1
;
XXX
=
input_b
(
)
;
}
#INT_TBE
void
tx
(
void
)
{
if
(
bufer
[
cont
]
)
{
tx_reg
=
bufer
[
cont
++
]
;
}
else
{
disable_interrupts
(
INT_TBE
)
;
}
}
#INT_TIMER1
void
tmer1
(
void
)
{
set_timer1
(
valor
)
;
if
(
++
contador
>
10
)
{
contador
=
0
;
enviar
=
1
;
}
}
void
main
(
)
{
setup_timer_1
(
T1_INTERNAL
|
T1_DIV_BY_8
)
;
//CONFIGURACION DE TIMER1
enable_interrupts
(
INT_TIMER1
)
;
enable_interrupts
(
INT_RB
)
;
enable_interrupts
(
global
)
;
//ATIVACION DE INTERRUPCION GENERAL
set_tris_b
(
0b11111011
)
;
//PUERTO B SALIDAS
valor
=
3040
;
set_timer1
(
valor
)
;
while
(
true
)
{
if
(
enviar
)
{
sprintf
(
bufer
,
"@%6lu%c"
,
encoder
,
13
)
;
cont
=
0
;
tx_reg
=
bufer
[
cont
++
]
;
enable_interrupts
(
INT_TBE
)
;
enviar
=
0
;
}
}
//
}
//
Si tu encoder tiene 100 pulsos, el conteo se hace hasta 400, logra obtener conteo por cada flanco tanto de A y B del encoder y hace el aumento decremento del conteo.
Saludos.
En línea
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)
Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash
Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!
S34ML08G1TFI200 no necesito mas memoria externa.
leotronik
PIC10
Mensajes: 10
Re: Encoder para posición en grados de un motor DC
«
Respuesta #8 en:
18 de Marzo de 2013, 10:06:04 »
Muchas gracias por la ayuda colegas me ha servido mucho...!
En línea
Imprimir
Páginas: [
1
]
Ir Arriba
« anterior
próximo »
TODOPIC
»
Microcontroladores PIC
»
Lenguaje C para microcontroladores PIC
(Moderadores:
pikman
,
pocher
,
vszener
,
Suky
) »
Encoder para posición en grados de un motor DC