Autor Tema: convertir pulsos de 12v a 5v de un encoder  (Leído 9595 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado marce0252

  • PIC10
  • *
  • Mensajes: 7
convertir pulsos de 12v a 5v de un encoder
« en: 02 de Noviembre de 2006, 23:05:31 »
 :-/ hola a todos
Tendo que contar los pulsos de un encoder de 1000 pulsos por revolucion pero este esta alimentado con 12V y tengo que pasarlo a 5V para poder leerlo con un pic 877. Y cuestion es como hacer esto. y por otro alguna linea de codigo de PBP para poder contar los pulsos continuamente y no en un determina tiempo como la instruccion COUNT.
agradeceria mucho a cualquiera que me pueda dar una mano. chauu  :mrgreen:

Desconectado juanez

  • PIC12
  • **
  • Mensajes: 90
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #1 en: 03 de Noviembre de 2006, 11:23:59 »
Puedes poner una resistencia, para reducir tension.

Desconectado marce0252

  • PIC10
  • *
  • Mensajes: 7
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #2 en: 04 de Noviembre de 2006, 13:06:29 »
 :) gracias. mi otro problema es el del codigo en pbp para leer pulsos del encoder continuamente y almacenarlo en una variable.   :?

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #3 en: 04 de Noviembre de 2006, 13:41:14 »
Hola:

Puedes utilizar esta funcion:

Citar
PULSIN Pin,State,Var

Measures pulse width on Pin. If State is zero, the width of a low pulse is measured. If State is one, the width of a high pulse is measured. The measured width is placed in Var. If the pulse edge never happens or the width of the pulse is too great to measure, Var is set to zero. If an 8-bit variable is used, only the LSB of the 16-bit measurement is used. Pin may be a constant, 0 - 15, or a variable that contains a number 0 - 15 (e.g. B0) or a pin name (e.g. PORTA.0). The resolution of PULSIN is dependent upon the oscillator frequency. If a 4MHz oscillator is used, the pulse width is returned in 10us increments. If a 20MHz oscillator is used, the pulse width will have a 2us resolution. Defining an OSC value has no effect on PULSIN. The resolution always changes with the actual oscillator speed.

Example

' Measure high pulse on Pin4 stored in W3
PULSIN PORTB.4,1,W3

Desconectado marce0252

  • PIC10
  • *
  • Mensajes: 7
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #4 en: 05 de Noviembre de 2006, 12:00:08 »
gracias.  :)
Pero esta funcion de PULSIN mide solamente el ancho de pulso. Como hago para poder contar los pulsos uno a una para poder ir incrementando una variable? Yo use COUNT pero solo cuenta en un determinado tiempo prefijado en milisegundos. Hay otra forma.
saludos  :P

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #5 en: 05 de Noviembre de 2006, 14:05:10 »
Podrias adaptar el pulsin para que te cuente todo un pulso uno alto y uno bajo, pero si lo unico que quieres que cuente es una señal on/off crea una rutina que sea capaz de contar las veces que se enciende el pin especifico donde mides por ejemplo un pulso cuadrado de 3 ondas serian 3 ons con sus respectivos offs talvez si haces una rutina que incremente una variable cada que se prenda el pin.....

Por aqui en el foro hay varios temas asi pero usan count y pulsin por que no los checas, quizas te sirvan???

Suerte
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #6 en: 05 de Noviembre de 2006, 19:46:06 »
Pulsin te cuenta el tiempo en que una terminal pasó de un estado a otro.

Count te cuenta las veces que esa terminal cambió de estado en un tiempo.

Puedes usar los contadores en hardware, con esos no hay límite de tiempo y su respuesta al cambio es rápida.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado marce0252

  • PIC10
  • *
  • Mensajes: 7
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #7 en: 05 de Noviembre de 2006, 20:37:27 »
 :shock: MARIO
Como hago por hardware? tenes algun ejemplo... eso seria barbaro por el tiempo de respuesta, ya que la señal del encoder va a variar segun la velocidad y nose la frecuencia de los pulsos.Cuanto mas rapido y confiable MEJOR... :)

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #8 en: 06 de Noviembre de 2006, 00:28:27 »
Ve a ésta página y baja el archivo counter.zip que está al final de la página.

Utiliza un 18F84 pero la configuración es la misma para todos los timers de µicrochip.
En este caso usa el TMR0 y revisa sobreflujo; puedes usar el TMR1 que trae el 16F877 ya que es de 16 bits ó, puedes usar el TMR0 del 16F877 y utilizar el código.

Sería recomendable que realizaras una búsqueda dentro del foro para saber si ya hay programas o temas que se relacionen con lo que buscas.

http://www.microengineeringlabs.com/resources/samples.htm
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado marce0252

  • PIC10
  • *
  • Mensajes: 7
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #9 en: 07 de Noviembre de 2006, 20:28:32 »
 :mrgreen: GRACIAS muy buen dato.
