সুচিপত্র:

সিগন্যাল জেনারেটর AD9833: 3 ধাপ
সিগন্যাল জেনারেটর AD9833: 3 ধাপ

ভিডিও: সিগন্যাল জেনারেটর AD9833: 3 ধাপ

ভিডিও: সিগন্যাল জেনারেটর AD9833: 3 ধাপ
ভিডিও: Arduino - Piezo Random Frequency Generator 2024, জুলাই
Anonim
সিগন্যাল জেনারেটর AD9833
সিগন্যাল জেনারেটর AD9833
সিগন্যাল জেনারেটর AD9833
সিগন্যাল জেনারেটর AD9833

একটি সিগন্যাল জেনারেটর হল টেস্ট গিয়ারের একটি খুব দরকারী অংশ। এই একটি AD9833 মডিউল এবং একটি Arduino ন্যানো ব্যবহার করে - যে সব, এমনকি একটি PCB না। আপনি allyচ্ছিকভাবে একটি OLED ডিসপ্লে যোগ করতে পারেন। AD9833 সাইন, ত্রিভুজ এবং বর্গ তরঙ্গগুলিকে 0.1 Hz থেকে 12.5 MHz পর্যন্ত করতে পারে - এই প্রকল্পের সফটওয়্যার 1Hz থেকে 100kHz পর্যন্ত সীমাবদ্ধ।

এখানে এবং এখানে একটি Arduino এবং AD9833 ব্যবহার করে অন্যান্য নির্দেশাবলী রয়েছে। এটি সহজ এবং সুইপ জেনারেটর হিসাবে ব্যবহার করা যেতে পারে। সুইপ জেনারেটর ফিল্টার, এম্প্লিফায়ার ইত্যাদির ফ্রিকোয়েন্সি প্রতিক্রিয়া পরীক্ষা করতে সহায়তা করে। অন্যান্য ইন্সট্রাকটেবল ডিজাইনের বিপরীতে, এতে একটি পরিবর্ধক বা প্রশস্ততা নিয়ন্ত্রণ অন্তর্ভুক্ত নয় তবে আপনি চাইলে এগুলি যুক্ত করতে পারেন।

ধাপ 1: সহজ সিগন্যাল জেনারেটর

সহজ সিগন্যাল জেনারেটর
সহজ সিগন্যাল জেনারেটর
সহজ সিগন্যাল জেনারেটর
সহজ সিগন্যাল জেনারেটর
সহজ সিগন্যাল জেনারেটর
সহজ সিগন্যাল জেনারেটর
সহজ সিগন্যাল জেনারেটর
সহজ সিগন্যাল জেনারেটর

সহজ সিগন্যাল জেনারেটরের জন্য, আপনি কেবল AD9833 মডিউলটি আরডুইনো ন্যানোর পিছনে বিক্রি করেন। কোন PCB এর প্রয়োজন নেই।

AD9833 মডিউলটি আমি বেছে নিয়েছি এটির অনুরূপ। আমি বলছি না যে এটি সেরা বা সস্তা সরবরাহকারী কিন্তু আপনার সেই ছবিটি (বা উপরের ছবি) এর মতো দেখতে হবে।

মডিউলগুলির মধ্যে সংযোগগুলি হল:

  • ভিত্তি একসাথে সংযুক্ত
  • D2 = FSync
  • D3 = Clk
  • D4 = ডেটা
  • AD9833 এর D6 = Vcc

AD9833 Arduino এর ডেটা পিন D6 থেকে চালিত - Arduino পর্যাপ্ত কারেন্ট সরবরাহ করতে পারে। আমি 100n ডিকোপলিং ক্যাপাসিটর যুক্ত করেছি কারণ আমি ভেবেছিলাম আমার "উচিত" কিন্তু আমি কোন পার্থক্য দেখতে পাচ্ছি না - AD9833 মডিউল বোর্ডে ইতিমধ্যে একটি ডিকোপলিং ক্যাপাসিটর আছে।

আপনি যদি অভিনব হয়ে থাকেন, আপনি হয়তো "এনালগ গ্রাউন্ড" বনাম "ডিজিটাল গ্রাউন্ড" নিয়ে চিন্তিত হতে পারেন কিন্তু যদি আপনি অভিনব হয়ে থাকেন, তাহলে আপনি £ 4 এর বেশি খরচ করবেন।

