دسته: AVR و آردوینو

آموزش ها و پروژه های مربوط به میکروکنترلر AVR و بردهای آردوینو

جدید تایمرها در آردوینو

ماژول های تایمر در آردوینو عملکرد زمان بندی دقیقی را ارائه می دهند. آنها به ما اجازه می دهند کارهای مختلفی را انجام دهیم، مانند ایجاد تأخیرهای دقیق، ایجاد رویدادهای دوره ای، اندازه گیری فواصل زمانی و برآوردن نیازهای زمانی برنامه مورد نظر. هر برد آردوینو میکروکنترلر مربوط به خودش را دارد که مجموعه ای از تایمرهای سخت افزاری خاص خود را دارد. بنابراین، همیشه باید به دیتاشیت مربوط به میکروکنترلر مورد نظر مراجعه کنیم تا بیشتر با قابلیت های سخت افزاری آن و نحوه استفاده بهینه از آن آشنا شویم. آردوینو UNO  که از میکروکنترلر Atemga328p  استفاده می کند دارای 3 تایمر سخت افزاری است که عبارتند از:      Timer0: تایمر 8 بیتی      Timer1: تایمر 16 بیتی      Timer2: تایمر 8 بیتی این ماژول‌های تایمر برای تولید سیگنال‌های خروجی PWM و ارائه قابلیت‌های زمان‌بندی و ایجاد تاخیر استفاده می‌شوند، و همچنین می‌توانیم از آنها برای اجرا در هر حالتی برای دستیابی به عملکرد مورد نظر استفاده کنیم. هر تایمر سخت افزاری یک رجیستر شمارنده دیجیتال در هسته خود دارد که بر اساس سیگنال کلاک ورودی شمارش می کند. اگر سیگنال ساعت از یک منبع داخلی با فرکانس ثابت بیاید، گفته می شود که [ . . . ]

  • 351 بازدید
  • 0
  • 23 دسامبر, 2023
ادامه مطلب

جدید آموزش وقفه در آردوینو

وقفه چیست؟ فرض کنید در منزل به امور روزمره تان می پردازید. اگر کسی پشت در باشد چطور متوجه می شوید که باید بروید و در را باز کنید؟ جواب ساده است. آن شخص زنگ در را می زند، شما متوجه می شوید که شخصی پشت در است و می روید و در را باز می کنید. قطعا شما برای اینکه متوجه شوید آیا کسی پشت در منتظر هست یا نه هر 5 دقیقه در را باز نمی کنید تا این مساله را بررسی کنید! در این مثال زنگ در نقش وقفه یا Interrupt را بازی می کند.  یعنی شما به کارهای معمول می پردازید تا زمانی که یک وقفه شما را از انجام این کارها باز دارد و شما به وقفه ای که دریافت کردید رسیدگی کنید.  اما به روشی که به طور مرتب در را باز کنید تا ببینید کسی پشت در هست یا خیر polling می گویند. در برنامه نویسی از روش polling در مواردی استفاده می شود که معمولا ساختار برنامه ساده باشد و با بررسی مرتب ورودی ها اختلالی در عملکرد برنامه پیش نیاید. وقفه ها وظایف جانبی هستند که CPU باید به محض دریافت آنها را انجام دهد و [ . . . ]

  • 225 بازدید
  • 0
  • 23 دسامبر, 2023
ادامه مطلب

جدید آشنایی با PWM در آردوینو

PWM  مخفف Pulse Width Modulation است که به فارسی به معنای مدولاسیون پهنای پالس است. این یک تکنیک الکترونیک است که برای کنترل توان الکتریکی یک بار با تغییر زمان روشن بودن و خاموش بودن منبع تغذیه در هر سیکل استفاده می شود. سیگنال PWM یک سیگنال PWM از یک شکل موج مربعی با پهنای پالس متغیر تشکیل شده است.  پهنای پالس به درصد زمانی گفته می شود که سیگنال بالا است. به عنوان مثال، اگر پهنای پالس 50٪ باشد، سیگنال نیمی از زمان بالا و نیمی از زمان پایین است. PWM  با استفاده از یک مدار سوئیچینگ انجام می شود. این مدار با استفاده از یک سیگنال کنترلی، منبع تغذیه را به بار وصل یا قطع می کند. سیگنال کنترلی معمولاً یک سیگنال دیجیتال است که می تواند دو مقدار مختلف داشته باشد:0 یا 1 PWM  برای طیف گسترده ای از کاربردها استفاده می شود، از جمله: PWM  یک تکنیک انعطاف پذیر و پراستفاده است که در بسیاری از دستگاه های الکترونیکی یافت می شود. فرکانس PWM سیگنال PWM دارای چند ویژگی است. اولین مورد فرکانس F است که اساساً معیاری است برای اینکه سیگنال PWM با چه سرعتی بین HIGH و LOW در [ . . . ]

  • 264 بازدید
  • 0
  • 23 دسامبر, 2023
ادامه مطلب

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

مبدل آنالوگ به دیجیتال (ADC) یک سیستم الکترونیکی است که یک سیگنال آنالوگ، مانند صدای دریافت شده توسط میکروفون یا نور وارد شده به دوربین دیجیتال را به سیگنال دیجیتال تبدیل می کند. ما معمولاً از یک ADC برای اندازه‌گیری/خواندن ولتاژ آنالوگ از منابع یا حسگرهای مختلف استفاده می‌کنیم. ADC معمولاً داخل میکروکنترلرهای مختلف تعبیه می شود یا به عنوان یک آی سی جداگانه ارائه می گردد. آردوینو UNO (میکروکنترلر atmega328p) در مجموع دارای 6 پایه ورودی آنالوگ است که به صورت داخلی به ADC متصل می شوند تا برای خواندن ورودی های ولتاژ آنالوگ استفاده شوند. این پایه ها معمولا با حرف A مشخص می شوند. به عنوان مثال در آردوینو UNO پایه های A0 تا A5 می توانند به عنوان ورودی آنالوگ ADC استفاده شوند. تعداد ADC در سایر بردهای آردوینو ممکن است تفاوت داشته باشد. رزولوشن ADC آردوینو رزولوشن ADC داخلی آردوینو 10 بیت است، به این معنی که محدوده خروجی آن بین  0 تا 1023 است. ولتاژ مرجع آنالوگ برای آردوینو ADC به طور پیش فرض VREF = +5v است، به این معنی که می توانیم ولتاژ ورودی آنالوگ را از 0 تا 5 ولت اندازه گیری کنیم. در صورتی که [ . . . ]

  • 268 بازدید
  • 0
  • 23 دسامبر, 2023
ادامه مطلب

جدید مانیتور سریال در آردوینو

مانیتور سریال آردوینو ابزار بسیار مفیدی است که در خود IDE آردوینو تعبیه شده است. بنابراین برای برقراری ارتباط با آردوینو از طریق پورت سریال نیازی به یک ترمینال خارجی ندارید. فقط مانیتور سریال را باز کنید، باود ریت صحیح را برای ارتباط تنظیم کنید، و برنامه را آپلود نمایید.در اینجا یک برنامه ساده آردوینو را مشاهده می کنید که هر ثانیه یک بار پیام “Hello karakit” را از طریق پورت سریال به ترمینال IDE می فرستد و ما آن را در مانیتور سریال مشاهده خواهیم کرد. تابع setup یک بار زمانی که برد روشن یا ریست می شود فراخوانی می شود. در این کد با استفاده از Serial.begin(115200) ارتباط سریال را با باودریت 115200 مقداردهی اولیه می کند. حلقه loop پس از تکمیل تابع setup به طور مداوم اجرا می شود. این کد عبارت “Hello karakit” را با استفاده از دستور Serial.println (“Hello karakit”) در مانیتور سریال چاپ می کند و سپس قبل از تکرار فرآیند، با استفاده از delay (1000) 1 ثانیه منتظر می ماند. اگر باودریت مانیتور سریال با باودریت تعیین شده در برنامه برابر نبود می توانید آن را تغییر دهید و تنظیم کنید: دریافت ورودی از کاربر در پورت سریال سه نوع داده رشته [ . . . ]

  • 414 بازدید
  • 0
  • 11 دسامبر, 2023
