🔌 ۱۵ مدار پایه‌ی الکترونیک که هر آردوینوکار باید بلد باشد (با اسم انگلیسی)

✍️ تیم ووکوی فارسی ·

هر پروژه‌ی آردوینو، از چراغ خواب تا ربات، از چند تکه‌ی تکراری ساخته شده است: یک مقاومت که دکمه را آرام نگه می‌دارد، دو مقاومت که ولتاژ را نصف می‌کنند، یک ترانزیستور که موتور را روشن می‌کند و یک دیود که از ترانزیستور محافظت می‌کند. این‌ها مدارهای پایه الکترونیک هستند و اگر بشناسی‌شان، هر شماتیکی را مثل جمله‌ای از کلمه‌های آشنا می‌خوانی. در این راهنما ۱۵ مدار پایه را با اسم کامل فارسی و انگلیسی آورده‌ایم؛ برای هر کدام این‌که چه مشکلی را حل می‌کند، یک نقشه‌ی کوچک، فرمول با یک عدد واقعی و هر جا لازم بوده کد آردوینو. اسم بقیه‌ی مدارها را هم در فهرست اسم مدارها به فارسی و انگلیسی پیدا می‌کنی.

نگاه کلی: ۱۵ مدار در یک جدول

#اسم فارسیEnglish nameچه مشکلی را حل می‌کندفرمول کلیدی
۱مقاومت بالاکش و پایین‌کشPull-up / Pull-down Resistorورودی شناور و نویزیI = V ÷ R
۲مقاومت محدودکننده‌ی جریان LEDLED Current-limiting Resistorسوختن LED و پینR = (Vs − Vf) ÷ I
۳مقسم ولتاژVoltage Dividerاندازه‌گیری ولتاژ بالا، خواندن سنسور مقاومتیVout = Vin × R2 ÷ (R1 + R2)
۴کلید ترانزیستوری NPNNPN Transistor Switchبار پرمصرف‌تر از ۲۰ میلی‌آمپرRb = (5 − 0.7) ÷ Ib
۵کلید ماسفتMOSFET Switch (N-channel, low-side)بارهای چندآمپریP = I² × Rds(on)
۶دیود هرزگردFlyback Diodeولتاژ برگشتی سیم‌پیچV = L × di ÷ dt
۷مدار راه‌انداز رلهRelay Driverقطع و وصل مدار جداI = V ÷ Rcoil
۸پل H با L293DH-Bridgeچرخش موتور در دو جهتجدول IN1 و IN2
۹فیلتر RC و حذف لرزشRC Filter / Hardware Debounceلرزش دکمه، نویزτ = R × C
۱۰خازن دکوپلینگDecoupling (Bypass) Capacitorافت لحظه‌ای تغذیه و ریستΔV = I × Δt ÷ C
۱۱رگولاتور ولتاژ ۷۸۰۵7805 Voltage Regulatorساختن ۵ ولت ثابت از باتری یا آداپتورP = (Vin − 5) × I
۱۲مبدل سطح منطقیLogic Level Shifterگفت‌وگوی ۵ ولت و ۳٫۳ ولتVout = 5 × 2k ÷ 3k
۱۳گسترش خروجی با شیفت رجیسترShift Register Expansion (74HC595)کمبود پینخروجی = ۸ × تعداد آی‌سی
۱۴راه‌انداز دارلینگتون ULN2003Darlington Driver (ULN2003) for Stepperچند سیم‌پیچ با جریان زیاد۲۰۴۸ گام در هر دور
۱۵مدار آستابل ۵۵۵555 Astable Multivibratorچشمک‌زن و نوسان‌ساز بدون میکروکنترلرf = 1.44 ÷ ((R1 + 2R2) × C)

۱. مقاومت بالاکش و پایین‌کش (Pull-up / Pull-down Resistor)

مشکل: پین ورودی‌ای که به هیچ‌جا وصل نیست «شناور» است و هر نویزی، حتی نزدیک شدن دست، آن را بین HIGH و LOW می‌پراند. دکمه فقط وقتی فشرده است مسیر می‌سازد؛ وقتی آزاد است، پین باید یک مقدار مشخص داشته باشد. مقاومت بالاکش آن را به ۵ ولت و مقاومت پایین‌کش به GND می‌کشد.

Pull-up (button to GND)          Pull-down (button to +5V)

   +5V                               +5V
    |                                 |
  [10k]                           [button]
    |                                 |
    +-------- D2                      +-------- D2
    |                                 |
 [button]                           [10k]
    |                                 |
   GND                               GND

 idle = HIGH, pressed = LOW       idle = LOW, pressed = HIGH

فرمول و عدد: وقتی دکمه فشرده است، جریانی که از مقاومت ۱۰ کیلواهم رد می‌شود I = 5 ÷ 10000 = ۰٫۵ میلی‌آمپر است؛ آن‌قدر کم که هدر نمی‌رود و آن‌قدر زیاد که نویز را می‌پوشاند. آردوینو اونو مقاومت بالاکش داخلی ۲۰ تا ۵۰ کیلواهمی دارد که با یک خط روشن می‌شود و دیگر مقاومت بیرونی نمی‌خواهی:

// Button with the internal pull-up: no external resistor needed
const int BUTTON = 2;   // button between D2 and GND
const int LED = 13;     // the on-board LED

void setup() {
  pinMode(BUTTON, INPUT_PULLUP);   // about 20-50k to 5V, inside the chip
  pinMode(LED, OUTPUT);
}

void loop() {
  bool pressed = (digitalRead(BUTTON) == LOW);   // pull-up logic is inverted
  digitalWrite(LED, pressed ? HIGH : LOW);
}

توضیح بیشتر در معنی مقاومت پول‌آپ.

۲. مقاومت محدودکننده‌ی جریان LED (LED Current-limiting Resistor)

مشکل: LED مثل لامپ نیست؛ بعد از ولتاژ آستانه‌اش تقریباً هیچ مقاومتی ندارد و اگر مستقیم به ۵ ولت وصل شود، آن‌قدر جریان می‌کشد که خودش و پین آردوینو آسیب می‌بینند. یک مقاومت سری جریان را محدود می‌کند.

D9 ----[220R]----|>|---- GND
                  LED
            (long leg = anode, toward the resistor)

فرمول و عدد: R = (Vs − Vf) ÷ I. برای LED قرمز با افت Vf ≈ ۲ ولت و جریان هدف ۱۵ میلی‌آمپر: R = (5 − 2) ÷ 0.015 = ۲۰۰ اهم. نزدیک‌ترین مقدار استاندارد بزرگ‌تر ۲۲۰ اهم است و جریان واقعی 3 ÷ 220 ≈ ۱۳٫۶ میلی‌آمپر می‌شود. توان مقاومت P = I² × R ≈ ۰٫۰۴ وات است و یک مقاومت ۱/۴ وات راحت تحملش می‌کند. LED آبی و سفید افت حدود ۳ ولت دارند: (5 − 3) ÷ 0.015 ≈ ۱۳۳ اهم، پس ۱۵۰ اهم. عددها را با ماشین‌حساب مقاومت LED چک کن و اگر می‌خواهی بدانی LED بدون مقاومت چه می‌شود، چرا LED مقاومت می‌خواهد را بخوان.

۳. مقسم ولتاژ (Voltage Divider)

مشکل: ورودی آنالوگ آردوینو حداکثر ۵ ولت را می‌خواند (ESP32 و پیکو ۳٫۳ ولت). برای اندازه‌گیری باتری ۹ ولتی باید ولتاژ را به نسبت معلوم کوچک کرد. همین مدار پایه‌ی خواندن همه‌ی سنسورهای مقاومتی است: فتوسل، ترمیستور، سنسور خمش و پتانسیومتر.

Vin (9V) ---[R1 20k]---+---[R2 10k]--- GND
                        |
                        +---- A0   (Vout = 3V)

فرمول و عدد: Vout = Vin × R2 ÷ (R1 + R2) = 9 × 10 ÷ 30 = ۳ ولت. آردوینو این ۳ ولت را حدود 3 ÷ 5 × 1023 ≈ ۶۱۴ می‌خواند. جریان مقسم 9 ÷ 30k = ۰٫۳ میلی‌آمپر است که باتری را خالی نمی‌کند. یادت باشد مقسم ولتاژ منبع تغذیه نیست: اگر از خروجی‌اش جریان بکشی، ولتاژش می‌افتد.

// Battery monitor: a 9 V battery through a 20k / 10k divider into A0
const float R1 = 20000.0;
const float R2 = 10000.0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int raw = analogRead(A0);                 // 0..1023
  float vOut = raw * 5.0 / 1023.0;          // the voltage at A0
  float vBattery = vOut * (R1 + R2) / R2;   // undo the divider
  Serial.print("battery: ");
  Serial.print(vBattery, 2);
  Serial.println(" V");
  delay(500);
}

منفی باتری باید به GND آردوینو وصل باشد، وگرنه عدد بی‌معنی است. ماشین‌حساب مقسم ولتاژ مقاومت‌ها را برایت پیدا می‌کند و درس ولتاژ را تقسیم کن همین مدار را با تمرین درس می‌دهد.

۴. کلید ترانزیستوری NPN (NPN Transistor Switch)

