السن

راه اندازی سنسور دمای DS18B20 با STM32 بدون دیلی

آشنایی با چگونگی کارکرد سنسور دوری سنج التراسونیک HC-SR04 ( حسگر دوری سنج فراسدا ) 

حسگر دمای دیجیتال DS18B20 در گلخانه های بکار میره و سه پایه داره.

  • پایه ی 1 : vcc = 3.3 v
  • پایه 2 : این پایه باید با یک مقاومت 1K بالاکش ( پول آپ ) بشه و نه حسگر و نه میکرو نباید بتونند این پایه رو به VCC ببندند.
  • پایه 4 : زمین

بسامد نمونه برداری این حسگر هم 2s هست ، هر 2 ثانیه میتونیم دما و رطوبت رو بخونیم .

 

 

چگونگی کارکرد

 

پروتکل ارتباطی این سنسور 1-wire هست ، و داده روی یک سیم جابجا میشه ، این سیم هیچ وقت نباید به VCC بسته بشه و تنها دو حالت داره:

  1. بالاکش شده ( پول آپ شده ).
  2. بوسیله ی حسگر یا میکرو به زمین بسته شده.

 

  1. برای آغاز هر اندازه گیری ، میکرو باید به اندازه 1ms پایه ی دیتا رو زمین کنه و سپس پایه رو رها میکنه تا بالاکش بشه . سپس میکرو منتظر حسگر میمونه تا باس رو زمین کنه .
  2. حسگر به اندازه ی 80us باس رو زمین میکنه و سپس 80us هم باس رو رها میکنه ، این یعنی حسگر میخواد فرستادن داده رو آغاز کنه.
  3. حسگر  40 پالس میفرسته که بیانگر 40 بیت دما و رطوبت هستند . از روی زمان یک بودن هر پالس میفهمیم بیت فرستاده شده ، یک هست یا هیچا ( صفر ) . 
  4. پس از فرستادن بیت آخر ، یک بار دیگر هم سنسور باس رو زمین میکنه و سپس باس رو رها میکنه .

بیت 1 یا 0 :

  • اگر زمان یک بودن پالس 26-28us باشه ، بیت 0 توسط سنسور DHT22 فرستاده شده .
  • اگر زمان یک بودن پالس 70us باشه ، بیت 1 توسط سنسور DHT22 فرستاده شده . 

 

در 40 بیت دریافت شده از سنسور دما و رطوبت DHT22 / AM2302 :

  • 16 بیت اول رطوبت 
  • 16 بیت دوم دما
  • 8 بیت آخر چک سام checksum

برای محاسبه ی checksum باید چهار بایت اول را جمع کنید . 8 بیت کم ارزش حاصل جمع میشه chechsum .  

 

بارگیری برنامه و راه اندازی حسگر دوری سنج SR04 با میکروکنترلر STM32

ویژگی های برنامه ای که نوشتم :

  • فرستادن و دریافت پالس بدون دست اندرکاری CPU و به شکل سخت افزاری با کانال های تایمر انجام میشود .
  • این برنامه بدون بکارگیری کتابخونه ی HAL هست ولی شما میتونید در هر برنامه ای چه با HAL چه بدون آن، این کتابخونه رو بکاربگیرید.
  • این برنامه TIM3 و TIM4 و DMA1_CH1 و DMA1_CH4 و پایه های PB4 و PB6 رو بکارمیگیره ، در بخش های دیگه ی برنامه ی خودتون هیچ کاری درباره ی این بخش ها نکنید .

 

بارگیری برنامه راه اندازی سنسور فاصله سنج التراسونیک از github

 

گام به گام راه اندازی :

  1. فایل am.c را در پوشه ی src و فایل am.h را در پوشه ی header بگذارید.
  2. فایل am.h را بر فایل main.c افزون کنید (include کنید) . 
  3. کارنوشت ( تابع ) am_init را در کارنوشت main فراخوانی کنید.
  4. دما و رطوبت بصورت خودکار در دو پویای جهانی ( متغیر گلوبال ) به نام های am_RH و am_TMP نوشته میشود .

اگر میخواهید یادبگیرید که از پایه چجوری باید این کتابخونه رو بنویسید ، دوره ی آموزش پیشرفته ی STM32F103 رو ببینید .

چگونگی کارکرد تایمر برای فرستادن و دریافت جهند ( پالس ) به سنسور دوری سنج HC-SR04

 

  • در این پروژه ، SR04 را با STM32  با روشی راه اندازی میکنیم که AVR نمیتونه ، چون تایمر های AVR توانایی تایمر های STM32 رو ندارند .
  • هنگامی که تنها یک قطعه رو با میکروکنترلر راه اندازی میکنید، وجود کارنوشت دیرکرد ( تابع تاخیر یا delay ) در برنامه مشکل ساز نیست . ولی وقتی پروژه شلوغ میشه ، هزار تا مشکل درست میکنه . قدرت STM32 هم به همینه که میتونی delay بکار نبری.
  • اگر بلد باشی چجوری از امکانات پیرارونگ ها ( پریفرال ها ) استفاده کنی ، میشه در پروژه delay بکار نبرد .

در راه اندازی حسگر دوری سنج فراسدای HC-sr04 با میکروکنترلر STM32 ، به پایه های GPIO نیاز نداریم و نیازی نیست که خود CPU بخواهد پایه های تریگ را 0 و 1 کند یا زمان یک بودن پایه ی echo را اندازه بگیرد . بلکه همه ی این کارها را پیرارونگ ( پریفرال ) تایمر انجام میدهد .

 

 

کانال 3 تایمر یک در کارگون PWM ( حالت کاری ) رو برای ساخت پالس تریگ هر 100ms بکار میبرم . تا این کانال هر 100 میلی ثانیه یک جهند ( پالس ) 10us روی پایه ی تریگ بیندازد.

 

 

کانال 1 و 2 تایمر یک رو در کارگون IC input capture  برای اندازه گیری زمان یک بودن جهند ( پالس ) روی پایه ی echo بکار میگیرم .

 

کانال 3 تایمر ، جهند ( پالس ) تریگر رو میفرسته و کانال های 1 و 2 هم هنگامی که لبه روی پایه ی اکو رخ میده ، اندازه ی شمارنده ( رجیستر CNT ) رو برمیدارند ، در اینتراپ ( بازداری ) کانال 2 تایمر ، با کم کردن اندازه ی CCR1 از CCR2 زمان یک بودن جهند اکو بدست میاد .

  • در راه اندازی SR04 با AVR ، بخش CPU میکروکنترلر از آغاز تا پایان نمونه برداری درگیر کار هست.
  • در راه اندازی SR04 با STM32 ، بخش CPU میکروکنترلر تنها در پایان نمونه برداری باید یک عملیات تفریق انجام بده .

 

اگر میخواهید یادبگیرید که از پایه چجوری باید این کتابخونه رو بنویسید ، دوره ی آموزش پیشرفته ی STM32F103 رو ببینید .

  • التراسونیک = فراسدا .
  • فاصله سنج = دوری سنج .
  • جهند = پالس .
  • پیرارونگ = رونگ پیرامونی = مدار جانبی = پریفرال 
  • کارگون = حالت کاری

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا