ആർഡ്വിനോ 5 വോൾട്ടിനുള്ള രണ്ട്-ചാനൽ വോൾട്ട്മീറ്റർ. ആർഡ്വിനോ അടിസ്ഥാനമാക്കിയുള്ള ബ്ലൂടൂത്ത് വോൾട്ട്മീറ്റർ

ഈ ലേഖനം നൽകുന്നു രസകരമായ പദ്ധതിപരീക്ഷണങ്ങൾ ഇഷ്ടപ്പെടുന്നവർക്കും ആർഡ്വിനോ. ഇത് ലളിതമായി അവതരിപ്പിക്കുന്നു ഡിജിറ്റൽ വോൾട്ട്മീറ്റർ, 0 മുതൽ 30 V വരെയുള്ള ശ്രേണിയിൽ സുരക്ഷിതമായി DC വോൾട്ടേജ് അളക്കാൻ കഴിയും. Arduino ബോർഡ് തന്നെ ഒരു സാധാരണ 9 V വിതരണത്തിൽ നിന്ന് പവർ ചെയ്യാവുന്നതാണ്.



അറിയപ്പെടുന്നതുപോലെ, അനലോഗ് ഉപയോഗിക്കുന്നു Arduino ഇൻപുട്ട്നിങ്ങൾക്ക് 0 മുതൽ 5 V വരെയുള്ള വോൾട്ടേജുകൾ അളക്കാൻ കഴിയും (5 V ൻ്റെ ഒരു സാധാരണ റഫറൻസ് വോൾട്ടേജിൽ). എന്നാൽ ഒരു വോൾട്ടേജ് ഡിവൈഡർ ഉപയോഗിച്ച് ഈ ശ്രേണി വിപുലീകരിക്കാൻ കഴിയും.


ഡിവൈഡർ അളന്ന വോൾട്ടേജ് അനലോഗ് ഇൻപുട്ടിന് സ്വീകാര്യമായ ഒരു തലത്തിലേക്ക് കുറയ്ക്കുന്നു. അപ്പോൾ പ്രത്യേകം എഴുതിയ കോഡ് യഥാർത്ഥ വോൾട്ടേജ് കണക്കാക്കുന്നു.



Arduino ലെ അനലോഗ് സെൻസർ അനലോഗ് ഇൻപുട്ടിലെ വോൾട്ടേജ് കണ്ടെത്തി അതിനെ പരിവർത്തനം ചെയ്യുന്നു ഡിജിറ്റൽ ഫോർമാറ്റ്, മൈക്രോകൺട്രോളർ തിരിച്ചറിഞ്ഞു. പ്രതിരോധം R1 (100K), R2 (10K) എന്നിവയാൽ രൂപംകൊണ്ട വോൾട്ടേജ് ഡിവൈഡറിനെ അനലോഗ് ഇൻപുട്ട് A0 ലേക്ക് ഞങ്ങൾ ബന്ധിപ്പിക്കുന്നു. ഈ പ്രതിരോധ മൂല്യങ്ങൾ ഉപയോഗിച്ച്, ഡിവിഷൻ കോഫിഫിഷ്യൻ്റ് ആയതിനാൽ, 55 V വരെ Arduino- ലേക്ക് നൽകാം. ഈ സാഹചര്യത്തിൽഇത് 11 ആയി മാറുന്നു, അതിനാൽ 55V/11=5V. ബോർഡിന് അളവുകൾ സുരക്ഷിതമാണെന്ന് ഉറപ്പാക്കാൻ, 0 മുതൽ 30 V വരെയുള്ള ശ്രേണിയിൽ വോൾട്ടേജ് അളക്കുന്നതാണ് നല്ലത്.



ഡിസ്പ്ലേ റീഡിംഗുകൾ പരിശോധിച്ച വോൾട്ട്മീറ്ററിൻ്റെ റീഡിംഗുമായി പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ, നിങ്ങൾ ഒരു കൃത്യത ഉപയോഗിക്കണം. ഡിജിറ്റൽ മൾട്ടിമീറ്റർകണ്ടുപിടിക്കാൻ കൃത്യമായ മൂല്യങ്ങൾ R1, R2. ഈ സാഹചര്യത്തിൽ, കോഡിൽ നിങ്ങൾ R1=100000.0, R2=10000.0 എന്നിവ നിങ്ങളുടെ സ്വന്തം മൂല്യങ്ങൾ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കേണ്ടതുണ്ട്. 5V നും GND നും ഇടയിലുള്ള ബോർഡിലെ വോൾട്ടേജ് അളക്കുന്നതിലൂടെ നിങ്ങൾ വൈദ്യുതി വിതരണം പരിശോധിക്കണം. വോൾട്ടേജ് 4.95 V ആകാം. അപ്പോൾ കോഡ് vout = (മൂല്യം * 5.0) / 1024.0 ൽ നിങ്ങൾ 5.0 4.95 ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കേണ്ടതുണ്ട്. 1% ൽ കൂടാത്ത ഒരു പിശക് ഉപയോഗിച്ച് കൃത്യമായ റെസിസ്റ്ററുകൾ ഉപയോഗിക്കുന്നത് നല്ലതാണ്. 55V ന് മുകളിലുള്ള വോൾട്ടേജ് Arduino ബോർഡിനെ നശിപ്പിക്കുമെന്ന് ഓർമ്മിക്കുക!



#ഉൾപ്പെടുന്നു ലിക്വിഡ് ക്രിസ്റ്റൽ എൽസിഡി(7, 8, 9, 10, 11, 12); int analogInput = 0; ഫ്ലോട്ട് വൗട്ട് = 0.0; ഫ്ലോട്ട് വിൻ = 0.0; ഫ്ലോട്ട് R1 = 100000.0; // പ്രതിരോധം R1 (100K) ഫ്ലോട്ട് R2 = 10000.0; // പ്രതിരോധം R2 (10K) int മൂല്യം = 0; void setup())( pinMode(analogInput, INPUT); lcd.begin(16, 2); lcd.print("DC VOLTMETER"); ) void loop())( // read the analog value value = analogRead(analogInput) vout = (മൂല്യം * 5.0) / 1024.0 vin = vout / (R2/(R1+R2));<0.09) { vin=0.0;// обнуляем нежелательное значение } lcd.setCursor(0, 1); lcd.print("INPUT V= "); lcd.print(vin); delay(500); }


ഉപയോഗിച്ച ഘടകങ്ങൾ:


Arduino Uno ബോർഡ്
റെസിസ്റ്റർ 100 KOhm
റെസിസ്റ്റർ 10 KOhm
100 ഓം പ്രതിരോധം
പൊട്ടൻഷിയോമീറ്റർ 10KOhm
എൽസിഡി ഡിസ്പ്ലേ 16×2

ആർഡ്വിനോയും പിസിയും എങ്ങനെ ഇൻ്റർഫേസ് ചെയ്യാമെന്നും എഡിസിയിൽ നിന്ന് പിസിയിലേക്ക് ഡാറ്റ കൈമാറാമെന്നും ഈ ലേഖനം കാണിക്കുന്നു. വിഷ്വൽ സി++ 2008 എക്സ്പ്രസ് ഉപയോഗിച്ചാണ് വിൻഡോസിനായുള്ള പ്രോഗ്രാം എഴുതിയിരിക്കുന്നത്. വോൾട്ട്മീറ്റർ പ്രോഗ്രാം വളരെ ലളിതവും മെച്ചപ്പെടുത്തുന്നതിന് ധാരാളം ഇടവുമുണ്ട്. ഒരു COM പോർട്ട് ഉപയോഗിച്ച് എങ്ങനെ പ്രവർത്തിക്കാമെന്നും കമ്പ്യൂട്ടറും ആർഡ്വിനോയും തമ്മിൽ ഡാറ്റ കൈമാറ്റം ചെയ്യാമെന്നും കാണിക്കുക എന്നതായിരുന്നു ഇതിൻ്റെ പ്രധാന ലക്ഷ്യം.

ആർഡ്വിനോയും പിസിയും തമ്മിലുള്ള ആശയവിനിമയം:

  • കമ്പ്യൂട്ടർ Arduino കമാൻഡുകൾ 0xAC, 0x1y എന്നിവ അയയ്ക്കുമ്പോൾ ADC-യിൽ നിന്ന് റീഡിംഗുകൾ എടുക്കൽ ആരംഭിക്കുന്നു. ചെയ്തത്– ADC ചാനൽ നമ്പർ (0-2);
  • Arduino 0xAC, 0x00 എന്നീ കമാൻഡുകൾ സ്വീകരിച്ചതിന് ശേഷം വായന നിർത്തുന്നു;
  • റീഡിംഗുകൾ എടുക്കുമ്പോൾ, Arduino ഓരോ 50 ms ഇടയിലും കമ്പ്യൂട്ടറിലേക്ക് 0xAB 0xaa 0xbb കമാൻഡുകൾ അയയ്‌ക്കുന്നു, ഇവിടെ aa, bb എന്നിവയാണ് പരമാവധി, കുറഞ്ഞ അളവെടുപ്പ് ഫലങ്ങൾ.

ആർഡ്വിനോയ്ക്കുള്ള പ്രോഗ്രാം

arduino.cc എന്നതിൽ നിങ്ങൾക്ക് സീരിയൽ ആശയവിനിമയത്തെക്കുറിച്ച് കൂടുതൽ വായിക്കാം. പ്രോഗ്രാം വളരെ ലളിതമാണ്, അതിൽ ഭൂരിഭാഗവും സമാന്തര പോർട്ടുമായി പ്രവർത്തിക്കുന്നു. ADC-യിൽ നിന്നുള്ള ഡാറ്റ റീഡിംഗ് പൂർത്തിയാക്കിയ ശേഷം, 16-ബിറ്റ് വേരിയബിളുകളുടെ (INT) രൂപത്തിൽ ഞങ്ങൾക്ക് 10-ബിറ്റ് വോൾട്ടേജ് മൂല്യം (0x0000 - 0x0400) ലഭിക്കും. സീരിയൽ പോർട്ട് (RS-232) 8-ബിറ്റ് പാക്കറ്റുകളിൽ ഡാറ്റ കൈമാറാൻ അനുവദിക്കുന്നു. 16-ബിറ്റ് വേരിയബിളുകളെ 8 ബിറ്റുകളുടെ 2 ഭാഗങ്ങളായി വിഭജിക്കേണ്ടത് ആവശ്യമാണ്.

Serial.print(voltage>>8,BYTE);

Serial.print(വോൾട്ടേജ്% 256,BYTE);

ഞങ്ങൾ വേരിയബിൾ 8 ബിറ്റുകളുടെ ബൈറ്റുകൾ വലത്തേക്ക് മാറ്റുകയും തുടർന്ന് 256 കൊണ്ട് ഹരിക്കുകയും ഫലം കമ്പ്യൂട്ടറിലേക്ക് അയയ്ക്കുകയും ചെയ്യുന്നു.

Arduino സോഫ്‌റ്റ്‌വെയറിനായുള്ള മുഴുവൻ സോഴ്‌സ് കോഡും നിങ്ങൾക്ക് ഡൗൺലോഡ് ചെയ്യാം

വിഷ്വൽ സി++

നിങ്ങൾക്ക് ഇതിനകം ഉണ്ടെന്ന് ഞാൻ കരുതുന്നു അടിസ്ഥാന അറിവ്വിൻഡോസിനായുള്ള C++ പ്രോഗ്രാമിംഗിൽ, ഇല്ലെങ്കിൽ Google ഉപയോഗിക്കുക. തുടക്കക്കാർക്കുള്ള ട്യൂട്ടോറിയലുകൾ കൊണ്ട് ഇൻ്റർനെറ്റ് നിറഞ്ഞിരിക്കുന്നു.

ആദ്യം ചെയ്യേണ്ടത് കൂട്ടിച്ചേർക്കലാണ് സീരിയൽ പോർട്ട്ടൂൾബാറിൽ നിന്ന് താഴത്തെ രൂപത്തിലേക്ക്. ഇത് ചിലത് മാറ്റും പ്രധാനപ്പെട്ട പാരാമീറ്ററുകൾസീരിയൽ പോർട്ട്: പോർട്ട് പേര്, ബോഡ് നിരക്ക്, ബിറ്റ് ഡെപ്ത്. പ്രോഗ്രാം വീണ്ടും കംപൈൽ ചെയ്യാതെ, ഒരു ആപ്ലിക്കേഷൻ വിൻഡോയിലേക്ക് നിയന്ത്രണങ്ങൾ ചേർക്കുന്നതിനും ഈ ക്രമീകരണങ്ങൾ എപ്പോൾ വേണമെങ്കിലും മാറ്റുന്നതിനും ഇത് ഉപയോഗപ്രദമാണ്. ഞാൻ പോർട്ട് സെലക്ഷൻ ഓപ്ഷൻ മാത്രമാണ് ഉപയോഗിച്ചത്.

ലഭ്യമായ സീരിയൽ പോർട്ടുകൾക്കായി തിരഞ്ഞതിന് ശേഷം, ആദ്യ പോർട്ട് ഡിഫോൾട്ടായി തിരഞ്ഞെടുക്കപ്പെടും. ഇത് എങ്ങനെയാണ് ചെയ്യുന്നത്:

അറേ< String ^>^ സീരിയൽ പോർട്ടുകൾ = nullptr;

സീരിയൽ പോർട്ടുകൾ = സീരിയൽ പോർട്ട്1->ഗെറ്റ് പോർട്ട് നെയിംസ്();

ഇത്->comboBox1->ഇനങ്ങൾ->AddRange(serialPorts);

this->comboBox1->SelectedIndex=0;

ഒരു പിസിയിലെ സീരിയൽ പോർട്ട് ഒരു സമയം ഒരു ആപ്ലിക്കേഷന് മാത്രമേ ഉപയോഗിക്കാൻ കഴിയൂ, അതിനാൽ പോർട്ട് ഉപയോഗിക്കുന്നതിന് മുമ്പ് തുറന്നിരിക്കണം കൂടാതെ അടച്ചിരിക്കരുത്. ലളിതമായ കമാൻഡുകൾഇതിനായി:

സീരിയൽ പോർട്ട്1->ഓപ്പൺ();

serialPort1->അടയ്ക്കുക();

ഒരു സീരിയൽ പോർട്ടിൽ നിന്നുള്ള ഡാറ്റ ശരിയായി വായിക്കാൻ, നിങ്ങൾ ഇവൻ്റുകൾ ഉപയോഗിക്കണം (ഞങ്ങളുടെ കാര്യത്തിൽ, ഒരു തടസ്സം). ഇവൻ്റ് തരം തിരഞ്ഞെടുക്കുക:

എപ്പോൾ ഡ്രോപ്പ്-ഡൗൺ ലിസ്റ്റ് ഇരട്ട ഞെക്കിലൂടെ"ഡാറ്റ സ്വീകരിച്ചു".

ഇവൻ്റ് കോഡ് സ്വയമേവ ജനറേറ്റുചെയ്യുന്നു:

ആദ്യ ബൈറ്റ് വന്നാൽ സീരിയൽ പോർട്ട് 0xAB എന്നാൽ ശേഷിക്കുന്ന ബൈറ്റുകൾ വോൾട്ടേജ് ഡാറ്റ വഹിക്കുന്നു.

private: System::Void serialPort1_DataReceived(സിസ്റ്റം::Object^ അയച്ചയാൾ, സിസ്റ്റം::IO::Ports::SerialDataReceivedEventArgs^ e) (

ഒപ്പിടാത്ത ചാർ ഡാറ്റ0, ഡാറ്റ1;

എങ്കിൽ (serialPort1->ReadByte()==0xAB) (

data0=serialPort1->ReadByte();

data1=serialPort1->ReadByte();

വോൾട്ടേജ്=ഗണിതം:: റൗണ്ട്((ഫ്ലോട്ട്(ഡാറ്റ0*256+ഡാറ്റ1)/1024*5.00),2);

ഡാറ്റ_എണ്ണം++;

serialPort1->ReadByte();

സീരിയൽ പോർട്ട് ഡാറ്റ എഴുതുകയും വായിക്കുകയും ചെയ്യുക

സീരിയൽ പോർട്ട് വഴി ഹെക്‌സ് റോ ഡാറ്റ അയയ്‌ക്കുന്നതായിരുന്നു എൻ്റെ ഒരു ചെറിയ പ്രശ്‌നം. Write() കമാൻഡ് ഉപയോഗിച്ചു; എന്നാൽ മൂന്ന് ആർഗ്യുമെൻ്റുകൾക്കൊപ്പം: അറേ, സ്റ്റാർട്ട് ബൈറ്റ് നമ്പർ, എഴുതാനുള്ള ബൈറ്റുകളുടെ എണ്ണം.

private: System::Void button2_Click_1(സിസ്റ്റം::Object^ അയച്ചയാൾ, System::EventArgs^ e) (

ഒപ്പിടാത്ത ചാനൽ=0;

channel=this->listBox1->SelectedIndex;

അറേ^ആരംഭം =(0xAC,(0x10+ചാനൽ));

അറേ^സ്റ്റോപ്പ് =(0xAC,0x00);

serialPort1->എഴുതുക(ആരംഭിക്കുക,0,2);

this->button2->Text="Stop";

) വേറെ (

serialPort1->എഴുതുക(നിർത്തുക,0,2);

this->button2->Text="Start";

അത്രയേയുള്ളൂ!

ഒറിജിനൽ ലേഖനം ആംഗലേയ ഭാഷ(വിവർത്തനം: അലക്സാണ്ടർ കസ്യനോവ് cxem.net എന്ന സൈറ്റിനായി)

പ്ലാറ്റ്‌ഫോമിനെ അടിസ്ഥാനമാക്കി വീട്ടിൽ നിർമ്മിച്ച ഇരട്ട വോൾട്ട്മീറ്റർ എങ്ങനെ കൂട്ടിച്ചേർക്കാമെന്ന് വിവരിച്ചു Arduino UNO 1602A LCD ഡിസ്പ്ലേ ഉപയോഗിക്കുന്നു. ചില സന്ദർഭങ്ങളിൽ, രണ്ട് സ്ഥിരമായ വോൾട്ടേജുകൾ ഒരേസമയം അളക്കുകയും അവയെ താരതമ്യം ചെയ്യുകയും വേണം. ഇത് ആവശ്യമായി വന്നേക്കാം, ഉദാഹരണത്തിന്, ഒരു സ്റ്റെബിലൈസർ നന്നാക്കുകയോ ക്രമീകരിക്കുകയോ ചെയ്യുമ്പോൾ ഡിസി വോൾട്ടേജ്വോൾട്ടേജ് അതിൻ്റെ ഇൻപുട്ടിലും ഔട്ട്പുട്ടിലും അല്ലെങ്കിൽ മറ്റ് സന്ദർഭങ്ങളിൽ അളക്കാൻ.

സ്കീമാറ്റിക് ഡയഗ്രം

ഒരു യൂണിവേഴ്സൽ മൈക്രോകൺട്രോളർ ഉപയോഗിക്കുന്നു ARDUINO മൊഡ്യൂൾ UNO, രണ്ട്-വരി എൽസിഡി ഡിസ്പ്ലേ തരം 1602A (HD44780 കൺട്രോളർ അടിസ്ഥാനമാക്കി) അത്തരം ഒരു ഉപകരണം എളുപ്പത്തിൽ നിർമ്മിക്കാൻ കഴിയും. ഒരു വരിയിൽ അത് വോൾട്ടേജ് U1 കാണിക്കും, മറ്റൊന്നിൽ - വോൾട്ടേജ് U2.

അരി. 1. സ്കീമാറ്റിക് ഡയഗ്രം ഇരട്ട വോൾട്ട്മീറ്റർ Arduino UNO-യിൽ 1602A ഡിസ്പ്ലേ ഉള്ളത്.

പക്ഷേ, ഒന്നാമതായി, ARDUINO UNO താരതമ്യേന ചെലവുകുറഞ്ഞ റെഡിമെയ്ഡ് മൊഡ്യൂളാണെന്ന് നിങ്ങളെ ഓർമ്മിപ്പിക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നു - ഒരു ചെറിയ അച്ചടിച്ച സർക്യൂട്ട് ബോർഡ്, ATMEGA328 മൈക്രോകൺട്രോളർ സ്ഥിതിചെയ്യുന്നു, കൂടാതെ ഒരു USB പ്രോഗ്രാമറും പവർ സപ്ലൈയും ഉൾപ്പെടെ അതിൻ്റെ പ്രവർത്തനത്തിന് ആവശ്യമായ എല്ലാ "ഹാർനെസും".

ARDUINO UNO പരിചയമില്ലാത്തവർക്കായി, ആദ്യം ലേഖനങ്ങൾ L.1, L.2 എന്നിവ വായിക്കാൻ ഞാൻ നിങ്ങളെ ഉപദേശിക്കുന്നു. ഒരു ഇരട്ട വോൾട്ട്മീറ്ററിൻ്റെ സർക്യൂട്ട് ചിത്രത്തിൽ കാണിച്ചിരിക്കുന്നു. 1. 0 മുതൽ 100V വരെ (പ്രായോഗികമായി 90V വരെ) രണ്ട് വോൾട്ടേജുകൾ അളക്കുന്നതിനാണ് ഇത് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്.

ഡയഗ്രാമിൽ നിന്ന് കാണാൻ കഴിയുന്നതുപോലെ, ഡിജിറ്റൽ പോർട്ടുകളിലേക്ക് D2-D7 ARDUINO ബോർഡുകൾ UNO ലിക്വിഡ് ക്രിസ്റ്റൽ ഡിസ്പ്ലേ മൊഡ്യൂൾ H1 ടൈപ്പ് 1602A-യുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു. 5V വോൾട്ടേജ് സ്റ്റെബിലൈസർ ബോർഡിൽ സ്ഥിതി ചെയ്യുന്ന 5V വോൾട്ടേജ് സ്റ്റെബിലൈസർ ഉപയോഗിച്ചാണ് LCD ഇൻഡിക്കേറ്റർ പ്രവർത്തിക്കുന്നത്.

അളന്ന വോൾട്ടേജുകൾ A1, A2 എന്നീ രണ്ട് അനലോഗ് ഇൻപുട്ടുകളിലേക്ക് വിതരണം ചെയ്യുന്നു. ആകെ ആറ് അനലോഗ് ഇൻപുട്ടുകൾ ഉണ്ട്, A0-A5, നിങ്ങൾക്ക് അവയിൽ രണ്ടെണ്ണം തിരഞ്ഞെടുക്കാം. ഈ സാഹചര്യത്തിൽ, A1, A2 എന്നിവ തിരഞ്ഞെടുത്തു. അനലോഗ് പോർട്ടുകളിലെ വോൾട്ടേജ് പോസിറ്റീവ് ആയിരിക്കാം, പൂജ്യം മുതൽ മൈക്രോകൺട്രോളർ സപ്ലൈ വോൾട്ടേജ് വരെയുള്ള ശ്രേണിയിൽ മാത്രം, അതായത് നാമമാത്രമായി, 5V വരെ.

അനലോഗ് പോർട്ടിൻ്റെ ഔട്ട്പുട്ട് മൈക്രോകൺട്രോളറിൻ്റെ ADC വഴി ഡിജിറ്റൽ രൂപത്തിലേക്ക് പരിവർത്തനം ചെയ്യുന്നു. വോൾട്ടുകളുടെ യൂണിറ്റുകളിൽ ഫലം ലഭിക്കുന്നതിന്, നിങ്ങൾ അതിനെ 5 കൊണ്ട് ഗുണിക്കേണ്ടതുണ്ട് (റഫറൻസ് വോൾട്ടേജ്, അതായത്, മൈക്രോകൺട്രോളറിൻ്റെ വിതരണ വോൾട്ടേജ് വഴി) 1024 കൊണ്ട് ഹരിക്കുക.

ARDUINO UNO ബോർഡിലെ 5-വോൾട്ട് സ്റ്റെബിലൈസറിൻ്റെ ഔട്ട്‌പുട്ടിലെ യഥാർത്ഥ വോൾട്ടേജ് 5V-ൽ നിന്ന് വ്യത്യാസപ്പെട്ടിരിക്കാം എന്നതിനാൽ, 5V-യിൽ കൂടുതലോ അല്ലെങ്കിൽ മൈക്രോകൺട്രോളറിൻ്റെ സപ്ലൈ വോൾട്ടേജിനേക്കാൾ വലുതോ ആയ വോൾട്ടേജുകൾ അളക്കാൻ കഴിയും. കുറച്ച് താഴെ, ഇൻപുട്ടിൽ നിങ്ങൾ പരമ്പരാഗത റെസിസ്റ്റീവ് ഡിവൈഡറുകൾ ഉപയോഗിക്കേണ്ടതുണ്ട്. ഇവിടെ ഇവ റെസിസ്റ്ററുകൾ R1, R3, R2, R4 എന്നിവയിലുടനീളമുള്ള വോൾട്ടേജ് ഡിവൈഡറുകളാണ്.

ഈ സാഹചര്യത്തിൽ, ഇൻപുട്ട് വോൾട്ടേജിൻ്റെ യഥാർത്ഥ മൂല്യത്തിലേക്ക് ഉപകരണ റീഡിംഗുകൾ കൊണ്ടുവരാൻ, റെസിസ്റ്റീവ് ഡിവൈഡറിൻ്റെ ഡിവിഷൻ കോഫിഫിഷ്യൻ്റ് ഉപയോഗിച്ച് അളക്കൽ ഫലത്തിൻ്റെ വിഭജനം പ്രോഗ്രാമിൽ നിങ്ങൾ സജ്ജമാക്കേണ്ടതുണ്ട്. ഡിവിഷൻ കോഫിഫിഷ്യൻ്റ്, "കെ" എന്ന് സൂചിപ്പിക്കാം, ഇനിപ്പറയുന്ന ഫോർമുല ഉപയോഗിച്ച് കണക്കാക്കാം:

K = R3 / (R1+R3) അല്ലെങ്കിൽ K = R4 / (R2+R4),

യഥാക്രമം വ്യത്യസ്ത പ്രവേശന കവാടങ്ങൾഇരട്ട വോൾട്ട്മീറ്റർ.

ഡിവൈഡറുകളിലെ റെസിസ്റ്ററുകൾ ഉയർന്ന കൃത്യതയുള്ളതായിരിക്കണമെന്നില്ല എന്നത് വളരെ രസകരമാണ്. നിങ്ങൾക്ക് സാധാരണ റെസിസ്റ്ററുകൾ എടുക്കാം, തുടർന്ന് കൃത്യമായ ഓമ്മീറ്റർ ഉപയോഗിച്ച് അവയുടെ യഥാർത്ഥ പ്രതിരോധം അളക്കുക, കൂടാതെ ഈ അളന്ന മൂല്യങ്ങൾ ഫോർമുലയിലേക്ക് മാറ്റി സ്ഥാപിക്കുക. ഒരു നിർദ്ദിഷ്‌ട വിഭജനത്തിനായി നിങ്ങൾക്ക് "K" എന്ന മൂല്യം ലഭിക്കും, അത് ഫോർമുലയിൽ പകരം വയ്ക്കേണ്ടതുണ്ട്.

വോൾട്ട്മീറ്റർ പ്രോഗ്രാം

C++ പ്രോഗ്രാം ചിത്രം 2 ൽ കാണിച്ചിരിക്കുന്നു.

അരി. 2. ഉറവിടംപ്രോഗ്രാമുകൾ.

LCD സൂചകം നിയന്ത്രിക്കുന്നതിന്, ARDUINO UNO ബോർഡിൻ്റെ D2 മുതൽ D7 വരെയുള്ള പോർട്ടുകൾ ഉപയോഗിക്കാൻ തീരുമാനിച്ചു. തത്വത്തിൽ, മറ്റ് തുറമുഖങ്ങൾ സാധ്യമാണ്, എന്നാൽ ഇവ ഉപയോഗിക്കാൻ ഞാൻ തീരുമാനിച്ചത് ഇങ്ങനെയാണ്.

ഇൻഡിക്കേറ്ററിന് ARDUINO UNO-മായി സംവദിക്കുന്നതിന്, അത് നിയന്ത്രിക്കുന്നതിന് നിങ്ങൾ പ്രോഗ്രാമിലേക്ക് ഒരു സബ്റൂട്ടീൻ ലോഡ് ചെയ്യേണ്ടതുണ്ട്. അത്തരം ദിനചര്യകളെ "ലൈബ്രറികൾ" എന്ന് വിളിക്കുന്നു, കൂടാതെ ARDUINO UNO സോഫ്റ്റ്വെയർ പാക്കേജിൽ നിരവധി വ്യത്യസ്ത "ലൈബ്രറികൾ" ഉണ്ട്. HD44780 അടിസ്ഥാനമാക്കിയുള്ള ഒരു LCD ഇൻഡിക്കേറ്റർ ഉപയോഗിച്ച് പ്രവർത്തിക്കാൻ, നിങ്ങൾക്ക് LiquidCrystal ലൈബ്രറി ആവശ്യമാണ്. അതിനാൽ, ഈ ലൈബ്രറി ലോഡ് ചെയ്തുകൊണ്ട് പ്രോഗ്രാം (പട്ടിക 1) ആരംഭിക്കുന്നു:

ഈ വരി ARDUINO UNO-യിലേക്ക് ലോഡ് ചെയ്യാനുള്ള കമാൻഡ് നൽകുന്നു ഈ ലൈബ്രറി. അടുത്തതായി, നിങ്ങൾ LCD ഇൻഡിക്കേറ്ററിനൊപ്പം പ്രവർത്തിക്കുന്ന ARDUINO UNO പോർട്ടുകൾ നൽകേണ്ടതുണ്ട്. ഞാൻ D2 മുതൽ D7 വരെയുള്ള പോർട്ടുകൾ തിരഞ്ഞെടുത്തു. നിങ്ങൾക്ക് മറ്റുള്ളവരെ തിരഞ്ഞെടുക്കാം. ഈ പോർട്ടുകൾ ലൈൻ വഴി നിയുക്തമാക്കിയിരിക്കുന്നു:

ലിക്വിഡ് ക്രിസ്റ്റൽ ലെഡ് (2, 3, 4, 5, 6, 7);

അതിനുശേഷം, പ്രോഗ്രാം വോൾട്ട്മീറ്ററിൻ്റെ യഥാർത്ഥ പ്രവർത്തനത്തിലേക്ക് പോകുന്നു. വോൾട്ടേജ് അളക്കാൻ, അനലോഗ് ഇൻപുട്ടുകൾ A1, A2 എന്നിവ ഉപയോഗിക്കാൻ തീരുമാനിച്ചു. ഈ ഇൻപുട്ടുകൾ വരികളിൽ നൽകിയിരിക്കുന്നു:

int analogInput=1;

int analogInput1=2;

അനലോഗ് പോർട്ടുകളിൽ നിന്ന് ഡാറ്റ വായിക്കാൻ, അനലോഗ് റീഡ് ഫംഗ്ഷൻ ഉപയോഗിക്കുക. അനലോഗ് പോർട്ടുകളിൽ നിന്നുള്ള ഡാറ്റ വായിക്കുന്നത് വരികളിൽ സംഭവിക്കുന്നു:

vout = അനലോഗ് റീഡ് (അനലോഗ് ഇൻപുട്ട്);

voutl=analogRead(analoglnput1);

തുടർന്ന്, ഇൻപുട്ട് വോൾട്ടേജ് ഡിവൈഡറിൻ്റെ ഡിവിഷൻ അനുപാതം കണക്കിലെടുത്ത് യഥാർത്ഥ വോൾട്ടേജ് കണക്കാക്കുന്നു:

വോൾട്ട്=വൗട്ട്*5.0/1024.0/0.048 ;

വോൾട്ട്1=വൗട്ട്1*5.0/1024.0/0.048;

ഈ വരികളിൽ, ARDUINO UNO ബോർഡിൻ്റെ സ്റ്റെബിലൈസറിൻ്റെ ഔട്ട്പുട്ടിലെ വോൾട്ടേജാണ് നമ്പർ 5.0. എബൌട്ട്, ഇത് 5V ആയിരിക്കണം, എന്നാൽ വോൾട്ട്മീറ്റർ കൃത്യമായി പ്രവർത്തിക്കാൻ, ഈ വോൾട്ടേജ് ആദ്യം അളക്കണം. പവർ സ്രോതസ്സ് ബന്ധിപ്പിച്ച് ബോർഡിൻ്റെ പവർ കണക്ടറിൽ +5V വോൾട്ടേജ് കൃത്യമായ വോൾട്ട്മീറ്റർ ഉപയോഗിച്ച് അളക്കുക. എന്താണ് സംഭവിക്കുന്നത്, 5.0-ന് പകരം ഈ വരികളിൽ നൽകുക, ഉദാഹരണത്തിന്, 4.85V ഉണ്ടെങ്കിൽ, വരികൾ ഇതുപോലെ കാണപ്പെടും:

വോൾട്ട്=വൗട്ട്*4.85/1024.0/0.048;

വോൾട്ട്1=വൗട്ട്1*4.85/1024.0/0.048;

അടുത്ത ഘട്ടത്തിൽ, നിങ്ങൾ R1-R4 റെസിസ്റ്ററുകളുടെ യഥാർത്ഥ പ്രതിരോധം അളക്കുകയും ഫോർമുലകൾ ഉപയോഗിച്ച് ഈ വരികൾക്കായി K ഗുണകങ്ങൾ (0.048 എന്ന് സൂചിപ്പിച്ചിരിക്കുന്നു) നിർണ്ണയിക്കുകയും ചെയ്യേണ്ടതുണ്ട്:

K1 = R3 / (R1+R3), K2 = R4 / (R2+R4)

നമുക്ക് K1 = 0.046 എന്നും K2 = 0.051 എന്നും പറയാം, അതിനാൽ നമ്മൾ എഴുതുന്നു:

വോൾട്ട്=വൗട്ട്*4.85/1024.0/0.046 ;

വോൾട്ട്1=വൗട്ട്1*4.85/1024.0/0.051;

അങ്ങനെ, ARDUINO UNO ബോർഡിൻ്റെ 5-വോൾട്ട് സ്റ്റെബിലൈസറിൻ്റെ ഔട്ട്പുട്ടിലെ യഥാർത്ഥ വോൾട്ടേജും റെസിസ്റ്റീവ് ഡിവൈഡറുകളുടെ യഥാർത്ഥ ഡിവിഷൻ കോഫിഫിഷ്യൻ്റുകളും അനുസരിച്ച് പ്രോഗ്രാം ടെക്സ്റ്റിൽ മാറ്റങ്ങൾ വരുത്തണം. ഇതിനുശേഷം, ഉപകരണം കൃത്യമായി പ്രവർത്തിക്കും, ക്രമീകരണമോ കാലിബ്രേഷനോ ആവശ്യമില്ല.

റെസിസ്റ്റീവ് ഡിവൈഡറുകളുടെ ഡിവിഷൻ ഗുണകങ്ങൾ മാറ്റുന്നതിലൂടെ (അതനുസരിച്ച്, "കെ" ഗുണകങ്ങൾ), നിങ്ങൾക്ക് മറ്റ് അളവെടുപ്പ് പരിധികൾ ഉണ്ടാക്കാം, രണ്ട് ഇൻപുട്ടുകൾക്കും ഒരുപോലെ ആയിരിക്കണമെന്നില്ല.

കരവ്കിൻ വി. ആർകെ-2017-01.

സാഹിത്യം:

  1. കരവ്കിൻ വി. - മൈക്രോകൺട്രോളറുകളുടെ ഭയത്തിന് പ്രതിവിധിയായി ARDUINO-യിലെ ക്രിസ്മസ് ട്രീ ഫ്ലാഷർ. ആർകെ-11-2016.
  2. കരവ്കിൻ വി. - ARDUINO-യിലെ ഫ്രീക്വൻസി മീറ്റർ. ആർകെ-12-2016.

ഹലോ, ഹബ്ർ! ഇന്ന് ഞാൻ "ക്രോസിംഗ്" എന്ന വിഷയം തുടരാൻ ആഗ്രഹിക്കുന്നു arduino, android. IN മുൻ പ്രസിദ്ധീകരണംഞാൻ സംസാരിച്ചു, ഇന്ന് നമ്മൾ ഒരു DIY ബ്ലൂടൂത്ത് വോൾട്ട്മീറ്ററിനെക്കുറിച്ച് സംസാരിക്കും. അത്തരം മറ്റൊരു ഉപകരണത്തെ ഉദ്ധരണികളില്ലാതെ സ്മാർട്ട് വോൾട്ട്മീറ്റർ, "സ്മാർട്ട്" വോൾട്ട്മീറ്റർ അല്ലെങ്കിൽ ഒരു സ്മാർട്ട് വോൾട്ട്മീറ്റർ എന്ന് വിളിക്കാം. റഷ്യൻ വ്യാകരണത്തിൻ്റെ വീക്ഷണകോണിൽ നിന്ന് അവസാന നാമം തെറ്റാണ്, എന്നിരുന്നാലും, ഇത് പലപ്പോഴും മാധ്യമങ്ങളിൽ കാണപ്പെടുന്നു. ലേഖനത്തിൻ്റെ അവസാനം ഈ വിഷയത്തിൽ ഒരു വോട്ട് ഉണ്ടാകും, എന്നാൽ ലേഖനം എന്തിനെക്കുറിച്ചാണെന്ന് മനസിലാക്കാൻ ഉപകരണത്തിൻ്റെ പ്രവർത്തനത്തിൻ്റെ ഒരു പ്രകടനത്തോടെ ആരംഭിക്കാൻ ഞാൻ നിർദ്ദേശിക്കുന്നു.


നിരാകരണം: ലേഖനം സാധാരണയായി ആൻഡ്രോയിഡിനുള്ള പ്രോഗ്രാമിംഗ് പരിചിതമല്ലാത്ത ശരാശരി ആർഡ്വിനോ പ്രേമികൾക്കായി ഉദ്ദേശിച്ചുള്ളതാണ്, അതിനാൽ, മുമ്പത്തെ ലേഖനത്തിലെന്നപോലെ, വിഷ്വൽ ഡെവലപ്‌മെൻ്റ് അന്തരീക്ഷം ഉപയോഗിച്ച് ഞങ്ങൾ ഒരു സ്മാർട്ട്‌ഫോണിനായി ഒരു ആപ്ലിക്കേഷൻ സൃഷ്ടിക്കും. android ആപ്ലിക്കേഷൻസ് ആപ്പ്കണ്ടുപിടുത്തക്കാരൻ 2.
ഒരു DIY ബ്ലൂടൂത്ത് വോൾട്ട്മീറ്റർ നിർമ്മിക്കുന്നതിന്, നമുക്ക് രണ്ട് സ്വതന്ത്ര പ്രോഗ്രാമുകൾ എഴുതേണ്ടതുണ്ട്: Arduino- നായുള്ള ഒരു സ്കെച്ചും Android- നായുള്ള ഒരു ആപ്ലിക്കേഷനും നമുക്ക് ഒരു സ്കെച്ച് ഉപയോഗിച്ച് ആരംഭിക്കാം.
ആദ്യം, ആർഡ്വിനോ ഉപയോഗിച്ച് വോൾട്ടേജ് അളക്കുന്നതിന് മൂന്ന് പ്രധാന ഓപ്ഷനുകൾ ഉണ്ടെന്ന് നിങ്ങൾ അറിഞ്ഞിരിക്കണം, നിങ്ങൾ എവിടെയാണ് വിവരങ്ങൾ ഔട്ട്‌പുട്ട് ചെയ്യേണ്ടത് എന്നത് പരിഗണിക്കാതെ തന്നെ: കോം പോർട്ടിലേക്ക്, ആർഡ്വിനോയുമായി ബന്ധിപ്പിച്ചിരിക്കുന്ന സ്‌ക്രീനിലേക്കോ അല്ലെങ്കിൽ ഒരു സ്മാർട്ട്‌ഫോണിലേക്കോ.
ആദ്യ കേസ്: 5 വോൾട്ട് വരെ വോൾട്ടേജ് അളവുകൾ. ഇവിടെ, ഒന്നോ രണ്ടോ വരി കോഡ് മതി, കൂടാതെ വോൾട്ടേജ് നേരിട്ട് A0 ലേക്ക് വിതരണം ചെയ്യുന്നു:
int value = analogRead(0); // A0-ൽ നിന്നുള്ള വായനകൾ വായിക്കുക
വോൾട്ടേജ് = (മൂല്യം / 1023.0) * 5; // Vcc = 5.0 വോൾട്ട് ആണെങ്കിൽ മാത്രം ശരി
രണ്ടാമത്തെ കേസ്: 5 വോൾട്ടിൽ കൂടുതൽ വോൾട്ടേജുകൾ അളക്കാൻ, ഒരു വോൾട്ടേജ് ഡിവൈഡർ ഉപയോഗിക്കുന്നു. സർക്യൂട്ട് വളരെ ലളിതമാണ്, അതുപോലെ തന്നെ കോഡും.

സ്കെച്ച്

int analogInput = A0;
ഫ്ലോട്ട് വാൽ = 0.0;
ഫ്ലോട്ട് വോൾട്ടേജ് = 0.0;
ഫ്ലോട്ട് R1 = 100000.0; //ബാറ്ററി വിൻ-> 100K -> A0
ഫ്ലോട്ട് R2 = 10000.0; //ബാറ്ററി Gnd -> Arduino Gnd, Arduino Gnd -> 10K -> A0
int മൂല്യം = 0;

അസാധുവായ സജ്ജീകരണം() (
Serial.begin(9600);
പിൻ മോഡ് (അനലോഗ് ഇൻപുട്ട്, ഇൻപുട്ട്);
}

ശൂന്യമായ ലൂപ്പ്() (
മൂല്യം = അനലോഗ് റീഡ് (അനലോഗ് ഇൻപുട്ട്);
val = (മൂല്യം * 4.7) / 1024.0;
വോൾട്ടേജ് = val / (R2/(R1+R2));
Serial.println(വോൾട്ടേജ്);
കാലതാമസം (500);
}


ആർഡ്വിനോ യുനോ
ബ്ലൂടൂത്ത് മൊഡ്യൂൾ
മൂന്നാമത്തെ കേസ്. നിങ്ങൾക്ക് വോൾട്ടേജിനെക്കുറിച്ച് കൂടുതൽ കൃത്യമായ വിവരങ്ങൾ ലഭിക്കണമെങ്കിൽ, നിങ്ങൾ ഒരു റഫറൻസ് വോൾട്ടേജായി ഉപയോഗിക്കേണ്ടത് വിതരണ വോൾട്ടേജല്ല, ഉദാഹരണത്തിന്, ബാറ്ററി ഉപയോഗിച്ച് പ്രവർത്തിക്കുമ്പോൾ, 1.1 വോൾട്ടിൻ്റെ ആന്തരിക ആർഡ്വിനോ സ്റ്റെബിലൈസറിൻ്റെ വോൾട്ടേജ് സർക്യൂട്ട് ഇവിടെ സമാനമാണ്, പക്ഷേ കോഡ് അൽപ്പം നീളമുള്ളതാണ്. ഈ ഓപ്ഷൻ ഞാൻ വിശദമായി വിശകലനം ചെയ്യില്ല, കാരണം ഇത് ഇതിനകം തീമാറ്റിക് ലേഖനങ്ങളിൽ നന്നായി വിവരിച്ചിരിക്കുന്നു, പക്ഷേ രണ്ടാമത്തെ രീതി എനിക്ക് മതിയാകും, കാരണം ലാപ്‌ടോപ്പിൻ്റെ യുഎസ്ബി പോർട്ടിൽ നിന്ന് എൻ്റെ പവർ സപ്ലൈ സുസ്ഥിരമാണ്.
അതിനാൽ ഞങ്ങൾ വോൾട്ടേജ് അളവ് ക്രമീകരിച്ചു, ഇപ്പോൾ നമുക്ക് പ്രോജക്റ്റിൻ്റെ രണ്ടാം പകുതിയിലേക്ക് പോകാം: ഒരു Android ആപ്ലിക്കേഷൻ സൃഷ്ടിക്കുന്നു. ആൻഡ്രോയിഡ് ആപ്ലിക്കേഷനുകളുടെ ആപ്പ് ഇൻവെൻ്റർ 2-നുള്ള വിഷ്വൽ ഡെവലപ്‌മെൻ്റ് എൻവയോൺമെൻ്റിൽ ഞങ്ങൾ ബ്രൗസറിൽ നിന്ന് നേരിട്ട് ആപ്ലിക്കേഷൻ സൃഷ്‌ടിക്കും. appinventor.mit.edu/explore എന്ന വെബ്‌സൈറ്റിലേക്ക് പോകുക, നിങ്ങളുടെ Google അക്കൗണ്ട് ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യുക, സൃഷ്‌ടിക്കുക ബട്ടൺ ക്ലിക്കുചെയ്യുക, പുതിയ പ്രോജക്റ്റ്, കൂടാതെ ലളിതമായ ഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ്ഘടകങ്ങൾ ഞങ്ങൾ ഇതുപോലുള്ള ഡിസൈൻ സൃഷ്ടിക്കുന്നു:

ഞാൻ ഗ്രാഫിക്സ് വളരെ ലളിതമാക്കി, ആർക്കെങ്കിലും കൂടുതൽ രസകരമായ ഗ്രാഫിക്സ് വേണമെങ്കിൽ, ഇതിനായി .jpeg ഫയലുകൾക്ക് പകരം സുതാര്യമായ പശ്ചാത്തലമുള്ള .png ഫയലുകൾ ഉപയോഗിക്കണമെന്ന് ഞാൻ നിങ്ങളെ ഓർമ്മിപ്പിക്കട്ടെ.
ഇപ്പോൾ ബ്ലോക്കുകൾ ടാബിലേക്ക് പോയി ആപ്ലിക്കേഷൻ ലോജിക്ക് ഇതുപോലെ സൃഷ്ടിക്കുക:


എല്ലാം ശരിയാണെങ്കിൽ, നിങ്ങൾക്ക് ബിൽഡ് ബട്ടണിൽ ക്ലിക്കുചെയ്‌ത് എൻ്റെ കമ്പ്യൂട്ടറിലേക്ക് .apk സംരക്ഷിക്കാം, തുടർന്ന് ആപ്ലിക്കേഷൻ അപ്‌ലോഡ് ചെയ്യാൻ മറ്റ് വഴികളുണ്ടെങ്കിലും നിങ്ങളുടെ സ്മാർട്ട്‌ഫോണിൽ ആപ്ലിക്കേഷൻ ഡൗൺലോഡ് ചെയ്ത് ഇൻസ്റ്റാൾ ചെയ്യുക. ഇവിടെ ഇത് ആർക്കും കൂടുതൽ സൗകര്യപ്രദമാണ്. തൽഫലമായി, ഞാൻ ഈ ആപ്ലിക്കേഷനിൽ അവസാനിച്ചു:


കുറച്ച് ആളുകൾ അവരുടെ പ്രോജക്റ്റുകളിൽ ആൻഡ്രോയിഡ് ആപ്ലിക്കേഷനുകൾക്കായി ആപ്പ് ഇൻവെൻ്റർ 2 വിഷ്വൽ ഡെവലപ്‌മെൻ്റ് എൻവയോൺമെൻ്റ് ഉപയോഗിക്കുന്നുണ്ടെന്ന് ഞാൻ മനസ്സിലാക്കുന്നു, അതിനാൽ അതിൽ പ്രവർത്തിക്കുന്നത് സംബന്ധിച്ച് നിരവധി ചോദ്യങ്ങൾ ഉയർന്നേക്കാം. ഈ ചോദ്യങ്ങളിൽ ചിലത് നീക്കം ചെയ്യാൻ, ഞാൻ ചെയ്തു വിശദമായ വീഡിയോ, "ആദ്യം മുതൽ" അത്തരമൊരു ആപ്ലിക്കേഷൻ എങ്ങനെ നിർമ്മിക്കാം എന്നതിനെക്കുറിച്ച് (അത് കാണുന്നതിന് നിങ്ങൾ YouTube-ലേക്ക് പോകേണ്ടതുണ്ട്):

പി.എസ്. തുടക്കക്കാർക്കും പ്രൊഫഷണലുകൾക്കുമായി Arduino-യിൽ 100-ലധികം വിദ്യാഭ്യാസ സാമഗ്രികളുടെ ശേഖരം