Pelacakan fokus untuk SLR. Servo Raspberry Pi + HC-SR04 + SG90

Posting ini menjelaskan bagaimana suatu malam fokus pelacakan untuk cermin terbuat dari kotoran dan tongkat. Video tentang apa yang terjadi:


Kata Pengantar


Raspberry berlebihan di sini, tidak diragukan lagi. Tetapi jika kita berbicara tentang perangkat yang lebih kompleks di mana fokus pelacakan hanya salah satu fungsi, lalu mengapa tidak.

Saya tidak menemukan sesuatu yang baru, saya hanya mengambilnya dan melakukannya dalam satu malam. Saya suka hasilnya, jadi saya ingin berbagi dengan komunitas.

Mekanika, pasang


Bagi saya, mekanik selalu merupakan batu sandungan. Menemukan kotoran dan tongkat di bawah lengan Anda yang kompatibel satu sama lain, sementara masih memungkinkan Anda untuk mencapai tujuan Anda - bisa jadi sulit. Tapi kali ini saya beruntung.

Prototipe terlihat seperti ini:



Sebagai roda gigi pada poros server, saya menggunakan tutup dari kotak susu tempat saya menempelkan sisa kerah gigi untuk lensa SLR. Tutup susu dalam kasing saya ternyata merupakan diameter optimal untuk penyesuaian pada lensa 50mm. Saya menempelkan "roda gigi" dengan bantuan cyanoacrylate dengan soda ke salah satu lengan ayun yang dipasok dengan servo dan mengacaukannya. Untuk memasang struktur ke DSLR, Anda perlu sekrup dengan ulir inci, saya menemukan satu dari tripod gurita.

Secara umum, desain entah bagaimana mewujudkan dirinya dalam kenyataan:



Hari ini, sulit tanpa screed. Pita biru berakhir dan saya harus memasang sensor pada pita kertas.

Elektronik


Saya memiliki Raspberry Pi 3 sebagai otak saya. Saya memberi daya pada servo dengan unit catu daya 24VDC yang terpisah dengan konverter Step-down DC-DC pada sirkuit mikro LM2596 dengan output 7.2V.
Algoritma kerja mudah untuk dipermalukan. Ada umpan balik pada jarak ke objek dari pencari jangkauan ultrasonik HC-SR04, yang diubah menjadi sudut rotasi servo SG-90. "Gigi" dipasang pada sumbu servos, yang memutar lensa melalui gigi pinion, mengatur panjang fokus.

Kode


Menghubungkan sensor ultrasonik dijelaskan di sini . Kontrol servo dilakukan menggunakan perangkat keras PWM, saya mengambil pengaturan di sini .

Kode itu ternyata sangat sederhana, tetapi ini hanya permulaan dan tidak ada batas untuk kesempurnaan.

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

Untuk menentukan korespondensi sudut rotasi servo dengan panjang fokus, saya melakukan beberapa pengukuran kalibrasi, sebagai hasilnya saya mendapatkan ketergantungan linear pada bidang yang diinginkan (40-70 cm), sisanya diambil sebagai fokus hingga tak terbatas.

Kesimpulan


Menurut pendapat saya, bahkan server SG-90 termurah mampu banyak, batang 1,2kg / cm untuk bayi seperti itu, dan bahkan dengan kecepatan seperti itu - itu keren, terutama untuk harga 1,5 dolar. Hal yang sama berlaku untuk pengintai ultrasonik.

P.S. Server dapat dikontrol secara terpisah dari sensor, misalnya, membuat transisi cepat dari satu objek ke objek lain dengan panjang fokus berbeda. Juga, untuk meningkatkan sistem, Anda dapat menambahkan filter yang akan mengkompensasi kekurangan dalam pengukuran sensor ultrasonik.

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


All Articles