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

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

مدار را در ووکوی ساختی، دکمه‌ی اجرا را زدی و LED چشمک زد. ولی دقیقاً چه چیزی «شبیه‌سازی» شد؟ ولتاژ دو سر LED؟ جریان مقاومت؟ یا فقط این‌که پین ۱۳ روشن و خاموش شد؟ شبیه‌سازی مدار در ووکوی (Circuit Simulation in Wokwi) با شبیه‌سازی مدار در نرم‌افزاری مثل LTspice یک معنی ندارد، و دانستن این فرق جلوی خیلی از غافل‌گیری‌ها را می‌گیرد: مداری که در شبیه‌ساز بی‌نقص کار کرد ولی روی میز، LED را سوزاند یا آردوینو را ریست کرد. در این مقاله می‌گوییم ووکوی چه چیزی را خیلی دقیق شبیه‌سازی می‌کند، چه چیزی را مدل نمی‌کند، سیگنال‌ها را چطور با آنالیزور منطقی ببینی، سرعت شبیه‌سازی چه معنایی دارد و در آخر یک جدول می‌دهیم که هر مدار را کجا شبیه‌سازی کنی.

دو جور «شبیه‌سازی مدار»

وقتی کسی می‌گوید «مدار سیمولیشن» یا «سیمولیشن مدار آردوینو»، ممکن است منظورش یکی از این دو کار کاملاً متفاوت باشد:

شبیه‌سازی میکروکنترلر (MCU Emulation)شبیه‌سازی مداری (SPICE / Analog)
سؤالی که جواب می‌دهد«کد من درست اجرا می‌شود؟»«در این شاخه چند ولت و چند آمپر هست؟»
چه چیزی را مدل می‌کنددستورهای پردازنده، رجیسترها، تایمرها، وقفه‌ها و پین‌هامقاومت، خازن، سلف، دیود و ترانزیستور با معادله‌های ولتاژ و جریان
خروجیرفتار برنامه، سطح منطقی پین‌ها، داده‌ی سریال و I2Cولتاژ و جریان هر گره، شکل موج، توان مصرفی
نمونه‌هاووکوی (Wokwi)، «اجرای واقعی» تینکرکد فارسیال‌تی‌اسپایس (LTspice)، فالستاد (Falstad)، ngspice
نقطه‌ی ضعفجریان و ولتاژ واقعی شاخه‌ها را حساب نمی‌کندمعمولاً کد میکروکنترلر را اجرا نمی‌کند

بعضی نرم‌افزارها هر دو را با هم دارند؛ معروف‌ترینش پروتئوس (Proteus) است که هم میکروکنترلر را اجرا می‌کند و هم بخش آنالوگ مدار را با موتور SPICE حل می‌کند. شبیه‌ساز تینکرکد فارسی هم ترکیبی است که پایین‌تر توضیحش می‌دهیم. ووکوی ولی آگاهانه روی طرف اول تمرکز کرده است.

ووکوی چه چیزهایی را خوب شبیه‌سازی می‌کند؟

خلاصه این‌که برای سؤال «کد من درست است؟» ووکوی یکی از دقیق‌ترین جواب‌ها را می‌دهد؛ دقیق‌تر از شبیه‌سازهایی که کد را به زبان دیگری ترجمه می‌کنند. برای دیدن متغیرها خط‌به‌خط هم دیباگ قدم‌به‌قدم کد آردوینو در شبیه‌ساز را بخوان.

چه چیزهایی را مثل یک ابزار SPICE مدل نمی‌کند؟

ووکوی در اصل شبیه‌ساز میکروکنترلر است و قطعه‌های بیرون از تراشه را بیشتر به شکل منطقی یا با مدل‌های ساده می‌بیند. به طور کلی این‌ها را از آن انتظار نداشته باش:

این‌ها عیب ووکوی نیستند، انتخاب طراحی‌اند: حل کردن معادله‌های آنالوگ همه‌ی مدار در هر لحظه، شبیه‌سازی را خیلی کند می‌کرد و برای هدف اصلی‌اش، یعنی تست کد، لازم نیست. ووکوی ممکن است به‌مرور امکانات آنالوگ بیشتری اضافه کند؛ وضعیت روز را در مستندات خود wokwi.com ببین. ولی تا وقتی سؤالت درباره‌ی ولتاژ و جریان است، به ابزار دیگری نیاز داری.

💡 قاعده‌ی سرانگشتی: اگر مدار بدون میکروکنترلر هم معنی دارد (مثل مقسم ولتاژ، چشمک‌زن ۵۵۵ یا شارژ خازن)، شبیه‌ساز مداری را انتخاب کن. اگر مدار بدون کد کاری نمی‌کند (مثل LCD، سنسور دیجیتال یا وای‌فای)، شبیه‌ساز میکروکنترلر.

آنالیزور منطقی (Logic Analyzer): دیدن سیگنال‌ها

در دنیای واقعی برای دیدن این‌که روی یک پین دقیقاً چه می‌گذرد از اسیلوسکوپ یا آنالیزور منطقی استفاده می‌کنند. ووکوی یک آنالیزور منطقی مجازی دارد (شناسه‌ی wokwi-logic-analyzer) که مثل بقیه‌ی قطعه‌ها از دکمه‌ی + اضافه می‌شود. چند کانال دیجیتال (D0، D1، …) و یک پایه‌ی GND دارد. هر کانال را به پینی که می‌خواهی ببینی وصل کن، شبیه‌سازی را اجرا کن و بعد متوقفش کن. داده‌ی ضبط‌شده به شکل یک فایل VCD در اختیارت قرار می‌گیرد که با برنامه‌های رایگانی مثل PulseView یا GTKWave باز می‌شود.

یک مدار تمرینی سه‌سیگنالی

این برنامه سه نوع سیگنال رایج می‌سازد تا خواندنشان را یاد بگیری. سیم‌کشی: کانال D0 به پین ۳، کانال D1 به پین ۱۰، کانال D2 به پین ۱ (TX) و GND آنالیزور به GND آردوینو. یک سروو هم به پین ۱۰ بزن تا حرکتش را ببینی (اگر ووکوی کتابخانه‌ی Servo را نشناخت، از Library Manager اضافه‌اش کن).

// Three signals to look at with the logic analyzer
// D0 <- pin 3 (PWM), D1 <- pin 10 (servo), D2 <- pin 1 (TX), GND <- GND
#include <Servo.h>

Servo servo;

void setup() {
  Serial.begin(9600);
  analogWrite(3, 64);    // about 25% duty cycle, roughly 490 Hz on pin 3
  servo.attach(10);      // servo pulses every 20 ms on pin 10
  servo.write(90);       // middle position, about 1.5 ms pulse
}

void loop() {
  Serial.write('U');     // 0x55: bits alternate, easy to read on TX
  delay(20);
}

چرا PWM روی پین ۳ و نه ۹؟ کتابخانه‌ی Servo در اونو از تایمر ۱ استفاده می‌کند و تا وقتی فعال است، analogWrite روی پین‌های ۹ و ۱۰ کار نمی‌کند. این دقیقاً از آن جزئیاتی است که ووکوی چون تراشه را واقعاً شبیه‌سازی می‌کند، درست نشانت می‌دهد.

سیگنال‌ها را چطور بخوانیم؟

کانالچه می‌بینیچطور تفسیرش کنی
D0: PWMموج مربعی با دوره‌ی حدود ۲ میلی‌ثانیهنسبت زمان HIGH به کل دوره همان duty cycle است: ۶۴ از ۲۵۵ یعنی حدود ۲۵٪، پس حدود نیم میلی‌ثانیه HIGH
D1: سرووهر ۲۰ میلی‌ثانیه یک پالس کوتاهپهنای پالس زاویه را می‌گوید: حدود ۱ میلی‌ثانیه یک سر، ۱٫۵ وسط و ۲ سر دیگر
D2: سریال TXخط در حالت بیکار HIGH، بعد یک دسته بیتدر ۹۶۰۰ باود هر بیت حدود ۱۰۴ میکروثانیه است: یک بیت شروع LOW، هشت بیت داده (کم‌ارزش‌ترین اول) و یک بیت پایان HIGH. حرف U موج مرتب صفر و یک می‌سازد

در PulseView می‌توانی رمزگشا (decoder) هم بگذاری: رمزگشای UART روی کانال D2 حرف U را مستقیم نشان می‌دهد و رمزگشای I2C روی خطوط SDA و SCL آدرس دستگاه و بایت‌ها را. وقتی یک LCD I2C جواب نمی‌دهد، دیدن این‌که آیا اصلاً بایتی روی خط می‌رود یا نه، نصف عیب‌یابی است. برای دیدن مقدار متغیرها در طول زمان، ابزار ساده‌ترش نمودار سریال است.

سرعت شبیه‌سازی

ووکوی کنار شبیه‌سازی درصدی نشان می‌دهد که می‌گوید شبیه‌سازی نسبت به زمان واقعی با چه سرعتی جلو می‌رود. ۱۰۰٪ یعنی هم‌پای ساعت دیوار. اگر عدد کمتر شد، شبیه‌سازی از زمان واقعی عقب است؛ ولی زمان درون برنامه درست می‌ماند. یعنی millis() همچنان زمان شبیه‌سازی‌شده را درست می‌شمارد و آنالیزور منطقی پهنای پالس‌ها را دقیق نشان می‌دهد؛ فقط چشمک یک‌ثانیه‌ای LED از دید تو کمی کندتر است.

چیزهایی که معمولاً شبیه‌سازی را کند می‌کنند و راه‌حلشان:

ووکوی بیرون از مرورگر: VS Code و CLI

ووکوی فقط سایت wokwi.com نیست. یک افزونه برای VS Code دارد که همان شبیه‌سازی را کنار ویرایشگر خودت اجرا می‌کند؛ پروژه را با ابزار ساخت خودت (مثل PlatformIO یا ESP-IDF) کامپایل می‌کنی و افزونه فایل اجرایی را شبیه‌سازی می‌کند. یک ابزار خط فرمان (Wokwi CLI) هم دارد که شبیه‌سازی را بدون صفحه‌ی گرافیکی اجرا می‌کند؛ مثلاً در یک سیستم CI، برای این‌که بعد از هر تغییر کد بررسی شود که خروجی سریال همان چیزی است که باید. هر دو به یک فایل تنظیمات و حساب ووکوی نیاز دارند و بعضی امکاناتشان به طرح‌های پولی ووکوی وابسته است؛ جزئیات به‌روز را از مستندات خود ووکوی بخوان و خلاصه‌ی طرح‌ها را در قیمت ووکوی ببین. برای یادگیری و کلاس، همان نسخه‌ی مرورگر کافی است.

شبیه‌سازی جریان در تینکرکد فارسی

شبیه‌ساز تینکرکد فارسی درست جایی قوی است که ووکوی عمداً واردش نشده: حل کردن جریان و ولتاژ.

اسیلوسکوپ مجازی تینکرکد فارسی هم جزو ماژول‌های حرفه‌ای اشتراک Plus است؛ کار با آن را در دیدن PWM با اسیلوسکوپ و مولتی‌متر ببین. راهنمای کامل انتخاب روش شبیه‌سازی را هم در راهنمای شبیه‌سازی مدار نوشته‌ایم.

پروتئوس، LTspice، فالستاد و تینکرکد: هر کدام برای چه؟

ابزارنوعنقطه‌ی قوتمحدودیت
ووکوی (Wokwi)شبیه‌ساز میکروکنترلر، آنلایناجرای دقیق کد آردوینو، ESP32 و پیکو؛ ماژول‌های دیجیتال زیاد؛ وای‌فای مجازیجریان و ولتاژ آنالوگ را حل نمی‌کند
پروتئوس (Proteus)ترکیبی، نرم‌افزار ویندوزیمیکروکنترلر و SPICE در یک محیط؛ طراحی PCBنصب سنگین، یادگیری سخت‌تر، نسخه‌ی کامل پولی
ال‌تی‌اسپایس (LTspice)SPICE، نرم‌افزار رایگانتحلیل دقیق آنالوگ: منبع تغذیه، فیلتر، تقویت‌کننده، مبدل سوئیچینگمیکروکنترلر ندارد؛ محیطش برای مبتدی خشک است
فالستاد (Falstad / CircuitJS)شبیه‌ساز مداری، آنلایننمایش متحرک جریان، عالی برای فهمیدن مدار؛ بدون نصبمیکروکنترلر ندارد؛ برای مدارهای بزرگ کند
تینکرکد سرکیت (Tinkercad Circuits)ترکیبی ساده، آنلاینآردوینو اونو و مدار پایه برای کلاسبردهای کم؛ بدون ESP32 و پیکو
تینکرکد فارسیترکیبی، آنلاین و فارسیحل جریان با سوختن LED، مولتی‌متر، مود بدون کد، آردوینو؛ ESP32 و پیکو با Plusکتابخانه‌ی آنالوگ به اندازه‌ی SPICE حرفه‌ای نیست

