Hackear un sensor PIR

Cuando se alimenta con pilas o baterías un circuito , cualquier ayuda es poca a la hora de bajar el consumo. En esta ocasión vamos a ver un típico sensor PIR como podemos modificarlo para alimentarlo a 3.3V en lugar de 5v DC . Es obvio decir que este pequeño truco es aplicable a otros circuitos parecidos.


Es relativamente utilizar  sensores PIR Panasonic de ultra baja potencia, componte  que es usado  en la mayoría de los sensores de proximidad.

Estos sensores están disponibles en varias variantes (series WL y VZ, rango de 5-12m, corriente inactiva de 1-6uA) siendo la corriente de detección activa de este sensor de ~ 30uA (durante el movimiento), y el  consumo de  corriente cuando esta inactiva de  sólo  2uA.

Cuando se ensambla junto a otros componentes en un sensor de proximidad , que es lo habitual  , la corriente inactiva total del  conjunto  será de alrededor de 10uA, por lo que como vemos el consumo es bastante ajustado.

Como  el voltaje de entrada de los PIR de Panasonic es de 2.3-4V , en algunas  placas   cuentan con el siguiente puente de soldadura para cambiar su VCC de la fuente de la batería a la fuente de 3.3V 

El sensor de movimiento PIR predeterminado en  los famosos  módulos  HC-SR501  es precisamente  el mismo sensor de Panasonic , usando alrededor de 60uA en inactivo, y la corriente de detección activa es ~ 200uA.

 

 

El sensor PIR del HC-SR501 tiene un rango de voltaje de alimentación de aproximadamente 3.9V a 24V lo cual lo hace ideal para usarlo por ejemplo con un Arduino como vemos  en el siguiente esquema.

 

Este rango  tan amplo de alimentación es genial, pero cuando estamos operando con una batería LiPo que se agota desde 4.2V cuando está completamente cargada pero todavía durará mucho tiempo sin modificaciones en el sensor PIR. Cuando el voltaje de la batería cae por debajo de 3.8-2.9V, el sensor PIR se disparará continuamente,pero como no queremos eso  necesitamos que el sensor PIR funcione hasta los 3.3V que marcarán el estado de la batería descargada.

En  estas   placas  , es patente  que el sensor PIR tiene un diodo y un regulador:

      • El diodo tiene un enorme voltaje directo de 0.6V, por lo que como mínimo deberá quitar este diodo y sustituirlo por un puente. También puede cruzarlo soldando un cable a los 2 terminales del diodo o con un poco de estaño intentar tocar ambos terminales  (como en la imagen de mas abajo).
      • El regulador tiene otra caída de voltaje de 0.1-0.25V, por lo que para alimentar el circuito con  el rango de entrada de voltaje más bajo absoluto para el PIR, también se puede quitar el regulador  ya que el regulador es lineal, por lo que será muy poco eficiente cuanto mayor sea el voltaje de entrada.

El diodo (y el regulador) deberían salir fácilmente si calienta repetidamente los terminales . La vía  mas simple de  hace esta pequeña modifiación  es reemplazar  estos componentes ( excepto la masa del regulador ) por simples  puentes de soldadura como se muestra a continuación.

Es evidente  que el quitar estos componentes al circuito conlleva dos peligros evidentes:

    • Podemos quemar el circuito si invertimos la polaridad al no contar con el diodo de protección
    • Si eliminamos el regulador también hay riesgo de quemadura del sensor  sobre todo si sobre-alimentamos el circuito

A pesar no obstante de estos riesgos es evidente  que el circuito podrá ser alimentado por menor tensión (3.3V) consumiendo ademas menos corriente , lo cual es muy importante cuando alimentamos estos sensores con fuentes recargables

 

Consejo para una fácil desoldadura:

Estos componentes son SMD y podrían ser un poco difíciles de desoldar si nunca antes lo ha hecho. Afortunadamente, hay un truco bastante fácil: derrita un montón de soldadura en la punta del soldador; esto aumentará la masa térmica de la punta. Para el diodo, caliente un lado y luego muévalo rápidamente hacia el otro, luego de un lado a otro hasta que el diodo se desprenda. Si este es un diodo realmente pequeño (algunos PIR tienen diodos pequeños y algunos más grandes), entonces puede simplemente conectar / cortar los terminales del diodo con un pequeño cable de puente sin tener que desoldarlo.

Si desea hacer que el PIR tenga una potencia aún más baja, debe quitar el regulador y conectar el regulador VIN a VOUT. Con un montón de soldadura derretida en su punta de hierro, toque los 3 cables del regulador y debería salir inmediatamente, luego deje caer la soldadura derretida en el centro y las almohadillas derechas donde estaba el regulador (como se ve en la foto de arriba).

 

Repetimos   que deberia tener en cuenta que  una vez  realice estas modificaciones, el PIR se podrá alimentar  hasta 5 V y deberá conectarse correctamente  pues ya no hay protección de diodo inverso

Ha llegado el sustituto de los fusibles y es un componente de toda la vida

Usos innovadores o poco habituales de uno de los componentes electronicos mas sencillos : las resistencias tradicionales


Seguro que querido lector  se han cuestionado porque  en algún circuito  comercial   en la serigrafía  marcaba un componente como   un fusible  pero en su  lugar se ha colocado  una resistencia de muy bajo valor (ente 0.5 y 10 Ohms)   y de baja disipación ( 1/4 Watio  o  menos)  ocupando  el mismo  lugar del fusible.

Lo primero que se nos ocurre,es contradictorio , pero en cierta forma tiene sentido, pues una resistencia muy baja realmente actúa  casi como un fusible común, siendo ademas también muy  fácil de sustituir  (si va soldado ) , pero,  ademas, existen 2 motivos  de peso para usar resistencias como fusibles, en equipos electrónicos:

        • En primer lugar  motivos intrínsecos al propio  diseño en las nuevas fuentes de alimentación 
        • En segundo lugar  , y no menos importante,por la  economía de medios

Veamos   mas  detalladamente de lo que estamos hablando:

Razones basada en el nuevo diseño de fuentes de baja potencia 

En las  nuevas fuentes “no aisladas de baja potencia”  cuyo diseño estudiamos en un post anterior , se de la circunstancia de que en el momento de conectarlas  al suministro eléctrico de c.a.   tienden a generar un alto flujo de corriente por fracciones de segundo, comportándose casi como un corto-circuito, circunstancia  que puede quemar  perfectamente los fusibles convencionales  razón por la que justificaría  usar resistencias como fusibles “especiales”.

Precisamente estas  fuentes de alimentación no aisladas de baja potencia  de las que ya hemos hablado en este blog  son las que se usan  intensivamente por sus dimensiones  y bajo pecio en cargadores de teléfonos móviles, rectancias, fuentes conmutadas de baja potencia y fuentes de iluminación LED, etc . 

 

Todas estas nuevas fuentes de alimentación como se ve en el diseño anterior,  ya no usan el voluminoso y caro transformador , usando en su lugar a la entrada de corriente alterna condensadores en corriente alterna, razón por la que se  las conoce como “no aisladas” porque usan y rectifican la tensión alterna  procedente de la red de suministro a corriente continua  directamente, razón por lo que  todos sus componentes deben soportar esos grandes valores de voltaje :220-380v AC.

 

Como esta tensión se aplica a un puente de diodos  y de ahí a un condensador, precisamente por causa de estos condensadores electrolíticos que se usan a la salida del puente de diodos  filtrando las AC , como  manejan altos valores de tensión; arriba de 140v y hasta 360v , debemos saber que cuando estos condensadores electrolíticos están descargados completamente, tienen una resistencia interna muy baja , lo cual hace  que  se comporten como como si estuvieran en “corto circuito”  en el momento de arranque , lo cual debido a la  gran intensidad en algunos casos podría  fundir un fusible convencional , intensidad que por cierto  sera mayor   cuanto  mas grande sea el voltaje que maneje el condensador ( y en las fuentes no aisladas, los condensadores son de 160 volts como mínimo  hasta 450 volts )

 

