به نام خدا
راه اندازی سنسور خمش با استفاده از رزبری پای
در این پروژه قصد داریم تا یک سنمسور اندازه گیری مقدار خمش را با استفاده از رزبری پای راه اندازی کنیم. هنگامی نیرویی به سنسور وارد می شود و ن را دچار خمش می کند مقدار این هم شدگی بر روی ال سی دی نمایش داده می شود.
قطعات مورد نیاز راه اندازی سنسور خمش با استفاده از رزبری پای :
هر مدل رزبری پای
آی سی ADC0804
سنسور خمش
مقاومت و خازن
برد برد
مبدل آنالوگ به دیجیتال یک کاناله ی هشت بی تی ADC0804 :
قبل از اینکه به جلو برویم ابتدا بیایید در مورد این مبدل بیشتر بدانیم. این مبدل یک کاناله است به این معنی که می تواند یک مقدار آنالوگ را به هشت بیت دیجیتال تبدیل کند. این فرمت هشت بیتی توسط رزبری پای قابل پردازش است و مقداری بین ۰ تا ۲۵۵ را خواهد داشت. همانطور که در شکل زیر قابل مشاهده است پین های DB0 تا DB7 برای این مقادیر می باشند.
نکته ی مهم دیگر این است که این مبدل در ۵ ولت کار می کند و یک سیگنال منطی ۵ ولتی ایجاد می کند. در شکل زیر یک برد کامل از این نوع مبدل را مشاهده می کنید
شماتیک و توضیحات مدار راه اندازی سنسور خمش با استفاده از رزبری پای :
در شکل زیر تمامیه اتصالات لازم برای ساخت این مدار را مشاهده می کنید.
مدار راه اندازی سنسور خمش با استفاده از رزبری پای ممکن است مقداری پیچیده بنظر بیاید. جدول زیر تمامیه اتصالات را نشان می دهد که با نگاه کردن به آن می توانید تمامیه اتصالات را انجام دهید.
نام پین |
شماره ی پین رزبری پای |
نام پین 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 نیز استفاده کنید مدار باید کار کند.
دانلود کد برنامه راه اندازی سنسور خمش با استفاده از رزبری پای :
دانلود فایل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)