সবচেয়ে সহজ সিগন্যাল জেনারেটর একটি পিসি থেকে একটি ইউএসবি সীসা দ্বারা নিয়ন্ত্রিত এবং চালিত হয়। ইউএসবি 115200bps (8-বিট, কোন সমতা নেই) চলমান একটি সিরিয়াল পোর্ট অনুকরণ করে। কমান্ডগুলি হল:

  • '0'.. '9': ডিজিটকে "মিনিট" ফ্রিকোয়েন্সি অ্যারেতে স্থানান্তর করুন
  • 'এস': AD9833 ফ্রিকোয়েন্সি সেট করুন এবং সাইন ওয়েভ তৈরি করুন
  • 'T': ফ্রিকোয়েন্সি সেট করুন এবং ত্রিভুজ তরঙ্গ উৎপন্ন করুন
  • 'প্রশ্ন': ফ্রিকোয়েন্সি সেট করুন এবং বর্গ তরঙ্গ উৎপন্ন করুন
  • 'R': AD9833 রিসেট করুন
  • 'M': "মিনি" ফ্রিকোয়েন্সি অ্যারে "সর্বোচ্চ" অ্যারে কপি করুন
  • 'জি': "মিনিট" থেকে "সর্বোচ্চ" পর্যন্ত 1 সেকেন্ডের মধ্যে ঝাড়ুন
  • 'এইচ': "মিনিট" থেকে "সর্বোচ্চ" 5 সেকেন্ডের মধ্যে ঝাড়ুন
  • 'আমি': "মিনিট" থেকে "সর্বোচ্চ" 20 সেকেন্ডের মধ্যে ঝাড়ুন

আরডুইনো প্রোগ্রামে দুটি 6-অক্ষরের অ্যারে "মিনিট" এবং "সর্বাধিক রয়েছে। যদি আপনি একটি অঙ্ক প্রেরণ করেন তবে এটি" মিনি "অ্যারেতে স্থানান্তরিত হয় longint ফ্রিকোয়েন্সি এবং AD9833 এ পাঠানো হয়েছে। সুতরাং স্ট্রিং পাঠানো হচ্ছে

002500S

AD9833 আউটপুট 2500Hz সাইন ওয়েভে সেট করবে। আপনাকে সর্বদা 6 টি সংখ্যা পাঠাতে হবে। সর্বনিম্ন ফ্রিকোয়েন্সি 000001 এবং সর্বোচ্চ ফ্রিকোয়েন্সি 999999।

যদি আপনি একটি 'এম' পাঠান তাহলে "মিনি" অ্যারেটি "সর্বোচ্চ" অ্যারেতে অনুলিপি করা হয়। যদি আপনি একটি 'এইচ' পাঠান তাহলে AD9833 বারবার 5 সেকেন্ডের মধ্যে ধীরে ধীরে ক্রমবর্ধমান ফ্রিকোয়েন্সি আউটপুট করে। এটি "মিনিট" ফ্রিকোয়েন্সি থেকে শুরু হয় এবং 5 সেকেন্ড পরে "সর্বোচ্চ" ফ্রিকোয়েন্সি হয়। তাই

020000M000100SH

100Hz থেকে 20kHz পর্যন্ত ঝাড়ু দেয়। ফ্রিকোয়েন্সি পরিবর্তন লগারিদমিক তাই 1 সেকেন্ডের পরে ফ্রিকোয়েন্সি 288Hz হবে, 2 সেকেন্ড 833Hz পরে 2402, 6931 এবং 20000। ফ্রিকোয়েন্সি প্রতি মিলি সেকেন্ডে পরিবর্তিত হয়।

Arduino আরেকটি অক্ষর গ্রহণ করলে লুপ থেমে যায় তাই সতর্কতা অবলম্বন করুন যাতে ক্যারেজ-রিটার্ন বা লাইন-ফিড দ্বারা কমান্ড না পাঠানো হয়। যে অতিরিক্ত অক্ষর লুপ বন্ধ হবে। আপনি যদি সিরিয়াল মনিটর ব্যবহার করেন, তাহলে নীচের ডানদিকে একটি বাক্স আছে যা উদাহরণস্বরূপ বলতে পারে "উভয় NL & CR" যা (আমার মনে হয়) আপনার কমান্ডের পরে অক্ষর পাঠায়। এটা "কোন লাইন শেষ" সেট করুন।

