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

در این پروژه قصد داریم تا یک سنمسور اندازه گیری مقدار خمش را با استفاده از رزبری پای راه اندازی کنیم. هنگامی نیرویی به سنسور وارد می شود و ن را دچار خمش می کند مقدار این هم شدگی بر روی ال سی دی نمایش داده می شود.
قطعات مورد نیاز راه اندازی سنسور خمش با استفاده از رزبری پای :
هر مدل رزبری پای
آی سی 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)