در این آموزش قصد دارم راه اندازی کامل سنسور bmp280 شرح دهم به شکلی که افراد مبتدی هم بتونن باهاش کار کنند، من قصد ندارم کد آماده بزارم و توضیح کامل میزارم تا هرکس برا خودش از رو مطالب کدها رو بنویسه به هر زبانی
ابتدا مشخصات سنسور
این سنسور فشار و دما رو اندازه گیری میکنه
دقت دما 0.01°C
دقت فشار 0.16 Pa
مناسب برای فشار محیط
سنسور از دو نوع پروتکل ارتباطی پشتیبانی میکنه spi و i2c
در این آموزش ما با پروتکل i2c کا خواهیم کرد.
نام پایه های سنسور روی برد
vcc
gnd
sdi
sck
csb
sdo
پایه vcc به ولتاژ +3.3 ولت وصل کنید، پایه gnd رو به زمین ،پایه sdi را به پایه SDA میکروکنترلر و با یک مقاومت 4.7 پول آپ کنید (به مثبت وصل کنید) پایه sck را به پایه SCL در میکروکنترل وصل کنید و با مقاومت 4.7 کیلو به مثبت وصل کنید
پایه csb را با مقاومت 4.7 کیلو به مثبت وصل کنید و پایه sdo را نیز با مقاومت 4.7 کیلو به مثبت وصل کنید.
توضیح پایه ها:
sdi و sda دو خط ارتباطی i2c هستند که با میکرو ارتباط برقرار خواهند کرد
پایه csb باید به مثبت وصل باشه تا سنسور از مد spi به i2c بره( این پایه خیلی مهم هست که درست وصل بشه)
پایه sdo وقتی به مثبت وصل باشه باعث یک شدن بیت شماره یک از آدرس سخت افزاری خواهد شد، پس میشه دو سنسور رو با دو آدرس متفاوت در یک خط i2c داشت ، اما ما فعلا با حالتی که به مثبت وصل هست کار خواهیم کرد (اطلاعات بیشتر در صفحه 29 از دیتاشیت)
تا الان ما میکرو و سنسور رو به درستی وصل کردیم
حالا بریم سروقت نرم افزار و راه اندازی
آدرس سخت افزاری برا نوشتن روی سنسور EE هست یا 11101110
آدرس سخت افزاری برای خواندن روی سنسور EF هست یا 11101111
جهت راه اندازی سنسور در مدی که مد نظر ما است دو بایت به آدرس F4 و F5 را باید برنامه ریزی کنیم و تا این دو بیت را برنامه ریزی کنیم سنسور شروع به کار خواهد کرد و ما قادر خواهیم بود اطلاعات خام فشار و دما را بخونیم
در ادامه خواهم گفت چطور اطلاعات خام رو به اعداد دقیق دما و فشار تبدیل کنیم
فعلا بریم سراغ ّF4 و F5
از طریق پروتکل i2c ابتدا f5 رو برنامه ریزی میکنیم
بیت شماره صفر را برابر با صفر میزاریم این بیت اشاره داره به غیر فعال بودن پروتکل spi
بیت شماره یک را برابر با صفر قرار میدیم این بیت به هیچ چیزی اشاره نداره و در کار سنسور بی اثر است
بیت شماره 2 و 3 و 4 اشاره داره به فعال بودن فیلتر نرم افزاری در سنسور و فعلا ما همه اونا رو میزاریم صفر تا فیلتر غیرفعال بشه
بیت شماره 5 و 6 و7 که خیلی در راه اندازی مهم هست رو میزاریم رو 010 در این حالت سنسور هر 125 میلی ثانیه یک بار نمونه گیری رو انجام میده و دما و فشار رو میخونه و در آدرس مربوطه ذخیره میکنه
شما میتونید 0.5 میلی ثانیه تا 4 ثانیه مدت زمان نمونه گیری را تنظیم کنید با این سه بیت (اطلاعات دقیقتر صفحه 17 جدول 11)
پس مقدار F5 شد 01000000 یا بر مبنای هگز 40
و حالا بریم سراغ برنامه ریزی آدرس f4
بیت شماره صفر و بیت شماره یک از مهمترین بیتها در راه اندازی این سنسور هستند و مربوط به Power modes هستند
این سنسور سه حالت Power modes داره که با این دو بیت مشخص میشه ما حالت نرمال رو نیاز داریم و برا انتخاب این حالت هر دو بیت رو یک میکنیم(اطلاعات سایر حالات در صفحه 15 جدول 10)
بیت شماره 2 و 3 و 4 مربوط به دقت اندازه گیری فشار هست جهت 16 تا 20 بیتی(حالات مختلف صفحه 12 جدول 4) چون در فایل دیتاشیت فراموش شده حالت مختلف بیتها رو برا فشار بنویسه که شما بتونید 16 بیتی یا 17 یا 18 یا 19 و یا 20 بیتی رو انتخاب کنید میتونید دقیقا مثل جدول دما بیت ها رو برا فشار تنظیم کنید از صفحه 13 جدول 5
زیاد موضوع رو پیچیده نکنیم ما با 16 بیتی کار میکنیم پس این 3 بیت رو میزاریم رو 001
و بیت شماره 5 و 6 و7 مربوط به دقت دما هست که اون هم تنظیم میکنیم رو 001 تا 16 بیتی خونده بشه
پس مقدار برا آدرس f4 شد 00100111 یا بصورت هگز 27
حالا مقدار f4 و f5 رو مشخص کردیم که باید مقادیر رو بریزیم در آدرس f4 و آدرس f5
سنسور شروع به کار میکنه تا این مقادیر رو ست کردیم و مقدار خام دما و فشار رو میریزه داخل آدرس مربوطه و ما میتونیم اونا رو بخونیم
------------------------------------
برا خوندن دما کافیه آدرس FA و FB بخونیم (در بالا ما دما رو 16 بیت تنظیم کردیم اگر دما رو بیش از 16 بیت تنظیم کرده بودیم باید مقدار آدرس FC رو هم بخونیم که فقط بیت 4و 5 و6 و7 مقدار دارند و بیتهای پاینتر صفر هستند)
جهت اطلاعات بیشتر جدول 18 از صفحه 24 رو ببینید قسمت زرد رنگ
خوب ما مقدار fa و fb رو خونیدیم هشت بیت fa از ارزش بالاتری نسبت به fb برخوردار هست
اگه خط بالا رو متوجه نشید این کار رو بکنید مقدار fa را در 255 ضرب کنید و حاصل رو با مقدار fb جمع کنید حاصل عدد خام دما هست و تا اینجا شما دما رو خوندید ولی مقدار خام آن
---------------------------------
برا خوندن فشار کافیه آدرس F7 و F8 بخونیم (در بالا ما فشار رو 16 بیت تنظیم کردیم اگر فشار رو بیش از 16 بیت تنظیم کرده بودیم باید مقدار آدرس F9 رو هم بخونیم که فقط بیت 4و 5 و6 و7 مقدار دارند و بیتهای پاینتر صفر هستند)
جهت اطلاعات بیشتر جدول 18 از صفحه 24 رو ببینید قسمت زرد رنگ
خوب ما مقدار f7 و f8 رو خونیدیم هشت بیت f7 از ارزش بالاتری نسبت به f8 برخوردار هست
اگه خط بالا رو متوجه نشید این کار رو بکنید مقدار f7 را در 255 ضرب کنید و حاصل رو با مقدار f8 جمع کنید حاصل عدد خام فشار هست و تا اینجا شما دما رو خوندید ولی مقدار خام آن
----------------------------------
خوب ما با این روش به راحتی سنسور رو راه اندازی کردیم و مقدار خام دما و فشار خوندیم
چند نکته وقتی دارید دما و فشار رو میخونید از طریق i2c نباید آدرس ها رو تک تک بخونید و باید پشت سر هم بایتها خونده بشن این توصیه سازنده هست و دلیل اون هم در دیتاشیت توضیح داده
برا نوشتن مقدار در یک بایت میتونید تکی یک بایت رو بنویسید و اگر نخواستید i2c رو stop کنید و دو بایت پشت سر هم بنویسید یه نکته ظریف داره که باید به این شکل عمل بشه
start
آدرس سخت افزاری برا نوشتن که EE هست
آدرس نرم افزاری (محلی که قصد نوشتن در آن رو داریم) مثلا F4
مقداری که قصد ذخیره در f4 رو داریم
آدرس نرم افزاری دوم که قصد نوشتن در آن رو داریم (مثلا f5) حتی اگر آدرسها پشت سر هم باشند باید آدرس نوشته بشه
مقداری که قصد داریم در آدرس f5 بنویسیم
و stop
جهت اطلاعات بیشتر صفحه 29
------------------------------------------
خوب ما تا اینجا سنسور رو راه اندازی و مقدار خام دما و فشار رو خوندیم
مرحله بعد که در پست بعدی خواهم گذاشت
شیوه تبدیل مقدار خام دما به مقدار دقیق سانتیگراد هست که دمای واقعی محیط هست و دقت این سنسور شما رو شگفتزده خواهد کرد
دوستان من این سنسور رو راه اندازی و استفاده کردم ، همه اطلاعات من تست شده و طبق دیتاشیت سازنده هست
در پست بعدی دستورات بسکام هم خواهم گذاشت جهت راه اندازی و خوندن دمای واقعی
جهت تهیه سنسور
http://shop.aftabrayaneh.com/Sensors...or_Module.html