আপনি নীচের উইন্ডোজ EXE প্রোগ্রামটি ডাউনলোড করতে পারেন যা প্রয়োজনীয় কমান্ড পাঠাবে অথবা আপনি নিজের লিখতে পারেন। Arduino INO ফাইলটিও এখানে।

ধাপ 2: একটি OLED যোগ করুন

একটি OLED যোগ করুন
একটি OLED যোগ করুন
একটি OLED যোগ করুন
একটি OLED যোগ করুন
একটি OLED যোগ করুন
একটি OLED যোগ করুন

আপনি যদি একটি OLED এবং দুটি বোতাম যুক্ত করেন, তাহলে সিগন্যাল জেনারেটর পিসি ছাড়া একা কাজ করতে পারে।

আপনারা যারা আমার অসিলোস্কোপ নির্দেশনা পড়েছেন তারা মিল খুঁজে পাবেন। AD9833 মডিউলটি আমার অসিলোস্কোপে যোগ করা যেতে পারে "একটি ম্যাচবক্সে অসিলোস্কোপ এবং সিগন্যাল জেনারেটর" তৈরি করতে।

ডিসপ্লেটি একটি 1.3 OLED যা 3.3V এ চলছে যা একটি I2C বাসের মাধ্যমে SH1106 চিপ দ্বারা নিয়ন্ত্রিত হয়।

1.3 "OLED" এর জন্য ইবে অনুসন্ধান করুন। লিঙ্কগুলি দ্রুত পুরনো হয়ে যাওয়ায় আমি কোনও নির্দিষ্ট বিক্রেতার সুপারিশ করতে চাই না। "I2C" বা "IIC" বলার মতো একটি ছবি বেছে নিন এবং VDD GND SCL SDA লেবেলযুক্ত চারটি পিন আছে (কিছু ডিসপ্লেতে মনে হয় পিনগুলো ভিন্ন ক্রমে আছে। সেগুলো চেক করুন। I2C এর ঘড়ির সঠিক নাম হল "এসসিএল" কিন্তু ইবে বোর্ডগুলোতে ফটোতে আমার মত "SCK" লেবেল করা যেতে পারে।)

OLED লাইব্রেরির একটি পূর্ণাঙ্গ বিবরণ ধাপ 8 -এ আমার অসিলোস্কোপের নির্দেশে রয়েছে। আপনাকে ড্রাইভার লাইব্রেরি SimpleSH1106.zip ডাউনলোড করে ইনস্টল করতে হবে যা ধাপ 8 -এ রয়েছে (আমি এখানে অন্য একটি কপি আপলোড করতে চাই না এবং দুটি কপি বজায় রাখতে হবে ।)

INO ফাইলটি নিচে ডাউনলোড করা যাবে। OLED- এর জন্য ব্যবহৃত পিন নম্বরগুলি line০ লাইনের কাছাকাছি ঘোষণা করা হয়। যদি আপনি আমার "একটি ম্যাচবক্সে অসিলোস্কোপ এবং সিগন্যাল জেনারেটর" তৈরি করে থাকেন এবং এটি দিয়ে এই INO ফাইলটি পরীক্ষা করতে চান, বিকল্প পিন নম্বরগুলি একটি #ডিফাইনের মাধ্যমে সক্ষম করা হয়।

আমি সার্কিটের জন্য একটি স্ট্রিপবোর্ড লেআউট দেখিয়েছি। দুটি স্ট্রিপবোর্ড রয়েছে - একটি ন্যানো এবং AD9833 এর জন্য এবং একটি প্রদর্শনীর জন্য। তাদের একটি স্যান্ডউইচ তৈরি করা উচিত। বোর্ডগুলি কম্পোনেন্ট সাইড থেকে দেখানো হয়েছে। সূক্ষ্ম নমনীয় তার দুটি বোর্ডে যোগদান করে। সোল্ডার্ড স্ট্যান্ড-অফের সাথে বোর্ডগুলিকে সংযুক্ত করুন। আমার ডায়াগ্রামে, স্ট্রিপবোর্ডের তামা সায়ানে দেখানো হয়েছে। লাল রেখা হল স্ট্রিপবোর্ডের তারের সংযোগ বা নমনীয় তারগুলি একসঙ্গে বোর্ডে যোগদান করা। আমি শক্তি এবং "সংকেত" লিড দেখাইনি।

