duda en conexión sensor ping))) y un pic16f84a

Estoy exprimiendo las capacidades de mis viejos pics en un proyectillo mmm pero me ha surgido una situación que no habia manejado antes; me conseguí un sensor ultrasónico ping))) pero santos robots metaleros tengo que comprar unas tarjetas basic stamp para manejarlo nambre... así que aprovechando que aun me sobra un pic16f84a estoy empezando a realizar mi programita pero S:


el ping))) tiene 3 terminales: GND, +5V y SIG...
necesito de dos puertos ra0 y ra1, pues la terminal SIG es entrada y salida, ra0 es mi "activador" enviando un pulso de 5 us y ra1 es mi receptor pero mmm tengo pensado ponerle un diodo a ra0 para evitar que la señal que regresará del ping))) llegue a esta pata o no le afecta al pic? es que no se si se dañara el puerto de entrada ra0 x.X mmm me sería mas fácil usar transistores pero ya use el resto de mis puertos en el control de 3 displays, un interruptor y un led indicador :/ solo me quedaron disponibles estos dos puertesitos n.n mmm y es que...
bueno equis con eso, entonces le pasa algo al pic si el puerto es salida pero de pronto le llega una señal del exterior? nunca he tratado esto y quisiera evitar tener que conectar dos puertos que quien sabe si tambien se pueda y así mandarlo al SIG del ping))) :LOL: si no se puede pues adios displays y manejare transistores :p

Saludos!!! :)

Pd. Si ya hay tema disculpen xP
 
Última edición:
Hola zettaextremo, te cuento que no necesitas usar dos pines para manejar el sensor ping se hace con solo un pin, ni tampoco tener el basic stamp.
1)se pone el puerto correspondiente como salida
2) Se le manda un pulso de activacion de 5us, para que comienze a medir
3)Se pone el puerto correspondiente como entrada
4)Se mide el tiempo que la señal permanece en alto y esto es proporcional a la distancia, se necesita multiplicar por una constante para ajuestar el tiempo medido con la distancia.

Use este sensor con un 16f877a y con el compilador pic basic pro, si usas este solo tendrias que hacer uso de las sentencias PULSIN Y PULSOUT, si usas otro lenguaje debes generar los pulsos y las medidas mediante codigo.
Aqui alguien lo hizo en assembler
http://robots-argentina.com.ar/Prueba_SensorPing.htm

http://www.parallax.com/Portals/0/Downloads/docs/prod/sic/SmartSensors-v1.0-Spanish-v1.0.pdf
 
Interesante la página no la llegue a ver en el buscador n.n, mmm quizas todo sería más fácil si me consiguiera ese pic con un solo puerto :LOL:... :/ de hecho en varios temas acerca de sensores he visto que de ese se habla más...

dispongo ahorita de seis pic16f84a,
un 18f4550,
y un uP z80

bueno no dispongo, los tengo usando a excepción de un pic16 :p (mmm me conseguiré el pic que recomiendas pero hasta el domingo x.X) y por ahora tengo esa cosita que pica cuando haces algo nuevo, porque acabo de terminar la estructura de una cabeza de un robot con sus servos controladores en el cuello y ya sabes quiero que use sus microfonos y escuche e intente localizar la fuente y si detecta algo con el ping))) pues que se quede en esa posición, verifique si es la fuente y si no lo es que siga buscando :D


:) pero me fui a lo grande al querer usar 3 displays, mas bien los quería usar para calibrar mis cálculos, si me ahorro los displays y coloco leds indicadores para un sistema binario de 8 bits mmm podré hacer mi programa para que llegue a los 255 cm mmm con esto me quedan 5 puertos... y lo malo este pic no dispone de la sencillez de instrucciones del 877 :LOL:

estimado camarada para tranquilizar mi emoción de que manera crees sería correcto hacer uso de esos cinco puertos para que el ping pueda realizar su función...

se me ocurre usar la salida de ra0 para controlar un transistor que tenga su colector a la alimentación, el emisor de este transistor1 pues se conectaría al ping y a su vez a la entrada de otro transistor2, la base del transistor2 con su resistencia estarían con ra1 y su emisor a un ra2 :LOL: y una resistencia a tierra....

