Mostrando entradas con la etiqueta PinOut. Mostrar todas las entradas
Mostrando entradas con la etiqueta PinOut. Mostrar todas las entradas

viernes, 1 de enero de 2016

¿En qué se diferencia un PinOut de un PinMap?



Esta entrada va a ser muy corta pero esperamos que muy reveladora. Trata sobre dos términos que normalmente nos encontramos en las descripciones de nuestras placas Arduino, o en general la de cualquier microcontrolador, pero que a veces confunden su significado. Una cosa es el PinOut de la placa y otra el PinMap.

Imaginaros que tenemos estamos pensando en usar una placa Arduino Beetle para una aplicación donde nos basta y sobra con la potencia del microcontrolador ATMega32U4, pero que se monta en una plaquita de tal solo 20mm X 22mm:


a bote pronto nos parece evidente el número de pines digital y analógico que dispondremos, simplemente leyendo lo que viene escrito sobre cada IO, pero ¿qué hay del resto de los pines? ¿donde está el famoso D13 con su LED?, ¿ o donde están los pines de recepción y transmisión, RX y TX?. ¿Puedo usar el protocolo de transmisión de datos SPI? Si es  así, ¿cuáles son los pines MOSI, MISO, SCLK, y SS?

A fin de cuentas el microcontrolador tiene 44 patillas, y en el Arduino Beetle Beetle solo veo 10 pines más el conector microUSB, ¿cómo puedo acceder al resto de los pines del microcontrolador que lleva montado?

La respuesta está en la apropiada definición del PinOut y del PinMap.

Si le echamos un vistazo al PinOut del microcontrolador ATMega32U4, independientemente de sobre qué placa o versión de placa se monte, siempre será exactamente el mismo



Pero si le echamos un vistazo al PinOut de la placa Arduino Beetle, veremos qué igual que usamos un mapa cuando vamos a montarnos en el METRO, aquí también necesitaremos un mapa, para indicarnos por cada una de estas bocas de METRO (los pines de la placa), cómo llegar al destino que deseamos (los pines del microcontrolador). El plano de nuestro METRO en este caso se llama PinMap.



Así que a medida que vayamos trabajando con más y más placas diferentes, y con más y más versiones de cada una de ellas, si no queremos volvernos locos es importante que  nos hagamos siempre con la versión actualizada del PinOut del microcontrolador que lleve montado y el PinMap que nos indique claramente en nuestra placa concreta quién es quién.

En resumen:

PinOut =  Son los pines que físicamente puedes ver en la placa
PinMap = Es el la tabla que indica cómo cada uno de los pines de la placa está conectado al microcontrolador. Y donde veremos más claramente

  1. todas las funciones de cada uno de los pines de la placa que tenemos entre manos,
  2. qué pines del microcontrolador está accesible a traves de los pines físicos de la placa, y
  3. qué pines del microcontrolador NO están accesible a través de los pines de nuestra placa. No es raro encontrarnos una placa que no usa toda la potencia o capacidad del microcontrolador que monta.



domingo, 13 de septiembre de 2015

Sensor de distancia infrarrojo GP2Y0A21YK0F - Introducción






Hace ya algún tiempo que estuvimos presentando como funcionaba el sensor ultrasónico HC-SR04 y un sketch que podríamos usar para verlo en acción.  Con este sensor ultrasónico, podíamos medir un rango de distancias sensible entre 3cm y 3m con una precisión de 3mm.

Y como ya explicamos en su momento, funciona del mismo modo que lo hacen los murciélagos, esto es, enviando un ultrasonido (inaudible para el oído humano por su alta frecuencia) a través de uno de la pareja de cilindros que compone el sensor (un transductor) y espera a que dicho sonido rebote sobre un objeto y vuelva, retorno captado por el otro cilindro. 

Pues bien hay situaciones en las que nos podría interesar no tanto medir la distancia real a la que estamos de un obstáculo sino más bien si hay alguno lejos, cerca o muy cerca, y en función de los resultados tomar decisiones sobre la marcha de nuestro robot. Este tipo de enfoques no permitiría un procesado más rápido de la señal, y menos recursos computacionales de los datos. Debemos de tener en cuenta que para calcular la distancia a la que se encuentra un obstáculo usando el sensor ultrasónico, debemos emitir un pulso sónico, esperar el eco, y luego con sabiendo que la velocidad del sonido en el aire es de valor 340 m/s, o 0,034 cm/microseg (ya que trabajaremos con centímetros y microsegundos) y que la formula de la velocidad es


Tendremos el espacio de ida y vuelta recorrido por nuestro pulso ultrasónico, 



ahora tendremos que dividirlo entre dos para saber la distancia a la que se encuentra (recordemos que el pulso va y viene, por lo que la distancia del obstáculo es la mitad de la recorrida por nuestro pulso de ida-detección-vuelta-notificación)

