Curso de programación de PIC en PICBasic Pro

Modo OFF Topic ON

ReyVilla
#1848

.....EDITO: gracias, no lo habia usado antes, si me preguntaba como lo hacen pero gracias a ti ya lo se y lo tomare en cuenta y es cierto queda mejor asi...(y)

De eso se trata, aprender en todo sentido incluso en mejorar nuestras presentaciones que nos serviran en el resto de nuestra vida, "Know How" que le dicen por el norte! :D .
Me costo un tiempito (meses) conocer como funcionaba, te adjunto una imagen de ayuda.



Por otro lado, D@rio ya compre el wii motion el día de mañana me lo dan, me gustaría ir armando el circuito si no es mucha molestia de mi parte, como es tu circuito si tienes un esquema o una imagen, si le hicistes modificaciones y la interface si es con max-232...etc...gracias
Ahora mañana comenzamos con otra ForoNovela buscando información sobre otro Gyro :LOL: :D :LOL: :D !!!!.



Saludos, JuanKa.-


Modo OFF Topic OFF
 

Adjuntos

  • Foro.jpg
    Foro.jpg
    15.9 KB · Visitas: 15
bueno muchachos, aqui les subo una imagen y un archivo .rar con el diagrama que estoy usando para leer el itg con la PC junto con el archivo pbp+hex de reyvilla y con los resultados de la lectura hecha con el serial comunicator en un archivo de texto, una inmovil y otra en movimiento, ambas en el mismo texto. ahora a ver que sacamos de todo esto. les cuento que mi proyecto con el itg, se trata de una especie de estabilizador de camara parecido a este que dejo en video de mas abajo para que tengan una idea aproximada de lo que intento hacer, obvio que el codigo sera mas extenso al comprender como funciona al 100% este gyro saludos y gracias por colaborar :apreton:

atencion!!! la coneccion del conector db9 en archivo rar esta equivocada, el terminal a conectar, es el pin 2 y no el 3 como muestra la figura
esta imagen esta corregida
ITG esquematico.JPG
 

Adjuntos

  • practica ITG.rar
    20.2 KB · Visitas: 70
Última edición:
Hola D@rio te tengo buenas y malas noticias, la buena es que ya me llego el wii motion, la mala es que al abrirlo me consigo con otro circuito, son dos sistemas de gyroscopio analogos, subo la imagen para que la chequees, revise el datasheet y ni se parece, ahora lo que estoy haciendo es tratando de cambiarlo a ver si me envian uno original pero usado, de echo te iba a preguntar si el tuyo era original y si existían varios modelos o es uno solo, para estar mas seguro.
 

Adjuntos

  • wii motion .jpg
    wii motion .jpg
    210.5 KB · Visitas: 16
Hola D@rio te tengo buenas y malas noticias, la buena es que ya me llego el wii motion, la mala es que al abrirlo me consigo con otro circuito, son dos sistemas de gyroscopio analogos, subo la imagen para que la chequees, revise el datasheet y ni se parece, ahora lo que estoy haciendo es tratando de cambiarlo a ver si me envian uno original pero usado, de echo te iba a preguntar si el tuyo era original y si existían varios modelos o es uno solo, para estar mas seguro.
hola reyvilla, que pena... bueno, te cuento que el Wiimotion que yo compre, es la version clon y me lo vendieron con el cuento de que era original jeje :LOL: yo buscaba que me vendieran uno que tuviese un gyro con salidas analogicas y asi se me hacia mas facil programar el pic, pero no tuve suerte jeje... :D bueno, espero que tengas suerte y te lo cambien...
de todas formas, aqui te dejo el data del ISZ650 http://invensense.com/mems/gyro/isz650.html se ve medio complicado jeje... y el del IDG650 que creo que es igual al 655
http://invensense.com/mems/gyro/idg650.html
y creo que aqui hay un wiimotion parecido al tuyo con los mismos gyros. http://www.rcgroups.com/forums/showpost.php?p=17104873&postcount=566 saludosss y suerte con el cambio :apreton:
 
ya me han dicho bastantes veces que no me se explicar creo que no podre dedicarme a la docencia, ahora si subo los archivos y tratare de explicarme nuevamente.

1.- El puerto B.0 B.1 B.2 B.3 se utilizan para el motor a pasos

2.- El puerto D se utiliza como entrada, los primeros 7 de este puerto son para utilizar un dip swicht y asi poder introducir de manera binaria cuantos pasos debe de dar el motor, el ultimo puerto el D.7 se utiliza para el giro del motor si es 0 el motor girara en sentido contario al reloj y si D.7 es igual a 1 el motor girara en el sentido de las manesillas del reloj.


