آموزش رزبری پای رزبری پای

استفاده از مبدل آنالوگ به دیجیتال در رزبری پای Raspberry Pi

ADS1115-with-raspberry-pi-digispark
نوشته شده توسط پریسا پوربلورچیان

برد رزبری پای Raspberry Pi ارتباط با سنسورها را از طریق پایه های GPIO فراهم می‌کند. رزبری پای در حال حاضر فقط از سنسورهای دیجیتال پشتیبانی کرده و نمی‌توان به صورت مستقیم از سنسورهای آنالوگ دیتا گرفت و استفاده کرد. در این خصوص نیاز به مبدل آنالوگ به دیجیتال جهت برقرای ارتباط سنسورهای آنالوگ با میکروکنترلر رزبری پای خواهیم داشت. در ادامه با مرجع تخصصی رزبری پای Raspberry Pi، دیجی اسپارک همراه باشید.

رزبری پای از سخت افزار مبدل آنالوگ به دیجیتال استفاده نمی‌کند و به همین دلیل امکان اتصال مستقیم ورودی آنالوگ به رزبری پای وجود ندارد. در واقع برد رزبری پای فقط دارای پایه های دیجیتال است که می‌توانید خروجی ها را به ترتیب High و Low کرده و یا ورودی ها را به صورت High و Low بخوانید. جهت برطرف شدن این مشکل و ارتباط با دنیای آنالوگ ها نیاز به مبدل و کانورتر آنالوگ به دیجیتال Analog to Digital خواهیم داشت. با استفاده از مبدل آنالوگ به دیجیتال امکان خواندن مقادیر آنالوگ از وردی فراهم خواهد شد. مبدل های مختلفی بر اساس تعداد پایه ها و تراشه ی استفاده شده جهت تبدیل آنالوگ به دیجیتال تولید شده است.

 


مبدل آنالوگ به دیجیتال ADS1x15


ماژول مبدل آنالوگ به دیجیتال ADC مدل ADS1115 و ADS1015 در ابعاد بسیار کوچک و راحت برای تست و استفاده طراحی شده است. مبدل ADS1115 ازدقت بالایی بهره می‌برد و به همین دلیل در بسیاری از پروژه ها با اطمینان استفاده می‌شود. دقت اندازه گیری مبدل ۱۶ بیت در ۸۶۰ نمونه در هر ثانیه است که از طریق پروتکل I2C ارتباط برقرار می‌شود. ولتاژ مورد نیاز جهت راه اندازی ماژول بین ۲ تا ۵٫۵ ولت DC و جریان در کمترین زمان مصرف در حدود ۱۵۰ میکرو آمپر می‌باشد. نرخ دقت اندازه گیری مبدل بین  ۸SPS to 860SPS میباشد. همچنین دارای اسیلاتور و PGA یا همان تقویت کننده گین برنامه پذیر programmable-gain amplifier داخلی می‌باشد. دارای رابط I2C با ظرفیت ۷ بیتی با آدرس ۰X48 و ۰X4B است. مبدل ADS1115 دارای ۴ پایه آنالوگ جهت اتصال سنسورهای آنالوگ به مبدل است.  مبدل ADS1x15 4 کاناله است و می‌توانید ۴ سنسور آنالوگ را به آن متصل کرده و مقایر ولتاژ ADC را از هر کانال خوانده و با گین تنظیم کنید.


اتصال بین سنسور آنالوگ و مبدل با رزبری پای


سوال بسیاری از کاربران این است که اتصال سنسور آنالوگ با مبدل ADC و برد رزبری پای Raspberry Pi به چه صورت است؟ همانطور که در معرفی مبدل ADS1115 گفته شد، مبدل از پروتکل I2C جهت ارتباط با میکروکنترلر ها بهره می‌برد. پس جهت برقراری ارتباط و ارسال دیتا از پروتکل I2C استفاده خواهیم کرد. برد رزبری پای Raspberry Pi توسط  پایه های GPIO2 و GPIO3 از پروتکل I2C پشتیبانی کرده و این دو پایه در اخیتار ما قرار گرفته شده است. جهت اتصال سنسورهای آنالوگ به رزبری پای کافیست طبق مراحل زیر پیش روید:

  • پایه V مبدل آنالوگ به دیچیتال ADS1115 را به پایه ۵ ولت رزبری پای اتصال دهید.
  • پایه G مبدل آنالوگ به دیچیتال ADS1115 را به پایه GND رزبری پای اتصال دهید.
  • پایه SCL مبدل آنالوگ به دیچیتال ADS1115 را به پایه GPIO3 رزبری پای اتصال دهید.
  • پایه SDA مبدل آنالوگ به دیچیتال ADS1115 را به پایه GPIO2 رزبری پای اتصال دهید.
  • پایه های تغذیه سنسور آنالوگ را به برد رزبری پای متصل کنید.
  • سپس پایه آنالوگ سنسور را به یکی از پایه های آنالوگ مبدل ADS1115 اتصال دهید.

