Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Un sensor de proximidad analógico simple con interfaz digital (para Raspberry Pi) [última actualización:7 de febrero de 2014]

Raspberry Pi tiene un chip Broadcom BCM2835, que controla 26 pines GPIO (entrada / salida de propósito general). Hay una biblioteca C o un paquete de python RPi.GPIO disponible en línea que se puede usar para controlar los pines. El paquete RPi.GPIO se incluye de forma predeterminada en la mayoría de los sistemas Raspberry Pi, como Raspbian, una versión RPi del sistema Debian Linux.

Un inconveniente de RPi, en comparación con arduino, es que no tiene ningún pin analógico. Todos los pines GPIO son puramente digitales. Por ejemplo, si el pin A es un pin de salida, solo puede emitir BAJO (0 V) o ALTO (3,3 V), representado como 0 o 1. Si el pin A es un pin de entrada, para cualquier voltaje por debajo de 0,8 V aplicado en el pin A , lo toma como BAJO o 0; para cualquier voltaje por encima de 1.3V (¡sorprendentemente bajo en realidad!), lo toma como ALTO o 1 [ref:RPi GPIO].
En el mundo real, sin embargo, el 0 o 1 solo ocurre raramente. Siempre obtenemos información que puede tener un valor continuo en su rango. Por ejemplo, la temperatura puede ser 10 ° C o 50 ° F, o 100 ° C o 212 ° F. Este número contiene más información que simplemente "frío" o "caliente". Una distancia puede ser de 2 cm o 10 m, y no basta con saber solo "cerca" o "lejos".

Existen algunos métodos para superar este inconveniente. RPi admite la interfaz SPI o I2C, por lo que podemos usar algún convertidor externo de analógico a digital (ADC) y usar la interfaz SPI o I2C para obtener una señal cuasi analógica a través de estos ADC, como MCP3008, TLC549, MCP23017, etc. Estos chips Suelen costar varios dólares. Sin embargo, con sensores comerciales adicionales, la pieza completa puede costar más de $ 20 a $ 30, y es difícil hacer que el sistema sea compacto. Para un proyecto robótico, generalmente se necesita más de un sensor, y el costo puede aumentar fácilmente.

De hecho, en muchas situaciones, es posible evitar el uso de estos dispositivos externos y aún así obtener analógicos señales a través de la digital alfileres!

La clave es convertir la señal analógica en duración de tiempo. ¡Porque el tiempo siempre es analógico!

Construyo un sensor de proximidad infrarrojo simple usando varios LED infrarrojos, un fototransistor, un transistor NPN 2N3904, un capacitor cerámico de 100nF y varias resistencias de baja potencia. Y puedo obtener una lectura analógica.

Todos los elementos se encuentran entre los más baratos del mercado electrónico.

Realmente no importa qué LED, fototransistor o transistores NPN se estén utilizando. Son prácticamente iguales.

Lo único que podría importar un poco es el capacitor de 100nF (0.1uF). Usé uno de cerámica de bajo perfil, que probablemente no sea la mejor opción. Un condensador de cerámica o de película de clase 1 será más adecuado aquí.

Conecte los cables + 5V y GND a una fuente de alimentación externa de 5V, también conecte el cable GND a la tierra de los pines GPIO de la Raspberry Pi. Elija un pin GPIO, digamos, Pin A como disparador y conéctelo al cable disparador. Elija otro pin GPIO, digamos, Pin B, como entrada / salida de señal y conéctelo al cable de SALIDA.

Para medir la distancia de un objeto, enviamos una señal de disparo para activar los LED infrarrojos. La luz emitida por estos LED es luego reflejada por el objeto frente al sensor. El fototransistor del medio recoge la luz reflejada y genera una corriente proporcional. Esta corriente se usa para integrar el voltaje a través del capacitor (I =CdV / dt). Al monitorear el tiempo que tarda el voltaje del capacitor en alcanzar cierto umbral, tenemos una idea de cuánta corriente generó el fototransistor o, de manera equivalente, cuánta luz se reflejó. Aparentemente, cuanto más cerca está el objeto, más luz reflejada está. Al calibrar cuidadosamente la sincronización del sensor, deberíamos poder obtener una medición bastante precisa de la distancia.

Aquí está el secuencial detallado de las operaciones. Ponga a cero el condensador

Primero configure el Pin B para que sea un pin de salida y configúrelo en cero.

Configuración de GPIO (PIN_B, GPIO.OUT)
Salida de GPIO (PIN_B, 0)
time.sleep (0.01)

Esto descargará cualquier voltaje residual en el capacitor. Tenga en cuenta que el tiempo RC para descargar el condensador es t =RC =500ohm * 100nF =50 us =0.00005 seg. Al mantener cero voltios en el pin B durante 200RC, nos aseguramos de que el capacitor esté completamente descargado (el voltaje residual debe ser e-200 =10-87 veces el voltaje residual original) .2. Establecer el pin B como entrada

Ahora usamos el Pin B como pin de entrada para obtener datos del fototransisto.
GPIO.setup (PIN, GPIO.IN)

3. Encienda los LED

Es hora de encender los LED infrarrojos.

Configuración de GPIO (PIN_A, GPIO.OUT)
Salida de GPIO (PIN_A, 1)

Esto establecerá el voltaje del pin de disparo en 3.3V. Dado que el nodo BE de 2N3904 cae 0,7 V, el voltaje en R1 es 2,6 V. La corriente a través de R1 es entonces I =2.6V / 4.3kΩ =0.6mA. 2N3904 luego amplifica esta corriente en ~ 150 veces, lo que resulta en una corriente de ~ 100 mA desde su colector al emisor. Cada uno de los LED conducirá aproximadamente 50 mA durante un corto período de tiempo. Cronometraje de la duración del pin B restante BAJO

Comience a medir cuánto tarda el capacitor en alcanzar el umbral de RPi para que el pin B se vuelva ALTO

contador =0
t1 =hora.clock () * 1000
while (GPIO.input (PIN_B) ==0) &(contador <1e4):
contador =contador + 1
deltat=time.clock()*1000-t1

deltat es el tiempo de duración del pin B que permanece BAJO. Dado que deltat es proporcional al recíproco de la corriente del fototransistor (o cantidad de luz reflejada ), y la corriente del fototransistor es aproximadamente proporcional al recíproco de la distancia , deltat es aproximadamente proporcional a la distancia .
deltat∝1I∝1light∝distance

El término (contador <1e4) es para evitar la situación de que se tarda demasiado en integrar el condensador debido a una corriente de fototransistor extremadamente baja o, de manera equivalente, a una distancia infinita.

Para obtener más detalles:un sensor de proximidad analógico simple con interfaz digital (para Raspberry Pi) última actualización 7 de febrero de 2014]


Proceso de manufactura

  1. Mide temperaturas con un sensor DS18B20 de 1 cable y Raspberry Pi
  2. Sensor de temperatura de 1 cable DS1820 en Raspberry Pi (GPIO directamente)
  3. La integración de los datos del sensor con el microprocesador Raspberry Pi
  4. Sensor ultrasónico (HC-SR04) + Raspberry Pi
  5. Sensor de seguimiento de línea con RPi
  6. Lectura de sensores analógicos con un pin GPIO
  7. Sistema de sensor de movimiento por infrarrojos de bricolaje para Raspberry Pi
  8. Sensores analógicos sin entradas analógicas en la Raspberry Pi
  9. Sensor de termómetro digital de 1 cable Raspberry Pi (DS18B20)
  10. Sensor de pasillo digital Raspberry Pi en JAVA
  11. Tutorial de Contador Geiger - Placa de sensor de radiación para Raspberry Pi