Rastreando o foco da SLR. Servo Raspberry Pi + HC-SR04 + SG90

Este post descreve como em uma noite um foco de rastreamento para um espelho foi feito de merda e paus. Vídeo do que aconteceu:


Prefácio


Framboesas são redundantes aqui, sem dúvida. Mas se estamos falando de um dispositivo mais complexo no qual o foco de rastreamento é apenas uma das funções, por que não?

Não inventei nada de novo, apenas peguei e fiz em uma noite. Gostei do resultado, então quero compartilhar com a comunidade.

Mecânica, montagem


Para mim, a mecânica é sempre uma pedra de tropeço. Encontrar merda e paus debaixo dos braços que sejam compatíveis entre si, enquanto ainda permite que você atinja seu objetivo - pode ser difícil. Mas desta vez eu tive sorte.

O protótipo é mais ou menos assim:



Como uma engrenagem no eixo do servidor, usei a tampa da caixa de leite na qual colei o restante do colar da engrenagem para a lente SLR. A tampa do leite, no meu caso, acabou sendo o diâmetro ideal para o ajuste em uma lente de 50 mm. Colei o “equipamento” com a ajuda do cianoacrilato com refrigerante em um dos braços do balancim fornecido com o servo e parafusei-o. Para conectar a estrutura à DSLR, você precisa de um parafuso com uma rosca de polegada. Encontrei um de um tripé de polvo.

Em geral, o design de alguma forma se incorporou na realidade:



Hoje é difícil sem mesas. A fita azul terminou e eu tive que montar o sensor na fita de papel.

Eletrônicos


Eu uso o Raspberry Pi 3 como meu cérebro.Ligo o servo com uma fonte de alimentação separada de 24VCC com um conversor DC-DC Step Down em um microcircuito LM2596 com saída de 7.2V.
O algoritmo de trabalho é simples de desonrar. Há feedback sobre a distância ao objeto do telêmetro ultrassônico HC-SR04, que é convertido em um ângulo de rotação do servo SG-90. Uma “engrenagem” é fixada no eixo dos servos, que gira a lente através da engrenagem do pinhão, definindo a distância focal.

Código


A conexão de um sensor ultrassônico é descrita aqui . O controle servo é feito usando hardware PWM, tirei as configurações aqui .

O código acabou sendo muito modesto, mas este é apenas o começo e não há limite para a perfeição.

#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 a correspondência do ângulo de rotação do servo com a distância focal, fiz várias medidas de calibração, como resultado, obtive uma dependência linear da área de interesse (40-70 cm), o restante foi levado como foco para o infinito.

Conclusão


Na minha opinião, mesmo os servidores SG-90 mais baratos são capazes de muito, uma haste de 1,2 kg / cm para um bebê assim e mesmo com essa velocidade - isso é legal, especialmente por um preço de 1,5 dólar. O mesmo vale para o telêmetro ultrassônico.

P.S. O servidor pode ser controlado separadamente do sensor, por exemplo, faça transições rápidas de um objeto para outro com diferentes distâncias focais. Além disso, para melhorar o sistema, você pode adicionar um filtro que compensará as deficiências na medição do sensor ultrassônico.

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


All Articles