1. ra0 controla el pulso de activación
2. se manda y se pone a 0 ra0 y por el contrario ra1 se pone a 1 saturando la base del transistor.
o rayos :S debo checar algo en este paso....
3. ra2 esta esperando que venga el pulso de retorno que tiene que pasar por el transitor2 mmmm y tan tan

antes de continuar solo espero el visto bueno o malo de esta alocada idea n.n si no me espero hasta el domingo :)


Pd. El segundo link esta bestial :D
 
Última edición:
Hola zettaextremo a lo que me refiero es que lo puedes usar con cualquier pic ya que esa secuencia de funcionamiento se puede programar en cualuier pic, solo te mencione el que use yo.
 
Hola zettaextremo a lo que me refiero es que lo puedes usar con cualquier pic ya que esa secuencia de funcionamiento se puede programar en cualuier pic, solo te mencione el que use yo.


:O ok ok es que como es viejito además no sabia que tambien la tenia... ya esta :) te aviso si lo hice funcionar n.n

:)


(Oh si la mayoria de mis pics estan en un proyecto que presento mañana n.n todo un rollo por eso no me atrevo a moverlos :p para el control de los servos uso solo uno y para los microfonos otro el Z80 esta en otro proyecto... n.n) qsi me la complico con el 16f mmm le pedire prestado el 18f a mi banda empaquetadora :p


gracias y que tengas un shido resto de la tarde ;)
 
Si, haces tu programa en Pic basic pro, compilas el programa, se genera un hex y lo grabas en el pic usando cualquier programador, en realidad el pic basic pro es algo limitado pero es parecido por no decir igual al que emplea parallax para el basic stamp, por eso al usar el sensor ping se usan casi las mismas sentencias que emplea parallax al usar el Ping con la BasicStamp. esto lo puedes observar en el segundo pdf.
 
Si, haces tu programa en Pic basic pro, compilas el programa, se genera un hex y lo grabas en el pic usando cualquier programador, en realidad el pic basic pro es algo limitado pero es parecido por no decir igual al que emplea parallax para el basic stamp, por eso al usar el sensor ping se usan casi las mismas sentencias que emplea parallax al usar el Ping con la BasicStamp. esto lo puedes observar en el segundo pdf.


bueno has salvado mi vista :)... creo que empezare con encender leds y cosas así, es que me interesaron varios sensores parallax que vi en el documento, como para usarlos en mi robot... si me trabo te vuelvo a escribir :LOL: heh

saludos!!
 
Hola! despues de las desveladas por la escuela ahora si he continuado viendo el PBP...
pero tengo una pregunta acerca del ping))) porque nunca he trabajado con este :LOL:

los tiempos que vienen en la hoja de datos si son precisos?
5 us
esperar 750 us <---- este es el que me interesa
entonces viene un pulso de regreso

(aunque puedo hacer que el pic este esperendo el pulso de regreso y ya que empiece a usar el contador cuando lo reciba pero quisiera saber si ese 750 us será cierto :) para un temporizador )

y el minimo valor es cuando el pulso cae a los 115 us
y el máximo si el pulso lo hace a los 18.5 ms <--- :p

y por ultimo antes de reiniciar la lectura, esperar 200us despues de que el pulso cayo...

entre cada medicion habria un tiempo de 19.455ms máximo? (5+750+18500+200)us

D: crees que se pueda alterar esos feos 18.5ms para que mi rango sea solo de 3cm a 1 m?
(sin tener que desconectar la alimentación del ping))) :p)

bueno por ahora me intriga esos 750us porque hice un temporizador que acaba justo a los 750 :/ <---- como aun no me hallo con el PBP (pero en eso estoy) lo ando haciendo normalito :p

Saludos!!!

Pd. En todos los ejemplos que he visto para las instrucciones que me diste, tienen que declarar los puertos desde el inicio como entradas o salidas y los pulsin y pulsout no los usan en el mismo puerto si no en diferentes S: eso es lo que me confunde :LOL: (aaaah pero me gusto la funcion sin :3 pero tengo que ver eso de radianes binarios x.X) por ahora uso ensamblador con dos puertos :/ conectados al bidireccional del ping))) con las debidas precauciones por supuesto mmm solo que me entro la duda que comente alla arriba, aquí esperare respuesta :)