Además, como el pulso se genera siempre a una frecuencia dada, imaginaros si tenemos tres o cuatro sensores ultrasónicos a la vez, cada uno mirando a un lado de nuestro robot, sin duda alguna correremos el riesgo de que ciertos ecos de un sensor se reciban por otro sensor y los interprete como propios, por lo que adicionalmente a los recursos que nuestro Arduino debe emplear para el cálculo de la distancia, tendremos que implementar otros filtros a nivel de programación para identificar los falsos ecos y descartarlos.

Por todo ello, a veces solo queremos saber si hay o no hay un obstáculo y hacerlo muy deprisa. Por ejemplo si estamos diseñando un seca manos que necesita ver si un cliente tiene las manos en el rango de trabajo del secador.

Para ello podríamos pensar en buscar algún sensor que funcionara con luz en lugar de con sonido. Todos sabemos que la velocidad de la luz es casi un millón de veces más rápida que la del sonido (es la razón de que vemos primero el relámpago y luego escuchamos el trueno). 

Pues bien, la empresa SHARP tiene diseñado una serie concreta para rangos de trabajo diferentes. Tres ejemplos de ellos los mostramos a continuación
  1. De 4 a 30 cm, el GP2Y0A41SK0F
  2. De 20 a 150 cm, el GP2YA02YKF
  3. De 10 a 80 cm, el GP2YA021YK0F
Y hemos presentado estos tres por que son los tres que vienen con terminación en conectores de la serie PH del fabricante JST, 




que nos permitiría implementar el mismo tipo de conexionado independientemente del rango de distancias y sensor que vayamos a usar. Todos ellos tienen el mismo configuración de los pines (lo que se conoce por el pin-out).

Adicionalmente y con objeto de que lo podamos usar en distintas configuraciones el propio POLULU ha diseñado diferentes escuadras para poder anclarlo en la forma que más nos apetezca


de este modo, podríamos situarlos como vemos a continuación, 




O mejor, si lo colocamos encima de un servomotor, podremos con un solo sensor de infrarrojos mapear todos los obstáculos que se encuentren a nuestro alrededor.



Visto la parte mecánica, ahora echemos un vistazo a la parte eléctrica. De estos tres modelos que hemos presentado, nos vamos a centrar en el rango intermedio de 10 a 80 centímetros ofrecidos por POLULU:  GP2YA021YK0F.

Las características más relevantes del mismo son:

Parámetros
Valor
Rango de distancia
10 – 80 cm
Velocidad de muestreo
26 Hz
Rango de tensión de trabajo
5.5 – 4.5 voltios
Consumo de corriente
30 mA
Tipo de salida
Analógica
Diferencia de tensión entre extremos
1,9 voltios (80 cm contra 10 cm)

Lo primero que nos salta a la vista es el consumo del sensor 30 mA. Si recordamos lo que vimos en entrada en la que estuvimos viendo las limitaciones de potencia eléctrica, aunque no debemos sobrepasar 40 mA en los pines digitales, lo recomendable es mantenerse en el orden de los 20 mA. Es por ello, por lo que el propio SHARP en previsión de que pueda haber algún tipo de problemas con el suministro, aconseja que se coloque un condensador de 10 µF o mayor, entre el pin de alimentación y de tierra para estabilizar la línea.



Lo segundo que vemos es que la salida es analógica, y no digital como hubiéramos esperado para este tipo de sensores. Por lo que podríamos creer que son una formula parecida a la que usamos para nuestro sensor de ultrasonido, podríamos no solo detectar el obstáculo, sino también calcular la distancia a la que se encuentra.

Como podemos ver en la gráfica que mostramos a continuación, la respuesta del sensor no es lineal más allá de los primeros centímetros, 



por lo que dejaremos para otra entrada, como calcular la fórmula y hacer los ajustes necesarios para calibrar los resultados de forma adecuada.


En la próxima entrada veremos los esquemas de conexión que debemos usar y un sketch simple que nos permitirá evaluar los resultados que podemos obtener con este tipo de sensores. 

Y ya sabéis, si tenéis alguna sugerencia o duda, no tenéis más que mandarnos un correo a



e intentaremos responder a vuestra pregunta lo antes que podamos.


lunes, 2 de diciembre de 2013

Sensor Magnético - Keyes KY035 - Parte 1


Los sensores de efecto Hall son bastante simples de usar pero hay algunas cosas que quizás no conozcas y que quizás necesites conocer antes de comenzar un nuevo proyecto.

Como ya sabrás por nuestra entrada anterior Sensores Magnéticos, un sensor de efecto Hall es un dispositivo que reacciona a un campo magnético generando una señal eléctrica. Siendo el uso más común de este tipo de sensores el de actuar como un conmutador digital en presencia de un campo magnético lo suficientemente fuerte.