Porfavor Algun ejemplo para configurar TMR1 del 877 para que cuente e incremente una variable por que no termino de entender bien el tema de PIR1 y PIE1 y la configuracion de la interrupcion.
El donde entra la señal es el RC0? .
Como se detecta la interrupcion cuando se inyecta señal en el pin?
Perdonen si insisto pero este tema me rompe la cabeza   :(
Y me fije los ejemplos del foro de PBP me falta entender...  :? :?

Desconectado epacho1

  • PIC10
  • *
  • Mensajes: 10
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #10 en: 10 de Noviembre de 2006, 16:45:06 »
El paso de 12V a 5V lo podrias hacer con un transistor, polarizando la base con 12V y una resistencia de unos 10k y el colector con 5V con una resistencia de 1k por ejemplo, o con un optoacoplador que seria lo mas recomendable (un optotransistor PC817 por ejemplo), con el otro asunto, la opcion de PULSIN es buena si lo que quieres es un "tacometro", si quieres contar los pulsos, yo me inclinaria por contarlos por interrupcion por Rb0 o por interrupcion por cambio de estado en el puerto B, asi cada que tienes una interrupcion haces que se incremente en uno un registro, y luego con ese registro puedes hacer lo que sea. En el datasheet del 877 esta como manejar las IT ya sea por RB0 o por el modulo CCP, claro que las configuraciones te las dan en ASM. Si tienes algun problema yo te puedo ayudar con un algoritmo de programa o mejor aun con algun segmento de programa. Saludos

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #11 en: 10 de Noviembre de 2006, 21:28:31 »
El meterse con interrupciones es muy complicado para lo que pides.

Si se incrementa RC0, se incremeta el TIMER1; primero el TMR1L y luego el TMR1H.
No necesitas interrupciones.

Revisa la hoja de datos en el TIMER1 y te darás cuenta.


Regresaré en la noche, te pondré un código simple.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #12 en: 11 de Noviembre de 2006, 05:39:44 »
Releí el tema y creo que si necesitarás una interrupción pero primero necesito saber una cosa:
¿Sabes manejar interrupciones?

Si no lo sabes, puedes preguntar por TMR1IF (creo que asi se llama) sin necesidad de activar las interrupciones. Esta bandera se activa cuando el contador/timer 1 tiene sobreflujo de 16 bits a 17. Si está activada quiere decir que hubo sobreflujo y que debes incrementar un registro.
El valor en dicho registro equivale a (65536)(#en registro) ya que cada incremento en él representa 65536.

Busca en el foro cómo configurar interrupciones en basic ó mejor aún, busca en el manual del PBP, al final dice cómo hacerle.

Si no puedes, considero que primero deberías crear un tema sobre cómo manejar interrupciones en PBP; después regreses a este. Pero en el foro debe haber ejemplos.
« Última modificación: 11 de Noviembre de 2006, 05:52:55 por Mario »
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado marce0252

  • PIC10
  • *
  • Mensajes: 7
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #13 en: 13 de Noviembre de 2006, 15:08:34 »
 :)  BUENO SEGURO QUE HAY QUE REVISARLO PORQUE NO FUNCA, SEGURO QUE ALGO LE FALTA... :mrgreen:
POR QUE NO CUENTA Y PORQUE NO TENGO CLARO EL TEMA... SI PUEDEN AYUDARME A QUE FUNCIONE.
MARIO: cuando hay superflujo es cuando TMR1 conto arriba de los 65536 y hay que limpiar a cero TMRIF (PIR1.0 = 0)?
y el papel de PIE1.0 ?? __Gracias por tus consejos y perdon mi ignorancia... es la unica forma que tengo de aprender.  :mrgreen:

' INYECTO UNA SEÑAL CUADRADA EN EL PIN RC0     
   
DEFINE OSC 20

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
DEFINE LCD_LINES 2

Contador var word   'variable a incrementar     

Contador.lowbyte = TMR1L
contador.Highbyte = TMR1H
TMR1L = 0
TMR1H = 0

INTCON = %11000000  'prende las interrupciones globales y perifericas
T1CON = %00000011   'prende el TMR1 y habilita el pin RC0 como fuente ext. de reloj
PIR1.0 = 0          'limpia bandera de superflujo de TMR1
PIE1.0 = 1          'habilita interrupcion periferica de superflujo de TMR1

on interrupt goto Encoder  'interrupcion en PBP
enable

pause 400
Lcdout $FE,1,"Contador"


while 1=1            'bucle principal

pause 200
low portb.7          'apago led para saber cuando estoy en el bucle

lcdout $FE,$C0,dec contador  'muestro el conteo en LCD

wend
   
disable
Encoder:              ' Interrupcion
high portb.7          ' prendo un led para ver si entro en la interrupcion

Contador = Contador + 1  '????????

resume
enable   


Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: convertir pulsos de 12v a 5v de un encoder
« Respuesta #14 en: 13 de Noviembre de 2006, 16:33:53 »
Por lo que has escrito creo que nunca verás la actualización de cada revolución; solo verás cada incremento cuando exista sobre flujo en el LCD.
Además que nunca verás (si tienes vista biónica si  :D) el led prendido cuando exista sobreflujo porque no le asignas ningún retardo.
Y todo eso lo sabrás una sola vez ya que no borras la bandera de interrupción.

No es recomendable usar las interrupciones en Basic, toman tiempo...... luego te explico. Dame tiempo, hoy en la noche te hago un programa con interrupciones en ensamblador usando Basic (mezcla) en donde siempre estés viendo el incremento de sobreflujo en el LCD en la línea 1.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee