সুচিপত্র:

ট্রু-আরএমএস এসি ভোল্টেজ পরিমাপ: 14 টি ধাপ
ট্রু-আরএমএস এসি ভোল্টেজ পরিমাপ: 14 টি ধাপ

ভিডিও: ট্রু-আরএমএস এসি ভোল্টেজ পরিমাপ: 14 টি ধাপ

ভিডিও: ট্রু-আরএমএস এসি ভোল্টেজ পরিমাপ: 14 টি ধাপ
ভিডিও: সেরা ডিজিটাল অটো-রেঞ্জ মাল্টিমিটার। Aneng Q1 বনাম Fluke 179 তুলনা 2024, নভেম্বর
Anonim
Image
Image
প্রদর্শন
প্রদর্শন

আজ, আমরা এসটি রিডিং করতে STM32 ম্যাপেল মিনি ব্যবহার করব। আমাদের উদাহরণে, আমরা পাওয়ার গ্রিডের RMS মান পাব। যারা ইন্টারনেট অফ থিংসের জন্য বৈদ্যুতিক নেটওয়ার্ক পর্যবেক্ষণ করতে চান তাদের জন্য এটি খুবই উপকারী। আমরা তখন ম্যাপেল মিনি এর কম্পিউটেশনাল শক্তি ব্যবহার করে একটি অ্যাপ্লিকেশন তৈরি করব, একটি 127Vac সংকেত অর্জনের অনুমতি দিতে সক্ষম একটি ইলেকট্রনিক সার্কিট প্রয়োগ করব, সেইসাথে নমুনায় মূল গড় বর্গ (RMS) গণনা প্রয়োগ করব।

ধাপ 1: বিক্ষোভ

আজ আমাদের সমাবেশে, আমাদের এসটিএম 32 রয়েছে, আমাদের এনালগ সার্কিট ছাড়াও 110 এর ইনপুট তৈরি করতে। শক এড়াতে, 110 দ্বারা প্রবেশকারী প্রতিরোধককে আলাদা করুন

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

সোর্স ফিল্টারিং এর জন্য আমাদের কিছু alচ্ছিক ক্যাপাসিটার আছে। যদি আপনার উৎস ভাল মানের হয়, তাহলে আপনাকে সেগুলি ব্যবহার করার দরকার নেই।

AD ইনপুটটি অসিলোস্কোপের মাধ্যমে গণনা করা হয়, যেখানে আপনি একটি সাইনোসয়েড দেখতে পান, যা 110 নয় (তবে এটি ভালভাবে গঠিত)। আরেকটি বিষয় হল আমাদের বৈদ্যুতিক নেটওয়ার্কের ভোল্টেজ 110 নয় (এটি আসলে 127 ভোল্ট)। কিন্তু যেহেতু আমরা একটি স্টেবিলাইজার দিয়ে যাচ্ছি, এটি 115V এর সাথে সামঞ্জস্য করবে।

সিরিয়াল মনিটরে প্রদর্শিত মান হল আরএমএস -এ গণনা করা হয়, অর্থাৎ ফ্লুক মিটার দ্বারা চিহ্নিত।

ধাপ 2: ব্যবহৃত সম্পদ

ব্যবহৃত সম্পদ
ব্যবহৃত সম্পদ

Ump জাম্পার

Map একটি ম্যাপেল মিনি

• প্রোটোবোর্ড

L একটি LM386 পরিবর্ধক

• একটি প্রতিসম উৎস (+ 5V এবং -5V)

10 একটি 10k মাল্টি-টার্ন ট্রিমপট (বা পোটেন্টিওমিটার)

100nF পলিয়েস্টারের চারটি ক্যাপাসিটার

10 তিনটি 10k প্রতিরোধক

• চার 470k প্রতিরোধক

• এক 5k6 প্রতিরোধক

• এক 1n4728A জেনার ডায়োড

ধাপ 3: ডায়াগ্রাম ব্লক করুন

ব্লক ডায়াগ্রাম
ব্লক ডায়াগ্রাম

ধাপ 4: স্কিম

পরিকল্পনা
পরিকল্পনা

এই পরিমাপের জন্য আমি যে চশমাগুলি বিশ্বাস করি তার উপর ভিত্তি করে আমি একটি সার্কিট তৈরি করেছি, তবে ইন্টারনেটে আরও বেশ কয়েকটি উদাহরণ রয়েছে।