Un componente que actué como “amortiguador”  que impida el corto circuito por esos breves instantes  mientras el condensador se carga y alcanza el umbral para dejar de consumir mucha corriente, y al mismo tiempo permita pasar la tensión necesaria, para que el todo el circuito funcione estable,lo  cumple precisamente  las resistencias de bajo valor , si bien en en fuentes conmutadas de voltaje de potencias altas y medias,  se usa también las NTC.

Pasar por alto el corto circuito temporal, en un condensador descargado, e instalar solo un fusible, lo fundirá tarde o temprano debido a un “falso positivo”,  abriendo el circuito e impidiendo el flujo de corriente completamente, aun estando todos los componentes en buen estado .

Ademas sin el uso de esta resistencia,  el condensador se degradará mas rápido, así que esta mas que justificado  el eso de estas resistencias.

Algunos argumentarían que se puede poner un fusible antes de esta resistencia “anti corto circuito”, como en la versión con fuentes de voltaje conmutadas de mayor potencia, pero  bien calculada, la resistencia actuará de ambas maneras.

Para terminar ,no  obstante puede ser justificado  la configuración “fusible-resistencia amortiguadora” en circuitos de media potencia  ( no  en fuentes de baja potencia donde  si se podría fundir)  ,pues  en fuentes de alimentación no aisladas de grandes potencias, usar un fusible y resistencias en los condensadores electrolíticos  filtraran los  altos voltajes protegiendo así el circuito   por lo que   según los diseños  y la corriente que pueda circular la solución puede venir  de la asociación de ambos componentes 

 

Economía y reducción de costos de producción.

Para los fabricantes de equipos que requieran este tipo de fuentes no aisladas con condensadores de voltajes altos y potencias bajas, u otro tipo de circuitos donde sea factible el uso de una resistencia en lugar de un fusible, les resulta muy beneficioso minimizar costos  (por pequeños que sean) ademas sin sacrificar la calidad por lo que  prefieren perfeccionar y mejorar estas resistencia-fusible ya que  su uso esta cada vez mas demandado resultando un 40% o 50% mas económico montar resistencias  en lugar usar  fusibles.

Respecto a la naturaleza de estas resistencias de bajo valor aunque para la mayoría de los casos y fabricantes de circuitos, una resistencia común de carbón de bajo valor óhmico es mas que suficiente, algunas veces se requieren diseños de resistencias especialmente pensadas para esta función de fusible, componentes conocidos  como: “FUSISTORES”

Fusistores

   Un tipo de protección interesante de fusistor (fusible + resistor)  se encuentra en algunos aparatos de consumo como televisores, fuentes de alimentación , etc , consiste en colocar una resistencia  de bajo valor (que como hemos visto no cambia la corriente en el circuito) en serie con las principales líneas de alimentación.

Cuando la corriente supera un cierto valor, esta resistencia se sobrecalienta y el calor generado por el terminal que se propaga fundiendo el material de soldadura que tiene un sistema de resorte, como se muestra abajo. 

Hay fabricantes que ofrecen el conjunto  resistencia+fusible encapsulado a  un bajo costo como alternativa a las soluciones tradicionales para aplicaciones que requieren protección contra sobretensiones.

Existen  tres  combinaciones de serie de resistencias / fusibles de resistencia fusible:

  • FRN :Resistencias de metal / carbono, son en esencia  resistencias fusible bobinada
  • FKN :resistencias fusibles recubiertas de cemento. Ideales para aplicaciones de suministro de energía en telecomunicaciones, militares y mercados industriales que requieren un reemplazo para las resistencias de composición de carbono dentro del diseño del circuito
  • FSQ :robustas resistencias con recubrimiento de cemento y bobinado de alambre

Este tipo de componente es usada en  aplicaciones de Telecomunicaciones,electrodomésticos ,protección contra impulsos de arranque,protección contra rayos,protección de entrada para pequeñas fuentes de alimentación y cargadores de baterías,etc

