Ver la dirección del viento en un teléfono móvil.

Proyecto Ver la dirección del viento en un teléfono móvil.

Hola a todos, soy nuevo en este foro y os pido ayuda para resolver un tema que se me ha planteado en un proyecto que estoy haciendo. El proyecto en cuestión es obtener la dirección del viento en un teléfono móvil a partir de un emisor que no es más que una “veleta” situado, en un edificio o en un barco.

La primera fase del proyecto reside en leer las salidas de la veleta, es decir el ángulo y sentido girado por ésta desde su posición inicial (“cero”).

Navegando por las diferentes webs, he intuido que una de las formas seria situar un disco concéntrico al eje vertical de giro de la veleta. El disco dispondría de marcas o ranuras que interferirían en un “optointerruptor” del tipo H21A1 o similar, es decir, una especie de encoder óptico casero. Mediante este montaje, cuando el viento moviera la veleta podría contar ranuras (altos) y por lo tanto el ángulo girado.

Sabiendo el ángulo girado, me haría falta saber el sentido y la posición relativa respecto del “cero” para cuando vaya rolando el viento.

Agradecería que me ayudarais en esta primera fase del proyecto, tanto en saber si el método planteado del “encoder óptico casero” es el más adecuado, como en cómo sería el código para recoger el ángulo girado, sentido y posición relativa respecto “cero”.

Muchas gracias anticipadas.

Una opción que leí en este post, es utilizar un disco transparente que tenga impreso un gradiente desde transparente a opaco. Con un led de un lado y un fotoreceptor del otro, podes medir la intensidad de la luz que atraviesa el disco y de esa forma conocer la dirección de giro y el angulo respecto al cero. El principal problema es la presición que depende del fotoreceptor.

Muchas gracias por tu aportación. Como bien dices con esta solución el problema principal es la precisión del fotoreceptor y yo añadiría otra: la fabricación del disco con un degradado de transparente a opaco. Creo que es más facil hacer un disco con ranuras cada cierto ángulo, a más rtanuras más precisión y con un optointerruptor quedaría resuelto.

El problema principal en esta fase del proyecto, es que no se como hacer con código que encuentre el sentido de giro y la posición relativa rrespecto del cero utilizando un solo conjunto disco ranurado - optointerruptor. Otra formasería utilizar varios discos concentricos con el eje de giro con sus respectivos optointerruptores para referenciar los sentidos de giro y el cero, pero creo que ha de poder hacerse con un solo conjunto disco ranurado - optointerruptor,..., pero no se como diseñar el código.

Si quieres precision usa un encoder de al menos 512 pasos o mas.
El problema es establecer una referencia para saber desde donde cuentas, porque si se corta la energía perderás dicha referencia y no sabrás donde esta el norte por ejemplo. Aún cuando lo salves, la veleta se moverá y no tendrás podición de referencia hasta pasar de nuevo por alguna que sirva a tal efecto.

Gracias por tu aportación surbyte. En el caso de utilizar el encoder de 512 pasos y sin considerar el corte de energía, me podrias dar una idea de como sería el codigo para obtener el ángulo girado y el sentido de giro programando Arduino UNO,..., repito, muchas gracias.

El corte de energía es un problema pero obviemos eso por ahora.

El enconder tiene dos salidas y el solo te dice si estas girando en un sentido u otro.
Si tu encoder fuera de 512 pasos por ejemplo tendrias 360 grados/512 pasos lo que te da => 0,703125 grados por paso.

Por supuesto menos paso de encoder empeoran la resolución y mas pasos la mejoran pero tambien lo encarecen.

Para código muy simple, busca la librería Encoder y ya tienes la librería Encoder Library

Gracias surbyte. Mi idea original era hacer un encoder "casero", pero voy a estudiar la posibilidad que apuntas de hacerlo con uno "comercial", considerando la ventaja que supone el disponer de una libreria para trabajar con ellos,.., pue eso,..., voy a "pelearme" un poco con la "Encoder Library" y con las especificaciones de los encoders comerciales "económicos" y os cuento.

Bueno actualizo la idea y descarto el encoder, con esta solución.
Un encoder absoluto que mantiene la posicion y de ese modo no pierdes jamás la referencia.

Otras opcion podría ser un potenciómetro que te de en todo momento una valor de tensión y cada valor de tensión se corresponde a una dirección del viento.

Gracias, ya habia contemplado que fuera "absoluto" (creo que con 12 bits será suficiente), pues de ser "incremental", tendria que resolver el ángulo y sentido de giro con más circuiteria anexa. Por cierto el enlace que me pasas me da un error de pagina.

Editado.

Busca también potenciometros que tengan la robustez como para ser usados en el exterior o con la protección adecuada.

“Pululando” por la Web, he encontrado un encoder que por precio y características voy a utilizarlo en esta primera fase. Se trata de un encoder mecánico absoluto de 8 bits del fabricante Estadounidense BOURNS, designación comercial ACE-128 y con referencia de fabricante EAW0J-B24-AE0128L. Su coste es de unos 8 € y he encontrado una librería para Arduino,..., si a estas dos premisas, le añadimos las característas leídas en su “hoja de datos” hacen de este mini encoder algo a tener en cuenta en mi proyecto.

"Pululando" por la Web, he encontrado un encoder que por precio y características voy a utilizarlo en esta primera fase.

Pero no fue lo que te sugerí, luego que te puse que había editado el enlace?

Disculpa surbyte, tienes toda la razón, es el que me sugeriste en tu respuesta #7,…, en su momento no me di cuenta que en “encoder absoluto” había un hipervínculo, de haberlo hecho, me hubiera ahorrado un tiempo importante,…, al menos me queda el consuelo de haber encontrado la librería específica para este encoder.