Autor Tema: AYUDA SRF02 Y PIC BASIC  (Leído 9359 veces)

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

Desconectado SYLA0285

  • PIC10
  • *
  • Mensajes: 10
AYUDA SRF02 Y PIC BASIC
« en: 11 de Diciembre de 2007, 20:23:18 »
HOLA ESTOY UTILIZANDO UN SENSOR ULTRASONICO DE DISTANCIA SRF02 QUE SE PUEDE
COMUNICAR VIA SERIE A 9600 BAUDIOS, PERO LO MALO ES QUE SUS COMANDOS SON OPERADOS
CON NUMEROS DECIMALES O HEXADECIMALES, PERO NO SE COMO ENVIARLOS LO QUE HE UTILIZADO PARA
COMUNICARME CON LA COMPU, ES LOS SIGUIENTE, QUE YA MODIFICADO ME QUEDO PARA EL SENSOR DE DISTANCIA,
LO MALO ES QUE NO SE COMO RECIBIR LA RESPUESTA DEL SENSOR.

'****************************************************************
'*  Name    : MOTOR DE PASOS                                      *
'*  Author  : OSCAR SUCHIL PEREZ
'*  Notice  : Copyright (c) 2007 [set under view...options]     *
'*          : All Rights Reserved                               *
'*  Date    : 23/11/2007                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
INCLUDE "modedefs.bas"
DEFINE OSC 4 'se define el oscilador en MHz
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h ' ya no mover esta bien
DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 25

TRISB = %00000000 'A B C D _ _ _ _
TRISC = %00000000 ' RX TX _ _ _ _ _ _PUERTO SERIAL

datoin var byte' palabra recibida
datoout var byte' palabra enviada
cu var WORD
decide var WORD

' SALIDAS
A VAR PORTB.7
B VAR PORTB.6
C VAR PORTB.5
D VAR PORTB.4
ali VAR PORTB.3
RX VAR PORTC.7
TX VAR PORTC.6
e1 VAR bit
e2 VAR bit
e3 VAR bit
e4 VAR bit
e1 = 0
e2 = 0
e3 = 0
e4 = 0
decide = 0
high ali
low A
low B
low C
low D
datoin=0
ciclo:
     HSEROUT [HEX 0]
     HSEROUT [HEX 96]
     HSEROUT [HEX 84]
     SERIN RX,2,1000,ciclo,[datoin ]
      if  datoin <=  15 then
       decide = 1
       call imprime
      endif
      if datoin > 15 then
       decide = 2
       call imprime
      endif
     GOTO ciclo
imprime:
        if decide = 1 then
            high A
        endif
        if decide = 2 then
            high C
        endif
RETURN

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: AYUDA SRF02 Y PIC BASIC
« Respuesta #1 en: 12 de Diciembre de 2007, 13:28:48 »
bien sean decimales o hexadecimales puedes usar la opcion por sofware Serin y Serout. Pero tendrias que dar mas datos acerca de como funciona el SRF ya que hay ver los tiempos de respuesta. Por ahi creo que utiliza 2 pines o es el de un pin?
"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 xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: AYUDA SRF02 Y PIC BASIC
« Respuesta #2 en: 12 de Diciembre de 2007, 13:45:06 »
hola

quizás en este pdf puedas encontrar algo que te sirva. yo creo recordar que parallax tenía algún ejemplo para basicStamp (que te sería muy fácil trasladar a picbasic) en su web.

el amigo RedPic tiene un artículo sobre el funcionamiento del sfr04, que a pesar de no ser el mismo no estaría de más que vieras. en su web: RedPic

un saludo

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: AYUDA SRF02 Y PIC BASIC
« Respuesta #3 en: 12 de Diciembre de 2007, 14:11:02 »
Leyendo el PDF que dejo el amigo Xocas creo que podrias usar mejor las intrucciones por software serin2 y serout2

y un ejemplo rapidin seria:

Código: FreeBasic
  1. include "modedefs.bas"
  2.  
  3. tx var portb.0
  4. rx var portb.1
  5.  
  6. medida var word
  7.  
  8. lectura:
  9. serout2 tx, 84,[dec 84]  'envias el comando de lectura y envio de la lectura en cm
  10. ' pause 70                      ' validar si lleva esta pausa
  11. serin2 rx,84,medida       'inmediato lees el resulatdo en cm
  12.  
  13. lcdout $FE,1, "medida en cm: ", dec medida
  14. goto lectura

Bien es un ejemplo que quizas te funcione, es para darte la idea no vayas a creer que ya lo probe pues no tengo el SRF02 y me queda la duda si en este caso la medida tambien tardara 70mS para la comunicacion serie. Si tambien aplica basta con poner entre el serout y el serin una pausa de 70

« Última modificación: 12 de Diciembre de 2007, 14:15:53 por navaismo »
"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: AYUDA SRF02 Y PIC BASIC
« Respuesta #4 en: 12 de Diciembre de 2007, 17:12:23 »
el amigo RedPic tiene un artículo sobre el funcionamiento del sfr04, que a pesar de no ser el mismo no estaría de más que vieras. en su web: RedPic


Creo que el SRF04 es para I²C....... creo.
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 LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: AYUDA SRF02 Y PIC BASIC
« Respuesta #5 en: 12 de Diciembre de 2007, 18:35:08 »
Hola:

El SRF04 no es por I2C, esos son el SRF08 y SRF10

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: AYUDA SRF02 Y PIC BASIC
« Respuesta #6 en: 13 de Diciembre de 2007, 03:45:33 »
Hola:

El SRF04 no es por I2C, esos son el SRF08 y SRF10


Ya decía yo...... entonces tengo el SRF08
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 SYLA0285

  • PIC10
  • *
  • Mensajes: 10
OK THANKIUS
« Respuesta #7 en: 14 de Diciembre de 2007, 19:39:35 »
GRACIAS A TODOS POR SU AYUDA, MIREN LES VOY A EXPLICAR SEGUN EL PROTOCOLO USART QUE TIENE EL PIC 16F877
ESTOY USANDO LAS INSTRUCCIONES

hserout
serin

para poder recibir y enviar datos del pic a la compu con un código en visual basic y funciona, ojo intente ocupar lo mismo para comunicarme
con el SRF02, que se supone solo requiere de un decimal ó un hexadecimal para entrar a los registros del software interno del sensor para habilitar una
medida y recibir los datos ya en cm, pero la bronca es, que no me ha funcionado el comando para recibir datos del sensor.

Lo malo es que no se si sea en si la instrucción que ocupe ó bien
la forma en que declare la variable interna del comando serin(variable) ya que le puse que fuera un byte para poder almacenar el dato en binario
de cuantos centimetros midio.

Ahora la frecuencia a la que comunico con el SRF02 es 9600 baudios igual que con la compu pero no se si tenga problemas ahi.

Bueno voy a seguir probando haber que le hago ya copie su código para probarlo.

Atte SYLA saludos


Desconectado SYLA0285

  • PIC10
  • *
  • Mensajes: 10
gracias nuevamente REDPIC
« Respuesta #8 en: 14 de Diciembre de 2007, 19:53:35 »
yA cheque el apartado que me enviaste voy a probar hacer un contador en el pic para enviar
los pulsos necesarios yo creí que era mas sencillo solo enviarle el comando y este ya te lo
regresaba en cm. y con escala real, pero bueno creo que es mas lo que tu me dices.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: AYUDA SRF02 Y PIC BASIC
« Respuesta #9 en: 14 de Diciembre de 2007, 21:27:45 »
yA cheque el apartado que me enviaste voy a probar hacer un contador en el pic para enviar
los pulsos necesarios yo creí que era mas sencillo solo enviarle el comando y este ya te lo
regresaba en cm. y con escala real, pero bueno creo que es mas lo que tu me dices.

Si de hecho es lo mas Facil. En teoria -recalco en teoria- el codigo que te mande deberia servir ya que envia a 9600 sin invertir -en caso de que sea invertido deberas modificar el 84 por el valor que corresponda a 9600 invertido- el dato 84 que se supone es el que el sensor hara la medida en cm y te la regresa inmediatamente por ello seguido esta el serin2 que recibe los datos del SFR02 y los guarda en la variable llamada medida.
"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 SYLA0285

  • PIC10
  • *
  • Mensajes: 10
Re: AYUDA SRF02 Y PIC BASIC
« Respuesta #10 en: 20 de Diciembre de 2007, 21:38:53 »
Hola navaisimo como estas?

Pues estuve probando con el programa que me proporcionaste y pues corrigiendo una que otra
cosilla sigue sin funcionarme siento que debe de ser mas fàcil, por que estuve leyendo y parece ser que solo en el modo I2C
es cuando se requiere que el pic le envie un tren de pulsos y espere al eco de respuesta, pero voy a seguir probando.

Lastima que sea un mugre sensor tan complcado de manejar, por que se supone
que es la ùltima maravilla en sensado de distancia.

Pero bueno seguire probando haber que rollo, ahi si a alguien se le ocurre algo me encantarìa me lo hiciera saber.

Bueno graciotas a todos

Desconectado SYLA0285

  • PIC10
  • *
  • Mensajes: 10
YA CASI LO TENGO PERO NECESITO AYUDIN
« Respuesta #11 en: 31 de Enero de 2008, 18:39:06 »
ESTOY PROGRAMANDO UN SENSOR ULTRASONICO DE DISTANCIA SRF02 CON PICBASIC PRO
TENGO UN PIC16F877A Y UN CRISTAL OSCILADOR DE 4 MHZ

ACTUALMENTE HE LOGRADO UNA COMUNICACION CON LA COMPUTADORA CON EL SIGUIENTE PROTOCOLO
MODO SERIE:
9600 BAUDIOS
SIN PARIDAD
8 BITS DE DATOS
Y 1 BIT DE PARADA

