رفتن به نوشته‌ها

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

آردوینو

فیوز بیت های AVR مقاله دوم

مقاله دیگر در رابطه با فیوز بیت های AVR

فیوز بیت چیست؟

همانطور که می دانیم میکروکنترلرهای AVR در کل دارای سه نوع حافظه می باشد: حافظه FLASH که همان حافظه ای است که کد برنامه نویسی در این حافظه قرار می گیرد، حافظه SRAM برای متغیر ران تایم استفاده می شود و EEPROM که حافظه ای است که داده هایی که باید هنگام خاموش شدن میکرو نباید پاک شوند در این حافظه قرار می گیرد. اکنون حافظه جدیدی معرفی می شود که به هر دوی fuse/lock بیت ها اطلاق می شود. این حافظه تعداد بیت های محدودی را شامل می شود که شامل Low Byte و High Byte می باشد.

ساخت آردوینو با Atmega8-48-88-168-328

با استفاده از میکروکنترلرهای خانواده  AVR می توان آردینو ساخت. آموزش نحوه ساخت برد آردوینوی دلخواه نحوه پروگرام کردن میکروکنترلر ھای AVRبا استفاده از Arduino ISP منبع: https://t.me/ArduinoKaraneJavan https://github.com/MCUdude/MiniCore    

راه کارهای کاهش نویز

  • استفاده از اسنابر:

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

اسنابر
اسنابر

این اسنابر از یک خارن پلی استر ۳۹ نانوفاراد سری با یک مقاومت ۴۷ اهم ۱ وات تشکیل شده است و برای بارهای معمولی AC-220v مثل فن ها، شیربرقی ها و … بکار می رود.

فیوز بیت های AVR

☑️‍ آشنایی با فیوزبیت ها:

🔶فیوزبیتهای CKSEL0، CKSEL1 ، CKSEL2 ، CKSEL3:
این فیوز بیتها منبع کلاک سیستم را تعیین می کنند. در واقع نوع کلاک سیستم مطابق جدول(فیوز بیت های mega16 ) تعیین می شود.

🔷فیوزبیت های SUT0 ، SUT1 :
این فیوز بیت ها سرعت ریست میکروکنترلر را مشخص می کنند. که طبق جدول برنامه ریزی می شوند.

🔶فیوز بیت های BODEN و BODLEVEL:
فیوز بیتBODEN قابلیت Detection Brown –out آی سی را فعال می کند. این قابلیت بدین صورت است که اگر ولتاژ تغذیه آی سی از حدی پایین تر آید، میکروReset می شود. این ولتاژاز طریق فیوز بیت BODLEVEL تعیین می شود

🔷فیوز بیت BOOTRST :
این فیوز بیت در صورت برنامه ریزی شدن آدرس بردار Reset را به ابتدای حافظه Boot انتقال می دهد.

🔶فیوز بیت های BOOTSZ0 و BOOTSZ1:
این فیوز بیتها برای تعیین اندازه و مکان شروع حافظه Boot بکار می روند که طبق جدول زیر تعیین می شود.

تابع millis در آردینو

unsigned long time;

time = millis();

زمان را بر حسب میلی ثانیه بر میگرداند و حدودا هر ۵۰ ( ۴۹.۷۱ ) روز سر ریز می شود. به عبارت دقیق تر  هر  ۲ به توان ۳۲ میلی ثانیه سر ریز می شود:

۲^۳۲ = ۴۲۹۴۹۶۷۲۹۶  [ms]  -> 1- 4294967296

=>  ۰-۴۲۹۴۹۶۷۲۹۵ [ms]

*تابع millis مقدار بازگشتی را درون متغییر time که از نوع unsigned long هست میریزد. چنانچه time از نوع int تعریف شود با خطا مواجه می شوید.

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

طرح مسئله: کلید ۳ ثانیه بایستی فشرده شود تا وارد منو شویم؛ شرط ها و سایر دستورات دلخواه را به جای a++ می نویسیم.   int pin = A5,a=0; bool key=true; int duration=2500; // [ms] unsigned long Time_Low=0; void setup() { Serial.begin(9600); pinMode(pin, INPUT_PULLUP); } void loop() { if (digitalRead(A5)==LOW ) { if (key==true) {Time_Low = millis(); key=false;} } if (digitalRead(A5)==HIGH && key==false ) { if ( (millis()-Time_Low) > duration)      {       a++;       Time_Low=0;      } key=true; } Serial.print(“Key: “); Serial.println(key); //prints time since program started Serial.print(“a: “); Serial.println(a); //prints time since program started }

تابع pulseIn() در آردوینو

https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/

مدت زمان (برحسب میکروثانیه) نگه داشته شدن کلید در یک بار طی شدن حلقه loop را میدهد. یعنی این صورت نیست که هر چه دست را نگه داشتید روی دکمه زمان آن را محاسبه کند. صرفا از زمانی که دست روی کلید رفته تا زمانی که لوپ مجدادا به خط کد pulsin باز میگردد.

دستور پرینت در سریال مانیتور اردوینو

کد

Serial.print(“duration”);
Serial.print(duration);
Serial.print(“duration3”);
Serial.print(duration3);

خروجی

duration0duration30duration0duration30duration0duration30duration0duration30duration0duration30duration0duration30duration0duration30duration0duration30duration0duration30

راه اندازی سنسور رطوبت سنج HS1101

HS1101 یک سنسور رطوبت خازنی می باشدکه بر اساس ظرفیت متغیر خازن عمل می کند.به این صورت که با تغییر رطوبت در محیط،ظرفیت خازن موجود در این سنسور تغییر کرده و رطوبت مورد نظر از این طریق قابل اندازه گیری است.این نوع از سنسور های رطوبت در کاربردهای مختلفی مانند اتوماسیون ادارات،کنترل هوای داخل کابین خودرو،لوازم خانگی و سیستم های کنترل صنعتی استفاده می شود. HS1101 برای راه اندازی این سنسور باید از یک آی سی ۵۵۵ استفاده کرد. با استفاده از آی سی ۵۵۵ یک نوسان ساز می سازیم . با تغییر میزان رطوبت ،میزان خازن سنسور هم تغییر…