Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
29/02/2012 #1761

Avatar de J2C

D@rio

He adjuntado a este mensaje dos archivos *.pdf con las tablas de lo que tu has adjuntado en el post #1854, las he separado como "Tabla Inmovil" y "Tabla en Movimiento" y el numero al final "31" es de "Uso Interno/Versión" para que me indique en que punto las he impreso. Me he demorado pues me ha entrado trabajo que debía entregar.

En este punto y para conocer mejor la variación con respeto al Orden Anterior deberiamos unir ambos Byte y sacar el bendito "Complemento a 2". Si bien tengo claro como obtener el Complemento a 2 de un Byte, no lo tengo totalmente claro en el caso de dos Byte y seguire mirando esas dos tablas.

Salvando la diferencia de 2 a 3 Gyros en un solo encapsulado para realizar algo parecido al video me parece que era mejor el que le han dado a ReyVilla (IDG-655 [http://www.dzsc.com/uploadfile/compa...123753733.pdf]) por que directamente nos muestra en analógico la posición.

D@rio dijo: Ver Mensaje
.....lo que me preocupa ahora, son las variaciones que hace el gyro sin siquiera moverlo y como puedo solucionarlo......
Como dije en mi post #1847:
J2C dijo: Ver Mensaje
...........
B) Tenemos que pensar que el mismo tiene internamente 3 ADC's de 16bit, 65536 posibles posiciones!!!!!!!!!! dentro de un giro de 360°. O mejor pensando que la información por eje esta en 2 Byte y como Complemento a 2, divago que tengo 360° a la izquierda con 32768 posibles posiciones (una cada 0.010986328125°) y otro tanto hacia la derecha, MUCHISIMA precisión para mi gusto!!!. ..........
Me parece que se debe investigar en esa dirección.





ReyVilla

En la imagen que has adjuntado estan el IDG655 y el ISZ650 que son Sensores Analógicos con 2 y 1 Gyro respectivamente y casi complementarios según " Complements IDG-650 dual axis (X/Y) gyro, for a solution where all sensors mount in-plane with the rest of the system electronics" (http://invensense.com/mems/gyro/isz655.html) para tener en una sola plaqueta lo mismo que que con el ITG3205 pero en Analógico.

En definitiva todo depende del uso que le daras y la complejidad del programa a realizar para el µControlador.





Judex

judex dijo: Ver Mensaje
....la formula es:Presion = ((V out/V alimentacion)+0.095)/0.009......
Si bien ya Darkbytes te dio la alternativa correcta, aquí te paso otra y para este caso particular:

Presion = ([(V out/V alimentacion)*1000]+95)/9

por que 0.095 y 0.009 son milesimos y debemos convertir Vout y Valimentacion tambien a milesimos.



Saludos, JuanKa.-
29/02/2012 #1762

Avatar de J2C

D@rio

Adjunto a este post un archivo *.pdf de lo que presumo seria el Complemento a 2 usando los 2 Byte (Byte_H y Byte_L) del IGT-3205, no tengo la más minima seguridad que sea correcto, podrian estar ordenados al reves ambos Byte's, etc. . Quedo a la espera de algun comentario.

Para mi es el próximo paso a realizar a continuación de la Tablas en estado Estático y Dinámico del Gyro una vez que estemos seguros de como manejar esto.



Saludos, JuanKa.-

P.D.: Si bien el tema de "Complemento a 2" permite habilitar/agregar un thread, creo correcto haberlo colocado junto con el trabajo que estan llevando a cabo del Gyro IGT-3205.-
04/03/2012 #1763


Que tal bandiita

bueno ps aqui molestando con una ayuda que por favor me puedan auxiliar.Primero este programa que les pongo lo vi en un libro, y de ahi me lo copie y lo modifique a mi gusto.

Lo que quiero es que se apague el cto cuando mantenga presionado el boton en pin 4 digamos que lo mantenga presionado durante 3seg y se apague.

La otra opcion es si me pueden decir si puedo reducirlo lo mas que se pueda, esto mas que nada es para aprenda mas comandos.

Ok.. espero sus respuestas y ojala no suene muy exigente y si fue asi no es mi intension......Saludos


INCLUDE "modedefs.bas"

@ device pic12F683, FCMEN_OFF
@ device pic12F683, IESO_OFF
@ device pic12F683, BOD_OFF
@ device pic12F683, CPD_OFF
@ device pic12F683, PROTECT_OFF
@ device pic12F683, MCLR_OFF
@ device pic12F683, PWRT_ON
@ device pic12F683, WDT_OFF
@ device pic12F683, INTRC_OSC_NOCLKOUT

OSCCON = $60 ' Internal 4MHz osc
DEFINE OSC 4
ADCON0 = 0 ' A/D off
CMCON0 = 7 ' Comparators off
ANSEL = 0 ' Set all digital
WPU = 0 ' Internal pull-ups = off
trisio = $8
pulsador var GPIO.3
led1 var GPIO.1
led2 var GPIO.2
led3 var GPIO.0
led4 var GPIO.4
led5 var GPIO.5
GPIO=0


inicio:
if pulsador=0 then ;pregunta si el pulsador es 0 entonces
gosub trampa ;salta a la etiqueta ciclo
goto prendido1 ;de lo contrario salta a la etiqueta prendido
endif
goto inicio

prendido1: ;etiqueta de salto
low led5
pause 200
high led1
pause 200 ;saque 1L por el pueto b.0
pregunta: ;etiqueta de salto
if pulsador=0 then ; pregunta si el pulsador es 0 entonces
goto prendido2 ; salta a la etiqueta apagado
endif
goto pregunta ;salte a pregunta hasta que presione nuevamente el pulsador

prendido2:
low led1
pause 200
high led2
pause 200
pregunta2:
if pulsador=0 then
goto prendido3
endif
goto pregunta2

prendido3:
low led1
pause 200
low led2
pause 200
high led3
pause 200
pregunta3:
if pulsador=0 then
endif

apagar:
pause 200
low led1
low led2
low led3
pause 200
preguntafinal:
if pulsador=0 then
goto preguntafinal
endif
goto inicio ;salte a la etiqueta inicio

trampa: ; etiqueta para salto llamada ciclo
if pulsador=0 then goto trampa ;si pulsador sigue presionado salte a trampa
return ;casco contrario retorne a la linea donde se quedo
end
05/03/2012 #1764

Avatar de reyvilla

Hola TiTaNB009, lo de los 3 segundos lo puedes hacer con una variable tipo contador y while, algo asi:

trampa: ; etiqueta para salto llamada ciclo
while pulsador = 0 and variablecount <= 3
variablecount = variablecount + 1
PAUSE 1000
goto trampa ;si pulsador sigue presionado salte a trampa
wend
return ;casco contrario retorne a la linea donde se quedo
end

Bueno habría que probarlo y depurarlo pero mas o menos es una idea de como se podría hacer saludos
07/03/2012 #1765


ok.. reyvilla, voy a checarlo luego comento.......
08/03/2012 #1766

Avatar de alejandrozama

0-99 7 segmentos
hola que tal, pues yo nuevamente solicitando su ayuda, debo de realizar un contador de 0 a 99 don display de 7 segmentos he visto varios ejemplos aqui en el foro y un libro, la cuestion es que el profe quiere especificamente un diseño el cual 7 pines del puerto van directo al display y el ultimo pin se conecta a dos transistores uno pnp y otro npn, esto para con 1 solo pin controlor los dos comunes de los displays


la verdad no tengo idea de como realizar eso, si alguien me pudiera ayudar se los agradeceria mucho, adjunto la imagen para que me entiendan mejor
Imágenes Adjuntas
Tipo de Archivo: png 0-99.png (55,2 KB (Kilobytes), 51 visitas)
08/03/2012 #1767

Avatar de reyvilla

Hola alejandrozama, es mas fácil de lo que parece, si vas a utilizar los 7 pines del puerto, y conociendo el pinaje del 7 segmentos lo que tendrías que hacer es codificar, osea lo mismo que hace el 7447 o el 7448, pero con los 7 pines del pic directos, como veo ya tienes el diagrama es catodo comun, lo que significa que debes enviar unos para activar cada segmento y con el arreglo de transistores siempre va estar activado uno o el otro y es cuestión de ir turnandolos mientras vas activando los segmentos, ejemplo para mostrar 01, digamos que a primera instancia siempre esta habilitado el primer display con el arreglo de transistores, entonces envías para que se vea un cero, activas los segmentos a,b,c,d,e y f
y eso lo haces enviando por el puerto b, %001111111, y allí ya tendrías en el primer display un 0, para el segundo habilitas el otro display y activas los segmentos b y c seria así: %10000110, si tienes una simulación y un código ya empezado es mucho mejor para poder ayudarte...saludoss
09/03/2012 #1768
Moderador

Avatar de D@rkbytes

Saludos.
El amigo mecatrodatos subio un ejemplo el 16 de julio del 2009 en este mismo curso de pbp
sobre como hacer un contador de 0 a 99 con displays de 7 segmentos.
Con algunas modificaciones se puede hacer trabajar para cátodo común, y solo una línea de control.
10/03/2012 #1769

Avatar de alejandrozama

consegui un programa de un libro, este este es un contador de 0-99 ya lo probe y funciona muy bien solo que este diseño utiliza 2 pines para el control del comun de cada display (estoy utilizando de anodo comun), la simulacion se ve como parpadeando pero como dije en fisico funciona bien.

he tratado de hacer el areglo para solo utilizar un purto para el control de los comunes, la cuestion es que soy uan persona que se confunde con facilidad y se me pierde el hilo de lo que estoy haciendo 30 min despues vuelvo a donde empeze jajajja este es algo desesperante alguien me podria ayudar a como seria el areglo???

Código:
 @ device xt_osc 
define osc 4
Cnt VAR Byte 
Digit VAR Byte
Pattern VAR Byte 
Digit1 VAR PORTA.0
Digit2 VAR PORTA.1
First VAR Byte 
Second VAR Byte 
i VAR Word 

CMCON=7
TRISA=0 
TRISB=0

INTCON=%00100000
OPTION_REG=%00000111
TMR0=217
ON INTERRUPT GOTO ISR
INTCON=%10100000

LOOP:
Cnt=0

NXT:
Digit=Cnt DIG 1 
GOSUB CONVERT 
First=Pattern 
Digit=Cnt DIG 0 
GOSUB CONVERT 
Second=Pattern 
FOR i=1 to 500
Pause 1 
NEXT i
Cnt=Cnt + 1
IF Cnt>99 THEN LOOP
GOTO NXT 

DISABLE
ISR:
TMR0=216
PORTB=First
Digit2=0
Digit1=1
PAUSE 5

Digit1=0
PORTB=Second
Digit2=1
PAUSE 1
INTCON.2=0 
RESUME 
ENABLE 
CONVERT:

LOOKUP Digit,[$3F, $06, $5B, $4F, $66, $6D, $7D, $07, $7F, $6F],Pattern
Pattern=Pattern^$FF 
RETURN
END
Archivos Adjuntos
Tipo de Archivo: rar 0-99.rar (9,5 KB (Kilobytes), 86 visitas)
10/03/2012 #1770
Moderador

Avatar de D@rkbytes

alejandrozama dijo: Ver Mensaje
consegui un programa de un libro, este este es un contador de 0-99 ya lo probe y funciona muy bien solo que este diseño utiliza 2 pines para el control del comun de cada display (estoy utilizando de anodo comun), la simulacion se ve como parpadeando pero como dije en fisico funciona bien.

he tratado de hacer el areglo para solo utilizar un purto para el control de los comunes, la cuestion es que soy uan persona que se confunde con facilidad y se me pierde el hilo de lo que estoy haciendo 30 min despues vuelvo a donde empeze jajajja este es algo desesperante alguien me podria ayudar a como seria el areglo???
Saludos.
Revisa estas modificaciones que realice al código, quedaron como comentadas.
Estos cambios involucran también el cambio de PIC por un 16F84A
ya que use el código del link que cite anteriormente y al parecer es el mismo que subes.
solo que el que cite tiene unos cambios para incremento manual.
Las modificaciones son para cátodo común y una sola línea de control para los dos TR's.
Las simulaciones funcionan bien, pero no probé el circuito en la realidad.
Archivos Adjuntos
Tipo de Archivo: rar 0-99 CC Modificados.rar (34,8 KB (Kilobytes), 112 visitas)
11/03/2012 #1771

Avatar de ferdy575

Hola a todos, de nuevo por aqui molestandoles estoy algo desocupado y se me ocurrio hacer una herramienta multiple para mi banco de trabajo se trata de un circuito que me sirva para contar eventos para voltimetro y frecuencimetro pero no logro hacer que el pic me cuente los pulsos de un pulsador por ejemplo aqui subo el ejemplo a ver sí me pueden ayudar aver que me estara haciendo falta en mi programa de antemano gracias
11/03/2012 #1772
Moderador

Avatar de D@rkbytes

ferdy575 dijo: Ver Mensaje
Hola a todos, de nuevo por aqui molestandoles estoy algo desocupado y se me ocurrio hacer una herramienta multiple para mi banco de trabajo se trata de un circuito que me sirva para contar eventos para voltimetro y tacometro pero no logro hacer que el pic me cuente los pulsos de un pulsador por ejemplo aqui subo el ejemplo a ver sí me pueden ayudar aver que me estara haciendo falta en mi programa de antemano gracias
Me parece que se te olvido adjuntar el código
12/03/2012 #1773

Avatar de ferdy575

Darkbytes dijo: Ver Mensaje
Me parece que se te olvido adjuntar el código
si tienenes razón gracias

---------- Actualizado después de 15 minutos ----------

Hola a todos, de nuevo por aqui molestandoles estoy algo desocupado y se me ocurrio hacer una herramienta multiple para mi banco de trabajo se trata de un circuito que me sirva para contar eventos para voltimetro y frecuencimetro pero no logro hacer que el pic me cuente los pulsos de un pulsador por ejemplo, adicionalmente me esta presentando errores al medir frecuencias inferiores a 50 Hz:enfadado:, no importa sí tengo que usar otro pic como por ejemplo un 877a, aqui subo el ejemplo a ver sí me pueden ayudar aver que me estara haciendo falta en mi programa de antemano gracias
Archivos Adjuntos
Tipo de Archivo: rar multiserv.rar (26,9 KB (Kilobytes), 76 visitas)
12/03/2012 #1774
Moderador

Avatar de D@rkbytes

ferdy575 dijo: Ver Mensaje
Hola a todos, de nuevo por aqui molestandoles estoy algo desocupado y se me ocurrio hacer una herramienta multiple para mi banco de trabajo se trata de un circuito que me sirva para contar eventos para voltimetro y frecuencimetro pero no logro hacer que el pic me cuente los pulsos de un pulsador por ejemplo, adicionalmente me esta presentando errores al medir frecuencias inferiores a 50 Hz:enfadado:, no importa sí tengo que usar otro pic como por ejemplo un 877a, aqui subo el ejemplo a ver sí me pueden ayudar aver que me estara haciendo falta en mi programa de antemano gracias
Saludos.
Revisa los cambios que realice a tu programa.
Para la función de voltimetro si necesitas cambiar de PIC
Suerte y hasta luego.
Archivos Adjuntos
Tipo de Archivo: rar multiserv.rar (21,2 KB (Kilobytes), 76 visitas)
12/03/2012 #1775

Avatar de alejandrozama

Darkbytes dijo: Ver Mensaje
Saludos.
Revisa estas modificaciones que realice al código, quedaron como comentadas.
estube algo ocupado el fin de samana ya arme el circuito y fucniona a la perfeccion, por como pude ver eres vastante rapido programando, muchas gracias y creo me seguiran viendo por el foro, ya que aparte de mis practicas he tenido en mente varios proyectos personales, como que las pics son adictivas.

saludos
12/03/2012 #1776

Avatar de reyvilla

Hola interesante código del contador, nunca había utilizado la instrucción DIG ahora se su significado muy bueno el dato, hice un pequeño cambio al código y me gustaría saber si esta correcto ya que funciona igual solo que no uso interrupciones coloco el código modificado:

Código:
REM PIC16F84A
@ DEVICE XT_OSC,PROTECT_OFF,WDT_OFF,PWRT_ON
;*******************************************************************************
DEFINE OSC 4				; Oscilador Configurado a 4Mhz.
TRISA = $FE					; %11111110	7,E 6,E 5,E 4,E 3,E 2,E 1,E 0,S
TRISB = $80					; %10000000	7,E 6,S 5,S 4,S 3,S 2,S 1,S 0,S
;*******************************************************************************

;DEFINICION DE VARIABLES

Cnt VAR Byte 
Digit VAR Byte 
Pattern VAR Byte 
Digit1 VAR PORTA.0 
Pbutton VAR PORTB.7 
i VAR Byte 

Cnt = 0 

LOOP1:
BUTTON Pbutton, 0,255,0, i, 0, MUESTRA
Cnt = Cnt + 1

MUESTRA:
Digit = Cnt DIG 1
LOOKUP Digit, [$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],Pattern
PORTB = Pattern
Digit1 = 1
Pause 10 

Digit = Cnt DIG 0
LOOKUP Digit, [$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],Pattern
Digit1 = 0  
PORTB = Pattern
PAUSE 10 
CALL LOOP1
GOTO MUESTRA
END
cualquier cosa me avisan saludosss
13/03/2012 #1777
Moderador

Avatar de D@rkbytes

alejandrozama dijo: Ver Mensaje
estube algo ocupado el fin de samana ya arme el circuito y fucniona a la perfeccion, por como pude ver eres vastante rapido programando, muchas gracias y creo me seguiran viendo por el foro, ya que aparte de mis practicas he tenido en mente varios proyectos personales, como que las pics son adictivas.

saludos
Saludos alejandrozama
Que bien que te funciono el código. Ya que en el simulador no funciona si se pone el TR PNP
Por ese motivo use el inversor.
Y si, si son adictivos los PIC. También el Proteus

reyvilla dijo: Ver Mensaje
Hola interesante código del contador, nunca había utilizado la instrucción DIG ahora se su significado muy bueno el dato, hice un pequeño cambio al código y me gustaría saber si esta correcto ya que funciona igual solo que no uso interrupciones coloco el código modificado:
cualquier cosa me avisan saludosss
Saludos reyvilla
Ok. Si esta correcto el codigo sin usar interrupciones (Yo tampoco las creí necesarias)
Solo hay un detalle. Hay que cambiar el CALL por un GOTO
Ya que se produce un Stack Overflow
Y suprimir el GOTO MUESTRA
De ahí en fuera todo funciona muy bien
Me gustaria armar el circuito con los 2 TR's para ver como se ve en la realidad
Pero solo tengo displays de 7 segmentos sueltos, y me da fiaca hacer las conexiones

Adjunto el proyecto con los cambios y su simulación

Suerte y hasta luego.
Archivos Adjuntos
Tipo de Archivo: rar Contador 0-99 CC No_Int.rar (17,1 KB (Kilobytes), 88 visitas)
13/03/2012 #1778

Avatar de ferdy575

Darkbytes dijo: Ver Mensaje
Saludos.
Revisa los cambios que realice a tu programa.
Para la función de voltimetro si necesitas cambiar de PIC
Suerte y hasta luego.
hola Darkbytes gracias por tu ayuda ahora ya no tiene problema el frecuencimetro pero no se como hacer para la función "contar" aquí necesito una función parecida a la que postearon los compañeros y tú del contador de 0 a 99 donde se cuentan las veces que se oprime el pulsador pues lo que busco es poder contar por ejemplo cuantos pulsos pasaron en un tren de pulsos en una determinada unidad de tiempo sin importar a que frecuencia entren.
Por favor ayudame me doy cuenta de que sabes muchisimo sobre este tema, y muchas gracias por tu tiempo, subo nuevamente el proyecto para que lo veas, ya esta compilada la reforma que le hiciste a mi código y le hice también algunas buscando que me funcione la función "contar" pero no lo he podido lograr.
Archivos Adjuntos
Tipo de Archivo: rar multiserv.rar (29,2 KB (Kilobytes), 49 visitas)
13/03/2012 #1779
Moderador

Avatar de D@rkbytes

ferdy575 dijo: Ver Mensaje
hola Darkbytes gracias por tu ayuda ahora ya no tiene problema el frecuencimetro pero no se como hacer para la función "contar" aquí necesito una función parecida a la que postearon los compañeros y tú del contador de 0 a 99 donde se cuentan las veces que se oprime el pulsador pues lo que busco es poder contar por ejemplo cuantos pulsos pasaron en un tren de pulsos en una determinada unidad de tiempo sin importar a que frecuencia entren.
Por favor ayudame me doy cuenta de que sabes muchisimo sobre este tema, y muchas gracias por tu tiempo, subo nuevamente el proyecto para que lo veas, ya esta compilada la reforma que le hiciste a mi código y le hice también algunas buscando que me funcione la función "contar" pero no lo he podido lograr.
Ok. Saludos.
A mi punto de vista lo que quieres es lo mismo que la función de frecuencimetro.
Ya que la función COUNT es lo que hace, contar pulsos en un determinado periodo de tiempo.
Lo único que cambiaria seria el periodo y la forma de representar la cuenta en el display.
Adjunto los cambios que realice para esto.
Suerte y hasta luego.
Archivos Adjuntos
Tipo de Archivo: rar multiserv_rev2.rar (20,4 KB (Kilobytes), 65 visitas)
14/03/2012 #1780

Avatar de Dario

hola amigos.
les cuento que todavia sigo luchando con el sensor itg3205 y he logrado mostrar la informacion del mismo en un display 7seg.X4 digitos y aqui subo el video. en el video puede verse claramente como marca la velocidad angular al ser movido hacia la izquierda. cambie la variable byte por una variable word y resulto que el numero que debia mostrar era mucho mayor al que yo calcule ya que al tener un convertidor analogico digital interno de 8 bits teoricamente el numero no debia pasar de 255, pero estaba equivocado, el numero era 65480 para el eje X_H jeje... en elprograma que escribi divido ese valor por 10 con lo que me da 6548 y asi lo puedo sacar en el display. en el video hago una prueba al eje Z_H, aqui lo dejo para que vean, saludosss. ah, aqui dejo el codigo tambien

Código:
@ DEVICE MCLR_OFF,HS_OSC, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
DEFINE   OSC   20                     'Para trabajar con un cristal de 20MHz
DEFINE I2C_HOLD 1
define I2C_SLOW 0                    'Velocidad de I2C de 400KHz
cmcon=7
trisa=0                              'puertos como salidas
trisb=0
porta=0 
portb=0
SDA VAR PORTA.1                      'entrada y salida de datos
SCL VAR PORTA.2                      'reloj 
numero var word
unid var byte
dece var byte
cent var byte
mile var byte
 
i2cwrite sda,scl,%11010000,62,[$80]  'resetear el ITG a 0
pause 10
i2cwrite sda,scl,%11010000,21,[$09]  'configuro SAMPLE RATE
pause 10
i2cwrite sda,scl,%11010000,22,[$18]  'registro 22 full scale a ±2000°/sec                                     'Modificado según ReyVilla 
pause 10
i2cwrite sda,scl,%11010000,23,[$00]  'sin interrupcion
pause 10
numero=0
leer:
  I2CREAD sda,scl,%11010000,33,[numero]    'leer eje Xout-H y guardar en a1
  pause 5
  numero=numero/10
  gosub display
goto leer

display:
  unid=numero dig 0
  dece=numero dig 1
  cent=numero dig 2
  mile=numero dig 3
  portb=224+mile
  pause 4
  portb=208+cent
  pause 4
  portb=176+dece
  pause 4
  portb=112+unid
  pause 4
  return
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.