Pero la realidad es que hay muchos tipos diferentes: los hay que producen una señal analógica en función de la fuerza y la polaridad de un imán, los hay de los que conmutan cuando detecta un campo lo suficientemente fuerte, y que no vuelven a abrirse hasta que no se detecta un campo igual de fuerte en sentido contrario,  los hay que solo detectan el campo magnético en un eje, o lo hay que pueden medir los tres componentes del campo que detecte, etc.

Cada sensor de efecto Hall están diseñado para trabajar con una intensidad específica del campo magnético (medido en Gauss), con objeto de que solo se accione cuando la señal es la adecuada. Y digo adecuada, porque tan malo es que la intensidad requerida para activarlo sea muy baja (y entonces podríamos tener mucha contribución de los campos magnéticos circundantes generados) como que sea muy alta, puesto que el resto de la electrónica de nuestro proyecto podría verse influenciada.

La mayoría de los sensores se venden cubriendo una amplia gama de sensibilidades, aunque en esta primera introducción presentaremos uno que se vende en el kit de sensores para Arduino de la serie Sensores Keyes, el sensor KY 035.

Como sucede para el resto de los sensores de la serie Keyes, normalmente los proveedores no suministran demasiada información sobre sus características básicas, sus condiciones de operación ni sus limitaciones. Esto que en principio para cualquiera podría parecer un despropósito para alguno lo considera un reto, por que está en la base del tinkering, el cuestionarse para qué sirve cualquier cosa, encontrarle su utilidad, y darle uso.

Y como es fundamental ser positivo y ver todo de las perspectiva más adecuada, he querido pensar que es así, y no por ser un sensor realmente barato.

Sea como sea, si eres de los que piensan descubrirlo todo por tí mismo, sáltate el resto de la entrada y vete directamente a la fase de montaje y programación que presento en la segunda parte de esta presentación del sensor KY0035.

Si estás aquí, es que entiendo de que además de querer cacharrear con el sensor, te interesa saber algo más de qué es, y quién lo ha construido.

Pues bien, este es el aspecto general del sensor, donde como verás cuesta un poco poder identificarlo fácilmente del resto de sensores de la serie Keyes (las dimensiones están en milímetros).


El acabado no es especialmente bueno, pero si miramos con atención, podemos identificar el sensor que monta: El sensor lineal de efecto Hall de Honeywell referencia SS49E.


Gracias a esto podremos sacar las prestaciones que se le espera al sensor KY035. Según la hoja de datos de Honeywell

y de aquí podemos observar varias cosas:

  1. Es un sensor lineal. Esto es, que va a traducir en tensión las variaciones del campo magnético que perciba
  2. Los voltajes de alimentación con los que va a trabajar estarán en el rango de 2,7 a 6,5 voltios. Esto es, debería sentirse muy cómodo con los 5 voltios de tensión de los pines del Arduino.
  3. El consumo es muy reducido, de menos de 10 mA. Lo cual significa que puede alimentarse directamente de la placa de Arduino que suministra hasta un máximo de 40 mA por PIN.
  4. Trabaja en campos magnéticos en el rango de 650-1000 Gauss.  Esto nos va a permitir trabajar con imanes pequeñitos de uso habitual.

Bien, ahora que sabemos para qué debería servirnos, vamos a ver cómo podríamos conectarlo. Esto normalmente viene claramente identificado en el PinOut del sensor o de la placa, pero como solo veo una S en el pin más a la derecha me surgen dudas de qué conexionado lleva la placa, y para qué se le han creado los PADs de conexión L y R1. Así que, con polímetro en mano, empiezo a buscar continuidad entre cada pin y cada PAD de la PCB.

Si eres un fanático del tinkering, no sigas leyendo hasta que no tengas un esquema propio. Es fácil, usa el multímetro en modo idenficación de continuidad y prueba PAD a PAD con quién está conectado cada cosa.

Pues bien, una vez que hayáis terminado podéis comprobar el resultado con el mío y ver si lo tenéis todo bien identificado. Os dejo una foto hecha con Rayos-X como ayuda.



Con todo ello, parece ahora evidente el esquema:

Pero esto no nos dice demasiado, porque lo que necesitamos saber, es cuál es el PIN de alimentación, cuál el de tierra y cuál el de salida,  y de nuevo, gracias al hecho de haber identificado al proveedor Honeywell, vemos que en la hoja de datos define su diagrama de bloques

y si vamos a la versión del encapsulado que nos afecta, no solo veremos donde está situada el sensor Hall, sino que nos identificará qué es cada PIN concreto.

 o lo que es lo mismo

Algo que parece dar sentido a la "S" (por ser la Señal de Salida) y a la Tierra (GND, por ser el PIN negativo). Por descarte el tercer PIN sería la alimentación Vs.

Esta es la esencia del Tinkering. Ahora ya estamos en disposición de montarlo en una protoboard (si no recuerdas qué era, lee la entrada sobre el protroboard) y empezar a programar algo sencillito, teniendo siempre en mente que el comportamiento nominal previsto para este sensor lineal sería como el que se ilustra en la hoja de datos del componente de Honeywell.