رباتیک و هوافضا

راه اندازی سنسور خمش با استفاده از رزبری پای

به نام خدا

راه اندازی سنسور خمش با استفاده از رزبری پای

در این پروژه قصد داریم تا یک سنمسور اندازه گیری مقدار خمش را با استفاده از رزبری پای راه اندازی کنیم. هنگامی نیرویی به سنسور وارد می شود و ن را دچار خمش می کند مقدار این هم شدگی بر روی ال سی دی نمایش داده می شود.

 

قطعات مورد نیاز راه اندازی سنسور خمش با استفاده از رزبری پای :

هر مدل رزبری پای

آی سی ADC0804

سنسور خمش

مقاومت و خازن

برد برد

  مبدل آنالوگ به دیجیتال یک کاناله ی هشت بی تی ADC0804 :

قبل از اینکه به جلو برویم ابتدا بیایید در مورد این مبدل بیشتر بدانیم. این مبدل یک کاناله است به این معنی که می تواند یک مقدار آنالوگ را به هشت بیت دیجیتال تبدیل کند. این فرمت هشت بیتی توسط رزبری پای قابل پردازش است و مقداری بین ۰ تا ۲۵۵ را خواهد داشت. همانطور که در شکل زیر قابل مشاهده است پین های DB0 تا DB7 برای این مقادیر می باشند. 

 

نکته ی مهم دیگر این است که این مبدل در ۵ ولت کار می کند و یک سیگنال منطی ۵ ولتی ایجاد می کند. در شکل زیر یک برد کامل از این نوع مبدل را مشاهده می کنید

شماتیک و توضیحات مدار راه اندازی سنسور خمش با استفاده از رزبری پای :

در شکل زیر تمامیه اتصالات لازم برای ساخت این مدار را مشاهده می کنید.

بیشتر بخوانید...  اندازه گیری دما و رطوبت به طور همزمان با استفاده از سنسور DHT11 و رزبری پای

 

مدار راه اندازی سنسور خمش با استفاده از رزبری پای ممکن است مقداری پیچیده بنظر بیاید. جدول زیر تمامیه اتصالات را نشان می دهد که با نگاه کردن به آن می توانید تمامیه اتصالات را انجام دهید.

      نام پین

شماره ی پین رزبری پای

نام پین GPIO رزبری پای

LCD Vss

Pin 4

Ground

LCD Vdd

Pin 6

Vcc (+5V)

LCD Vee

Pin 4

Ground

LCD Rs

Pin 38

GPIO 20

LCD RW

Pin 39

Ground

LCD E

Pin 40

GPIO 21

LCD D4

Pin 3

GPIO 2

LCD D5

Pin 5

GPIO 3

LCD D6

Pin 7

GPIO 4

LCD  D7

Pin 11

GPIO 17

ADC0804 Vcc

Pin 2

Vcc (+5V)

ADC0804 B0

Pin 19 (through 5.1K)

GPIO 10

ADC0804 B1

Pin 21 (through 5.1K)

GPIO 9

ADC0804 B2

Pin 23 (through 5.1K)

GPIO 11

ADC0804 B3

Pin 29 (through 5.1K)

GPIO 5

ADC0804 B4

Pin 31 (through 5.1K)

GPIO 6

ADC0804 B5

Pin 33 (through 5.1K)

GPIO 13

ADC0804 B6

Pin 35 (through 5.1K)

GPIO 19

ADC0804 B7

Pin 37 (through 5.1K)

GPIO 26

ADC0804 WR/INTR

Pin 15

GPIO 22

 

همچنین در شکل زیر پین های رزبری پای به خوبی قابل مشاهده است.

مانند همه ی مبدل ها ، این مبدل نیز به یک سیگنال کلاک نیاز دارد. خوشبختانه این آی سی یک منبع خارجی کلاک دارد و فقط کافی ست تا یک مدار RC به کلاک اضافه کنیم . در شماتیک clk in  و clk R قابل مشاهده است. در اینجا ما از مقادیر ۱۰ کیلو اهم و ۱۰۵ پیکو فاراد برای ایجاد مدار RC استفاده کردیم اما شما می توانید از مقادیر ی مانند ۱uf, 0.1uf, 0.01uf نیز استفاده کنید مدار باید کار کند.

بیشتر بخوانید...  سیستم هشدار دهنده خودرو با آردوینو و از GPS، GSM و شتاب سنج

دانلود کد برنامه راه اندازی سنسور خمش با استفاده از رزبری پای :

دانلود فایل
import lcd #Import the LCD library by electro-passionindia
import time #Import time
import RPi.GPIO as GPIO #GPIO will be referred as GPIO only

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

#LCD pin definitions
D4=2
D5=3
D6=4
D7=17
RS=20
EN=21

binarys = (10,9,11,5,6,13,19,26) #Array of pin numbers connect to DB0-DB7


bits = [0,0,0,0,0,0,0,0] #resulting values of 8-bit data


for binary in binarys:
    GPIO.setup(binary, GPIO.IN) #All binary pins are input pins

  #Trigger pin
    GPIO.setup(22, GPIO.OUT) #WR and INTR pins are output


mylcd=lcd.lcd()
mylcd.begin(D4,D5,D6,D7,RS,EN)

#Intro Message
mylcd.Print("Flex Sensor with")
mylcd.setCursor(2,1)
mylcd.Print("Raspberry Pi")
time.sleep(2)
mylcd.clear()

while 1:

    decimal = Voltage = 0 #intitialize to zero

    GPIO.output(22, 1) #Turn ON Trigger
    time.sleep(0.1)
    GPIO.output(22, 0) #Turn OFF Trigger
    mylcd.clear()

#Read the input pins and update result in bit array
    for i in range(8):
        if(GPIO.input(binarys[i]) == True):
            bits[i] = 1
        if(GPIO.input(binarys[i]) == False):
            bits[i] = 0

#print binary values if required for debugging
##    mylcd.Print("Binary= ")
##    mylcd.setCursor(1,8)
##    for i in range(8):
##        mylcd.Print(bits[i])

    #calculate the decimal value using bit array
for i in range(8):
        decimal = decimal + (bits[i] * (2**(7-i)))

#Display decimal value
    mylcd.setCursor(2,1)
    mylcd.Print("D=")
    mylcd.setCursor(2,3)
    mylcd.Print(decimal)

#calculate voltage value
    Voltage = decimal * 19.63 *0.001 #one unit is 19.3mV

    #compare voltage and display status of sensor
mylcd.setCursor(1,1)
    if (Voltage>3.8):
        mylcd.Print("Bent Forward")
    elif (Voltage<3.5):
        mylcd.Print("Bent Backward")
    else:
        mylcd.Print("Stable")

    Voltage = str(round(Voltage,2)) #limit to two digit after decimal

    #display voltage
mylcd.setCursor(2,8)
    mylcd.Print("V=")
    mylcd.setCursor(2,10)
    mylcd.Print(Voltage)



    time.sleep(0.5) #relaxing time

دیدگاه‌ها (0)

*
*