مقایسه‌های مفصل‌تر: ووکوی یا پروتئوس؟ و ووکوی یا تینکرکد؟

جدول: کدام مدار را کجا شبیه‌سازی کنیم؟

این جدول برای ۲۰ مدار رایج می‌گوید کدام نوع شبیه‌ساز جواب بهتری می‌دهد و چرا.

#اسم فارسیEnglish nameبهترین جاچرا
۱مدار LED با مقاومتLED with Resistorمود ساده‌ی تینکرکد فارسی، فالستادسؤال اصلی جریان است و سوختن LED را باید دید
۲مدار مقسم ولتاژVoltage Dividerمود ساده با مولتی‌متر، LTspiceولتاژ وسط را باید اندازه گرفت، نه منطق را
۳مدارهای سری و موازیSeries and Parallel Circuitsمود ساده، فالستادتقسیم جریان و ولتاژ بین شاخه‌ها
۴مدار شارژ و دشارژ خازنRC Charge and DischargeLTspice، فالستاد، مود سادهرفتار در طول زمان و ثابت زمانی RC
۵مدار چشمک‌زن ۵۵۵555 Astable Blinkerمود ساده، LTspiceنوسان از شارژ خازن می‌آید، نه از کد
۶مدار کلید ترانزیستوریTransistor Switchمود ساده، LTspiceجریان بیس و کلکتور و اشباع ترانزیستور
۷مدار موتور با دیود هرزگردMotor Driver with Flyback Diodeمود ساده، LTspiceجریان موتور و ولتاژ برگشتی سیم‌پیچ
۸مدار تقویت‌کننده‌ی آپ‌امپOp-amp AmplifierLTspice، مود سادهبهره، اشباع و محدوده‌ی تغذیه
۹مدار فیلتر پایین‌گذر RCRC Low-pass FilterLTspiceپاسخ فرکانسی فقط با تحلیل AC دیده می‌شود
۱۰مدار یکسوساز پل دیودیBridge RectifierLTspice، فالستادولتاژ متناوب، افت دیودها و ریپل
۱۱مدار مبدل باک (کاهنده‌ی ولتاژ)Buck ConverterLTspiceسوئیچ زنی سریع و سلف؛ فقط SPICE دقیق جواب می‌دهد
۱۲مدار گیت‌های منطقیLogic Gates (AND, OR, XOR)مود ساده، فالستادجدول درستی را با کلید و LED می‌بینی
۱۳مدار نیم‌جمع‌کنندهHalf Adderمود ساده، فالستادترکیب XOR و AND؛ کد لازم ندارد
۱۴مدار چشمک‌زن آردوینوArduino Blinkووکوی، مود آردوینوهمه‌ی رفتار در کد است
۱۵مدار چراغ راهنماییTraffic Lightووکوی، مود آردوینوترتیب زمانی و منطق برنامه
۱۶مدار فاصله‌سنج اولتراسونیکUltrasonic Distance Meterووکوی، مود آردوینواندازه‌گیری زمان پالس با pulseIn
۱۷مدار ایستگاه هواشناسی با DHT22 و LCDDHT22 Weather Stationووکویپروتکل تک‌سیمه‌ی DHT و I2C نمایشگر
۱۸مدار نمایشگر OLEDOLED Display (SSD1306)ووکویکتابخانه‌ی گرافیکی و ارتباط I2C
۱۹مدار وب‌سرور ESP32ESP32 Web Serverووکوی، ESP32 تینکرکد فارسی (Plus)وای‌فای و HTTP؛ هیچ ربطی به جریان ندارد
۲۰مدار کنترل دمای فن با PIDPID Fan Temperature Controlمود آردوینوی تینکرکد فارسیهم کد کنترل لازم است و هم جریان موتور و ماسفت

مدارهای پایه‌ی جدول (ردیف‌های ۱ تا ۷) را با کد آردوینو هم می‌شود ترکیب کرد؛ فهرستشان در مدارهای پایه‌ی الکترونیک با آردوینو آمده است. گیت‌ها و جمع‌کننده‌ها (ردیف‌های ۱۲ و ۱۳) هم مقاله‌ی جدا دارند: شبیه‌سازی مدار منطقی.

یک روش ترکیبی برای پروژه‌ی واقعی

برای یک پروژه‌ی جدی، مثلاً یک گلخانه‌ی کوچک با سنسور، فن و نمایشگر، لازم نیست بین ابزارها یکی را انتخاب کنی. هر بخش را جایی شبیه‌سازی کن که برایش ساخته شده:

  1. بخش قدرت: تغذیه، درایور فن یا پمپ، ترانزیستور و دیود را در یک شبیه‌ساز مداری (مود ساده‌ی تینکرکد فارسی یا LTspice) بررسی کن تا مطمئن شوی جریان‌ها در حد مجاز است.
  2. بخش سنسور: اگر سنسور آنالوگ با مقسم ولتاژ داری، بازه‌ی ولتاژ خروجی را در همان شبیه‌ساز مداری ببین تا با ورودی آنالوگ برد جور باشد.
  3. کد: منطق برنامه، نمایشگر و ارتباط‌ها را در ووکوی بنویس و تست کن. سیم‌کشی و ساختن مدار در ووکوی را در ساخت مدار در ووکوی قدم‌به‌قدم گفته‌ایم.
  4. سیگنال‌ها: اگر ماژولی جواب نمی‌داد، با آنالیزور منطقی ببین روی خط داده چه می‌گذرد.
  5. برد واقعی: حالا با خیال راحت قطعه بخر و ببند. تفاوت‌های باقی‌مانده معمولاً از سیم شل، تغذیه‌ی ضعیف یا نویز است.

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

سوختن LED را در تینکرکد فارسی ببین 🔬

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

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

به طور کلی نه. ووکوی کد میکروکنترلر را دقیق اجرا می‌کند و سطح منطقی پین‌ها را نشان می‌دهد، ولی جریان هر شاخه، افت ولتاژ و سوختن قطعه را مثل ابزارهای SPICE حساب نمی‌کند.

چرا LED در ووکوی بدون مقاومت نمی‌سوزد؟

چون ووکوی جریان LED را حساب نمی‌کند و فقط می‌بیند پین روشن است یا خاموش. در مدار واقعی LED بدون مقاومت ممکن است بسوزد. مود ساده‌ی تینکرکد فارسی جریان را حل می‌کند و بالای حدود ۴۰ میلی‌آمپر LED را می‌سوزاند.

برای شبیه‌سازی مدار آنالوگ مثل فیلتر یا تقویت‌کننده از چه نرم‌افزاری استفاده کنم؟

از یک شبیه‌ساز مداری مثل LTspice، فالستاد (Falstad) یا بخش SPICE پروتئوس. برای مدارهای آموزشی ساده، مود ساده‌ی تینکرکد فارسی هم جریان و ولتاژ را حساب می‌کند و با مولتی‌متر نشان می‌دهد.

خروجی آنالیزور منطقی ووکوی را با چه برنامه‌ای باز کنم؟

خروجی یک فایل VCD است که با برنامه‌های رایگانی مثل PulseView یا GTKWave باز می‌شود. در PulseView می‌توانی رمزگشای UART، I2C یا SPI را روی کانال‌ها بگذاری تا بایت‌ها را بخوانی.

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

🔌

۴۰ مدار آردوینو برای ووکوی، با اسم فارسی و انگلیسی و قطعه‌های diagram.json

🎓

درس مدار با ووکوی: سرفصل ۲۰ جلسه‌ای از اولین LED تا اینترنت اشیا

📡

۳۰ مدار ESP32 با اسم فارسی و انگلیسی — از چشمک‌زن تا اینترنت اشیا

⚖️

رزبری پای پیکو، ESP32 یا آردوینو؟ کدام برد برای شروع بهتر است

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