AD9833 মডিউলটি স্ট্রিপবোর্ডের তামার পাশে - ন্যানো থেকে বিপরীত দিকে বিক্রি করা হয়। তামার স্ট্রিপগুলিতে সোল্ডার পিনগুলি তারপর AD9833 তাদের উপর ফিট করে এবং এটি সোল্ডার করে।

ডিসপ্লে হয় একক ফ্রিকোয়েন্সি অথবা "মিনিট" এবং "সর্বোচ্চ" ফ্রিকোয়েন্সি দেখায়।

দুটি পুশবাটন রয়েছে: ফ্রিকোয়েন্সিগুলির একটি সংখ্যা নির্বাচন করার জন্য একটি "অনুভূমিক" বোতাম এবং সেই সংখ্যাটি পরিবর্তন করার জন্য একটি "উল্লম্ব" বোতাম।

আমি যে সার্কিটটি ডেভেলপ করছি তার থেকে আমি সিগন্যাল জেনারেটরকে পাওয়ার করি - আমার ওয়ার্কস্টেশনে সবসময় 5V পাওয়া যায়।

ধাপ 3: ভবিষ্যতের উন্নয়ন

ভবিষ্যতে উন্নয়ন
ভবিষ্যতে উন্নয়ন

এটা কি ব্যাটারি চালিত হতে পারে? হ্যাঁ, শুধু একটি 9V PP3 যুক্ত করুন ন্যানোর RAW পিনের সাথে। এটি সাধারণত 20mA ব্যবহার করে।

এটি কি একক লিথিয়াম কোষ দ্বারা চালিত হতে পারে? আমি দেখছি না কেন। আপনার OLED Vdd এবং তার পুল-আপ প্রতিরোধককে 3.7V ব্যাটারির সাথে সংযুক্ত করা উচিত (আমি সন্দেহ করি যে Arduino এর 3.3V আউটপুট সঠিকভাবে কাজ করবে কিনা)।

একটি ফিল্টারের ফ্রিকোয়েন্সি প্রতিক্রিয়া পরীক্ষা করার সময় একটি সুইপ জেনারেটর বেশি উপযোগী যদি আপনি গ্রাফ প্রশস্ততা বনাম ফ্রিকোয়েন্সি করতে পারেন। একটি সংকেত এর প্রশস্ততা পরিমাপ করা কঠিন - আপনি কম ফ্রিকোয়েন্সি এবং উচ্চ ফ্রিকোয়েন্সি জন্য প্রতিক্রিয়া সময় জন্য আপনার খাম ডিটেক্টর বনাম তরঙ্গের ক্ষয় বন্ধ করতে হবে। আপনার প্রশস্ততা আবিষ্কারক তৈরি করার পরে, আপনি "সহজ সিগন্যাল জেনারেটর" এর Arduino এর ADC তে এর আউটপুটটি ফিড করতে পারেন তারপর পিসিতে বর্তমান ফ্রিকোয়েন্সি সহ ফলাফল পাঠান।

এই পৃষ্ঠাটি একটি দরকারী প্রারম্ভিক বিন্দু বা "এনভেলপ ডিটেক্টর" বা "পিক ডিটেক্টর" এর জন্য গুগলে সার্চ করুন। উপরের প্রস্তাবিত সার্কিটে, আপনি সিগন্যাল ফ্রিকোয়েন্সি সেট করবেন, এটি স্থিতিশীল হওয়ার জন্য অপেক্ষা করুন, আরডুইনো A0 পিন আউটপুট ডিজিটাল লো সেট করুন, C ডিসচার্জ করার জন্য অপেক্ষা করুন, A0 ইনপুট সেট করুন, অপেক্ষা করুন, তারপর ADC দিয়ে পরিমাপ করুন। আপনি কিভাবে পেতে আমাকে জানাতে।

প্রস্তাবিত: