〰️ فانکشن ژنراتور (Function Generator)

اسم انگلیسیFunction Generator
در ووکوی (Wokwi)نسخه‌ی آماده‌ای سراغ نداریم
دسته📏 ابزار اندازه‌گیری
در شبیه‌ساز فارسیمود ساده (بدون کد) · رایگان

فانکشن ژنراتور (Function Generator) دستگاهی است که ولتاژ را با یک الگوی تکرارشونده بالا و پایین می‌برد: موج مربعی، سینوسی یا مثلثی، با فرکانس، دامنه و آفستی که خودت تعیین می‌کنی. در کار با آردوینو از آن برای ساختن یک سیگنال آزمایشی استفاده می‌شود؛ مثلاً ورودی ساعت برای یک شمارنده، پالس برای تست وقفه (Interrupt)، یا موج سینوسی برای امتحان یک فیلتر. خبر خوب این است که خود آردوینو هم یک موج‌ساز مربعی ساده است و همین صفحه نشانت می‌دهد چطور.

فانکشن ژنراتور در ووکوی (Wokwi)

تا جایی که می‌دانیم ووکوی فانکشن ژنراتور ندارد و سیگنال آنالوگ مثل موج سینوسی را بین قطعه‌ها شبیه‌سازی نمی‌کند. جایگزین عملی این است که خود برد را با tone() یا analogWrite() موج‌ساز کنی و سیگنال را با آنالایزر منطقی ووکوی (wokwi-logic-analyzer) ببینی. آنالایزر فقط صفر و یک را ثبت می‌کند، پس برای موج مربعی و PWM کاملاً مناسب است:

{
  "version": 1,
  "parts": [
    { "type": "wokwi-arduino-uno", "id": "uno", "top": 100, "left": 0 },
    { "type": "wokwi-logic-analyzer", "id": "logic1", "top": -60, "left": 80 }
  ],
  "connections": [
    [ "uno:8", "logic1:D0", "green", [] ],
    [ "uno:9", "logic1:D1", "blue", [] ],
    [ "uno:8", "uno:2", "orange", [] ],
    [ "uno:GND.1", "logic1:GND", "black", [] ]
  ]
}

سیم نارنجی خروجی پین 8 را به پین 2 برمی‌گرداند تا کد پایین فرکانس ساخته‌شده را خودش بشمارد. فانکشن ژنراتور واقعی‌تر، با موج مربعی، سینوسی و مثلثی، فرکانس ۰٫۱ تا ۵ هرتز (آن‌قدر آهسته که چشمک LED را با چشم ببینی) و ولتاژ تا ۱۲ ولت، در مود ساده‌ی شبیه‌ساز مدار تینکرکد فارسی رایگان است.

سیم‌کشی با آردوینو

پایهوصل به
OUT ژنراتور واقعیپین 2 از راه مقاومت ۱ کیلواهم؛ موج بین ۰ تا ۵ ولت، بدون بخش منفی
GND ژنراتورGND آردوینو
پین 8 (tone)بازر، LED با مقاومت، یا پین 2 برای خودآزمایی
پین 9 (PWM)LED با مقاومت یا کانال اسیلوسکوپ

کد نمونه: موج‌ساز و فرکانس‌شمار

// Arduino as a tiny square-wave generator and frequency counter.
// Pin 8: square wave from tone(). Pin 9: PWM (about 490 Hz) at 25% duty.
// Pin 2: input; wire it to pin 8 (or to a real generator) to measure frequency.
const int TONE_PIN = 8;
const int PWM_PIN = 9;
const int IN_PIN = 2;

volatile unsigned long edges = 0;
unsigned int freq = 100;              // Hz, change it from the Serial Monitor

void countEdge() {
  edges++;
}

void setup() {
  Serial.begin(9600);
  pinMode(IN_PIN, INPUT);
  attachInterrupt(digitalPinToInterrupt(IN_PIN), countEdge, RISING);
  tone(TONE_PIN, freq);
  analogWrite(PWM_PIN, 64);           // 64 / 255 = about 25% duty
  Serial.println("type a frequency in Hz (31 .. 20000) and press Enter");
}

void loop() {
  if (Serial.available()) {
    long f = Serial.parseInt();
    while (Serial.available()) Serial.read();   // drop the line ending
    if (f >= 31 && f <= 20000) {
      freq = f;
      tone(TONE_PIN, freq);
    }
  }

  noInterrupts();
  edges = 0;
  interrupts();
  delay(1000);                        // count rising edges for one second
  noInterrupts();
  unsigned long counted = edges;
  interrupts();

  Serial.print("set:");
  Serial.print(freq);
  Serial.print(" measured:");
  Serial.println(counted);
}

تعداد لبه‌های بالارونده در یک ثانیه همان فرکانس به هرتز است. اگر یک ژنراتور واقعی را به پین 2 بدهی، همین برنامه فرکانس‌شمار ساده‌ای می‌شود که عدد روی دستگاه را تأیید می‌کند.

اشتباه‌های رایج

آموزش‌های مرتبط

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

فانکشن ژنراتور را مستقیم به پین آردوینو وصل کنم؟

فقط اگر موج بین ۰ تا ۵ ولت بماند. موج سینوسی ژنراتور معمولاً حول صفر نوسان می‌کند و نیمه‌ی منفی‌اش به پین آسیب می‌زند؛ با تنظیم آفست (Offset) موج را بالای صفر ببر و یک مقاومت ۱ کیلواهم سری بگذار.

آردوینو اونو چه فرکانسی می‌تواند بسازد؟

با tone() موج مربعی از ۳۱ هرتز تا ده‌ها کیلوهرتز، روی یک پین در هر زمان. analogWrite روی بیشتر پین‌ها PWM حدود ۴۹۰ هرتز و روی پین‌های ۵ و ۶ حدود ۹۸۰ هرتز می‌دهد. برای موج سینوسی واقعی به فیلتر یا مبدل دیجیتال به آنالوگ نیاز داری.

ووکوی فانکشن ژنراتور دارد؟

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

📖 طرز کار، مشخصات فنی و نکته‌های خرید این قطعه در دانشنامه‌ی تینکرکد فارسی: فانکشن ژنراتور آمده است.

قطعه‌های دیگرِ ابزار اندازه‌گیری

📈

اسیلوسکوپ

Oscilloscope

🔍

مولتی‌متر

Multimeter

همه‌ی ۱۰۵ قطعه ← · آموزش مدار

فانکشن ژنراتور را در شبیه‌ساز امتحان کن 🚀