en la simulacion podran ver que como yo lo relice no es la forma correcta, tengo entendido que la forma correcta seria con el FOR y NEXT y utilizando el comando de desplazamiento >>

pero no se como programar esto.
 

Adjuntos

  • pasos.rar
    28.7 KB · Visitas: 81
gracias D@rio, si yo vi las mismas paginas antes, pero no me convence ya que no voy arriesgarme hacer con dos integrados analogicos lo que puedo hacer con uno solo digital...Ya mañana te cuento si pude realizar el cambio...Ahora cuéntame has realizado mas pruebas con el que tu tienes?
 
en la simulacion podran ver que como yo lo relice no es la forma correcta, tengo entendido que la forma correcta seria con el FOR y NEXT y utilizando el comando de desplazamiento >>
una posibilidad es esta....

Código:
@ device xt_osc 
define osc 4

x var byte
y var byte
D var Byte
f var byte
trisb=%00000000
trisd=%11111111
  
  portb=%00000000
  portd=%00000000
  
      
INICIO:
 pause 200
 x=PortD-(portd.7*128)
 if (portd.7=0) then ccw
 if (portd.7=1) then cw
goto inicio
end

ccw:
FOR y=1 TO x
 F=1
 For D=0 to 3
  portb=f
  f=F<<1
  pause 200
 Next D
NEXT
portb=0
pause 10000
goto inicio

cw:
FOR y=1 TO x
f=8
for d=0 to 3
 portb=f
 f=f>>1
 pause 200
Next D
NEXT Y
portb=%00000000
pause 10000
goto inicio

pero a mi no me gusta ese metodo porque solo es para full step, y si quieres half step pues no se puede con desplazamiento... (creo)

pd.
arriba el Lion...
images
 
Última edición:
gracias D@rio, si yo vi las mismas paginas antes, pero no me convence ya que no voy arriesgarme hacer con dos integrados analogicos lo que puedo hacer con uno solo digital...Ya mañana te cuento si pude realizar el cambio...Ahora cuéntame has realizado mas pruebas con el que tu tienes?
ok, suerte entonces... ¿que si he hecho mas pruebas? si que las hice y las estoy haciendo jeje... :) lo que me preocupa ahora, son las variaciones que hace el gyro sin siquiera moverlo y como puedo solucionarlo, realmente no entiendo porque lo hace... :confused: ¿viste el adjunto que deje? ahi esta el archivo de texto con los datos que me entrega el sensor. ¿que opinas al respecto?
saludosss
 
Lo acabo de ver, habria que sacar un promedio recuerda que debido a que es un sensor muy sencible al movimiento puede haber un margen de error, el cual por lo que vi la variación no es mucha, hay que armar un archivo con esos valores y sacar la media y ver cuanto es la variación, de echo logre leer en la hoja de datos que indica algo sobre el error de orientacion con una tabla que llega hasta el 1,75% de error para un 1° grado de movimiento, lo cual debe compensarse a la hora de hacer el código, osea indicando que al establecer el valor de inclinación tenga una aceptabilidad de mas o menos 1, bueno eso es una idea ya en la practica habria que ver como funciona y no creo que sea tanto como para complicar mucho el codigo, voy hacer el archivo en excel y mañana lo subo para que veas de lo que hablo...saludoss... :apreton:
 
pd.
arriba el Lion...
images
[/QUOTE]

jajajjaajjaj bastante buena la imagen,


la cuestion es que creo no me explique bien, este nuevo programa que me pasaste realiza lo mismo que el que yo utilizaba solo que este con el comando de desplazamiento.

lo que el programa deve de realizar es dar el numero de pasos y con este programa sigue realizando ciclos (4 pasos). por ejemplo si pongo en alta el puerto D.O solo debe de dar un paso, osea solo magnetizaria la bobina A (puerto B.0.)
si pongo en alta los puertos D.0 Y D.1 deveria de dar 3 pasos, (secuencia de bobinas A,B,C) etc.

de antemano gracias por tu paciencia y tratare de formular mejor mis explicaciones en futoros comentarios.
 
Lo acabo de ver, habria que sacar un promedio recuerda que debido a que es un sensor muy sencible al movimiento puede haber un margen de error, el cual por lo que vi la variación no es mucha, hay que armar un archivo con esos valores y sacar la media y ver cuanto es la variación, de echo logre leer en la hoja de datos que indica algo sobre el error de orientacion con una tabla que llega hasta el 1,75% de error para un 1° grado de movimiento, lo cual debe compensarse a la hora de hacer el código, osea indicando que al establecer el valor de inclinación tenga una aceptabilidad de mas o menos 1, bueno eso es una idea ya en la practica habria que ver como funciona y no creo que sea tanto como para complicar mucho el codigo, voy hacer el archivo en excel y mañana lo subo para que veas de lo que hablo...saludoss... :apreton:

