ADC ve Raspberry PI bağlantısı

Herkese merhabalar, uzun bir aradan sonra tekrar birlikteyiz. Öncelikle depremden dolayı kaybettiklerimizin mekanı cennet, hayatta kalanlara sabır diliyorum.

Projemizde bulunan akım voltaj dönüştürücüyü değiştirmiş bulunmaktayız. HW-685 4-20mA – 0-5V dönüştürücüsünü kullanmaya başladık. Bunun asıl sebebi önceki devremiz bazen çalışıyor bazen çalışmıyor olmasıydı, yapılan lehimlemede sorun olduğunu düşünüyorum. HW-685 kullanımı kolay sadece konfigürasyon işlemi biraz uğraştırdı, aşağıdaki linkten daha fazla bilgi edinebilirsiniz.

HW-685

Projemizde kullanılan ADC hocamız tarafından bize verilmiştir(Raspberry Pi High-Precision AD/DA Expansion Board). Bu ADC’yi kullanabilmek için özel kodlara ihtiyaç duymaktayız. Aşağıdaki linklere göz atınız.

Şimdi kodu devremize uyarlayalım;

from time import sleep
import ADS1256
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)

#Motor Pinleri
GPIO.setmode(GPIO.BCM)
RPWM = 12              #İleri PWM pinleri
RPWM2 = 13

#Motorlar
GPIO.setup(RPWM,GPIO.OUT)
pwm_m1=GPIO.PWM(RPWM,100)

GPIO.setup(RPWM2,GPIO.OUT)
pwm_m2=GPIO.PWM(RPWM2,100)

pwm_m1.start(0)
pwm_m2.start(0)
try:
    ADC = ADS1256.ADS1256()
    ADC.ADS1256_init()

    while(1):
        ADC_Value = ADC.ADS1256_GetAll() #ADC verileri alınıyor, voltaj olarak
        print ("0 ADC = %lf"%(ADC_Value[0]*5.0/0x7fffff))
        print ("1 ADC = %lf"%(ADC_Value[1]*5.0/0x7fffff))
        print ("2 ADC = %lf"%(ADC_Value[2]*5.0/0x7fffff))
        print ("3 ADC = %lf"%(ADC_Value[3]*5.0/0x7fffff))
        print ("4 ADC = %lf"%(ADC_Value[4]*5.0/0x7fffff))
        print ("5 ADC = %lf"%(ADC_Value[5]*5.0/0x7fffff))
        print ("6 ADC = %lf"%(ADC_Value[6]*5.0/0x7fffff))
        print ("7 ADC = %lf"%(ADC_Value[7]*5.0/0x7fffff))
        #Dutycycle değeri için giriş akım değerine bağlı olarak 0-100 arasında                                # değişmektedir.  
        hiz = int(((ADC_Value[3]*5.0/0x7fffff)*21))
        hiz2 = int(((ADC_Value[4]*5.0/0x7fffff)*21))
        print ("Su Motoru1 Hız = %lf"%(hız))
        print ("Loadcell1 Akım = %lf"%((ADC_Value[3]/0x7fffff)*20.40))
        print ("Su Motoru2 Hız = %lf"%(hiz2)
        print ("Loadcell2 Akım = %lf"%((ADC_Value[4]/0x7fffff)*20.40))
        sleep(.2)
        
        pwm_m1.ChangeDutyCycle(hiz)
        pwm_m2.ChangeDutyCycle(hiz2)
     
        print ("\33[9A")
        sleep(.1)

except KeyboardInterrupt:
    GPIO.cleanup()
    print ("\r\nProgram end     ")
    exit()

Bu koddaki amaç değişen giriş akımına bağlı olarak motor hızının artmasıdır. Henüz test aşamalarında olduğumuz için su tanklarının üzerinde kullanmadık, iki adet DC motor aldık ve kodu çalıştırdık sonuçlar harikaydı. Giriş akımına bağlı olarak motorların hızlarını kontrol edebildik. Sıradaki hedefimiz su tankı!

Sonuç olarak test işlemleri başarılı bir şekilde tamamlandı sırada su tankı ile bağlantı işlemleri var sonraki yazıyı daha hızlı yazmaya çalışacağım herkese iyi günler.

Yorum bırakın