LO MALO ES QUE PARA COMUNICARME CON EL SENSOR REQUIERO:
9600 BAUDIOS
1 BIT DE INICIO
SIN PARIDAD
8 BITS DE DATOS
2 BIT DE PARADA

BUENO MI CODIGO ES EL SIGUIENTE:

INCLUDE "modedefs.bas"' se define la librería donde se encuentran los operadores para puerto serial
DEFINE OSC 4 'se define el oscilador en MHz
DEFINE HSER_RCSTA 90h ' Configuración del modo de recepción del pic
DEFINE HSER_TXSTA 24h ' Configuración del modo de transmisión del pic
DEFINE HSER_BAUD 9600 ' Frecuencia con la que existe una correcta transferencia de datos
DEFINE HSER_SPBRG 25 ' Valor calculado según el valor del Oscilador y el rango de baudios
TRISB = %00000000 'A B C D _ _ _ _ deficinion de Salidas para el movimiento de motor de pasos
TRISC = %00000000 ' RX TX _ _ _ _ _ _ Configuración de pines receptores y transmisores del pic
cu var WORD 'variable interna para contador utilizado en secuencias
decide var WORD 'variable interna para condicionar la entrada a secuencias dependiendo de la recepción de datos
' SALIDAS
A VAR PORTB.7
B VAR PORTB.6
C VAR PORTB.5 ' Pines de control de movimiento de motor de pasos
D VAR PORTB.4
ali VAR PORTB.3 ' Led de alimenación al sistema
RX VAR PORTC.7
TX VAR PORTC.6  ' Pines para puerto de recepción
e1 VAR byte
e2 VAR byte
dato VAR byte
e3 VAR bit   ' Variables que capturan los bits recibidos
e4 VAR bit   
e5 VAR bit
e1 = 0
e2 = 0
e3 = 0  ' Inicialización de bits de datos
e4 = 0
e5 = 0
decide = 0
high ali
LOW A
LOW B     ' Inicialización de pines para control de motor
LOW C
LOW D
cu = 0
ciclo: ' Programa principal
         HSEROUT [$0,$60]
         PAUSE 100
         HSEROUT [$0,$51]
         PAUSE 100
         HSEROUT [$0,$54]
         PAUSE 100
         SERIN RX,2,100,ciclo,[$0],e1,e2 'Recepción de datos y almacenamiento en variables temporales
         if e1 != 0 then
            high A                  ' OJO intullo que aqui tambien anda algo mal por que segun el datasheet del SRF02 el sensor manda
         endif                         de regreso 2 bytes ó 2 palabras las cuales no se como se reciben en código PICBASIC
         if e3 != 0 then            el código anterior lo ocupo y funciona para recibir bits por separado provenientes de la PC de un programa en VISUAL BASIC
            high B
         endif       
         GOTO ciclo
   

AGRADECERIA MUCHO SU AYUDA DE ANTEMANO
es lo malo de no saber picbasic bien hombre jaja

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: AYUDA SRF02 Y PIC BASIC
« Respuesta #12 en: 31 de Enero de 2008, 18:55:23 »
Hola:

No hace falta que postees lo mismo en varios subforos, voy a borrar el otro tema que tienes puesto en el subforo de Robótica, creaste otro mas en este mismo subforo, por favor lee las reglas del foro.

PD: perdon Xocas por eliminar tu mensaje en uno de los temas repetidos.
« Última modificación: 31 de Enero de 2008, 19:02:07 por LordLafebre »

Desconectado SYLA0285

  • PIC10
  • *
  • Mensajes: 10
Re: AYUDA SRF02 Y PIC BASIC
« Respuesta #13 en: 31 de Enero de 2008, 20:59:29 »
AH NO HAY PROBLEMA

CREI QUE SI SE PODIA SORRY
PERO RESPECTO AL PROBLEMIN
COMO VES
QUE SOLUCION
HABRA?

Desconectado SYLA0285

  • PIC10
  • *
  • Mensajes: 10
GRACIAS NAVAISIMO
« Respuesta #14 en: 11 de Febrero de 2008, 18:58:34 »
GRACIAS NAVAISIMO !!! Y A TODOS TAMBIEN

FIJATE QUE YA FUNCIONO EL CODIGO QUE ME RECOMENDASTE PARA EL SENSOR DE TEMPERATURA
PARECE SER QUE LA MODALIDAD MAS SENCILLA ES LA I2C SOLO QUE TUVE QUE AGREGAR
A LAS TERMINALES DEL SENSOR SRF02 2 RESISTENCIAS PULL UPS DE 4.7 K OHMS

PERO YA FUNCIONO LUEGO LES PUBLICO EL CODIGO PARA QUE NO TENGAN PROBLEMAS CON
ESTE TIPO DE SENSORES.



 

anything