🔀 کلید DPDT (دوپل دوطرفه) (DPDT Switch)
| اسم انگلیسی | DPDT Switch |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | 🎛️ کلید، دکمه و ورودی |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
کلید DPDT (DPDT Switch) در واقع دو کلید دوطرفه است که با یک دسته با هم جابهجا میشوند: شش پایه، دو مدار کاملاً جدا، یک حرکت دست. معروفترین کارش چپگرد و راستگرد کردن موتور DC بدون هیچ برنامهای است؛ ولی کنار آردوینو هم به کار میآید، وقتی میخواهی یک حرکت دسته هم یک مدار را عوض کند و هم به برنامه خبر بدهد.
کلید DPDT در ووکوی (Wokwi)
تا جایی که میدانیم ووکوی نسخهی آمادهی این قطعه را ندارد؛ موتور DC هم در فهرست قطعههایش نیست. نزدیکترین جایگزین، کلید کشویی wokwi-slide-switch است که یک SPDT است، یعنی دقیقاً نصف یک DPDT. برای تمرین «خواندن وضعیت دسته» همین کافی است: پایهی وسطش (2) را به GND و یکی از کناریها (1) را به یک پین ورودی بزن؛ کد پایین با همین جایگزین هم کار میکند.
مدار کامل با خود DPDT را در تینکرکد فارسی بساز؛ آنجا این کلید هم در حالت ساده (2D) و هم در حالت آردوینو (3D) رایگان شبیهسازی میشود و مثال آمادهی جهت موتور با کلید DPDT را همانجا اجرا میکنی. اسم پایهها در شبیهساز: ردیف اول L1، M1، R1 و ردیف دوم L2، M2، R2. پایهی M مشترک وسط است و دسته آن را در هر دو ردیف همزمان یا به L میرساند یا به R.
سیمکشی با آردوینو
در این مدار قطب ۱ به آردوینو میگوید دسته کدام طرف است و قطب ۲، بدون دخالت برنامه، یکی از دو LED نشانگر را روشن میکند. در پروژهی واقعی بهجای LEDها میشود با قطب ۲ تغذیهی یک بخش از مدار را عوض کرد.
| پایهی کلید | وصل به |
|---|---|
| M1 | GND آردوینو |
| L1 | پین 2 (ورودی با INPUT_PULLUP) |
| R1 | پین 3 (ورودی با INPUT_PULLUP) |
| M2 | 5V آردوینو |
| L2 | مقاومت ۲۲۰ اهم، بعد آند LED سبز؛ کاتد به GND |
| R2 | مقاومت ۲۲۰ اهم، بعد آند LED قرمز؛ کاتد به GND |
اگر فقط چپگرد و راستگرد موتور را میخواهی، آردوینو لازم نیست: دو سیم موتور به M1 و M2، مثبت باتری به L1، منفی به L2، و دو سیم ضربدری از R1 به L2 و از R2 به L1. همین را درس جهت موتور در دورهی برق قدمبهقدم نشان میدهد.
کد نمونه
// DPDT switch: pole 1 is read by the Arduino, pole 2 lights its own LED.
// Wiring: M1 -> GND, L1 -> pin 2, R1 -> pin 3 (INPUT_PULLUP on both)
const int PIN_L = 2;
const int PIN_R = 3;
int lastPos = -1;
void setup() {
pinMode(PIN_L, INPUT_PULLUP);
pinMode(PIN_R, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
int pos = 0; // 0 = lever in between
if (digitalRead(PIN_L) == LOW) pos = 1; // lever on the L side
if (digitalRead(PIN_R) == LOW) pos = 2; // lever on the R side
if (pos != lastPos) { // report changes only
lastPos = pos;
if (pos == 1) Serial.println("Position L: forward");
else if (pos == 2) Serial.println("Position R: reverse");
else Serial.println("Lever moving...");
}
delay(20); // simple debounce
}
برنامه فقط وقتی چیزی چاپ میکند که وضعیت عوض شده باشد؛ برای همین سریال مانیتور با هزاران خط تکراری پر نمیشود. حالت صفر یعنی دسته وسط راه است و هیچکدام از دو پین LOW نیست.
اشتباههای رایج
- SPDT بهجای DPDT: برای برعکس کردن موتور باید هر دو سیمش همزمان جابهجا شوند؛ کلید SPDT فقط یکی را عوض میکند.
- سیم ضربدری اشتباه: اگر R1 را به L1 ببندی، در یکی از دو حالت دو سر باتری مستقیم به هم میرسند؛ اتصال کوتاه و باتری داغ. اول در شبیهساز امتحان کن.
- قاطی کردن دو ردیف: دو قطب از هم جدا هستند. اگر M1 و M2 را به یک نقطه ببندی، عملاً یک کلید ساده ساختهای.
- برگرداندن جهت وسط چرخش: عوض کردن جهت موتوری که با سرعت کامل میچرخد جریان لحظهای بزرگی میکشد. اگر جهت را با برنامه عوض میکنی، سراغ درایور L293D برو.
آموزشهای مرتبط
- موتور DC، همان موتوری که این کلید جهتش را عوض میکند
- کلید کشویی (Slide Switch)، جایگزین ساده در ووکوی
- ۱۵ مدار پایهی الکترونیک، از جمله پل H با L293D
سؤالهای رایج
ووکوی کلید DPDT دارد؟
تا جایی که میدانیم نه. نزدیکترین قطعهی ووکوی کلید کشویی wokwi-slide-switch است که یک SPDT است، یعنی فقط نصف یک DPDT. مدار کامل چپگرد و راستگرد موتور با DPDT را میتوانی رایگان در تینکرکد فارسی بسازی.
چرا با کلید SPDT نمیشود جهت موتور را عوض کرد؟
برای برعکس شدن موتور باید هر دو سیمش همزمان جابهجا شوند. SPDT فقط یک سیم را جابهجا میکند؛ DPDT دو کلید همزمان است و هر دو سیم را با هم عوض میکند.
کلید DPDT را میشود به آردوینو وصل کرد؟
بله. یک قطب کلید را مثل یک کلید معمولی با INPUT_PULLUP بخوان تا آردوینو بفهمد دسته کدام طرف است، و قطب دیگر را برای یک مدار جدا مثل تغذیهی موتور یا LED نشانگر نگه دار.