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

Category: آردوینو

آردوینو

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

با استفاده از میکروکنترلرهای خانواده  AVR می توان آردینو ساخت. آموزش نحوه ساخت برد آردوینوی دلخواه نحوه پروگرام کردن میکروکنترلر ھای AVRبا استفاده از Arduino ISP منبع: https://t.me/ArduinoKaraneJavan https://github.com/MCUdude/MiniCore ATmega8, ATmega48, ATmega88, ATmega168, ATmega328 and ATmega328PB https://github.com/MCUdude/MicroCore ATtiny13      

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

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

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

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

این اسنابر از یک خارن پلی استر ۳۹ نانوفاراد سری با یک مقاومت ۴۷ اهم ۱ وات تشکیل شده است و برای بارهای معمولی 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 برای راه اندازی این سنسور باید از یک آی سی ۵۵۵ استفاده کرد. با استفاده از آی سی ۵۵۵ یک نوسان ساز می سازیم . با تغییر میزان رطوبت ،میزان خازن سنسور هم تغییر…

راه اندازی LCD کاراکتری توسط اردینو

برای اتصال یه LCD کاراکتری به آردوینو به ۶ تا پین دیجیتال نیاز هست که باید همشون هم به صورت خروجی تعریف بشن. در جدول زیر شماره پایه های متصل رو میتونید ببینید:

نام پین مربوط به LCD

 شماره پایه مربوط به LCD  شماره پایه متصل شده به پین آردوینو
RS 4 6
E 6 7
D4 11 8
D5 12 9
D6 13 10
D7 14 11

include <liquidCrystal.h>

LiquidCrystal lcd(11, 10, 9, 8, 7, 6);

void setup(void) {
lcd.begin(16, 2);
lcd.clear();

…….}

void loop(void) {

lcd.setCursor(0, 1);

// lcd.setCursor( soton 0 , satr 1); // ستون۱ – سطر ۲
lcd.print(temp);

lcd.print("hello, world!");

….

}