مهدی احمدی

اسیلوسکوپ دیجیتال

این اسیلوسکوپ دیجیتال یک اسیلوسکوپ اختصاصی هستش که برای یکی از دوستان طراحی کردم و قابلیت خاصی که داره اینه که از سیگنال ورودی FFT میگیره و علاوه بر این قابلیتهایی مانند تغییر دستی مقدار horizontal, vertical, Domain, Sweep, Refresh, Scan Speed نیز میباشد و برنامه با استفاده از زبان c و در محیط CodeVision طراحی شده است.چند برنامه دیگر هم در پایان قرار داده ام تا در صورتی که خودتان خواستید قابلییتهای جدیدی به برنامه اضافه کنید این امکان را داشته باشید.

 شبیه سازی اولیه روی متلب

برای اندازه گیری FFT در میکرو کنترلر ATMEGA ابتدا با شبیه ساز متلب شبیه سازی لازم را بر روی دیتا ها انجام داده ایم و پس از شبیه سازی به دو فرمول اصلی که قابل اجرا بر روی میکرو میباشد رسیده ایم.که در واقع خروجی های این فرمول برای 200 نمونه رضایت بخش است:

Y(k)=Y(k)+(x(n)*(cos (2*pi*(k-1)*(n-1)/N)))+(i*x(n)*(sin (2*pi*(k-1)*(n-1)/N)))

A(k)=A(k)+x(n)*cos (2*pi*(k-1)*(n-1)/N)

B(k)=B(k)+x(n)*sin(2*pi*(k-1)*(n-1)/N)

C=(A.^2+B.^2)

C=C.^0.5

اجرا به وسیله AVR

وقتی بخواهیم این مدل ریاضی تبدیل را روی یک سیستم میکرو کنترلری اجرا کنیم به دو مشکل اساسی رو برو می شویم مشکل اول سرعت کم میکروکنترلر ها در برابر سیگنال های خارجی و سرعت کم آنالوگ به دیجیتال است و مشکل دوما حجم کم RAM داخلی و سرعت کم برداشت اطلاعات است ولی برای سرعت های پایین می توان برنامه ای را نوشت و به شکل قابل قبولی به نتایج جالبی دست یافت.برنامه ی نوشته شده در این پروژه به زبان C بوده و دارای بلوکهای زیر میباشد

  • بلوک اول read_adc این تابع یک عدد از روی پورت ADC خوانده و آن را باز می گرداند. خروجی تابع یک عدد 16 بیتی است، اما مقدار بیشینه آن 1023 است. تاخیر درون تابع برای اطمینان از پایان تبدیل است.
  • بلوک دوم get_adc_data این بلوک 64 عدد را از ADC گرفته و در یک آرایه ذخیره می کند دقت کنید آرایه از نوع 16 بیتی است، این تابع از یک حلقه FOR ساده تشکیل شده است. آرایه DATA نقش همان Xn را بازی می کند.
  • بلوک سوم FFT این بلوک تبدیل فوریه آرایه DATA انجام می دهد و نتیجه آن را در آرایه C ذخیره می کند. حلقه FOR دوم اندازه بردار A وB را بر می گرداند.این تابع ممکن است مدت زمان زیادی را به خود اختصاص دهد.
  • بلوک چهارم convert این تابع خروجی تابع FFT را برای نمایش آماده می کند. در واقع یک جزوء صحیح از خروجی می گیرد.
  • بلوک پنجم show این بلوک خروجی را روی LCD نمایش می دهد.