Autor Tema: Medidor de Velocidad de un Proyectil  (Leído 9462 veces)

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

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Medidor de Velocidad de un Proyectil
« Respuesta #15 en: 14 de Julio de 2008, 19:43:57 »
Qué tal Alopez.
Pues como te dije, no soy muy experto en Basic (realmente no soy experto en nada  :D ).
Pero he trabajado con el Pic Basic Pro (PBP) y sé que no admite punto flotante. Así te va a resultar difícil hacer el cálculo de la velocidad. Tal como ya te mencioné, creo que vas a tener que buscar un compilador un poco más poderoso, como protón o mikroBasic.
Yo he migrado por completo al C porque me parece que es mucho más potente, pero en Basic sí que se puede hacer también.
Un cordial saludo, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado alopez

  • PIC10
  • *
  • Mensajes: 6
Re: Medidor de Velocidad de un Proyectil
« Respuesta #16 en: 16 de Julio de 2008, 15:14:55 »
Hola a todos, con ayuda de un paisano se mejoro el codigo para poder obtener un contador que funcione con dos push buton, uno que arranque un contador y otro que lo detenga, al simularlo en proteus no tengo ningun problema, pero en el protoboard no logro hacer que arranque el contador, solo lo puedo detener. agradeceria si me podrian dar alguna sugerencia. les pego el codigo y la imagen del proteus. hasta pronto
saludos
alopez.

DEFINE LCD_DREG PORTB       'puerto para datos del LCD
DEFINE LCD_DBIT 4           'bit de incio de datos 0 o 4
DEFINE LCD_RSREG PORTB      'puerto de registro de selección (RS, R/W, E)
DEFINE LCD_RSBIT 3          'bit de inicio de bloque de selección, Reset
DEFINE LCD_EREG PORTB       'puerto de habilitación
DEFINE LCD_EBIT 2           'bit de habilitación 2
DEFINE LCD_BITS 4           'tamaño de palabra de datos
'DEFINE LCD_LINES 2          'numero de lineas
'DEFINE LCD_COMMANDUS 2000   'tiempo de espera maximo
'DEFINE LCD_DATAUS 50        'tiempo de espera para dato
'DEFINE CHAR_PACING 1000     'Tiempo de espaciado entre cada caracter


     Lcdout $fe, 1,   " UNIVERSIDAD DE "       '****************************
     lcdout $FE, $C0, "  QUINTANA ROO  "       '*                          *
     pause 2000                                '* ANUNCIOS DE PRESENTACIÓN *
     Lcdout $fe, 1,  " INGENIERIA EN  "        '*                          *
     lcdout $FE, $C0,"SIST. DE ENERGIA"        '*                          *
     pause 2000                                '*                          *
   

trisa=31
porta=0
cont var byte
R var porta.1   'Variable para arrancar contador
S var porta.2   'Variable para detener contador

main:
pause 500
cont=0
lcdout $fe, 1, "CONTADOR"
lcdout $FE, $C0, dec cont
if R=1 then
pause 50
if r=1 then
   goto cuenta
endif
endif
pause 500 
goto main

datos:
lcdout $fe, 1, "El conteo fue:"
lcdout $FE, $C0, dec cont
pause 3000
goto main

cuenta:
porta=0
 Cont=Cont + 1
        pause 500
        lcdout $fe, 1, "CONTADOR"
        lcdout $FE, $C0, dec cont
 if S=1 then
 pause 50
  if S=1 then
   goto datos
endif
endif   
goto cuenta