ধাপ 5: LM386 - পিন করা

LM386 - পিন করা
LM386 - পিন করা

LM386 এর কন্ডিশনিং বা সিগন্যাল পরিবর্ধনের জন্য দুটি পরিবর্ধক রয়েছে।

ধাপ 6: AmpOp - ডিফারেনশিয়াল (বিয়োগকারী)

AmpOp - ডিফারেনশিয়াল (বিয়োগকারী)
AmpOp - ডিফারেনশিয়াল (বিয়োগকারী)

ধাপ 7: AmpOp - বৈদ্যুতিন সংকেতের মেরু বদল অ্যাডার

AmpOp - বৈদ্যুতিন সংকেতের মেরু বদল অ্যাডার
AmpOp - বৈদ্যুতিন সংকেতের মেরু বদল অ্যাডার

ধাপ 8: ম্যাপেল মিনি - পিনেজ

ম্যাপেল মিনি - পিনেজ
ম্যাপেল মিনি - পিনেজ

পিন চিহ্নিত করা হয়েছে:

লাল >> 3V3 সহনশীল

সবুজ >> 5V সহনশীল

ধাপ 9: ম্যাপেল মিনি - পিনিং - a / D ক্যাপচারিংয়ে ব্যবহৃত

ম্যাপেল মিনি - পিনিং - a / D ক্যাপচারিংয়ে ব্যবহৃত হয়
ম্যাপেল মিনি - পিনিং - a / D ক্যাপচারিংয়ে ব্যবহৃত হয়

আমি এখানে জোর দিয়েছি যে আমি যে পিনটি ব্যবহার করেছি তা হল D11 যা (STMicroelectronics এর নামকরণে) হল PA0।

ধাপ 10: সমাবেশ

সমাবেশ
সমাবেশ

আমাদের সার্কিটের জন্য, আপনার একটি সমান্তরাল উৎসের প্রয়োজন হবে, যেমনটি আমরা এই প্রকল্পের জন্য তৈরি করেছি। অন্যথায়, আপনার দুটি উৎসের প্রয়োজন হবে।

ধাপ 11: প্রাপ্ত ডেটা সহ গ্রাফ

প্রাপ্ত ডেটা সহ গ্রাফ
প্রাপ্ত ডেটা সহ গ্রাফ

ধাপ 12: RMS মান গণনা করা

RMS মান গণনা করা হচ্ছে
RMS মান গণনা করা হচ্ছে

ধাপ 13: সোর্স কোড

সোর্স কোড - সংজ্ঞা এবং ধ্রুবক

প্রথমে, আমরা পিন রিডিংকে ডি 11 হিসাবে সংজ্ঞায়িত করেছি, সেইসাথে গণনায় ব্যবহৃত বিভিন্ন ধ্রুবক।

#ডিফাইন লেইটুরা টেনসাও D11 // AD CH0 no pino PA0 // valor teórico divisor de tensão = 168.85714285714285714286 const float fatorDivisor = 168.40166345742404792461; // শৌর্য teórico do ganho de amplificação = 1.0 const float fatorAmplificador = 1.0; // Valor usado na multiplicação da leitura const float fatorMultiplicacao = fatorDivisor * fatorAmplificador; // বীরত্ব teórico da Tensão de alimentação Vcc = 3.3V const float Vcc = 3.3; // শৌর্য teórico do offset do amplificador = Vcc /2.0; const float offSet = 1.66; // fator teórico da conversão do AD = 3.3 / 4095.0 const float fatorAD = Vcc / 4095.0; const int amostras = 71429; // ফলাফল em 1, 027 segundos para cada atualização // const int amostras = 35715; // ফলাফল em 0, 514 segundos para cada atualização

সোর্স কোড - গ্লোবাল ভেরিয়েবল

এখন, আমরা কিছু বৈশ্বিক ভেরিয়েবল সংজ্ঞায়িত করি।

ভাসা Vrms = 0.0; // armazena o valor rms da tensãofloat Vmax = 0.0; // armazena o valor máximo detectado float Vmin = 10000.0; // armazena o valor mínimo detectado float Vmed = 0.0; // armazena o valor médio entre Vmáx e Vmín

সোর্স কোড - সেটআপ ()

