Sensor Ultrasonico Digital: Dudas y problemas con el código de nuestro PIC

Sensor de Proximidad Ultrasonico Digital con salida de 4 a 20mA:

El proyecto consiste en la elaboración de un Sensor de Proximidad Ultrasonico Digital. El circuito debe tener una salida, la cual nos debe entregar de 4 a 20mA (mili amperios) dependiendo de la distancia que nuestro sensor nos entregue.
Si tenemos un objeto demasiado cerca del Sensor, la salida debería dar 4mA, si tenemos un objeto a una distancia mayor o igual a la máxima, la salida debería dar 20mA
El circuito lleva una Pantalla LCD que nos muestra la distancia máxima (constante) y la distancia real (variable), también lleva un teclado con el cual debemos ser capaces de configurar la distancia máxima del sensor, todos estos datos quedan almacenados en la memoria EEPROM del PIC. Como puntos extra vamos a conectar una laptop a nuestro PIC mediante un MAX232, para así ver los datos que en sensor le manda al PIC

Distancia maxima es un valor constante que nosotros le asignaremos a la memoria del PIC
Distancia real, es el valor que nos da el Sensor

16i5bf4.jpg

imagen 1

Actualmente nos encontramos en la fase final de nuestro proyecto (llevamos 2 meses trabajando en el), toda la estructura ya esta terminada (MAX232, Circuito del Sensor y del PIC), cada componente lleva su fuente individual, por lo que ya solo nos queda la parte de programar el PIC

Para garantizar la mayor comprensión de nuestro proyecto y lo que involucra su programación, voy a dividir la explicación por partes
Al final de este post dejare el Datasheet de todos los componentes que estamos utilizando
Desde ya se les agradece, solo por el hecho de leer mi post y por cualquier ayuda y aporte que nos puedad dar

Observaciones: lo que se muestra en la imagen 1 es solo un ejemplo de la parte estructural que ya tenemos hecha, solo para mostrar la forma en que tenemos todo conectado, actualmente nuestro PIC no tienen ningún código, por lo tanto lo que aparece en el LCD fue agregado con Paint

Primera Parte "El Sensor conectado al PIC"

2rclent.jpg

imagen 2

Tenemos un Sensor Ultrasonico el cual mide la distancia que hay con algun objeto que tenga al frente, el sensor tiene 2 formas de decirnos la distancia. La primera es mediante una salida análoga que tiene en el PIN3, el sensor aumenta el voltaje si el objeto esta mas lejos, y lo reduce si esa mas cerca. La segunda es mediante una salida digital TX que tiene en el PIN5, el sensor nos envía un código el cual vamos a leer con el RX en el PIN RC7 de nuestro PIC.
Básicamente la primera parte consiste en lograr una comunicación entre el Sensor y el PIC utilizando comunicación digital

Observaciones: llevamos varias semanas intentando comunicar el Sensor con el PIC mediante el voltaje analogo que el Sensor nos otorga, sin embargo este voltaje es muy impreciso, por lo que esta opcion quedo casi descartada, ahora nos concentramos en comunicar el sensor con el PIC mediante RS232 (PIN5 del sensor conectado al RC7 del PIC)

Segunda Parte "El LCD y el TECLADO y EEPROM"

Una vez que seamos capaces de comunicar el Sensor con nuestro PIC, es necesario visualizar la distancia que esta midiendo en una pantalla, para eso tenemos un LCD de 20x4 conectado al PORT D (ver imagen 1)de nuestro PIC, la función del LCD simplemente es la de exhibir los datos, la distancia máxima y la real, aunque podría ser mostrado mas simplificado
2b713t.jpg

imagen 3

El teclado desempeña una función importante,debe tener un boton especial asignado para que podamos entrar al menú de opciones y desde ahí programar la Distancia máxima, nuestro teclado se encuentra conectado en el PORT B del PIC. Según las especificaciones del profesor, cuando presionemos algun boton del Teclado, la pantalla LCD nos debe mostrar 3 opciones:

1 para Cambiar Distancia máxima
2 para Visualizar Distancia Real
3 para Salir

2zfn253.jpg

imagen 4

Si le damos a la opción 1, debemos ser capaces de cambiar el valor de la distancia máxima con los números del teclado
Si le damos a la opción 2, solo nos debe mostrar la distancia real que el sensor esta midiendo
Si le damos Salir, simplemente regresamos a la pantalla original que nos muestra ambas distancias (máxima y real)
Inmediatamente cambiamos el valor del la distancia maxima, el nuevo valor debe guardarse en la memoria EEPROM del PIC, de esta forma, si el circuito se reinicia, el valor siempre queda guardado

Observacion: Edite la foto del teclado, y agregue un boton rojo con la Letra P, solo como ejemplo, no es necesario que se trate de un botón en especifico, nuestro profesor nos dijo que podría tratarse de una interrupción o un switch externo, pero la opción de un botón en el teclado me parece mas practico


