دسته‌بندی نشده

آموزش BASCOM AVR – بسکام – جلسه یازدهم

خیلی خب 🌟
حالا می‌ریم سراغ جلسه یازدهم و این بار هم مفصل و کامل می‌نویسم تا شبیه یک فصل آموزشی باشه.


📘 آموزش BASCOM AVR – بسکام – جلسه یازدهم

 

سنسورهای آنالوگ (ADC) و ساخت دماسنج دیجیتال


۱. مقدمه

تا اینجا یاد گرفتیم داده‌های دیجیتال (۰ و ۱) را بخوانیم و ذخیره کنیم. اما بسیاری از سنسورها خروجی آنالوگ دارند؛ یعنی ولتاژی بین ۰ تا ۵ ولت. برای خواندن این ولتاژ باید از مبدل آنالوگ به دیجیتال (ADC) داخلی میکروکنترلر استفاده کنیم.

کاربردهای ADC:

  • خواندن دما از سنسور LM35
  • خواندن نور از LDR
  • خواندن ولتاژ یا جریان
  • کنترل سرعت موتور با پتانسیومتر

۲. معرفی ADC در ATmega32

  • تعداد کانال‌ها: ۸ کانال (ADC0 تا ADC7)
  • رزولوشن: ۱۰ بیت (۰ تا ۱۰۲۳)
  • ولتاژ مرجع: می‌تواند AVCC یا ولتاژ داخلی باشد.
  • سرعت تبدیل: قابل تنظیم با Prescaler

۳. سنسور LM35

  • سنسور دما با خروجی آنالوگ.
  • هر ۱۰ میلی‌ولت = ۱ درجه سانتی‌گراد.
  • محدوده اندازه‌گیری: ۰ تا ۱۵۰ درجه سانتی‌گراد.
  • اتصال: پایه خروجی به ADC0، پایه تغذیه به +۵ ولت، پایه زمین به GND.

۴. کدنویسی در BASCOM

مثال: خواندن مقدار ADC

' پروژه خواندن دما از LM35
$regfile = "m32def.dat"
$crystal = 1000000

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Dim Value As Word
Dim Temp As Single

Do
   Value = Getadc(0)              ' خواندن مقدار از کانال ADC0
   Temp = Value * 5 / 1024 * 100  ' تبدیل به درجه سانتی‌گراد
   Locate 1 , 1
   Lcd "Temp=" ; Temp ; "C"
   Wait 1
Loop
End

۵. توضیح خط‌به‌خط کد

  • Config Adc = Single → تنظیم ADC به حالت تک‌کاناله.
  • Prescaler = Auto → تقسیم کلاک به صورت خودکار.
  • Reference = Avcc → ولتاژ مرجع = ۵ ولت.
  • Start Adc → فعال‌سازی ADC.
  • Getadc(0) → خواندن مقدار از کانال ۰.
  • تبدیل مقدار به دما:
    • مقدار ADC بین ۰ تا ۱۰۲۳ است.
    • ولتاژ = (Value × 5) ÷ 1024
    • دما = ولتاژ × 100

۶. پروژه عملی: دماسنج دیجیتال

  • سنسور LM35 → پایه ADC0
  • نمایش دما روی LCD کاراکتری
  • اگر دما بیشتر از ۳۰ درجه شد، LED روشن شود.

کد:

Dim Value As Word
Dim Temp As Single

Do
   Value = Getadc(0)
   Temp = Value * 5 / 1024 * 100
   Locate 1 , 1
   Lcd "Temp=" ; Temp ; "C"

   If Temp > 30 Then
      Set PORTA.0
   Else
      Reset PORTA.0
   End If

   Wait 1
Loop
End

۷. نکات عملی

  • سیم‌های سنسور باید کوتاه باشند تا نویز کمتر شود.
  • برای دقت بیشتر می‌توان چند بار مقدار ADC را خواند و میانگین گرفت.
  • ولتاژ مرجع باید دقیق باشد؛ بهتر است از AVCC با خازن فیلتر استفاده کنید.

۸. تمرین‌ها

  1. برنامه‌ای بنویسید که دما را بخواند و اگر بیشتر از ۴۰ درجه شد، فن روشن شود.
  2. مقدار نور را با LDR بخوانید و شدت نور را روی LCD نمایش دهید.
  3. یک ولت‌متر ساده بسازید که ولتاژ ورودی را روی LCD نشان دهد.

نتیجه جلسه یازدهم

در این جلسه یاد گرفتیم:

  • مفهوم ADC و کاربرد آن.
  • نحوه خواندن داده آنالوگ در BASCOM.
  • پروژه عملی دماسنج دیجیتال با سنسور LM35.

🔹 جلسه دوازدهم: کار با ساعت و تقویم دیجیتال (RTC) و نمایش زمان دقیق روی LCD.

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

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