En resumen  ,tanto en fuentes aisladas con características especiales, así como en otros circuitos que las requieren  debemos ser muy cuidadosos  con estas resistencias especiales , pues hay fabricantes de equipos electrónicos que usan fusistores  singulares  de este tipo y si son remplazarlas con una común de carbón, puede poner en riesgo el circuito

 

 

 Shunt

Existen otro tipo deuso de las  resistencias  de muy bajo valor óhmico y  que se pueden encontar en muchos circuitos electrónicos complejos  (especialmente en electronica de potencia) ,  y que muchas veces,  a ojos de inexpertos, aparentan estar ahí para actuar como fusibles.

 

Pero lo cierto es  que esto no es verdad  pues se colocan en circuitos complejos y grandes, básicamente  para que puedan ser usados para  mediciones de corriente y voltaje y no para actuar  como fusibles, pues las características de las resistencias Shunt, impide que se dañen o fundan ante una tensión o corriente alta, lo cual es completamente contrario al de una resistencia fusible .

 

Como vemos  en la imagen anterior , aunque parezcan otra cosa, simplemente este shunt  no es mas que  una  resistencia que se usa para medir corriente .Los tornillos grandes son para conectar los cables principales de alimentación del circuito (quedando en serie con el circuito a alimentar) y los tornillos pequeños son para conectar los hilos que van al  equipo de medida o circuito de control  correspondiente.

 

Precisamente debido a la complejidad, sofisticación , tamaño ultra reducido, costo y difícil manipulación o desarme de muchos circuitos actuales, es muy práctico poder revisar y dar diagnósticos exactos a dichos circuitos y equipos.,y para hacer algo fácil esta labor, los diseñadores e ingenieros agregan estas resistencias SHUNT, y de este modo puedan tomarse mediciones muy precisas que con algunos cálculos,  se conoce certeramente si en el circuito existe flujo de corriente adecuado, valores de voltajes correctos o si de plano ese circuito no está siendo alimentado,pero recuerden: este tipo de resistencias no actúan como fusibles.pues como todos los componentes electrónicos ,( aunque  en raras ocasiones)  puedan dañarse su función principal es ayudar a verificar y obtener mediciones precisas en equipos de alta complejidad y difícil maleabilidad por tamaños ultra reducidos o todo  lo  contrario de  demasiado grandes.

 

 

Reconocimiento de colores con Pixy

¿Alguna vez quiso que su microcontrolador detectara imágenes sin consumir toda la velocidad de su procesador? ¿O desearía tener un sensor de imagen que no estuviera limitado a RGB, pero que también pudiera sentir el tono y la saturación? ¿O simplemente desea un sensor de cámara de código abierto y arranque rápido con un nombre atractivo?


En efecto, si no tenemos demasiado tiempo  para experimentar con algoritmos de reconocimiento de imágenes con opencv o similares ,por ejemplo para integrar  la visión artificial en un robot que siga una linea, hay un producto llamado   Pixy2    que puede hacer todo eso y mas. Además, esta segunda version,  es más rápida, más pequeña y más potente que el Pixy original, agregando algoritmos de seguimiento / seguimiento de línea, así como otras características  (de  hecho la velocidad de procesamiento  en tiempo real   se ha mejorado en 60 fotogramas por segundo)

Como  puede  suponer  Pixy2  incorpora una cámara  y  una fuente de luz , y con todo  este hw puede detectar líneas, intersecciones y pequeños códigos de barras, diseñados para robots que siguen líneas.

Precisamente  por la utilidad de integrarlo en pequeños robots ,se han agregado algoritmos de seguimiento a la detección de objetos basada en color. Ademas tampoco descuidan su conexión con otras placas pues proporcionan bibliotecas mejoradas y simplificadas para Arduino, Raspberry Pi.

Veamos a continuación   mas detalles sobre esta interesante  placa

 

Hablamos de una placa  bastante pequeña(de unos 8x7cm) ,  tanto que incluso se puede conectar varios Pixy2 a un microcontrolador pues  Pixy2 es más pequeño, más rápido y más potente que el Pixy original. 

Este sistema de visión inteligente plug-and-play para Arduino-compatibles, Raspberry Pi u otros microcontroladores / sistemas de computadora.

 Al igual que su predecesor, Pixy2 puede aprender a detectar objetos que le enseñe, simplemente presionando un botón. Además, Pixy2  implementa nuevos algoritmos que detectan y rastrean las líneas para su uso con robots de seguimiento de línea (  incluso con  los nuevos algoritmos también pueden detectar intersecciones y “señales de tráfico”.)

 

Aunque la nueva cámara puede funcionar hasta 60 fps, se  ejecuta aproximadamente la mitad de esa velocidad y existen múltiples opciones para el ajuste fino del reconocimiento de objetos, todo  ello  para  mejorar la precisión   el reconocimiento de imágenes   ya que la cámara no esta diseñada para la grabación de imágenes pero si  pasará el centro X, Y, y el ancho, la altura de un objeto, y lo hace muy bien.

La nueva version  Pixy2  lleva  modo de seguimiento de línea y fuente de luz LED integrada simplificando  su programación recibiendo solo los objetos que le interesan.

Se puede utilizar el controlador que desee pues incluye bibliotecas de software para Arduino, Raspberry Pi y BeagleBone Black.

Si lo conectamos a  un pc, podemos instalar la utilidad de configuración (se ejecuta en Windows, MacOS y Linux) asi como el sw  Pixy2 CMUCam5, un sensor de imagen para su microcontrolador que puede enseñarle qué buscar.También es una gran mejora con respecto a las versiones anteriores de Pixy CMUCam, que agrega una mayor flexibilidad cuando se trata de cambios de iluminación y exposición. También puede recordar siete firmas de colores diferentes, encuentre cientos de objetos en a visión del robot es fácil: presione el botón para enseñarle a Pixy2 un objeto

Por ello el   Pixy2   es un sensor de imagen con un potente procesador que puede programar para enviar solo la información que está buscando para que su microcontrolador no se vea abrumado por los datos  ya que Pixy2 exporta su información en una variedad de formas útiles (UART serie, SPI, I2C, salida digital o salida analógica) para que su microcontrolador o microcomputadora pueda comunicarse fácilmente mientras realiza otras tareas.

Las coordenadas  enviadas  desde   Pixy2  pueden decirle a su robot qué hacer, como girar a la izquierda, girar a la derecha, disminuir la velocidad, etc. Y Pixy2 hace todo esto a 60 cuadros por segundo, para que su robot también pueda ser rápido. Pixy2 utiliza el tono y la saturación como su principal medio de detección de imágenes, en lugar del RGB normal. Esto significa que la iluminación o la exposición no afectarán la detección de Pixy2 de un elemento, lo cual es un problema frustrante con muchos sensores de imagen. .

 

 

Vamos  a ver un ejemplo publicado en instructables.com  de un interesante  robot seguidor que implementa  esta tecnologia  creado  por chaabani houssem 