*****************************************


Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Medidor de Velocidad de un Proyectil
« Respuesta #17 en: 16 de Julio de 2008, 15:50:11 »
Código: FreeBasic
  1. DEFINE LCD_DREG PORTB       'puerto para datos del LCD
  2. DEFINE LCD_DBIT 4           'bit de incio de datos 0 o 4
  3. DEFINE LCD_RSREG PORTB      'puerto de registro de selección (RS, R/W, E)
  4. DEFINE LCD_RSBIT 3          'bit de inicio de bloque de selección, Reset
  5. DEFINE LCD_EREG PORTB       'puerto de habilitación
  6. DEFINE LCD_EBIT 2           'bit de habilitación 2
  7. DEFINE LCD_BITS 4           'tamaño de palabra de datos
  8. 'DEFINE LCD_LINES 2          'numero de lineas
  9. 'DEFINE LCD_COMMANDUS 2000   'tiempo de espera maximo
  10. 'DEFINE LCD_DATAUS 50        'tiempo de espera para dato
  11. 'DEFINE CHAR_PACING 1000     'Tiempo de espaciado entre cada caracter
  12.  
  13.  
  14.      Lcdout $fe, 1,   " UNIVERSIDAD DE "       '****************************
  15.      lcdout $FE, $C0, "  QUINTANA ROO  "       '*                          *
  16.      pause 2000                                '* ANUNCIOS DE PRESENTACIÓN *
  17.      Lcdout $fe, 1,  " INGENIERIA EN  "        '*                          *
  18.      lcdout $FE, $C0,"SIST. DE ENERGIA"        '*                          *
  19.      pause 2000                                '*                          *
  20.    
  21.  
  22. trisa=31
  23. porta=0
  24. cont var byte
  25. R var porta.1   'Variable para arrancar contador
  26. S var porta.2   'Variable para detener contador
  27.  
  28. main:
  29. pause 500
  30. cont=0
  31. lcdout $fe, 1, "CONTADOR"  '[b]Este ciclo es para detectar el arranque del contador[/b]
  32. lcdout $FE, $C0, dec cont    '[b]Estos lcdout no deberían ir aquí sino arriba del main[/b]
  33. if R=1 then
  34. pause 50
  35. if r=1 then
  36.    goto cuenta
  37. endif
  38. endif
  39. pause 500  
  40. goto main
  41.  
  42. datos:
  43. lcdout $fe, 1, "El conteo fue:"
  44. lcdout $FE, $C0, dec cont
  45. pause 3000
  46. goto main
  47.  
  48. cuenta:
  49. porta=0
  50.  Cont=Cont + 1
  51.         pause 500
  52.         lcdout $fe, 1, "CONTADOR" '[b]La velocidad del proyectil es muy rápida, así que la velocidad del conteo debe serlo también[/b]
  53.         lcdout $FE, $C0, dec cont   '[b]Igual que antes, pienso que los lcdout introducen un retardo bastante considerable, no debería ir aquí[/b]
  54.  if S=1 then
  55.  pause 50
  56.   if S=1 then
  57.    goto datos
  58. endif
  59. endif  
  60. goto cuenta

Alopez, recuerda que la instrucción "lcdout" contempla una cantidad de retardos para enviar los datos al lcd, no deberías introducirla en los ciclos donde la velocidad es crítica, como en las detecciones del arranque y parada y en el conteo.
Tampoco entiendo los "porta=0" al inicio del ciclo de detección de los pulsadores (o sensores).

Yo lo haría algo así:

Código: FreeBasic
  1. DEFINE LCD_DREG PORTB       'puerto para datos del LCD
  2. DEFINE LCD_DBIT 4           'bit de incio de datos 0 o 4
  3. DEFINE LCD_RSREG PORTB      'puerto de registro de selección (RS, R/W, E)
  4. DEFINE LCD_RSBIT 3          'bit de inicio de bloque de selección, Reset
  5. DEFINE LCD_EREG PORTB       'puerto de habilitación
  6. DEFINE LCD_EBIT 2           'bit de habilitación 2
  7. DEFINE LCD_BITS 4           'tamaño de palabra de datos
  8. 'DEFINE LCD_LINES 2          'numero de lineas
  9. 'DEFINE LCD_COMMANDUS 2000   'tiempo de espera maximo
  10. 'DEFINE LCD_DATAUS 50        'tiempo de espera para dato
  11. 'DEFINE CHAR_PACING 1000     'Tiempo de espaciado entre cada caracter
  12.  
  13.  
  14.      Lcdout $fe, 1,   " UNIVERSIDAD DE "       '****************************
  15.      lcdout $FE, $C0, "  QUINTANA ROO  "       '*                          *
  16.      pause 2000                                '* ANUNCIOS DE PRESENTACIÓN *
  17.      Lcdout $fe, 1,  " INGENIERIA EN  "        '*                          *
  18.      lcdout $FE, $C0,"SIST. DE ENERGIA"        '*                          *
  19.      pause 2000                                '*                          *
  20.    
  21.  
  22. trisa=31
  23. porta=0
  24. cont var byte
  25. R var porta.1   'Variable para arrancar contador
  26. S var porta.2   'Variable para detener contador
  27.  
  28. pause 500
  29. cont=0
  30. lcdout $fe, 1, "CONTADOR"  
  31. lcdout $FE, $C0, dec cont    
  32.  
  33. main:
  34. if R=1 then
  35.    pause 50
  36.    if r=1 then goto cuenta
  37.    endif
  38. endif
  39. goto main
  40.  
  41. cuenta:
  42.  Cont=Cont + 1
  43.  if S=1 then
  44.      pause 50
  45.      if S=1 then goto datos
  46.      endif
  47. endif  
  48. goto cuenta
  49.  
  50. pause 500
  51. lcdout $fe, 1, "CONTADOR"
  52. lcdout $FE, $C0, dec cont
  53. goto main  
  54. END

Claro, esto es sólo una idea, una sugerencia. Modifícale lo necesario para que se adapte a tu proyecto y a ver si funciona.
Saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Medidor de Velocidad de un Proyectil
« Respuesta #18 en: 16 de Julio de 2008, 16:19:42 »
Hola.

A mi me parece algo inútil sensar en la salida del cañon. Yo pondría los dos sensores cerca del vidrio. Separados entre si por unos centimetros.

¿Por que?

Porque si colocas un sensor a la salida del cañon y otro cerca del vidrio, cuando calcules el tiempo, vas a obtener una velocidad...pero va a ser la velocidad media cuando a mi parecer, lo que a vos tiene que interesarte es la velocidad instantánea que tiene el proyectil un instante antes de impactar contra el vidrio. Lo que sucedió antes de ese momento no creo que valga la pena ni sea relevante para los fines que querés demostrar con tu proyecto.
Cuanto más cerca pongas entre si los sensores, mejor será tu aproximación de la velocidad instantánea.Obviamente habrá que buscar una distancia prundente para que tampoco pierdas precisión debido a imprecisiones de los sensores y/o del programa.

Además, hacerlo de esta manera evita tener que entrar a considerar los efectos de rozamiento del proyectil con el aire.

Después de todo, tu interés es calcular las fuerzas de choque, y para ello sólo necesitas la velocidad al momento del impacto y la masa del proyectil(m*v).

Una vez averiguada la velocidad, puedes llevar estos datos a la realidad, en la que esas piedritas caen de los techos hacia los vidrios. Con una fórmula de caída libre(con o sin contemplación de rozamiento...ese factor es muy importante si la altura desde la que caen las piedras son grandes) podés averiguar desde que distancia deberian caer las piedras para producir un efecto parecido al de tu proyecto.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Medidor de Velocidad de un Proyectil
« Respuesta #19 en: 16 de Julio de 2008, 16:26:50 »
Hola.

 :-/ :-/ :-/ :-/ :-/

Se podria igualar las energias claro!!!! Energia potencial inicial = Energia cinetica final, y se podria hacer el calculo manualmente!!!!

Saludos
El papel lo aguanta todo

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Medidor de Velocidad de un Proyectil
« Respuesta #20 en: 16 de Julio de 2008, 16:39:47 »
Y creo que usar aluminio en reemplazo de las piedras puede alejar mucho los datos obtenidos a los datos reales. El coeficiente de deformación(instantánea y/o permanente) del aluminio puede que diste mucho del de una piedra. Recordemos que los vidrios se rompen por la vibración, no por el impacto...

Y otros factor que te aconsejo que tengas en cuenta es la firmeza con la que el vidrio está colocado contra el marco y no solo eso sino además la propagación de las vibraciones del marco hacia lo que esté sosteniendolo. En un edificio, si los marcos están amurados contra concreto o están asociados a una masa mayor y en tu experimento colocas el marco sobre sillas, la propagación de las ondas van a ser muy distintas. Es probable que apoyandolo contra sillas requieras mucha más velocidad en el proyectil para romper el vidrio.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Medidor de Velocidad de un Proyectil
« Respuesta #21 en: 17 de Julio de 2008, 01:46:25 »
Coincido con Bruno, es más, me atrevo a decir que todas las piedras por la distancia que recorren y por el poco peso que tienen tocan el techo a su velocidad terminal, por calculo puedes sacarla tomando como esferas ideales a las piedritas.

En realidad como dice bruno, no es tan simple como tirar piedras al vidrio, lo que me preocupa es que tu solo vas a tirar de a una piedra por vez, cuando la distribución de impacto de la gravilla dudo que sea tan elegante, seguramente chocarán varias al mismo tiempo y luego ninguna, es decir, una distribución aleatoria.

Mira, un consejo, empieza simulando todo en forma muy ideal y luego ve agregando variables al modelo, de lo contario te encontrarás con una cantidad de cosas para manejar insoportables y terminarás sacando conclusiones erradas, te lo dice alguien que lo ha sufrido (pero nunca más  :mrgreen:).

Saludos.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."