نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه

مقایسه آردوینو با avr

مقایسه آردوینو با avr ( تفاوت برد آردوینو با خود AVR )

آردوینو چیست؟

به زبان ساده آردوینو یک برد که از یک پردازنده و یک سری قطعات الکترونیکی مثل خازن و کریستال و رگولاتور و… تشکیل شده است؛ آردوینو انواع مختلفی دارد که بسته به نوع آن و پردازنده ای که روی آن استفاده می شود متفاوت است؛ مثلا روی آردوینو UNO میکروکنترلر مورد استفاده ATMEGA328 است؛ قطعات الکترونیکی که به صورت پیش فرض روی برد آردوینو قرار گرفته، کار را برای راه اندازی ساده تر از میکروکنترلر AVR میکنه ( چون این برد تمام چیز های اولیه مورد نیاز خودشو داره ولی avr نداره چون فقط یه میکرو خالی هستش ) در ادامه توضیحات بیشتری در این مورد داده می شود.
توجه : آردوینو اسم یه برد هستش که هسته مرکزیش میکروکنترلر avr یا arm هستش ( بسته به مدلش فرق میکنه ) و یه نرم افزار هم برا کدنویسی داره که اسم اونم آردوینو هستش ( که ما بهش میگیم کامپایلر آردوینو، حالا کامپایلر معنیش چی میشه و اصلا اطلاق این کلمه به نرم افزار آردوینو درسته یا نه رو فعلا کاری نداریم بهش )
مقایسه آردوینو با avr
خب این عکس که میبینید برد آردوینو مدل uno هستش که هسته مرکزیش mega328 هستش ( اونی که با رنگ صورتی مشخص کردم ) که میبینید این برد مدار های مربوط به کریستال و تغذیه و … رو همراه خودش داره و کار رو برای تازه کار ها ( و یا کسایی که کمبود وقت و یا حوصله ^_^ ) دارن مفید هستش، ولی شما میتونید میکرو mega328 رو جداگونه تهیه کنید و رو بردبرد ببندید و باهاش کار کنید.
 

دارا بودن قطعات مورد نیاز اولیه در برد آردوینو

خوب اولین سوالی که پیش میاد میگیم خوب چه کاریه به جای برد آردوینو از خود AVR استفاده میکنیم چه فرقی داره ؟؟ خوب فرق داره کسانی که با AVR کار کرده باشن خوب می دونند حتی اگر بخوان یک پروژه ساده مثل LED چشمک زن رو راه اندازی کرده باشن علاوه بر خود AVR با یک سری سخت افزار جانبی مثل رگولاتور و کریستال و سیم بندی برای تغذیه میکروکنترلر AVR، پروگرامر ( برای ریختن برنامه تو avr ) نیاز دارند خوب حالا اگه توی این گیر و دار بیایم تغذیه رو به میکرو برعکس بدی که هیچی میکرو میره روی هوا !!!   focus تا بخوایم یاد بگیریم هم کلی پول باید خرج کنیم  و تا ریسک دل زدگی از یادگیری رو به جان بخریم . تازه این پایان ماجرا نیست  dash  پروگرام کردن AVR هم یک سری مشکلات دارد در بهترین حالت که پروگرامر از نوع USB باشد باید AVR را از مدار خارج کرده و روی پروگرامر وصل کرد ( البته میتونید به روش SPI میکرو رو پروگرام کنید که اینطوری دیگه نیاز نیست همش میکرو رو از برد جدا کنید ) در ادامه کد را آپلود کرد و سپس میکرو را از پروگرامر جدا کرده و به برد وصل می کنیم ( نهایت دقت رو باید داشته باشیم که میکرو رو اشتباه یا برعکس وصل نکنیم به مدار چون اون وقت ممکنه برای میکرو مشکل ایجاد بشه و یا حتی دیگه نتونید ازش استفاده کنید ) تازه اگر در کد نویسی اشتباه کوچکی رخ نداده باشد که در این صورت باز هم 4 مرحله وجود داره تا آپلود انجام شود؛ خوب تا این مرحله راه اندازی LED با AVR بود.خوب الان نوبتی هم که باشه نوبت برد آردوینو هست که خودنمایی کنه، خوب حالا قطعات مورد نیاز چی هست؟ برد آردوینو + کابل USB همین ( یعنی مگه داریم مگه میشه ؟؟ بله میشه ) اکثر برد های آردوینو یک LED به صورت پیش فرض نصب شده است ( به پایه 13 برد آردوینو )؛ در روی برد آردوینو رگولاتور، کریستال و همه سخت افزارهای جانبی روی برد به صورت پیش فرض نصب شده است پس به هیچ سخت افزاری نیاز نیست؛ برای راه اندازی پروژه LED با آردوینو کافیست با USB آردوینو را به کامپیوتر وصل کنید در نرم افزار آردوینو با اشاره یک کلید کد را روی برد آپلود کنید؛ یعنی بعد از آماده شدن کد فقط با 2 حرکت می توانید کد را روی آردوینو آپلود کنید.اگر فرض کنیم کسی در کد نویسی وارد نباشد باید چندبار کد برنامه را تغییر دهد حالا اگر با AVR کار کند به ازای هر تغییری که در کد بوجود می آورد و بخواهد آپلود را انجام دهد 4 مرحله را باید طی کند، ولی اگر بخواهد همین مراحل را با آردوینو طی کند اصلاً نیازی به جدا کردن کابل USB نیست و همانطور که کابل USB به آردوینو متصل است می توانید برنامه ریزی را روی برد انجام دهید؛ پس الان فرق آردوینو با خود AVR مشخص شد که چه فرق اساسی دارد.
 

کدنویسی راحت تر آردوینو

حالا آردوینو با خود AVR همین یک فرق رو داشت یعنی فرقی دیگری ندارد ؟
خوب یک فرق اساسی دیگری هم دارد و آن هم در حوزه کد نویسی و برنامه نویسی است همانطور که می دانیم زبان کدویژن زبان C هست و مثلاً برای برنامه ریزی برای LED اول کتابخونه ها رو فراخوانی میکنیم بعد میریم سراغ رجیسترها و پورت و از این دست کارها ولی زبان برنامه نویسی برای آردوینو زبان ++C است که خب از C بهتر و ساده تر هستش ( البته کامپایلرهای دیگه ای هم AVR داره، مثلا اتمل استدیو که زبانش ++C هستش یا بسکام که زبونش بیسیک هستش و … ) و در این برنامه نیاز به هیچ گونه هدری و رجیستری برای راه اندازی فایل لازم نداریم؛ برای مقایسه دو تا کد میگذاریم اولی کد نویسی برای AVR هست :

کدی که برای LED نوشته شده با کدویژن می باشد تازه خیلی از کدها را پاک کردم تا حجمش در اینجا کمتر شود و گرنه 130 خط برنامه برای راه اندازی یک LED لازمه؛ حالا الان می پرسن چرا 130 خط ؟؟ به خاطر اینکه تمامی رجیسترها وضعیت خودشون رو بدونند ( ولی خب چون در این پروژه بکار ما نمیان، پاکشون کردیم )؛ خوب این یکی کد نویسی با آردوینو است :

به نظر بنده برنامه نویسی با آردوینو بسیار راحت تر از برنامه نویسی با کدویژن ( یا هر کامپایلر دیگه AVR ) است؛ حالا بازم قضاوت با خودتون.
خوب حالا یک توضیحاتی کوچک راجع به برنامه نویسی آردوینو : تابع setup برای confing کردن یا همون تنظیمات مربوط به قطعات رو انجام می دید مثل همون تابع main توی کدویژن و تابع loop یک مفهوم داره اجرا تا ابد مثل همون while توی کدویژن.
نکته : تابع (delay(300 برحسب میلی ثانیه است ولی برای دسترسی به زمان هایه میکروثانیه کافیست عدد مورد نظر را تقسیم بر 1000 کنید مثلا برای 25us کافیست 0.025=25/1000 و عدد 0.025 رو درون تابع (delay(0.025 بنویسید.
 

مقایسه قیمت آردوینو و avr

خب معلومه که قیمت بردهای آردوینو بیشتره – الان قیمت یه آردوینو uno چیزی حدود 25 هزار تومنه که هسته مرکزیش ATmega328P هستش ولی خب همین میکرو قیمتش زیر 5 تومن هستش که خب خازن و کریستال و رگولاتور و … رو اضافه کنی بهش میشه 10 هزار تومن و یک پروگرامر هم که بخوای بخری  35 هزار تومن هست که کلاً میشه 45 هزار تومن ولی آردوینو کلاً با پروگرامر و میکروی داخلی و المان های جانبی  25 هزار هست یعنی آردوینو حدوداً نصف قیمت avr با المان جانبی و پروگرامر هست ( البته پروگرامر رو یکبار می خرید برای همیشه )؛ در کل آردوینو از نظر قیمت به صرفه نیست اصلا، مخصوصا اگه تو خراب کاری استاد باشید ^_^
 

ساخت یه پروژه در عمل

ساختن یک پروژه در عمل با آردوینو بسیار بهتر از خود avr است، زیرا در آردوینو ما تمرکز اصلی روی برنامه نویسی است و کمتر درگیر مسائل سخت افزاری می باشیم ولی اگر بخواهیم یک پروژه را با avr پیاده سازی کنیم علاوه بر مسائل نرم افزاری باید به مسائل سخت افزاری هم توجه کنیم و مثلاً برای راه اندازی avr باید اتصال سیم بندی ها را مراقب باشیم که اشتباه وصل نکنیم یا رگولاتور ولتاژ مناسب انتخاب کنیم ولی در آردوینو کلاً شما یک آداپتور یا یک usb به برد آردوینو وصل کنی کارت راه می افته و درگیر سیم بندی و کارهای سخت افزاری مورد نیاز میکرو نیستید.
 

سخت افزار آردوینو

سوکت آداپتور : هر وسیله برقی برای روشن شدن به ولتاژ یا برق احتیاج داره که آردوینو هم از این قاعده مستثنی نیست . برای روشن کردن آردوینو چند راه وجود دارد اولین راه همان کابل USB هست . علاوه بر پورت USB برای روشن کردن آردوینو یک سوکت مخصوص آداپتور هم وجود دارد که میتوان این سوکت را به آداپتور وصل کرد البته نه هر جور آداپتوری چون آداپتورها جریان ها و ولتاژهای متفاوتی دارند معمولاً به برد آردوینو آداپتورهای 5 ولت تا 9 ولت وصل می کنند . و توصیه می کنیم که از آداپتورهای 12 ولتی خودداری نمایید چون در طولانی مدت مجبورید برد را دور بندازید ( رگولاتورهای ولتاژ برد آردوینو در اثر ولتاژ 12 ولتی به شدت داغ میشوند و در طولانی مدت میسوزند . ) اگر بخواهید دما و رطوبت یک بیابان و یا صحرا یا کوهستان را اندازه گیری کنید و به یک ایستگاهی که در فاصله چند صد متری یا یک کیلومتری شما وجود دارد بفرستید ، چکار باید کنید؟ در بیابان یا کوهستان که دسترسی به برق هم نداریم مگر اینکه لپ تاپ ببریم خوب از صبح تا شب که با یک لپ تاپ نمی توانیم وسط بیابون یا کوهستان وایسیم خوب پس چکار کنیم یعنی پروژه کنسل؟ اینجاست که طراحی برد آردوینو به دادمون رسید به شکل زیر نگاه کنید :
مقایسه آردوینو با avr
همانطور که در عکس مشخص است یک پایه در اینجا وجود دارد به اسم Vin که یک پایه ورودی است که میتوان یک باطری به آن متصل کرد در واقع سر مثبت باطری را به پایه Vin و سر منفی باطری را به GND متصل می کنیم؛ خوب، برای راه اندازی دما باید به سنسور هم ولتاژ بدهیم این ولتاژ را چگونه تهیه کنیم؟ همانطور که در شکل مشاهده می کنید دو پایه به نام های 5V و 3.3V وجود دارد که به عنوان پایه های خروجی استفاده می شود یعنی پایه 5V ولتاژ 5 ولت و پایه 3.3V ولتاژ 3.3 ولت را به خروجی می دهد و پایه GND هم به عنوان زمین مدار استفاده می شود؛ پس برای راه اندازی سنسور دما یا ماژول فرستنده/گیرنده از پایانه های ولتاژی 5 ولت و 3.3 ولت به عنوان منبع ولتاژ سنسور دما و یا ماژول فرستنده/گیرنده و یا هر ماژول دیگری استفاده میشود و دیگه نیازی به رگولاتور ولتاژ اضافی نیست؛ لازم به ذکر است که هر نوع ولتاژی را نمی توان به پایه Vin داد پیشنهاد خود شرکت سازنده ماکزیمم 12 ولت است ( زیر 5 ولت قاعدتاً نباید ولتاژ به این پایه داد ) پایه Vin یک کاربرد دیگر هم دارد وقتی ولتاژ آردوینو با آداپتور فراهم بشه روی پایه Vin ولتاژ 9 ولت می افتد و زمانی هم که کابل USB به برد آردوینو متصل میشود ولتاژ 5 ولت روی برد آردوینو می افتد. پایه IOREF سطح منطقی که برد باهاش کار می کند روی این پایه می افتد به عنوان مثال آردوینو UNO روی این پایه سطح منطقی 5 ولت می اندازد یعنی سطح منطقی پین های ورودی و خروجی این برد 5 ولت است ولی آردوینو DUE ولتاژ 3.3 ولت روی این پایه می اندازد.
 

جلوگیری از سوختن برد آردوینو

یک ترفند برای اشتباه زدن پایانه های مثبت و منفی باطری یا آداپتور و نسوختن برد آردوینو و کلاً هر ماژول دیگر !!!
خیلی اوقات اتفاق می افتد که ذهن ما درگیر پروژه هستیم و حواسمان جای دیگری است یا ولت متر در دسترس نیست که پایانه مثبت و منفی باتری و یا آداپتور را اندازه بگیریم و اگر این پایانه را اشتباه به ماژول یا هر وسیله الکترونیکی دیگری وصل کنیم ماژول یا قطعه به طور حتم خواهد سوخت خوب اینجاست که دیود به کار می آید به شرطی که از قبل پایه مثبت و منفی قطعه الکترونیکی را بدانیم مثلاً در شکل بالا مربوط به برد آردوینو پایانه های ورودی ولتاژ و زمین آن مشخص است خوب به شکل زیر دقت کنید .
مقایسه آردوینو با avr
همانطور که در شکل بالا مشاهده می کنید پایانه مثبت و منفی منبع تغذیه به صورت صحیح متصل شده و در این حالت چون VA<VK دیود در بایاس معکوس قرار دارد در این حالت دیود مدار باز است حال به شکل زیر دقت کنید :
مقایسه آردوینو با avr
همانطور که در شکل 2 مشخص است پایانه مثبت و منفی منبع تغذیه به صورت اشتباه متصل شده در این حالت چون VA>VK دیود در بایاس مستقیم قرار دارد و در این حالت ولتاژ ناشی از دو سر پیوند P-N روی ولت متر می افتد اگر چندتا دیود دیگر هم به این شکل اضافه کنید ولتاژ پایین تر می رود و این باعث می شود از سوختن حتمی مدار جلوگیری کند یعنی اگر آستانه تحمل یک وسیله الکترونیکی در بایاس معکوس ( 1v- ) باشد با اضافه کردن چند دیود در شکل 2 ولتاژ منفی را به زیر یک ولت بیاورید همانند شکل زیر یا همان شکل 3 :
مقایسه آردوینو با avr
دقت کنید که دیود های استفاده شده ولتاژ ( 1v- ) را بتوانند ایجاد کنند بعضی از دیودها نمی توانند این کار را انجام دهند؛ همانند شکل زیر :
مقایسه آردوینو با avr
لازم به ذکر است بعد از اندازه گیری ولتاژ زیر منفی یک ولت در صورتی که آستانه تحمل یک قطعه منفی یک ولت باشد می توان مدار شکل 3 را که با دیود بستم را در پروتئوس امتحان کنید و به دلخواه در عمل امتحان کنید یعنی به جای ولت متر ماژول و یا قطعه الکترونیکی را وصل کنید . به جای پایانه مثبت ولتمتر قسمت مثبت ماژول و یا قطعه الکترونیکی و به جای پایانه منفی ولتمتر قسمت GND یا منفی ماژول یا قطعه الکترونیکی را وصل کنید ( دوستان نزنید قطعه رو بسوزونید بگید من گفتم ولی حتماً حتماً حتماً در انتخاب دیود دقت کنید و تحمل آستانه ولتاژ معکوس قطعه الکترونیکی را حتماً بیابید . ) لازم به ذکر است خودم قبلاً این کار را انجام دادم یک تلفن بیسیم روستایی بود آداپتورش سوخت و مدل سوکت آداپتورش گیر نمی آمد با همین روش دیودی که گفتم تونستم با موفقیت پایه های مثبت و منفی آداپتور را به تلفن بیسیم متصل کنم و الان بدون هیچ مشکلی کار میکند . موفق باشید.

پسورد فایل های سایت :
www.dmf313.ir
اینجانب پیام جعفری دارای لیسانس برق و الکترونیک می باشم و علاقه زیادی به مدارهای منطقی و میکروکنترلرها و زبان ماشین ومدارهای مخابراتی و کلاً هر وسیله الکترونیکی دارم
ارسال دیدگاه
10

1) تعداد حروف غیر فارسی از حروف فارسی بیشتر باشه دیدگاه به صورت خودکار حذف میشه.

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. مهمان

    حمید

    ممنون برادر good

    1397/07/19
    10:21
  2. مهمان

    امید

    ممنونم از اطلاعات خوبی دادید. اما در شکل 3 موازی بستن چند دیود باهم عملی نیست و فقط در ایده آل و نرم افزار ممکن هست، در حالت واقعی فقط یکی از دیود ها روشن و مابقی خاموش هستند.

    1397/07/15
    09:44
  3. مهمان

    امیر

    ممنون بابت خوب بودنتون

    1397/07/05
    12:16
  4. مهمان

    سید

    دم شما گرم. توضیحات مفید بود wink

    1397/04/17
    04:17
  5. مهمان

    پوریا

    فقط avr با اردوینو نمیتونم کنار بیام مال بچه سوسولاس laugh mosking

    1397/02/22
    12:04
    • نویسنده این مطلب

      پیام جعفری

      ربطی به سوسول بودن نداره هر دستگاهی کار مختص به خودش رو انجام میده در ضمن آردوینو همون avr هست البته arm هم هست فقط تمامی کارهای سخت افزاریشو انجام دادن ولی تمرکز اصلی روی برنامه نویسی هست hi

      1397/02/23
      12:46
    • مهمان

      Ali

      کجاش سوسول بازیه
      تا حالا با کامپایلرش کار کردی این حرفو میزنی.

      1397/03/08
      03:13
      • مدیر سایت

        مهدی دمیرچیلو

        من خودم به این نتیجه رسیدم برا AVR برم از کامپایلر اتمل استدیو ( یا هر چیز بهتر که زبونش C++ باشه ) استفاده کنم و از کتابخونه های آردوینو هم استفاده کنم.

        1397/03/08
        11:26
  6. مهمان

    Samen

    من علمنی حرفا و قد سیرنی عبدا
    ممنون ?

    1397/01/05
    08:59
    • مهمان

      محمد

      احسنت
      خیلی حدیث جالبی فرمودین
      «مَن عَلّمنی حَرفاً، فقد صَیَّرنی عبداً»

      1397/04/09
      08:44