Bien el ping detecta ;) solo que aun detecta "a lo bestia" hah bueno un led me indica si existe algo entre los 3cm y como a 2.5m mmm segun es hasta 3 m pero me supongo la altura influye, ahora intentaré que el PORTB me indique la distancia del objeto n.n "255"
-.- y aun tengo dudas con los 750us
 
Última edición:
Hola zettaextremo, se nota que le quieres sacar el jugo al sensor.
El sensor puede ser conectado por un solo pin (esa es la finalidad de que tenga un solo pin de señal), configurandolo adecuadamente como salida y como entrada cuando corresponde chekea el esquema y fijate que el pin de señal del sensor esta conectado a un solo pin del microcontrolador, en el manual de parallax tambien se hace de la misma forma.
http://robots-argentina.com.ar/Prueba_SensorPing.htm
con respècto a los requisitos de temporizacion (18.5ms) te aconsejaria que los respetes
http://users.ece.utexas.edu/~valvano/Datasheets/PingDocs.pdf
ya que no podrias comenzar una medida sin que el microcontrolador interno del sensor haya dado por finalizada la medida anterior y por lo tanto no espera un pulso de activacion para iniciar una nueva medida.

por aqui alguien uso el sensor y habla sobre los 750us de espera
http://www.dspace.espol.edu.ec/bits...r de distancia con sensores ultrasónicosx.pdf

Con respecto a los 5 us pues la hoja de datos exije un minimo de 2 us
y de los 200 us, si la hoja de datos dice que hay que esperar 200us para iniciar una nueva medida despues que termino la anterior. despues de enviar los el pulso de activacion (aprox 2-5us) toca esperar 750 us para que la señal pase a alto y empezar a medir el tiempo, con respecto a que tan preciso es esto no sabria responderte, ya que al haberlo implementado en PBP con el comando PULSIN Pin,State,Var
despues del comando pulsout, este detecta cuando la señal pasa de bajo a alto y mide el tiempo que permanece en alto y lo almacena en la variable var, con este comando se configura automaticamente el pin como entrada.
 
Última edición:
el ping funciona "perfectamente" (Y) hah pero aun sigo usando mi conexión de dos puertos a uno y ensambler mmm solo me falta hacer el hex en PBP y comparar resultados :)

muchas gracias compañero por tu ayuda n.n

despues de esto pues haber como lo monto en la precabeza robot y pues a hacer pruebas muajajaja muajajajaja!!! x.X aaa necesito una extension para los pines :/ bueno al rato ire a comprar el pic16f877 preguntaré si venden esas extensiones que creo se piden para servomotores o pues ha hacermelo si no hay de otra n.n

saludos!

Olvide mencionar que mi ping))) no tiene 750us como Ho si no 784 us pero la rafaga del sonar si tiene las caracteristicas mencionadas en el datasheet asi que de todas maneras la señal del eco detectado es el que viene en el datasheet bueno no es 115 us pero si en el datasheet eran 750 + 115 = 865 us, en mi caso 784 + creo 80 = 864 así que no afecta mucho el resultado :) pero que dolor de cabeza me dio esa variación no comprendia porque las lecturas no eran correctas en mi software por suerte ya todo esta bien... esos 784 us :LOL:

Conclusión el PBP como dices es sencillo pero no tiene mucha precisión aunque me ayudo en todo para mi elaboración de mi programa en ensambler... muchas gracias

hasta pronto.... am que sigue?
así conseguirme ese capacitor ceramico de 6.8nF (no lo encuentro x.X) para ver si puedo eliminar el ruido de los preamplificadores de mis microfonos (oidos) :)

chaw

7et.To
 
Última edición:
Hola:
El diagrama mostrado al inicio para controlar con el Pic 16f628a el modulo Ultrasonido PING es el correcto ??? ya que necesito adaptar tambien un LCD 16 x 2 para la medición de distancias como Proyecto final... en todo caso me pudieran ayudar con un esquema de conexiones...

Gracias.
 
Atrás
Arriba