Necesitaremos  al menos los  siguientes componentes:

  • 1 Arduino mega (o en su defecto un Arduno uno o Arduino nano … )
  • Pixy2  
  • 2 motores  paso  a paso
  • 2 ruedas y sus engranajes 
  • Un l293d
  • Una batería de  9v  (o   cualquiera que pueda reciclar 

 

Podemos  enseñar cualquier objeto a pixy a través de este enlace:

http: //cmucam.org/projects/cmucam5/wiki/Teach_Pixy …

Para controlar  los dos motores usaremos un famoso controlador , el CI   l293d

Este circuito integrado     de 16 pines ofrece los siguintes carasterciticas: 

  • Capacidad del canal: 600 mA de corriente de salida / canal.
  • Sistema de activación.
  • Pico de salida de corriente: 1,2 A / canal (no repetitivo).
  • Protección contra sobretemperatura.
  • Entrada lógica “0” a 1,5 V (alta inmunidad al ruido).

Picture of Build the Robot

Conectemos  los pines del L293D   a un  Arduino   de la siguiente manera :

  • Pin  1 al pin Arduino 2.
  • Pin 2 al pin 3 de Arduino.
  • Entrada 3 al pin 4 de Arduino.
  • Entrada 4 al pin Aduino 5.

Con estas conexiones ya  se puede probar el robot como verificar el avance, probar el giro a la izquierda o  el giro a la derecha y la parada.

Si todo va  bien ahora ya puede agregar pixy, pero para que  funcione el robot  antes tendrá que  programar Arduino  para  que  en función de la  salida de  Pixy2   de las  ordenes oportunas a los motores

Como  ejemplo de código  vamos a ver  una demostracion de como podemos  controlar lso dos motores usando  unicamente la informacion apoportada por Pixy2  

 

//definición de  puertos  que se usaran

int mg2 = 4;

int mg1 = 5;

int md1 = 3;

int md2 = 2;

int enag= 6;

//librerias  externas

#include <Wire.h>

#include <Pixy.h>

//llamada a las primitivas de Pixy

Pixy pixy;




//definición de puertos 

void setup()
{
pinMode(enag, OUTPUT);

pinMode(md1, OUTPUT);

pinMode(md2, OUTPUT);

pinMode(mg1, OUTPUT);

pinMode(mg2, OUTPUT);

//sacamos  por consola de Arduino mensajes de depuración

Serial.begin(9600);

Serial.print("Arrancando...\n");

pixy.init();

}







//comienzo del programa  principal

void loop()
{

static int i = 0;

int j;

uint16_t blocks;

char buf[32];


blocks = pixy.getBlocks();

if (blocks)

{
i++;

// Hacer esto cada 50 cuadros porque si se  supero colapsaria Arduino


if (i%50==0)

{
sprintf(buf, "Detected %d:\n", blocks);
Serial.print(buf);


//bucle for que recorre todos lox bloques enviados por Pixy
for (j=0;  j<blocks;    j++) 

{

sprintf(buf, " block %d: ", j);

Serial.print(buf);  //sacamos las salida por consola

pixy.blocks[j].print();

}


}

if((pixy.blocks[0].x>120)&&(pixy.blocks[0].x<190))
{
go();  //avanzar
}

if((pixy.blocks[0].x<120) && (pixy.blocks[0].x>10))
{

gauche();//girar a derecha

}

if(pixy.blocks[0].x>190)
{

droite();} //girar  a izda
}

else
{

o9if();//hacia atras

}
}






//giro a la derecha
void droite()
{
analogWrite(enag,210);
analogWrite(mg1,0);
analogWrite(mg2,0);
analogWrite(md1,255);
analogWrite(md2,0);
delay(30);
}




//giro a al izda

void gauche()
{
analogWrite(enag,210);
analogWrite(mg1,255);
analogWrite(mg2,0);
analogWrite(md1,0);
analogWrite(md2,0);
delay(30);
}




//hacia atras
void o9if()

{
analogWrite(mg1,0);
analogWrite(mg2,0);
analogWrite(md2,0);
analogWrite(md1,0);
delay(30);
}

//avanzar

void go ()
{
analogWrite(enag,210);
analogWrite(mg1,255);
analogWrite(mg2,0);

analogWrite(md1,255);
analogWrite(md2,0);
delay(30);
}

 

Y   ahora en un vídeo podemos ver el robot   funcionando:

 

En general,   Pixy2   es un excelente sistemas de visión inteligente introductorio  pues  podemos dar seguimiento de objetos a un  robot de manera mucho más fácil que usar un pc de una sola placa con OpenCV (más requisitos de menor potencia) pues se conecta fácilmente a un Arduino Nano o Uno (entre otros sistemas)  gracias  a los ejemplos de código que proporcionan que  ayudan a ponerlo en marcha rápidamente .Ademas es  muy fácil configurarlo utilizando las instrucciones en su sitio web pues hay ejemplos integrados en su software.