ادامه مطلب

جدید ورودی دیجیتال در آردوینو

قصد داریم برای آشنای با ورودی دیجیتال در آردوینو یک دکمه به یکی از پایه های آن وصل کنیم و برنامه ای بنویسیم که در صورت فشرده شدن دکمه یک LED که به یکی از پایه های خروجی متصل شده روشن شود. وقتی می گوییم ورودی دیجیتال یعنی این ورودی تنها می تواند یکی از دو مقدار High یا Low داشته باشد. دکمه را به پایه 2 و LED را از طریق مقاومت 220 اهم به پایه 8 وصل می کنیم. مدار به شکل زیر است: برنامه به شکل زیر نوشته می شود: کد از دو قسمت تشکیل شده است: setup و loop. قبل از تابع setup سه متغیر led، button و buttonValue را مقداردهی اولیه کرده ایم. در خط اول متغیری به نام led از نوع int با مقدار 8 را مقداردهی اولیه شده است. این متغیر برای ذخیره شماره پین متصل به LED استفاده می شود. سپس دمتغیری به نام button از نوع int با مقدار 2 را مقداردهی اولیه شده است. این متغیر برای ذخیره شماره پین دکمه ای که به برد آردوینو متصل است استفاده می شود. در خط بعد متغیری به نام buttonValue از نوع int با مقدار 0 را مقداردهی اولیه شده است. [ . . . ]

  • 283 بازدید
  • 0
  • 9 دسامبر, 2023
ادامه مطلب

جدید شروع کار با آردوینو

آردوینو چیست؟ آردوینو یک پلتفرم الکترونیکی منبع باز است که بر اساس سخت افزار و نرم افزار آسان برای استفاده است. این یک برد نمونه‌سازی مبتنی بر میکروکنترلر است که می‌تواند برای توسعه دستگاه‌های دیجیتالی استفاده شود که می‌توانند ورودی‌های مختلف را مانند فشردن دکمه، لمس روی صفحه، نور روی سنسور و غیره بخوانند و خروجی های مختلف مانند روشن کردن LED ، چرخاندن موتور، پخش آهنگ ها از طریق بلندگو و موارد دیگر را کنترل کند. برد آردوینو به تمام قطعات الکترونیکی مورد نیاز برای راه اندازی میکروکنترلر روی یک PCB مجهز شده است. همچنین دارای ویژگی های مفید دیگری مانند پین های ورودی/خروجی، یک پورت USB برای ارتباط بین آردوینو و یک کامپیوتر، و یک کانکتور برق 9 ولت DC است. طی سال‌ها، آردوینو مغز هزاران پروژه از وسایل روزمره گرفته تا ابزارهای علمی پیچیده بوده است. سازندگان، دانشجویان، علاقه‌مندان، هنرمندان، برنامه‌نویسان و متخصصان سراسر جهان حول این پلتفرم منبع باز گرد آمده‌اند و مشارکت‌های آنها به تولید دانش زیادی درباره آردوینو منجر شده است که می‌تواند به افراد تازه‌کار و متخصص کمک بزرگی بکند. آردوینو در مؤسسه طراحی تعامل Ivrea به عنوان ابزاری آسان برای نمونه‌سازی سریع متولد شد، که هدف آن [ . . . ]

  • 212 بازدید
  • 0
  • 9 دسامبر, 2023
ادامه مطلب

جدید کنترل کننده PID گسسته