مشکل: هر پین آردوینو حدود ۲۰ میلی‌آمپر را راحت می‌دهد؛ یک موتور کوچک، نوار LED یا رله بیشتر می‌خواهد. ترانزیستور NPN با یک جریان کوچک در بیس، جریان بزرگی را بین کلکتور و امیتر قطع و وصل می‌کند.

+6V (separate supply)
              |
            [LOAD]   motor, lamp or LED strip
              |
              C
 D9 --[470R]--B    NPN (2N2222, BC337)
              E
              |
             GND   (shared with the Arduino GND)

فرمول و عدد: فرض کن بار ۲۰۰ میلی‌آمپر می‌کشد و بهره‌ی ترانزیستور (β) حدود ۱۰۰ است. حداقل جریان بیس 0.2 ÷ 100 = ۲ میلی‌آمپر است؛ برای این‌که ترانزیستور کامل «اشباع» شود و داغ نکند، پنج برابرش می‌گیریم: Ib = ۱۰ میلی‌آمپر. مقاومت بیس Rb = (5 − 0.7) ÷ 0.01 = ۴۳۰ اهم، که ۴۷۰ اهم استاندارد را برمی‌داریم (Ib ≈ ۹ میلی‌آمپر). در اشباع ولتاژ کلکتور تا امیتر حدود ۰٫۲ ولت است و گرمای ترانزیستور 0.2 × 0.2 = ۰٫۰۴ وات؛ بدون هیت‌سینک.

// Motor speed through an NPN transistor (470 ohm base resistor on D9)
const int MOTOR = 9;   // a PWM pin

void setup() {
  pinMode(MOTOR, OUTPUT);
}

void loop() {
  for (int speed = 0; speed <= 255; speed += 5) {   // speed up slowly
    analogWrite(MOTOR, speed);
    delay(40);
  }
  delay(1000);
  analogWrite(MOTOR, 0);                            // stop
  delay(1000);
}

اگر بار موتور یا رله است، دیود هرزگرد (مدار ۶) را فراموش نکن. درس بدون کد ترانزیستور: کلید برقی این مدار را با دکمه و LED نشان می‌دهد.

۵. کلید ماسفت (MOSFET Switch)

مشکل: برای بار ۲ آمپری، ترانزیستور NPN به ۲۰۰ میلی‌آمپر جریان بیس نیاز دارد که هیچ پینی نمی‌دهد. ماسفت با ولتاژ گیت روشن می‌شود، نه جریان؛ پس پین آردوینو تقریباً هیچ باری حس نمی‌کند.

D9 ---[220R]---+------ G      N-MOSFET (IRLZ44N, logic-level)
                |
              [10k]            D ---- LOAD ---- +12V
                |
               GND             S ---- GND  (shared with the Arduino)

فرمول و عدد: گرمای ماسفت P = I² × Rds(on). IRLZ44N با ۵ ولت روی گیت مقاومتی حدود ۰٫۰۲۵ اهم دارد؛ برای ۲ آمپر: 2² × 0.025 = ۰٫۱ وات، یعنی تقریباً سرد. مقاومت ۲۲۰ اهم جریان لحظه‌ای شارژ گیت را به حدود 5 ÷ 220 ≈ ۲۳ میلی‌آمپر محدود می‌کند و مقاومت ۱۰ کیلواهم گیت را موقع روشن شدن آردوینو (وقتی پین هنوز ورودی است) خاموش نگه می‌دارد. حتماً مدل «منطقی» بخر؛ IRFZ44N معمولی با ۵ ولت کامل روشن نمی‌شود و داغ می‌کند. کد همان کد ترانزیستور NPN بالاست. مشخصات قطعه در ماسفت N با IRLZ44N.

۶. دیود هرزگرد (Flyback Diode)

مشکل: سیم‌پیچ موتور و رله انرژی را در میدان مغناطیسی نگه می‌دارد. وقتی ترانزیستور ناگهان جریان را قطع می‌کند، سیم‌پیچ برای ادامه دادن جریان یک ولتاژ برعکس و خیلی بزرگ می‌سازد که ترانزیستور را می‌سوزاند یا آردوینو را ریست می‌کند. دیود هرزگرد به این جریان یک راه امن برای چرخیدن می‌دهد.

+V ------+--------------+
           |              |
        [COIL]        [1N4007]   band (cathode) toward +V
       motor/relay        |
           |              |
           +--------------+
           |
           C   transistor collector (or MOSFET drain)

فرمول و عدد: ولتاژ سیم‌پیچ V = L × di ÷ dt است. سیم‌پیچی با اندوکتانس ۱۰ میلی‌هانری که جریان ۱۰۰ میلی‌آمپری‌اش در یک میکروثانیه قطع شود: 0.01 × 0.1 ÷ 0.000001 = ۱۰۰۰ ولت! با دیود، این ولتاژ به حدود ۰٫۷ ولت بالاتر از تغذیه محدود می‌شود. برای رله‌ی کوچک 1N4148 کافی است و برای موتور 1N4007 یا دیود شاتکی 1N5819. پروژه‌ی آماده‌ی دیود محافظ موتور را باز کن و جای دیود را ببین.

۷. مدار راه‌انداز رله (Relay Driver)

مشکل: رله یک کلید مکانیکی است که با برق باز و بسته می‌شود و مدار دوم را کاملاً جدا قطع و وصل می‌کند. ولی سیم‌پیچ رله برای پین آردوینو پرمصرف است. راه‌انداز رله ترکیب دو مدار قبلی است: کلید ترانزیستوری و دیود هرزگرد.

+5V ----+-------------+
         |             |
    [RELAY COIL]   [1N4148]   band toward +5V
         |             |
         +-------------+
         |
         C
 D7 --[1k]--B    NPN
         E
         |
        GND

فرمول و عدد: سیم‌پیچ یک رله‌ی ۵ ولتی رایج حدود ۷۰ اهم است: I = 5 ÷ 70 ≈ ۷۱ میلی‌آمپر، خیلی بیشتر از توان یک پین. با مقاومت بیس ۱ کیلواهم، Ib = 4.3 ÷ 1000 ≈ ۴٫۳ میلی‌آمپر و با بهره‌ی ۱۰۰ ترانزیستور تا ۴۳۰ میلی‌آمپر را هدایت می‌کند؛ یعنی با خیال راحت اشباع است. ماژول‌های رله‌ی آماده همین ترانزیستور و دیود را روی برد دارند و بعضی‌شان با LOW فعال می‌شوند.

// Relay driver: D7 -> 1k -> NPN base, coil with a flyback diode
const int RELAY = 7;

void setup() {
  pinMode(RELAY, OUTPUT);
}

void loop() {
  digitalWrite(RELAY, HIGH);   // coil on: COM connects to NO
  delay(2000);
  digitalWrite(RELAY, LOW);    // coil off: COM goes back to NC
  delay(2000);
}

فرق NO و NC و نکته‌های ایمنی برق شهر در ماژول رله با آردوینو آمده است.

۸. پل H با L293D (H-Bridge)

مشکل: کلید ترانزیستوری موتور را فقط در یک جهت می‌چرخاند. برای عقب رفتن ربات باید جهت جریان در موتور برعکس شود. پل H چهار کلید است که مثل حرف H دور موتور چیده شده‌اند؛ آی‌سی L293D دو پل H کامل را در خودش دارد.

+V            +V
       |             |
      S1            S3
       |             |
       +-----(M)-----+
       |             |
      S2            S4
       |             |
      GND           GND

 S1 + S4 closed  -> forward
 S3 + S2 closed  -> reverse
 S1 + S2 closed  -> short circuit! (the L293D never allows it)
پایه‌ی L293Dناموصل به
۱EN1 (سرعت با PWM)D9
۲ و ۷IN1 و IN2 (جهت)D8 و D7
۳ و ۶OUT1 و OUT2دو سیم موتور
۱۶VCC1 (منطق)5V آردوینو
۸VCC2 (موتور)مثبت باتری موتور
۴، ۵، ۱۲، ۱۳GNDGND مشترک

فرمول و عدد: جدول درستی ساده است: IN1 = HIGH و IN2 = LOW یعنی جلو، برعکسش عقب، و هر دو یکسان یعنی ایست. L293D تا ۶۰۰ میلی‌آمپر برای هر موتور می‌دهد ولی خودش حدود ۱٫۵ تا ۲٫۵ ولت افت دارد؛ با باتری ۶ ولتی، موتور تقریباً ۴ ولت می‌بیند.

// One DC motor on an L293D: direction with IN1/IN2, speed with EN1 (PWM)
const int EN1 = 9;   // L293D pin 1
const int IN1 = 8;   // L293D pin 2
const int IN2 = 7;   // L293D pin 7

void drive(int speed) {          // -255..255, the sign is the direction
  if (speed > 0) {
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
  } else if (speed < 0) {
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
  } else {
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
  }
  analogWrite(EN1, abs(speed));  // 0 lets the motor coast to a stop
}

void setup() {
  pinMode(EN1, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
}

void loop() {
  drive(200);
  delay(2000);    // forward
  drive(0);
  delay(1000);
  drive(-200);
  delay(2000);    // reverse
  drive(0);
  delay(1000);
}

درس موتور جلو و عقب همین مدار را در شبیه‌ساز با L293D قدم‌به‌قدم می‌سازد.

۹. فیلتر RC و حذف لرزش دکمه (RC Filter / Hardware Debounce)

مشکل: کنتاکت فلزی دکمه هنگام فشرده شدن چند میلی‌ثانیه می‌لرزد و آردوینو یک فشار را چند فشار می‌بیند. یک مقاومت و یک خازن، تغییرهای خیلی سریع را صاف می‌کنند؛ همین مدار در جای دیگر فیلتر پایین‌گذر برای نویز سنسور است.

+5V
    |
  [10k]
    |
    +--------------+------ D2
    |              |
 [button]       [1uF]
    |              |
   GND            GND

فرمول و عدد: ثابت زمانی τ = R × C = 10000 × 0.000001 = ۰٫۰۱ ثانیه، یعنی ۱۰ میلی‌ثانیه. خازن در یک τ به ۶۳ درصد و در حدود ۵τ (۵۰ میلی‌ثانیه) تقریباً کامل شارژ می‌شود؛ لرزش‌های چندمیلی‌ثانیه‌ای فرصت نمی‌کنند ولتاژ را از آستانه رد کنند. به زبان فیلتر، فرکانس قطع f = 1 ÷ (2π × R × C) ≈ ۱۶ هرتز است. ماشین‌حساب ثابت زمانی RC این را برای هر مقداری حساب می‌کند. راه نرم‌افزاری هم هست و قطعه‌ی اضافه نمی‌خواهد:

// Software debounce: accept a change only after it is steady for 30 ms
const int BUTTON = 2;      // button between D2 and GND
int stableState = HIGH;
int lastReading = HIGH;
unsigned long lastFlip = 0;
int presses = 0;

void setup() {
  pinMode(BUTTON, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  int reading = digitalRead(BUTTON);
  if (reading != lastReading) {
    lastFlip = millis();         // the contact moved: restart the clock
    lastReading = reading;
  }
  if (millis() - lastFlip > 30 && reading != stableState) {
    stableState = reading;       // steady for 30 ms: a real change
    if (stableState == LOW) {
      presses++;
      Serial.println(presses);
    }
  }
}

۱۰. خازن دکوپلینگ (Decoupling / Bypass Capacitor)

مشکل: آی‌سی‌ها جریان را تکه‌تکه و در لحظه‌های خیلی کوتاه می‌کشند و سیم‌های تغذیه نمی‌توانند آن‌قدر سریع جواب بدهند. نتیجه، افت‌های لحظه‌ای ولتاژ است که خطای عجیب، ریست ناگهانی یا نویز در خواندن آنالوگ می‌سازد. یک خازن کوچک کنار پایه‌ی تغذیه‌ی هر آی‌سی، مثل یک مخزن آب کوچک، این جریان‌های لحظه‌ای را تأمین می‌کند.

+5V ----+-------------+------ VCC of the IC
         |             |
      [100nF]       [10uF]
     (ceramic)     (bulk)
         |             |
 GND ----+-------------+------ GND of the IC

  place the 100nF as close to the IC pins as you can

فرمول و عدد: افت ولتاژ ΔV = I × Δt ÷ C. اگر آی‌سی برای ۲۰ نانوثانیه ۵۰ میلی‌آمپر بکشد، خازن ۱۰۰ نانوفاراد ولتاژ را فقط 0.05 × 0.00000002 ÷ 0.0000001 = ۰٫۰۱ ولت پایین می‌برد. برای بارهای بزرگ‌تر خازن بزرگ‌تر لازم است: سروویی که یک میلی‌ثانیه ۵۰۰ میلی‌آمپر بکشد، از یک خازن ۴۷۰ میکروفارادی حدود 0.5 × 0.001 ÷ 0.00047 ≈ ۱٫۱ ولت افت می‌گیرد؛ برای همین کنار سروو و موتور خازن الکترولیتی بزرگ می‌گذارند. انواع خازن را در راهنمای خازن ببین.

۱۱. رگولاتور ولتاژ ۷۸۰۵ (7805 Voltage Regulator)

مشکل: باتری ۹ ولتی یا آداپتور ۱۲ ولتی داری ولی ماژول‌هایت ۵ ولت ثابت می‌خواهند. ۷۸۰۵ ولتاژ ورودی بالاتر را به ۵ ولت ثابت تبدیل می‌کند و اضافه‌اش را به گرما تبدیل می‌کند.

+-----------+
 9-12V ----| IN    OUT |---- +5V
     |     |    GND    |     |
     |     +-----+-----+     |
  [0.33uF]       |        [0.1uF]
     |           |           |
 GND +-----------+-----------+ GND

فرمول و عدد: گرمای رگولاتور P = (Vin − 5) × I. با آداپتور ۱۲ ولتی و بار ۵۰۰ میلی‌آمپری: (12 − 5) × 0.5 = ۳٫۵ وات، که بدون هیت‌سینک آن را آن‌قدر داغ می‌کند که خودش را خاموش کند. با ۹ ولت و ۲۰۰ میلی‌آمپر فقط ۰٫۸ وات است. ۷۸۰۵ دست‌کم حدود ۲ ولت اختلاف لازم دارد، پس ورودی کمتر از ۷ ولت کافی نیست، و بازدهش با ورودی ۱۲ ولت فقط 5 ÷ 12 ≈ ۴۲ درصد است. برای جریان زیاد، رگولاتور سوئیچینگ مثل LM2596 بهتر است. مشخصات و پایه‌ها در رگولاتور ۷۸۰۵.

۱۲. مبدل سطح منطقی (Logic Level Shifter)

مشکل: آردوینو اونو با ۵ ولت حرف می‌زند و ESP32، پیکو و بیشتر ماژول‌های جدید با ۳٫۳ ولت. سیگنال ۵ ولتی می‌تواند پایه‌ی ۳٫۳ ولتی را آسیب بزند و سیگنال ۳٫۳ ولتی ممکن است برای ورودی ۵ ولتی کم باشد.

One way, 5V -> 3.3V (a divider is enough):

 Arduino TX (5V) ---[1k]---+---[2k]--- GND
                           |
                           +--- ESP32 RX (3.3V)

 Both ways, e.g. I2C (one N-MOSFET per line, BSS138):

 3.3V --[10k]--+                +--[10k]-- 5V
               |   gate = 3.3V  |
 SDA (3.3V) ---+--S --[FET]-- D-+--- SDA (5V)

فرمول و عدد: مقسم ۱ و ۲ کیلواهم: 5 × 2 ÷ (1 + 2) ≈ ۳٫۳۳ ولت، دقیقاً سطح امن ESP32. جهت برعکس معمولاً خودش کار می‌کند: ATmega328P هر ولتاژی بالای 0.6 × 5 = ۳ ولت را HIGH می‌خواند، پس ۳٫۳ ولت HIGH است، ولی فقط با ۰٫۳ ولت حاشیه. برای خط‌های دوطرفه مثل I2C از ماژول مبدل سطح ماسفتی استفاده کن. کدام پایه‌های ESP32 حساس‌اند در پین اوت ESP32 آمده است.

۱۳. گسترش خروجی با شیفت رجیستر 74HC595 (Shift Register Expansion)

مشکل: آردوینو اونو حدود بیست پین دارد؛ برای یک ماتریس LED یا یک نوار ۱۶تایی کم می‌آید. آی‌سی 74HC595 هشت بیت را سریالی از سه سیم می‌گیرد و روی هشت خروجی می‌گذارد و چند تا از آن پشت سر هم زنجیر می‌شوند.

Arduino            74HC595
 D11 (data)  -----> DS    (pin 14)
 D12 (clock) -----> SHCP  (pin 11)
 D8  (latch) -----> STCP  (pin 12)
                    MR    (pin 10) -> +5V
                    OE    (pin 13) -> GND
                    Q0..Q7 -> 8 x [470R] -> LEDs -> GND
                    Q7'   (pin 9)  -> DS of the next 595

فرمول و عدد: با n آی‌سی، 8 × n خروجی داری و همیشه فقط همان سه پین آردوینو را مصرف می‌کنی؛ چهار آی‌سی یعنی ۳۲ LED. ولی کل جریان یک 74HC595 حدود ۷۰ میلی‌آمپر محدود است: با مقاومت ۴۷۰ اهم هر LED قرمز حدود 3 ÷ 470 ≈ ۶٫۴ میلی‌آمپر و هشت LED روی هم حدود ۵۱ میلی‌آمپر می‌کشند که در محدوده است. با ۲۲۰ اهم به حدود ۱۰۹ میلی‌آمپر می‌رسی که زیاد است.

// 8 LEDs from 3 pins: a running light through a 74HC595
const int DATA = 11;   // DS
const int CLOCK = 12;  // SHCP
const int LATCH = 8;   // STCP

void show(byte pattern) {
  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLOCK, MSBFIRST, pattern);
  digitalWrite(LATCH, HIGH);    // all 8 outputs change at the same moment
}

void setup() {
  pinMode(DATA, OUTPUT);
  pinMode(CLOCK, OUTPUT);
  pinMode(LATCH, OUTPUT);
}

void loop() {
  for (int i = 0; i < 8; i++) {
    show(1 << i);               // one lit LED walks along the row
    delay(150);
  }
}

درس ۸ LED با ۳ پین همین مدار را در شبیه‌ساز می‌سازد.

۱۴. راه‌انداز دارلینگتون ULN2003 برای استپر (Darlington Driver for a Stepper)

مشکل: استپر موتور 28BYJ-48 چهار سیم‌پیچ دارد که باید به ترتیب روشن شوند و هر کدام بیشتر از توان یک پین جریان می‌کشد. ULN2003 هفت کلید دارلینگتون (دو ترانزیستور پشت سر هم با بهره‌ی خیلی زیاد) و دیودهای هرزگرد داخلی دارد؛ یعنی هفت «مدار ۴ و ۶» در یک آی‌سی.

Arduino   ULN2003           28BYJ-48
 D8  ----> IN1   OUT1 -----> coil 1
 D9  ----> IN2   OUT2 -----> coil 2
 D10 ----> IN3   OUT3 -----> coil 3
 D11 ----> IN4   OUT4 -----> coil 4
           COM  ------------ +5V  (built-in flyback diodes)
           GND  ------------ GND  (shared)
                 red common wire of the motor -> +5V

فرمول و عدد: هر سیم‌پیچ 28BYJ-48 پنج‌ولتی حدود ۵۰ اهم است: I = 5 ÷ 50 = ۱۰۰ میلی‌آمپر، که برای ULN2003 (تا ۵۰۰ میلی‌آمپر در هر کانال) راحت است. دارلینگتون حدود ۱ ولت افت دارد، پس سیم‌پیچ عملاً ۴ ولت می‌بیند. موتور با گیربکسش ۲۰۴۸ گام در هر دور دارد: ۹۰ درجه یعنی ۵۱۲ گام.

// 28BYJ-48 through a ULN2003 with the built-in Stepper library
#include <Stepper.h>

const int STEPS_PER_REV = 2048;
Stepper motor(STEPS_PER_REV, 8, 10, 9, 11);   // order: IN1, IN3, IN2, IN4

void setup() {
  motor.setSpeed(10);     // rpm; this little motor tops out around 15
}

void loop() {
  motor.step(512);        // 90 degrees forward
  delay(500);
  motor.step(-512);       // and back
  delay(500);
}

چرا ترتیب پایه‌ها ۸، ۱۰، ۹، ۱۱ است و چطور به درجه‌ی دقیق برسی، در استپر موتور 28BYJ-48 با ULN2003 توضیح داده‌ایم.

۱۵. مدار آستابل ۵۵۵ (555 Astable Multivibrator)

مشکل: همه‌چیز میکروکنترلر نمی‌خواهد. برای یک چشمک‌زن، آژیر یا پالس ساعت ساده، آی‌سی ۵۵۵ با دو مقاومت و یک خازن یک موج مربعی بی‌پایان می‌سازد. در حالت «آستابل» هیچ حالت پایداری ندارد و مدام بین HIGH و LOW می‌رود.

+9V --+--------------------- pin 8 (VCC)
       +--------------------- pin 4 (RESET)
       |
    [R1 1k]
       |
       +--------------------- pin 7 (DISCHARGE)
       |
    [R2 10k]
       |
       +--------------------- pin 6 (THRESHOLD) + pin 2 (TRIGGER)
       |
    [C 47uF]
       |
 GND --+--------------------- pin 1 (GND)

 pin 3 (OUTPUT) ---[470R]---|>|--- GND
 pin 5 (CONTROL) ---[10nF]--- GND   (optional, reduces noise)

فرمول و عدد: فرکانس f = 1.44 ÷ ((R1 + 2R2) × C). با R1 = ۱ کیلواهم، R2 = ۱۰ کیلواهم و C = ۴۷ میکروفاراد: 1.44 ÷ (21000 × 0.000047) ≈ ۱٫۴۶ هرتز، یعنی تقریباً یک و نیم چشمک در ثانیه. زمان روشن 0.693 × (R1 + R2) × C ≈ ۰٫۳۶ ثانیه و زمان خاموش 0.693 × R2 × C ≈ ۰٫۳۳ ثانیه است؛ دیوتی سایکل حدود ۵۲ درصد. برای سریع‌تر شدن، C را کوچک کن: با ۱ میکروفاراد فرکانس حدود ۶۹ هرتز می‌شود و با یک بلندگو صدای بم می‌دهد. درس چشمک‌زن بدون آردوینو این مدار را در شبیه‌ساز بدون کد می‌سازد.

این ۱۵ مدار را کجا امتحان کنی؟

بیشتر این مدارها درباره‌ی ولتاژ و جریان هستند، پس به شبیه‌سازی نیاز دارند که مدار را واقعاً حل کند. شبیه‌ساز تینکرکد فارسی در حالت بدون کد (دوبعدی) مقاومت، LED، ترانزیستور NPN، ماسفت، دیود، رله، خازن، ۵۵۵، ۷۸۰۵، 74HC595، L293D و ULN2003 را دارد و با مولتی‌متر ولتاژ و جریان هر نقطه را نشان می‌دهد؛ اگر LED بدون مقاومت بگذاری، واقعاً می‌سوزد. در حالت آردوینو هم همین قطعه‌ها کنار کد اجرا می‌شوند و مدارهای آردوینو اونو و نانو رایگان‌اند. این همان شبیه ساز مدار فارسی است که روی اینترنت ملی و گوشی هم کار می‌کند.

در wokwi.com تمرکز روی میکروکنترلر و ماژول‌هاست: شیفت رجیستر 74HC595، ماژول رله، استپر و LED و دکمه را دارد و برای مدارهای دیجیتال عالی است. برای دیدن عدد ولتاژ و جریان در مدارهای گسسته مثل مقسم ولتاژ یا کلید ترانزیستوری، شبیه‌سازی که مدار را الکتریکی حل می‌کند مناسب‌تر است. ساختن مدارهای آردوینو در ووکوی را در مدارهای آردوینو در ووکوی و امکانات شبیه‌ساز آنلاین آردوینو را در شبیه ساز آردوینو آنلاین ببین.

جمع‌بندی: این مدارها کجای پروژه می‌نشینند؟

قدم بعدی مدارهای دیجیتال است: گیت‌ها، جمع‌کننده و شمارنده در مدار منطقی و دیجیتال. فهرست مدارهای ساده‌ی بدون کد هم در مدارهای ساده‌ی الکترونیک آمده و همه‌ی مقاله‌های این مجموعه در مدار و شبیه‌سازی مدار هستند.

کلید ترانزیستوری را در تینکرکد فارسی بساز 🔌

سؤال‌های رایج

مقاومت پول آپ چیست و چرا لازم است؟

مقاومتی که یک ورودی را، وقتی دکمه آزاد است، به ولتاژ مثبت می‌کشد تا شناور نماند و نویز نخواند. در آردوینو با pinMode(pin, INPUT_PULLUP) مقاومت داخلی حدود ۲۰ تا ۵۰ کیلواهم روشن می‌شود و دکمه بین پین و GND قرار می‌گیرد؛ دکمه‌ی فشرده LOW خوانده می‌شود.

مقاومت بیس ترانزیستور را چطور حساب کنم؟

جریان بار را بر بهره‌ی ترانزیستور تقسیم کن و حاصل را چند برابر کن تا ترانزیستور کامل اشباع شود. بعد ۰٫۷ ولت را از ۵ ولت کم کن و بر آن جریان تقسیم کن. برای بار ۲۰۰ میلی‌آمپری با بهره‌ی ۱۰۰ و ضریب ۵، جریان بیس ۱۰ میلی‌آمپر و مقاومت حدود ۴۳۰ اهم می‌شود که ۴۷۰ اهم استاندارد را برمی‌داریم.

دیود هرزگرد را کجا و چطور بگذارم؟

موازی با سیم‌پیچ رله یا موتور و برعکس: کاتد، یعنی طرف نوار دیود، به سمت مثبت تغذیه و آند به سمتی که ترانزیستور قطع و وصل می‌کند. در حالت عادی جریانی از آن رد نمی‌شود و فقط ولتاژ برگشتی لحظه‌ی قطع را خنثی می‌کند.

فرق ماسفت با ترانزیستور معمولی در مدار آردوینو چیست؟

ترانزیستور BJT با جریان بیس کار می‌کند و برای بارهای چندصد میلی‌آمپری خوب است. ماسفت با ولتاژ گیت کار می‌کند، تقریباً جریانی از پین نمی‌کشد و با مقاومت روشن خیلی کم چند آمپر را با گرمای کم قطع و وصل می‌کند، به شرط این‌که مدل منطقی (Logic-level) مثل IRLZ44N باشد.

مقاله‌های مرتبط

🧮

مدار منطقی و دیجیتال: ساخت و شبیه‌سازی گیت AND، OR، NOT و XOR تا شمارنده

🛠️

ساخت مدار در ووکوی (Wokwi) قدم‌به‌قدم: از انتخاب برد و سیم‌کشی تا اجرای شبیه‌سازی، با دو مدار کامل

🔬

شبیه‌سازی مدار در ووکوی: دقیقاً چه چیزی شبیه‌سازی می‌شود؟ (Circuit Simulation in Wokwi)

⚖️

ESP32 یا آردوینو اونو؟ مقایسه برای شروع

همه‌ی آموزش‌های مدار و شبیه‌سازی مدار ← · همه‌ی مقاله‌ها