راه اندازی ماژول مبدل آنالوگ و دیجیتال PCF8591 با رزبری پای
تبدیل آنالوگ به دیجیتال یک کار بسیار مهم در پروژه های الکترونیکی است ، زیرا بیشتر سنسورها خروجی را به صورت مقادیر آنالوگ فراهم می کنند و آنها را به میکروکنترلر هایی ارائه می کنند که فقط مقادیر باینری را درک می کنند بنابراین ما باید آنها را به مقادیر دیجیتال تبدیل کنیم. برای پردازش داده های آنالوگ ، میکروکنترلرها نیاز به مبدل آنالوگ به دیجیتال دارند.
برخی از میکروکنترلرها دارای مبدل آنالوگ به دیجیتال داخلی هستند مثل مانند Arduino ، MSP430 ، PIC16F877A … ، اما برخی از میکروکنترلر ها مانند 8051 ، Raspberry Pi و … مبدل ADC داخلی ندارند و ما باید از ماژول های خارجی آنالوگ به دیجیتال مانند ADC0804 ، ADC0808 استفاده کنیم. در زیر می توانید نمونه های مختلفی از ADC با میکروکنترلرهای مختلف را پیدا کنید:
- آموزش کامل آنالوگ به دیجیتال در آردوینو ADC (آموزش آردوینو #4)
- آموزش کامل مبدل آنالوگ به دیجیتال ADC در میکروکنترلر های AVR
- راه اندازی مبدل دیجیتال به آنالوگ 12 بیت با رزبری پای
- آموزش آنالوگ به دیجیتال در STM32 با کد آردوینو
در این آموزش قصد داریم نحوه راه اندازی ماژول PCF8591 ADC / DAC را با رزبری پای یاد بگیریم.
محتویات
ماژول PCF8591 ADC / DAC
PCF8591 یک ماژول دیجیتال به آنالوگ و یک ماژول آنالوگ به دیجیتال 8 بیتی است. 8 بیتی یعنی هر پین میتواند مقادیر آنالوگ را به 0 تا 256 تبدیل کند. همچنین این ماژول دارای LDR و ترمیستور است. این ماژول دارای چهار ورودی آنالوگ و یک خروجی آنالوگ است. PCF8591 با پروتکل ارتباطی I2C کار میکند بنابراین دارای پین های SDA و SCL است. برای کار به تغذیه 2.5 تا 6 ولت احتیاج دارد و جریان کمی مصرف میکند.
همچنین اگر میخواهید الکترونیک را با فیلم های آموزشی یاد بگیرید، روی دوره آموزش الکترونیک کلیک کنید.
همچنین میتوانید ولتاژ ورودی را با تنظیم پتانسیومتر روی ماژول تغییر دهیم. سه جامپر روی برد وجود دارد. J4 برای دسترسی به ترمیستور است. J5 برای دسترسی به مقاومت نوری LDR است. J6 نیز برای دسترسی به ولتاژ قابل تنظیم است. بر روی برد ماژول 2 ال ای دی وجود دارد که یکی شدت ولتاژ خروجی و دیگری شدت ولتاژ منبع را نشان میدهد.
پین های I2C در Raspberry Pi
به منظور استفاده از PCF8591 با Raspberry Pi ، اولین کاری که باید انجام دهید ، دانستن پین های درگاه I2C رزبری پای و پیکربندی پورت I2C است. پین های I2C GPIO2 (SDA)
و GPIO3 (SCL)
در این آموزش استفاده شده است.
فعال سازی I2C در رزبری پای
به طور پیش فرض ، I2C در Raspberry Pi غیرفعال است. بنابراین ابتدا باید فعال شود. برای فعال کردن I2C در رزبری پای مراحل زیر را طی کنید.
- به ترمینال بروید و
sudo raspi-config
را تایپ کنید. - اکنون تنظیمات نرم افزار Raspberry Pi ظاهر می شود.
- گزینه Interfacing را انتخاب کنید و سپس I2C را فعال کنید.
- پس از فعال کردن I2C رزبری پای را مجددا راه اندازی کنید.
اسکن آدرس I2C PCF8591 با استفاده از رزبری پای
حال برای شروع ارتباط با PCF8591 IC ، باید آدرس I2C را بدانیم. برای پیدا کردن آدرس ابتدا پین SDA و SCL ماژول PCF8591 را به پین SDA و SCL Raspberry Pi متصل کنید. همچنین پین های + 5V و GND را وصل کنید.
اکنون ترمینال را باز کرده و فرمان زیر را تایپ کنید تا آدرس دستگاه I2C متصل را بدانید :
sudo i2cdetect –y 1 or sudo i2cdetect –y 0
پس از یافتن آدرس I2C اکنون زمان آن رسیده است که مدار را متصل کرده و کتابخانه های لازم را برای استفاده از PCF8591 با Raspberry Pi نصب کنید.
مدار راه اندازی PCF8591 ADC / DAC با رزبری پای
شماتیک مدار برای اتصال PCF8591 به Raspberry Pi ساده است. در این پروژه ی مثال، مقادیر آنالوگ را از هر یک از پین های آنالوگ می خوانیم و آن را در ترمینال Raspberry Pi نشان می دهیم. ما می توانیم مقادیر را با استفاده از یک پتانسیومتر 100 کیلو اهم تغییر دهیم.
VCC و GND را به GPIO2 و GPIO برد رزبری پای وصل کنید. بعد ، به ترتیب SDA و SCL را به GPIO3 و GPIO5 وصل کنید. در آخر یک پتانسیومتر 100K را به AIN0 وصل کنید. همچنین می توانید به جای نشان دادن مقادیردر ترمینال ، یک ال سی دی کاراکتری 16*2 را برای نمایش مقادیر ADC اضافه کنید. در مورد اتصال ال سی دی کاراکتری به رزبری پای بیشتر بدانید.
قطعات مورد نیاز
- رزبری پای
- ماژول PCF8591 ADC / DAC
- پتانسیومتر 100 کیلو اهم
کد پایتون برای تبدیل آنالوگ به دیجیتال (ADC)
کد کامل برای تبدیل آنالوگ به دیجیتال در رزبری پای در انتهای صفحه آورده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.
در مرحله اول ، کتابخانه smbus را برای ارتباط I2C و کتابخانه time را برای ایجاد تاخیر وارد میکنیم.
import smbus import time
اکنون برخی از متغیرها را تعریف میکنیم. متغیر اول شامل آدرس I2C و متغیر دوم آدرس پین ورودی آنالوگ اول را دارد.
address = 0x48 A0 = 0x40
بعد ، ما یک تابع SMBus(1)
را میسازیم.
bus = smbus.SMBus(1)
سپس در while ، خط اول به ماژول میگوید اندازه گیری ولتاژ آنالوگ را انجام دهد و سپس مقدار را در یک متغیر ذخیره کرده و آن را در ترمینال نمایش میدهد.
while True: bus.write_byte(address,A0) value = bus.read_byte(address) print(value) time.sleep(0.1)
سرانجام کد پایتون را در یک پرونده با پسوند .py ذخیره کنید و کد را در ترمینال رزبری پای با دستور زیر اجرا کنید.
python filename.py
فیلم راه اندازی مبدل آنالوگ به دیجیتال در رزبری پای
قبل از اجرای کد اطمینان حاصل کنید که ارتباط I2C را فعال کرده اید و تمام پین ها همانطور که در شماتیک مدار نشان داده شده است متصل شده اند ، در غیر این صورت با خطا مواجه میشوید. اکنون پتانسیومتر را تغییر دهید تا مقادیر را در ترمینال مشاهده کنید. فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.
موارد موجود در فایل : سورس کامل ، شماتیک