Enfoque de seguimiento para SLR. Raspberry Pi + HC-SR04 + SG90 servo

Esta publicación describe cómo en una noche un foco de seguimiento para un espejo estaba hecho de mierda y palos. Video de lo sucedido:


Prólogo


Las frambuesas son redundantes aquí, sin duda. Pero si estamos hablando de un dispositivo más complejo en el que el enfoque de seguimiento es solo una de las funciones, ¿por qué no?

No se me ocurrió nada nuevo, simplemente lo tomé y lo hice en una noche. Me gustó el resultado, así que quiero compartirlo con la comunidad.

Mecánica, montaje


Para mí, la mecánica siempre es un obstáculo. Encontrar mierda y palos debajo de los brazos que sean compatibles entre sí, y que a la vez te permitan alcanzar tu objetivo, puede ser difícil. Pero esta vez tuve suerte.

El prototipo se parece a esto:



Como engranaje en el eje del servidor, utilicé la tapa de la caja de leche en la que pegué el resto del collar del engranaje para la lente SLR. La tapa de leche en mi caso resultó ser el diámetro óptimo para el ajuste en una lente de 50 mm. Pegué el "engranaje" con la ayuda de cianoacrilato con soda a uno de los balancines suministrados con el servo y lo atornillé. Para unir la estructura a la DSLR, necesita un tornillo con una rosca de pulgada, encontré uno de un trípode de pulpo.

En general, el diseño de alguna manera se materializó en la realidad:



Hoy es difícil sin reglas. La cinta azul terminó y tuve que montar el sensor en cinta de papel.

Electrónica


Utilizo Raspberry Pi 3 como mi cerebro. Alimento el servo con una unidad de fuente de alimentación de 24 VCC separada con un convertidor reductor DC-DC en un microcircuito LM2596 con salida de 7.2V.
El algoritmo de trabajo es simple de deshonrar. Hay información sobre la distancia al objeto desde el buscador de rango ultrasónico HC-SR04, que se convierte en un ángulo de rotación del servo SG-90. Se fija un "engranaje" en el eje de los servos, que gira la lente a través del engranaje de piñón, estableciendo la distancia focal.

Código


La conexión de un sensor ultrasónico se describe aquí . El servocontrol se realiza utilizando hardware PWM, tomé la configuración aquí .

El código resultó ser muy modesto, pero esto es solo el comienzo y no hay límite para la perfección.

#Libraries import RPi.GPIO as GPIO import time from subprocess import call from RPIO import PWM servo = PWM.Servo() #GPIO Mode (BOARD / BCM) GPIO.setmode(GPIO.BCM) #set GPIO Pins GPIO_TRIGGER = 18 GPIO_ECHO = 24 #set GPIO direction (IN / OUT) GPIO.setup(GPIO_TRIGGER, GPIO.OUT) GPIO.setup(GPIO_ECHO, GPIO.IN) def distance(): # set Trigger to HIGH GPIO.output(GPIO_TRIGGER, True) # set Trigger after 0.01ms to LOW time.sleep(0.00001) GPIO.output(GPIO_TRIGGER, False) StartTime = time.time() StopTime = time.time() # save StartTime while GPIO.input(GPIO_ECHO) == 0: StartTime = time.time() # save time of arrival while GPIO.input(GPIO_ECHO) == 1: StopTime = time.time() # time difference between start and arrival TimeElapsed = StopTime - StartTime # multiply with the sonic speed (34300 cm/s) # and divide by 2, because there and back distance = (TimeElapsed * 34300) / 2 return distance if __name__ == '__main__': try: while True: dist = distance() if dist <=40: focus = 900 elif dist <= 70: focus = 900+int(dist-40)*20 else: focus = 2000 servo.set_servo(23, focus) print ("Measured Distance = %.1f cm, focus = %3i" % (dist, focus)) time.sleep(0.1) # Reset by pressing CTRL + C except KeyboardInterrupt: print("Measurement stopped by User") servo.stop_servo(23) GPIO.cleanup() 

Para determinar la correspondencia del ángulo de rotación del servo con la longitud focal, realicé varias mediciones de calibración, como resultado recibí una dependencia lineal del área de interés (40-70 cm), el resto se tomó como foco hasta el infinito.

Conclusión


En mi opinión, incluso los servidores SG-90 más baratos son capaces de mucho, una caña de 1.2 kg / cm para tal bebé, e incluso con tal velocidad, eso es genial, especialmente por un precio de 1.5 dólares. Lo mismo ocurre con el telémetro ultrasónico.

P.S. El servidor se puede controlar por separado del sensor, por ejemplo, hacer transiciones rápidas de un objeto a otro con diferentes distancias focales. Además, para mejorar el sistema, puede agregar un filtro que compense las deficiencias en la medición del sensor ultrasónico.

Source: https://habr.com/ru/post/es410917/


All Articles