پروژه و راه اندازی و ساخت سیگنال ژنراتور با stm32 و avr

با سلام خدمت همه دوستان

در این مطلب پروژه سیگنال ژنراتور را داریم که میتوانید سه نوع موج با انواع فرکانس هارا تولید کنید.

برای اینکار از ماژول ارزان AD9833 ساخت شرکت دیوایس انالوگ است استفاده میکنیم.

پروتکل ارتباطی این ماژول spi است و مشخصات آن به صورت زیر است:

CJMCU-9833 AD9833BRMZ
High-precision programmable waveform generator CJMCU- 9833
AD9833 is CJMCU a low power programmable waveform generator capable of generating sine, triangle wave, square wave output.

Features:
Digitally programmable frequency and phase
12.65 mW power consumption at 3 V
0 MHz to 12.5 MHz output frequency range
28-bit resolution: 0.1 Hz at 25 MHz reference clock
Sinusoidal, triangular, and square wave outputs
2.3 V to 5.5 V power supply
No external components required
3-wire SPI interface
Extended temperature range: ?40°C to +105°C
Power-down option
Update Rate: 25(max)
VOUT Maximum: 0.65V
VOUT Minimum: 38mV
VOUT Temperature Coefficient: 200°
Input High Voltage: 1.7-2.8V
Input Low Voltage: 0.5-0.7V
Input Current: 10?A
Input Capacitance: 3pF
Operating temperature range is ?40°C to +105°C; typical specifications are at 25°C
Size: 17*12mm/0.66*0.47″

 

راه اندازی دو ماژول فوق کاملا مشابه است و از یک ای سی استفاده میکنند اما ماژول بنفش گران تر است و رنج بالاتری از فرکانس هارا پشتیبانی میکند.

ماژول سیگنال ژنراتور AD9833  قابلیت تولید موج سینوسی .مربعی . مثلثی را دارد.

خروجی پین های ماژول به صورت زیر است که از طریق spi  به هر میکرو کنترلری متصل می شود:

پایه out و پایه AGND خروجی ماژول شماست که توسط اسیلوسکوپ قابل مشاهده است.

در پروژه اول از میکرو کنترلر avr سری atmega8  استفاده کردیم

به این صورت که از یک سلکتور استفاده کردیم و توسط تقسیم مقاومتی که به adc میدهیم موقعیت سلکتور را میفهمیم و فرکانس مورد نظر را روی خروجی ست میکنیم و همچنین یک led هم متناسب با هر فرکانس خروجی روشن میکنیم.

برای نوشتن این کد من از state machine استفاده کردم که را بسیار حرفه ای و خوانا تر کرده است و انواع فرکانس ها توسط سلکتور تعیین می شود.

در پروژه فایل شبیه ساز و شماتیک پروتعوس قرار دارد و کد avr در کدویژن به زبان c نوشته شده است و فرکانس کاری میکرو 8 مگاهرتز است.

شماتیک پروتعوس به صورت زیر است:

اگر سلکتور ندارید میتوانید از دکمه فشاری ساده استفاده کنید اما دقت کنید مقدار مقاومت هارا دقیق بخرید و از مقاومت ها با خطای 1 درصد استفاده کنید.

با استفاده از تابع زیر میتوانید فرکانس و شکل موج را تنظیم کنید

void setWave(int waveform, long frequency)

ex: setWave(TRIANGLE, 1000); // just run a fixed TRIANGLE->1khz

تابع زیر هم برای خاموش کردن شکل موج استفاده میشود:

void setWaveOff()

خروجی این پروژه هم با اسیلوسکوپ مشاهده شد که عملکردی بسیار دقیق و پایدار داشت:

 

   

   

جهت تهیه سورس کد پروژه میتوانید از لینک زیر اقدام کنید

اضافه کردن به سبدخرید

 

 

mehdi sehati

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

مطالب مرتبط

guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
مدیریت سایت : مهدی صحتی