به همین سادگی ارتباط بین سنسور آنالوگ با برد رزبری پای برقرار شده است.

 


چه سنسورهایی نیاز به مبدل ADS1115 دارند؟


تمامی سنسورهایی که از رابط آنالوگ استفاده می‌کنند و مقادیر آنالوگ را از ورودی دریافت می‌کنند جهت ارتباط با رزبری پای Raspberry Pi نیاز به مبدل آنالوگ به دیجیتال دارند.

  • پتانسیومتر
  • ماژول جوی استیک
  • سنسور رطوبت خاک
  • سنسورهای تشخیص گاز
  • سنسور تشخیص آب
  • سنسور فتوسل
  • سنسورهای شارپ
  • و بسیاری دیگر از سنسورهای آنالوگ

 


نصب کتابخانه ADS1x15


جهت ارتباط با ماژول ADS1115، به کتابخانه Adfruit ADS1X15 نیاز داریم. همانند مراحل زیر کتابخانه را نصب کنید.

sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus git
cd ~
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
cd Adafruit_Python_ADS1x15
sudo python setup.py install

در صورت نصب از طریق پکیج پایتون از کامندهای زیر استفاده کنید.

sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip
sudo pip install adafruit-ads1x15

در مرحله بعد پس از نصب پکیج، کامند اجرای برنامه Example را وارد کنید:

cd ~/Adafruit_Python_ADS1x15/examples

در ادامه خط آبی رنگ، دستور زیر را وارد نمایید.

nano simpletest.py

با وارد کردن دستور simpletest در ترمینال Termianl پنجره زیر باز می‌شود.

در این تصویر، در صورتیکه از تراشه ADS1115 استفاده می‌کنید، خط  adc = Adafruit_ADS1X15.ADS1115 فاقد کامنت است. در صورتیکه از تراشه ADS1015 استفاده می‌کنید، خط adc = Adafruit_ADS1X15.ADS1015 را از کامنت خارج کرده و برنامه را ادامه دهید. جهت ذخیره تنظیمات ابتد ctrl+o و سپس Enter و در نهایت ctrl+x را تایپ کنید. در مرحله بعد دستور زیر را وارد نمایید تا مقادیر آنالوگ هر کانال نمایش داده شود.

sudo python simpletest.py

 

 

مبدل ADS1115، از عدد -۳۲۷۶۸ تا  ۳۲۷۶۷ با توجه به ۱۶ بیتی بودن تراشه مقادیر را دریافت و در این بازه تغییر می‌کند. این عدد برای تراشه ADS1015 بین -۲۰۴۸ تا ۲۰۴۷ می‌باشد. مقدار ۰ نمایشگر رسیدن سیگنال به سطح GND و یا همان صفر است و عدد ۳۲۷۶۷ و یا عدد ۲۰۴۷ برای ADS1015 نمایانگر  بالاترین مقادیر ولتاژ در سطح جریان گین می‌باشد. اعداد منفی در این بازه به معنی خارج شدن از بازه ولتاژ مرجع است. توسط گین Gain میتوانید سیگنال های مختلف ADC را خوانده و حتی ضعیف ترین سیگنال ها را به کمک گین بخوانید. همچنین توسط گین مقادیر دامنه ولتاژی را که از تراشه خوانده می‌شود،کنترل کنید.

  • در گین ۱ ولتاژ برابر با  ۴٫۰۹۶ ولت است. این عدد به آن معنا است که تراشه می‌تواند مقادیر را در بازه -۴٫۰۹۶ تا +۴٫۰۹۶ بخواند.

در این صورت می‌توانید گین بالاتری جهت خواندن دقیق فرکانس های ضعیف انتخاب نمایید. انتخاب عدد گین بسیار مهم است و بر اساس ولتاژ مورد نیاز بایستی انتخاب شود.

 


اتصال پتانسیومتر به ADS1115


جهت خواندن مقادیر ADC از هر کانال می‌توانید از یک پتانسیومتر استفاده کنید. مبدل ADS1115 دارای ۴ کانال A0, A1, A2 و A3 است که با اتصال مقاومت متغیر به هر یک از پایه ها میتوانید مقادیر ولتاژ را در هر لجظه تغییر داده و بخوانید. در این آموزش از ماژول ولوم کشویی دو کاناله استفاده شده است.

  • پایه سیگنال یا OTA  ماژول ولوم کشویی را به پایه A0 مبدل ADS1115 اتصال دهید.
  • پایه VCC ماژول ولوم کشویی را به پایه ۵ ولت رزبری پای اتصال دهید.
  • پایه GND ماژول ولوم کشویی را به پایه GND رزبری پای اتصال دهید.

حال ولوم را تغییر دهید. با توجه به اینکه ولوم به پایه A0 یا همان کانال ۰ متصل شده است، مقادیر ولتاژ ADC از -۳۲۶۷۶ تا + ۳۲۶۷۶ تغییر خواهد کرد. با تغییر اتصال ولوم به کانال های دیگر به ترتیب کانال های ۱, ۲ و ۳ تغییر خواهد کرد.

 

در آموزش بعدی سنسورهای آنالوگ را با رزبری پای بررسی و تست خواهیم کرد. آموزش را مطالعه و در صورت هر گونه سوال از طریق بخش دیدگاه ها در ارتباط باشید. 

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۴ دیدگاه

  • سلام خانم
    یکی از بزرگترین مشکلات من در پروژه گلدان هوشمند همین موضوع بود چون سنسور رطوبت خاک و سنسورهای ولومی همش آنالوگ هستن و من میخواستم با رزبری زیرو پروژه را پیاده سازی کنم. بی نهایت تشکر

  • سلام چطور میتونم با این روش سنسور flc100 مگنومتر رو که میزان تغیرات مغناطیس زمین رو میسنجه استفاده کنم ؟ ممنون

    • با سلام
      جهت راه اندازی سنسور flc100 به مبدل آنالوگ به دیجیتال برای رزبری پای نیاز خواهید داشت. در خصوص تست و راه اندازی این مورد تست نشده است و بایستی به دیتاشیت آن مراجعه کرده و از کتابخانه های در دسترس استفاده کنید.

        • سلام مجدد
          کاربر گرامی راه اندازی این سنسور توسط من و تیم فنی تست نشده است. لذا بایستی از طریق دیتاشیت سنسور و پروتکل ارتباطی به وسیله ی مبدل آنالوگ به دیجیتال به رزبری پای اتصال دهید.

  • سلام ممنون از آموزش خوبتان
    من خیلی علاقه مندم از raspberry pi برای ساخت یک ربات که قابلیت حرکت داشته باشه و با دسته ایکس باکس بشه کنترلش کرد و دوربین داشته باشه استفاده کنم
    آموزش های جسته گریخته در اینترنت هست اما نگرانم که آیا تجهیزاتشان در ایران هست یا خیر
    لطفا راهنمایی می کنید از کجا باید شروع کنم اگر پکیج قابل خریداری هست که صفر تا صد آموزش و قطعات همراهش باشه لطفا راهنمایی کنید از کجا می توانم خریداری کنم
    این هم شماره من هست
    *******
    با تشکر

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

    • با سلام
      طی بازه ی چند دقیقه ای با اختلال جزیی مواجه بوده ایم. در حال حاضر مشکل برطرف شده است.

      • سلام میشه این آموزش رو به صورت یه مثال روی سایت بگذارید؟ با کد بلاکس، که ملموس تر باشه ؟ به صورت یه مثال ساده

  • با زبان سی هم اگر بگذارید و تمام پایه ها رو توضیح بدید عالی میشه .

    • با سلام
      سپاس از پیشنهاد شما، این مورد توسط بنده تست نشده است.

  • سلام. خسته نباشین. من در این زمینه تازه کارم. میخوام با استفاده از ۴ میکروفن سیگنال آنالوگ صدا رو از محیط با حداقل نرخ ۵۰ هزار نمونه در ثانیه، اخذ کرده و با برد رسپبری پای پردازش کنم. این برد خودش ورودی آنالوگ نداره. نمی دونم در کنار این برد چه ماژول یا ماژ.ل هایی باید استفاده کنم. در حقیقت چهار کانال همزمان ADC برای ثبت صدای محیط میخوام.
    ممنون میشم راهنمایی کنید.

  • کمپلت نمیدونم تا اسم سنسور flc100 مباد جواب های سربالا میشنویم . البته دلیلشو میدونم چرا

    • با سلام
      کاربر گرامی تا زمانیکه سنسور توسط بنده تست نشده باشد، قطعا امکان راهنمایی فراهم نیست. در صورتیکه تست شود، آموزشی جداگانه برای آن منتشر خواهد شد.

  • دوستان اگر با ارور زیر مواجه شدید :
    Error : ImportError: No module named Adafruit_PureIO.smbus
    به جای دستور sudo python simpletest.py
    از دستور sudo python3 simpletest.py استفاده کنید.

  • سلام وقت بخیر
    سوال

    برای پالس سنسور که متصل شده به رزبری پای ۴ با مبدل ads1115 خطاهایی دائماً

    Permission denied /dev/ttyso

    اتصال سخت افزار در درگاه های i2c هست
    میشه راهنمایی کنید دلیل خطا permission چی هست ؟