شرکت Atmel یک یادداشت کاربردی درباره آشنایی با کنترل کننده PID منتشر کرده که در اون روابط مربوط به پیاده سازی کنترل کننده PID گسسته هم توضیح داده شده. در واقع خواننده با استفاده از این توضیحات می تونه برنامه یک کنترل کننده PID گسسته رو بنویسه که به راحتی در میکروکنترلرهای AVR هم قابل اجرا باشه. البته خود برنامه داخل این یادداشت گنجونده نشده اما کسانی که با دقت این ترجمه رو بخونند می تونند برنامه دلخواهشون رو بنویسند. فایل PDF این ترجمه رو می تونید از انتهای همین مطلب  به طور مستقیم دانلود کنید. استفاده از این ترجمه با ذکر نام سایت karakit.ir بلامانع است.

  • 746 بازدید
  • 0
  • 27 می, 2020
ادامه مطلب

جدید راه اندازی ترایاک به وسیله MOC3022 اپتو ترایاک

در این مطلب قراره راه اندازی ترایاک رو به کمک یک اپتو ترایاک معروف از سری MOC30xx آموزش بدیم.شاید تا حالا سعی کرده باشید که یک وسیله مثل المنت یا لامپ رو با میکرو روشن و خاموش کنید. یکی از انواع وسایلی که می تونه به عنوان کلید به کار بره ترایاک هست. ترایاک نسبت به رله جای کمتری می گیره و سرعت کلیدزنی بهتری هم داره. و حتما می دونید که در انواع مختلف برای انواع حالات کاری در توانهای مختلف به کار می ره. اما این وسیله با برق 220 سر و کار داره. بنابراین باید راه مطمئنی برای راه اندازی و تریگر کردنش با میکرو پیدا کرد. یکی از ساده ترین راه ها استفاده از اپتوترایاک moc3022 است. اپتوترایاکهای سری moc30xx دارای 6 پایه هستند که انواع moc302x ساده تر و ارزانتر هستند. moc 3022 می تونه تا 400 ولت رو تحمل کنه. اما این آی سی ها توانایی عبور جریانهای تا 100 میلی آمپر رو دارند و برای راه اندازی کلیدهای قوی مانند ترایاکها به کار می رن. یکی از مزایای استفاده از اونها ایزوله شدن مدار میکرو از قسمت ولتاژ بالای مداره و دیگری راه اندازی مطمئنه.شکل کلی مدار در [ . . . ]

  • 4,556 بازدید
  • 0
  • 27 می, 2020
ادامه مطلب

جدید راه اندازی ماژول AD9850 سینتی سایزر دیجیتال

آی سی AD9850 یک تولید کننده شکل موج سینوسی و مربعی با فرکانس متغیره که به صورت ماژول آماده توی بازار پیدا می شه. این آی سی در بهترین حالت می تونه فرکانس تا 125MHz که البته در فرکانسهای بالا ممکنه Duty Cycle 50 درصد نداشته باشه. این ماژول یک DDS Synthesizer محسوب می شه و برای راه اندازی باید از یک میکروکنترلر استفاده بشه. اگه از آردوینو استفاده می کنین احتمالا کتابخونه آماده براش بتونین پیدا کنین. اما اگه خودتون بخواین برنامه میکرو بنویسین خیلی بعیده بتونین حداقل به زبان فارسی راهنمای مناسبی پیدا کنین. به همین علت راهنمای راه اندازی این ماژول به کمک میکروکنترلر AVR آماده شده و برنامه ش هم به زبان بیسیک تحت کامپایلر BASCOM توضیح داده شده.بهترین راه برای راه اندازی این ماژول مراجعه به دیتاشیت و بعد مثال های موجود در اینترنته. طبق گفته دیتاشیت باید 5 بایت به ماژول فرستاده بشه. دو راه سریال و موازی برای برنامه ریزی این ماژول وجود داره که در اینجا مد سریال معرفی شده.اول باید پایه D2 رو به زمین و D0 و D1 رو به vcc وصل کنید. بعد پایه RESET رو به مدت خیلی کوتاه high و بعد low [ . . . ]

  • 1,949 بازدید
  • 0
  • 18 می, 2020
ادامه مطلب