সিরিয়াল পোর্ট 1Mbps এ শুরু করুন। আমরা এডি পোর্টকে ইনপুট হিসেবে সামঞ্জস্য করেছি এবং তথ্য সংগ্রহ শুরু করার আগে ৫ সেকেন্ড অপেক্ষা করেছি। স্ট্যান্ডবাই সময় alচ্ছিক।

অকার্যকর সেটআপ () {Serial.begin (1000000); // inicia a porta serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta। (অপশনাল)}

সোর্স কোড - লুপ () - ডেটা সংগ্রহ ভেরিয়েবল শুরু করে

লুপে, আমাদের পুনরাবৃত্তির জন্য পরিবর্তনশীল আছে। এখানে, আমরা এডি এর রিডিংগুলিকে 0.0 এ সংরক্ষণ করি এবং ভেরিয়েবল ভিআরএমএসকেও 0.0 এ পুনরায় চালু করি।

অকার্যকর লুপ () {int i = 0; // variável para iteração float leitura = 0.0; // আর্মাজেনা লেইটুরাস হিসাবে AD Vrms = 0.0; // রেনিসিয়া একটি ভেরিয়েভেল ভিআরএমএস

সোর্স কোড - প্রতিটি নমুনার জন্য পৃথক গণনা ক্যাপচার এবং এক্সিকিউট করে

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

while (i <amostras) {// inicia um ciclo de amostragem até que i alcance o número de amostras leitura = analogRead (leituraTensao); // lê a porta analógica //Serial.println(leitura); // Descomente se quiser ver o sinal bruto do AD Vrms = Vrms + pow (((leitura * fatorAD) - offSet), 2.0); // ক্যালকুলা a soma dos quadrados das tensões lidas i ++; // বৃদ্ধি

সোর্স কোড - নমুনার সাধারণ গণনা এবং সর্বোচ্চ, সর্বনিম্ন এবং গড় সনাক্তকরণ

ভোল্টেজের প্রকৃত মান নির্ণয়ের জন্য আমরা গুণের সত্য প্রয়োগ করি। আমরা মানটি সর্বোচ্চ বা সর্বনিম্ন কিনা তা সনাক্ত করি এবং আমরা বর্তমান সর্বোচ্চ এবং সর্বনিম্ন মানের গড় গণনা করি।

// Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // detecta se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // detecta se é um valor mínimo if (Vrms <Vmin) {Vmin = Vrms; } // গণনা a m ddia dos valores máximo e mínimo atuais Vmed = (Vmax + Vmin) /2.0;

সোর্স কোড - আউটপুট অপশন

আউটপুট মান "প্লট" করার জন্য আমাদের তিনটি বিকল্প আছে। আমরা CSV বা Jason এর মতো Arduino IDE সিরিয়াল প্লটারে আউটপুট ফরম্যাট করেছি।

// sa formatda formatada para plotter serial IDE Arduino Serial.print (Vrms, 3); সিরিয়াল.প্রিন্ট (","); Serial.print (Vmax, 3); সিরিয়াল.প্রিন্ট (","); Serial.print (Vmin, 3); সিরিয়াল.প্রিন্ট (","); Serial.println (Vmed, 3); /* // saída formatada como json Serial.print ("{" instante (ms) ":"); সিরিয়াল.প্রিন্ট (মিলিস ()); সিরিয়াল.প্রিন্ট (","); Serial.print ("\" Vrms (V) ":"); Serial.print (Vrms, 3); সিরিয়াল.প্রিন্ট (","); Serial.print ("\" Vmax (V) ":"); Serial.print (Vmax, 3); সিরিয়াল.প্রিন্ট (","); Serial.print ("\" Vmin (V) ":"); Serial.print (Vmin, 3); সিরিয়াল.প্রিন্ট (","); Serial.print ("\" Vmed (V) ":"); Serial.print (Vmed, 3); Serial.println ("}"); * / /* // saída formatada como CSV Serial.print (millis ()); সিরিয়াল.প্রিন্ট (","); Serial.print (Vrms, 3); সিরিয়াল.প্রিন্ট (","); Serial.print (Vmax, 3); সিরিয়াল.প্রিন্ট (","); Serial.print (Vmin, 3); সিরিয়াল.প্রিন্ট (","); Serial.println (Vmed, 3); */}

ধাপ 14: ফাইল

ফাইল ডাউনলোড করুন:

পিডিএফ

আইএনও

প্রস্তাবিত: