Suivi du focus pour SLR. Servo Raspberry Pi + HC-SR04 + SG90

Cet article décrit comment en un soir un focus de suivi pour un miroir a été fait de merde et de bùtons. Vidéo de ce qui s'est passé:


Préface


Les framboises sont redondantes ici, sans aucun doute. Mais si nous parlons d'un appareil plus complexe dans lequel le focus de suivi n'est qu'une des fonctions, alors pourquoi pas.

Je n'ai rien trouvé de nouveau, je l'ai juste pris et l'ai fait en une soirée. J'ai aimé le résultat, donc je veux partager avec la communauté.

Mécanique, montage


Pour moi, la mĂ©canique est toujours une pierre d'achoppement. Trouver de la merde et des bĂątons sous vos bras qui sont compatibles les uns avec les autres, tout en vous permettant d'atteindre votre objectif - peut ĂȘtre difficile. Mais cette fois, j'ai eu de la chance.

Le prototype ressemble Ă  ceci:



Comme engrenage sur l'axe du serveur, j'ai utilisĂ© le couvercle de la boĂźte Ă  lait sur laquelle j'ai collĂ© le reste du collier d'engrenage pour l'objectif SLR. Le bouchon de lait dans mon cas s'est avĂ©rĂ© ĂȘtre le diamĂštre optimal pour un ajustement sur un objectif de 50 mm. J'ai collĂ© le «train» Ă  l'aide de cyanoacrylate avec de la soude sur l'un des culbuteurs fournis avec le servo et je l'ai vissĂ©. Pour fixer la structure au reflex numĂ©rique, vous avez besoin d'une vis avec un filetage en pouces, j'en ai trouvĂ© une Ă  partir d'un trĂ©pied de pieuvre.

En général, le design s'est en quelque sorte incarné dans la réalité:



Aujourd'hui, c'est difficile sans chape. Le ruban bleu s'est terminé et j'ai dû monter le capteur sur du papier adhésif.

Électronique


J'utilise le Raspberry Pi 3 comme cerveau. J'alimente le servo avec une alimentation séparée de 24 V CC avec un convertisseur abaisseur CC-CC sur un microcircuit LM2596 avec une sortie de 7,2 V.
L'algorithme de travail est simple à déshonorer. Il y a un retour sur la distance à l'objet du télémÚtre à ultrasons HC-SR04, qui est converti en un angle de rotation du servo SG-90. Un «engrenage» est fixé sur l'axe des servos, qui fait tourner la lentille à travers le pignon, définissant la distance focale.

Code


La connexion d'un capteur à ultrasons est décrite ici . Le contrÎle servo se fait en utilisant du matériel PWM, j'ai pris les paramÚtres ici .

Le code s'est avéré trÚs modeste, mais ce n'est que le début et il n'y a pas de limite à la perfection.

#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() 

Pour dĂ©terminer la correspondance de l'angle de rotation du servo Ă  la distance focale, j'ai fait plusieurs mesures d'Ă©talonnage, en consĂ©quence j'ai reçu une dĂ©pendance linĂ©aire sur la zone d'intĂ©rĂȘt (40-70 cm), le reste a Ă©tĂ© pris comme foyer Ă  l'infini.

Conclusion


À mon avis, mĂȘme les serveurs SG-90 les moins chers sont capables de beaucoup, une tige de 1,2 kg / cm pour un tel bĂ©bĂ©, et mĂȘme avec une telle vitesse - c'est cool, surtout pour un prix de 1,5 dollar. Il en va de mĂȘme pour le tĂ©lĂ©mĂštre Ă  ultrasons.

P.S. Le serveur peut ĂȘtre contrĂŽlĂ© sĂ©parĂ©ment du capteur, par exemple, pour effectuer des transitions rapides d'un objet Ă  un autre avec des focales diffĂ©rentes. De plus, pour amĂ©liorer le systĂšme, vous pouvez ajouter un filtre qui compensera les lacunes de la mesure du capteur Ă  ultrasons.

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


All Articles