Tercera Parte "La Salida de 4 a 20mA"

La razón por la que el circuito nos debe entregar una salida de 4 a 20mA es por que en la industria, 4 a 20mA es una medida estándar que se utiliza para procesos como control de motores, PLC, etc...
de hecho originalmente el proyecto consistía en conectar nuestro circuito a un ventilador industrial o una bomba de agua para llenar un tanque, sin embargo por la falta de recursos, no fue posible comprar ningún tipo de motor, por lo que el proyecto se reduce a lograr que el circuito nos de 4 a 20mA a la salida, y comprobarlo con un Voltimetro

Esta parte del proyecto es quizás la mas complicada de explicar, así que dejare algunos ejemplos

>100% "Cuando el objeto esta mas lejos que la distancia máxima"
100% "Cuando el objeto esta en la distancia maxima"
50% "Cuando el objeto este en la mitad de la distancia maxima"
0% "Cuando el objeto este pegado al sensor

sqm92o.jpg

imagen 4

En resumen si el objeto esta a una distancia mayor o igual a la máxima, en nuestra salida tendremos 20mA y si el objeto este pegado el sensor, lo que seria la distancia minima, tendriamos 4mA

Aun no estamos seguros de como hacer esto, nuestro profesor nos recomendó utilizar algo llamado PWM que segun me explicaron se trata de un ancho de pulso que el PIC genera (como una salida de voltaje en el PIC que varia con los datos del Sensor) y solo se pueden sacar de los pines RC1 y RC2, este PWM generado por el PIC luego pasaría a un Filtro Pasa bajo y luego a un Conversor de Voltaje a Corriente
Nuestro Conversor funciona perfectamente, recibe un voltaje variable de entre 1 a 5V (lo probamos con una fuente variable) y saca una señal de 4 a 20mA
hasta donde se, lo que hay que lograr, es que el PIC genera un PWM en la salida RC1 y RC2 mediante alguna ecuación, que le permita adaptarse a los parámetros de cada Distancia máxima que le asignemos, pues hay que recordar, que la distancia máxima puede ser configurada, en el ejemplo de la imagen 4 yo doy 10 metros como referencia, pero podría cambiarse a 5 metros, por lo que el código debe ser capaz de trabajar con estos valores


Cuarta Parte "Comunicación Serial"

Este es un bonus, si logramos que el Hyperterminal de alguna computadora se conecte con el PIC mediante un MAX232, y simplemente nos muestre el dato que el sensor nos esta mandando (Distancia Real) recivimos 10 puntos extra
v5luv7.jpg



Anexos

En este preciso momento no tengo las fotos y el código del proyecto con el que estamos trabajando, sin embargo para hoy en la noche subiré toda la información que haga falta
actualmente tenemos un código para el teclado y el LCD funcionando, sin embargo no hemos logrado integrarlo todo junto con el Sensor, ya que el sensor ni siquiera nos tira una señal
La fecha de entrega del proyecto es dentro de 1 semana, así que no andamos con prisa, jeje :p

Diseño esquematico en Proteus (Incompleto)
Diseño de conversor de Voltaje a corriente en Livewire

Datasheet:
Datasheet Sensor Ultrasonico MB1240 (solo es necesario ver la pagina 1 y 2)
Datasheet PIC 16F887 (solo es necesario ver la pagina 8 )
Datasheet Max232
 
Programas

Aqui les dejo un archivo comprimido que trae los codigos que estamos usando para el LCD, el teclado y el Sensor
el codigo del Teclado y el LCD es bastante sencillo, nada especial
El codigo del sensor lo realizamos en clase con ayuda del profesor, lleva las instrucciones para guardar la distancia maxima en la memoria EEPROM del PIC, tambien es capaz de reconocer el voltaje analogo que el Sensor le manda, sin embargo como dije previamente, quiero evitar usar el analogo

para que el PIC lea los datos del sensor tengo entedido que debemos utilizar instrucciones como "READ BAUD RS323" o algo asi
 
El proyecto esta muy interesante, bueno yo soy nuevo en el foro y mi profesor quiere que haga un sensor algo parecido a la que estas haciendo un sensor de posicion seria de mucha ayuda si me dieras mas informacion del codigo por favor es urgente de ante mano muchas gracias



Programas

Aqui les dejo un archivo comprimido que trae los codigos que estamos usando para el LCD, el teclado y el Sensor
el codigo del Teclado y el LCD es bastante sencillo, nada especial
El codigo del sensor lo realizamos en clase con ayuda del profesor, lleva las instrucciones para guardar la distancia maxima en la memoria EEPROM del PIC, tambien es capaz de reconocer el voltaje analogo que el Sensor le manda, sin embargo como dije previamente, quiero evitar usar el analogo

para que el PIC lea los datos del sensor tengo entedido que debemos utilizar instrucciones como "READ BAUD RS323" o algo asi
 
Atrás
Arriba