si, puede ser propio del sensor, eso estava pensando yo. tambien estaba pensando en como compensar el error en el programa del micro, es un poco complicado parami ya que es la primera vez que intento hacer algo con un giroscopio y mas dificil aun, por el hecho de ser i2c, aunque es facil la comunicacion en pbp. saludos amigo y gracias de nuevo. :apreton:
 
la cuestion es que creo no me explique bien, este nuevo programa que me pasaste realiza lo mismo que el que yo utilizaba solo que este con el comando de desplazamiento.

lo que el programa deve de realizar es dar el numero de pasos y con este programa sigue realizando ciclos (4 pasos). por ejemplo si pongo en alta el puerto D.O solo debe de dar un paso, osea solo magnetizaria la bobina A (puerto B.0.)
si pongo en alta los puertos D.0 Y D.1 deveria de dar 3 pasos, (secuencia de bobinas A,B,C) etc.

de antemano gracias por tu paciencia y tratare de formular mejor mis explicaciones en futoros comentarios.

A ver si ya entendi :unsure:

Código:
@ device xt_osc 
define osc 4

x var byte
y var byte
D var Byte
f var byte
trisb=%00000000
trisd=%11111111
  
  portb=%00000000
  portd=%00000000
  
f=1      
INICIO:
 pause 200
 x=PortD-(portd.7*128)
 if (portd.7=0) then Gosub ccw
 if (portd.7=1) then gosub cw
goto inicio
end

ccw:
FOR y=1 TO x
  portb=f
  f=F<<1
  if f>8 then F=1  
  pause 200
NEXT
portb=0
pause 10000
Return

cw:
FOR y=1 TO x
 portb=f
 if f=1 then f=16 
 f=f>>1
 pause 200
NEXT Y
portb=%00000000
pause 10000
Return
 
Corrijanme si me equivoco pero la función count de pic basic no funciona si no se utiliza un LATCH por ejemplo el 4511, ya que count se detiene a contar y detiene cualquier proceso. la forma mas idonea de contar pulsos y multiplexar display es usando el TIMER0 por desbordameinto bueno si se trabaja con 16f84 y con una variable contar las veces que se ha desbordado.

gracias por sus respuestas.
 
disculpad, podriais decirme como se puede meter esta formula para calcular la presion con un mpx4115,es que tiene decimales y el pbb no acepta decimaels y no me da correctamente el resultado:
la formula es:presion = (( V out / V alimentacion)+ 0.095 ) / 0.009
lo he intentado multiplicando por 100 los numeros con decimal y luego diviendo pero no sale correctamente.
gracias por la ayuda
:D
 
oye lubeck si no es mucho abusar de tu ayuda me podrias echar la mano con la ultima practica

trate de hacer lo que tu hiciste, pero eso no resulto.

es muy parecida con la que me ayudaste solo que esta vez con dos motores, osea que son 6 bits para el numero de pasos. 1 bit para seleccionar el motor, motor 1 portb.0 al b.3 motor 2 portb.4 al 7. y el otro bit es para seleccionar el sentido del giro del motor.

adjunto la imagen

perdon que sea tan pregunton pero los de electromecanica solo llevamos una clase de programasion en primer semestre, y aparte ami como que no se me da mucho esto de programar.

de antemano gracias
 

Adjuntos

  • pasos 2.jpg
    pasos 2.jpg
    27.7 KB · Visitas: 24
disculpad, podriais decirme como se puede meter esta formula para calcular la presion con un mpx4115,es que tiene decimales y el pbb no acepta decimaels y no me da correctamente el resultado:
la formula es:presion = (( V out / V alimentacion)+ 0.095 ) / 0.009
lo he intentado multiplicando por 100 los numeros con decimal y luego diviendo pero no sale correctamente.
gracias por la ayuda
:D
Saludos.
Hace un tiempo subí a este foro las librerías para trabajar con punto flotante en PBP
Espero te sirvan :apreton:
 
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/company/772705/201182123753733.pdf]) por que directamente nos muestra en analógico la posición.

.....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:
...........
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

....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.-
 

Adjuntos

  • TablaInmovil_31.pdf
    23.5 KB · Visitas: 56
  • TablaMoviendo_31.pdf
    27 KB · Visitas: 49
Última edición:
Atrás
Arriba