Агуулгын хүснэгт:
- Алхам 1: AD хөрвүүлэгч гэж юу вэ?
- Алхам 2: Ашигласан нөөц
- Алхам 3: ESP32 ADC
- Алхам 4: Ашигласан хэлхээ
- Алхам 5: Ашигласан тэмдэг
- Алхам 6: Осциллографоор олж авсан өгөгдөл
- Алхам 7: Осциллографоор олж авсан өгөгдөл (Excel дэх csv файл)
- Алхам 8: ADC -ийн олж авсан өгөгдөл
- Алхам 9: ADC - Excel -ээс олж авсан өгөгдөл
- Алхам 10: Авирах налуугийн харьцуулалт
- Алхам 11: Дээжийн тоог тэнцүүлэх
- Алхам 12: Цоорхойг нөхөх - чиг хандлагын шугам
- Алхам 13: Цоорхойг бөглөх - 2 -р зэргийн олон гишүүнт муруй
- Алхам 14: Цоорхойг нөхөх - функцийг үнэлэх
- Алхам 15: Осциллографын хүчдэлийг ADC -тэй харьцуулах эквивалент утга болгон хувиргах
- Алхам 16: Олсон хоёр налууг харьцуулах
- Алхам 17: ADC унших ялгаа (ERROR)
- Алхам 18: ADC унших ялгаатай зан төлөв - Залруулах функцийг олох
- Алхам 19: Бусад програм хангамжийг ашиглах
- Алхам 20: Тогтмол ба тохиргоо ()
- Алхам 21: Loop () ба залруулах функц
- Алхам 22: PolySolve залруулах функцийг ашиглах
- Алхам 23: Залруулга ашиглан зураг авалт - Плоттер цуваа
- Алхам 24: Тооцооллын зардал
- Алхам 25: Туршилтын код - Setup () ба Loop Start ()
- Алхам 26: Туршилтын код - Loop () ба боловсруулалт
- Алхам 27: Туршилтын код - Loop () - Үр дүн
- Алхам 28: Туршилтын код - Ашигласан функцууд
- Алхам 29: Файлууд
Видео: Та ESP32 ADC тохируулгын талаар мэдэх үү ?: 29 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Өнөөдөр би илүү техникийн асуудлын талаар ярих гэж байна, гэхдээ ESP32-тэй ажилладаг бүх хүмүүс мэддэг байх ёстой гэж бодож байна: ADC (аналог-тоон хөрвүүлэгч) унших тохируулга. "Хэмжилт" хийхдээ, ялангуяа аналог гаралттай багажийн хувьд та уншлага зөв хийгдэж байгаа гэдэгт бүрэн итгэлтэй байх ёстой учраас энэ нь чухал гэж би бодож байна.
Өнөөдрийн видеон дээр бид ESP32-ийн "аналог-дижитал хөрвүүлэгч" -ийг ашиглан хэмжилт хийж, хөрвүүлэлтийн зөрүүг ажиглаж, ADC тохируулга / тохируулгын аргыг ашиглах болно.
Алхам 1: AD хөрвүүлэгч гэж юу вэ?
AD хөрвүүлэгч нь аналог (тасралтгүй) хэмжигдэхүүнийг тоон (салангид) утга руу хөрвүүлэх чадвартай хэлхээ юм. Энэ юу гэсэн утгатай вэ? Энэ нь дижитал утга нь зөвхөн тэг ба нэгдлийн хослолоор үүссэн салангид утгыг хүлээн авах боломжтой гэсэн үг боловч аналог хэмжигдэхүүн нь муж доторх аливаа утгыг хүлээж авах боломжтой гэсэн үг юм. Жишээлбэл, хэрэв бид хамгийн тохиромжтой АА үүрний хүчдэлийг хэмжсэн бол энэ нь аналог хэмжигдэхүүн тул 0V ба 1.5V хооронд ямар ч утгыг олж чадна. Тохиромжтой чийдэнгийн гаралтын төлөв нь зөвхөн хоёр төлөвт (унтарсан эсвэл асаалттай) байх ёстой бөгөөд энэ нь салангид хэмжээтэй байна. Микроконтроллерууд энэхүү салангид логикийг ашиглан ажилладаг тул бидэнд аналог хэмжигдэхүүнийг тоон (эсвэл салангид) болгон хөрвүүлэх чадвартай хэлхээ хэрэгтэй болно.
Алхам 2: Ашигласан нөөц
• Нэг Lolin32 Lite карт v1.0.0
• Зураг авах зориулалттай Tektronix TDS1001C осциллограф
• ESP32 -д зориулсан нэг USB кабель
• Hantek DSO4102C осциллограф нь дохио үүсгэгч болно
Алхам 3: ESP32 ADC
Espressif-ийн мэдээллээр ESP32 чип нь хэмжсэн үр дүнд нэг чипээс нөгөө чип хүртэлх +/- 6% -ийн зөрүүтэй байж болно.
Нэмж дурдахад хөрвүүлэлт нь унших боломжтой бүх мужид шугаман хариулт өгөхгүй. Espressif нь шалгалт тохируулга хийх аргыг өгдөг бөгөөд хүссэн нарийвчлалд хүрэх шаардлагатай гэж үзвэл хэрэглэгчид бусад аргыг хэрэгжүүлэхийг санал болгодог.
Бид өгөгдөл цуглуулах ажлыг хийх бөгөөд үүнээс бид ADC -ийн хариулт, тохируулгыг уншихын тулд математик процессыг ашиглах жишээг харуулах болно.
Эдгээр засварыг хийх хэд хэдэн (илүү энгийн эсвэл илүү төвөгтэй) арга байдаг. Төсөлдөө хамгийн тохиромжтойг нь үнэлэх нь танд хамаарна.
Энд үзүүлсэн зураг нь тайлбарлах зорилготой бөгөөд тохируулгын явцад ажиглагдаж болох сонирхолтой цэгүүдийг авч үзэхийг хичээх болно.
Алхам 4: Ашигласан хэлхээ
Би Hantek DSO4102C 25 МГц хүртэл дохио үүсгэгчтэй осциллограф ашигласан. Бид ESP A / D болон осциллографоор уншсан долгионыг үүсгэсэн. Цуглуулсан өгөгдлийг csv болон хүснэгтэд бүртгэсэн бөгөөд үүнийг татаж авахын тулд би өгүүллийн төгсгөлд үлдээх болно.
Алхам 5: Ашигласан тэмдэг
Бид бага давтамжтай трапецын дохиог сонгосон бөгөөд энэ нь хөрвүүлэлтийн бүх хүрээнд дамжин өнгөрөх налуу руу нэвтрэх боломжийг олгодог. Энэ нь эдгээр налуу зам дээр олон тооны дээж авах боломжийг олгодог.
Алхам 6: Осциллографоор олж авсан өгөгдөл
Барьсан зургийг осциллографоор гүйцэтгэсэн. Өгөгдлийг csv файлд хадгалсан болно. Дохионы өгсөх ба уруудах налуу дээр бага зэрэг муруйлт байгааг анхаарна уу.
Алхам 7: Осциллографоор олж авсан өгөгдөл (Excel дэх csv файл)
Энд дээжүүд байна.
Алхам 8: ADC -ийн олж авсан өгөгдөл
Цувралын дамжуулах хурдыг өөрчилснөөр бид ADC -ийн авсан өгөгдлийг харах боломжтой болно. Трапецын дохионы хэв гажилтыг ажигла.
Arduino IDE сериал плоттер дээр ажиглагдсан өгөгдөл
Алхам 9: ADC - Excel -ээс олж авсан өгөгдөл
Илүү өндөр хурд, цуваа терминал ашиглан бид утгыг барьж, харьцуулахын тулд Excel дээр ашиглах боломжтой.
Алхам 10: Авирах налуугийн харьцуулалт
Бид хоёр авиралтын хоёр налуу замыг харьцуулж үздэг.
Хоёр налуу дээр тохиолддог муруйлтыг анхаарч үзээрэй.
Нэг налуугийн хувьд бидэнд осциллографоос илүү олон ESP32 дээж байгаа гэдгийг анхаарна уу.
Алхам 11: Дээжийн тоог тэнцүүлэх
ESP32 нь осциллографоос илүү олон тооны дээж өгсөн тул эдгээр муруйг харьцуулах индекс болох тул эдгээр утгыг тэнцүүлэх шаардлагатай байна.
Үүний тулд бид шууд харьцуулалт хийх болно.
Бид осциллографын налуугийн 305 дээж, ADC налуугийн 2365 дээжтэй.
Налуу зам нь ижил хэмжээтэй тул осциллограф тус бүрт ойролцоогоор 7.75 ADC дээж байдаг гэж хэлж болно.
Осциллографын дээж бүрийн индексийг үржүүлэх нь ижил муруйтай боловч ADC болон дахин хуваарилагдсан өгөгдөлтэй тэнцэх индекстэй байна.
Шинэ албан тушаалуудын дутуу өгөгдлийг бөглөхийн тулд бид мэдэгдэж буй өгөгдөлд статистикийн хувьд нийцсэн муруйг ашиглах болно.
Алхам 12: Цоорхойг нөхөх - чиг хандлагын шугам
Мэдэгдэж буй өгөгдлийг (цэнхэр цэгүүд) сонгоод, баруун товчлуур дээр дарж бид "Тренд шугам нэмэх …" -ийг сонгоно.
Гарч буй цонхонд бид Полиномын төрлийг сонгоно (захиалга 2 хангалттай байх болно).
Бид мөн "График дээрх тэгшитгэлийг харах" ба "Диаграм дахь R квадрат утгыг харуулах" сонголтуудыг шалгасан.
Бид "Хаах" дээр дарна уу.
Алхам 13: Цоорхойг бөглөх - 2 -р зэргийн олон гишүүнт муруй
Excel нь бидэнд хоёр шинэ мэдээлэл өгдөг; өгөгдөлд хамгийн сайн нийцсэн хоёр дахь эрэмбийн тэгшитгэл, энэ хүрэлцээтэй байдлыг илэрхийлсэн R квадрат тэгшитгэл.
1 -т ойртох тусам тэгшитгэл илүү тохиромжтой болохыг санаарай.
Математикийг судалж үзэхгүй, үүнийг зөвхөн хэрэгсэл болгон ашиглацгаая.
Алхам 14: Цоорхойг нөхөх - функцийг үнэлэх
Дээж авах цоорхойг тэгшитгэлээр үүсгэсэн өгөгдлөөр дүүргэе. Тэгээд тэдгээрийг цэг бүрээр нь харьцуулж үзээрэй.
y = -9E -08x2 + 0, 0014x + 0, 1505
R² = 0, 9999
Осциллографын хүчдэл = -9E -08 * индекс2 + 0, 0014 * индекс + 0, 1505
Алхам 15: Осциллографын хүчдэлийг ADC -тэй харьцуулах эквивалент утга болгон хувиргах
Үүний давуу талыг ашиглан осциллографын хүчдэлийн утгыг ADC -ийн эквивалент утга болгон өөрчилье.
ESP32 -ийн ADP -д олж авсан хамгийн өндөр утга нь 4095 байсан бөгөөд энэ нь ижил индексийн 2.958V -ийн уншилттай тэнцүү юм.
Осциллографын хэмжилт дэх вольт бүр ойролцоогоор МЭ 1384.4 нэгжтэй тэнцэнэ. Тиймээс бид осциллографын бүх хэмжилтийг энэ утгаар үржүүлж болно.
Алхам 16: Олсон хоёр налууг харьцуулах
Хоёр уншлагад олж авсан ялгааг төсөөлөх.
Алхам 17: ADC унших ялгаа (ERROR)
Доорх муруй нь ADC -ийн уншилтын ялгаа нь хэмжилтийн функц болж хэрхэн ажилладагийг харуулж байна. Энэхүү өгөгдлийн цуглуулга нь залруулах функцийг олох боломжийг бидэнд олгоно.
Энэ муруйг олохын тулд бид хэмжигдэхүүн бүрт байгаа ялгааг AD -ийн боломжит байрлал бүрийн функц болгон дүрсэлдэг (0 -ээс 4095 хүртэл).
Алхам 18: ADC унших ялгаатай зан төлөв - Залруулах функцийг олох
Бид Excel -д засварлах функцийг бидний өгөгдөлд хангалттай нийцэх хүртэл өндөр түвшний Trend шугамыг нэмж тодорхойлох боломжтой.
Алхам 19: Бусад програм хангамжийг ашиглах
Муруй тодорхойлох бусад сонирхолтой програм бол PolySolve бөгөөд үүнийг https://arachnoid.com/polysolve/ линк дээр шууд ашиглах эсвэл Java програм болгон татаж авах боломжтой.
Энэ нь илүү өндөр түвшний полиномын регрессийг ашиглах, форматлагдсан функцийг дамжуулах, бусад функцийг гүйцэтгэх боломжийг олгодог.
Үүнийг ашиглахын тулд өгөгдлийг эхний текст талбарт оруулна уу. Өгөгдөл нь таслал эсвэл табаар тусгаарлагдсан X, Y дарааллын дагуу байх ёстой. Цэгийг аравтын бутархай болгон зөв ашиглахдаа болгоомжтой байгаарай.
Оруулсан өгөгдлийг зөв форматласан тохиолдолд диаграм дараагийн цонхонд гарч ирнэ.
Манай ADC алдааны муруй хэрхэн явсныг энд харуулав.
Энэ цонх нь регрессийн үр дүнг харуулах болно, үүнд функцын хангалттай байдлын өгөгдөл орно, түүний гаралтыг хэд хэдэн хэлбэрээр форматлаж болно: C / C ++ функц, коэффициентүүдийн жагсаалт, Java дээр бичигдсэн функц гэх мэт.
Тэмдэглэл: Аравтын бутархай тусгаарлагчийг анхаарч үзээрэй
Алхам 20: Тогтмол ба тохиргоо ()
Би аналог зураг авахад ашигладаг GPIO -ийг энд онцолж байна. Би цуваа порт, мөн аналог зураг авахаар тодорхойлсон зүүг эхлүүлдэг.
const int pin_leitura = 36; // GPIO usado para captura analógica void setup () {Serial.begin (1000000); // PinMode (pin_leitura, INPUT) дибаг хийх боломжтой цуврал портууд; // Pino utilizado para captura analógica}
Алхам 21: Loop () ба залруулах функц
Бид тохируулсан хүчдэлийг барьж, утгыг зөв залруулга эсвэл засваргүйгээр хэвлэдэг.
void loop () {int valor_analogico = analogRead (pin_leitura); // realiza a captura da tensão ajustada //Serial.print(valor_analogico + f (valor_analogico)); // impime os valores para debug (COM CORREÇÃO) Serial.print (valor_analogico); // pretimime os valores para debug (SEM CORREÇÃO) Serial.print (","); Serial.print (4095); // cr95 uma linha para marcar o valor máximo de 4095 Serial.print (","); Serial.println (0); // cria uma linha para marcar o valor mínimo de 0}
12 -р мөрөнд f (analog_value) функцийг нэмж өгөгдлийг хэвлэх боломжтой гэдгийг анхаарна уу.
Алхам 22: PolySolve залруулах функцийг ашиглах
Энд бид Arduino IDE дотор PolySolve функцийг ашигладаг.
/* Горим: Полиномын зэрэг 6, 2365 x, y өгөгдлийн хос Корреляцийн коэффициент (r^2) = 9, 907187626418e-01 Стандарт алдаа = 1, 353761109831e+01 Гаралтын хэлбэр: C/C ++ функц: Зохиогчийн эрх © 2012, П. Лутус - https://www.arachnoid.com. Бүх эрх хуулиар хамгаалагдсан. */ давхар f (давхар x) {буцах 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e- 10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }
Таслалаар цэгийн өөрчлөлтийг аравтын бутархай тусгаарлагч болгон анхаарна уу.
Алхам 23: Залруулга ашиглан зураг авалт - Плоттер цуваа
Алхам 24: Тооцооллын зардал
Полиномын тооцоолол хийхийн тулд процессор энэ ажлыг гүйцэтгэх ёстой. Энэ нь эх код болон бэлэн байгаа тооцоолох хүчнээс хамааран гүйцэтгэлийг удаашруулж болзошгүй юм.
Энд бид олон градусын олон гишүүнт ашиглан хийсэн тестийн үр дүнгийн хүснэгтийг харж байна. Pow () функцийг ашиглаж байсан ба ашиглаагүй байсан үеийн ялгааг анхаарч үзээрэй.
Алхам 25: Туршилтын код - Setup () ба Loop Start ()
Энд бидний туршилтанд ашигласан код байна.
void setup () {Serial.begin (1000000); // Iniciando a porta sera somente para debug} void loop () {float valor_analogico = 500.0; // um valor arbtrario float quantidade = 10000.0; // quantidade de chamadas float contador = 0.0; // contador de chamadas
Алхам 26: Туршилтын код - Loop () ба боловсруулалт
Би микросекундээр утгыг авахын тулд micros () функцийг ашигласан.
// ============== үйл явц эсвэл хөвөх арга = micros (); // marca o instante inicial while (contador <quantidade) {// v (valor_analogico); // função vazia // r (valor_analogico); // função com retorno // f0 (valor_analogico); // grau 0 // f1 (valor_analogico); // grau 1 // f2 (valor_analogico); // grau 2 // f3 (valor_analogico); // grau 3 // f4 (valor_analogico); // grau 4 // f5 (valor_analogico); // grau 5 // f6 (valor_analogico); // grau 6 // f13_semPow (valor_analogico); // grau 13º SEM a função POW // f13_comPow (valor_analogico); // grau 13º COM a função POW contador ++; } agora = (micros () - agora) / quantidade; // тодорхой хугацааны интервалыг тодорхойлно уу
Алхам 27: Туршилтын код - Loop () - Үр дүн
Бид харьцуулах зорилгоор 13 -р ангийн функцээс буцаж ирсэн үнэ цэнийг ХБХ -тэй ба байхгүйгээр, мөн боловсруулах интервалыг хэвлэнэ.
// давж заалдах үүрэг зоригтой байх үүрэг даалгаврыг 13 -р сарын эхээр хөөн хэлэлцэхээс хасах зорилгоор Serial.print (f13_semPow (valor_analogico)); // grau 13º SEM a função POW Serial.print (" -"); Serial.print (f13_comPow (valor_analogico)); // grau 13º COM a função POW Serial.print (" -"); // туршилт хийх дараалал Serial.println (agora, 6); }
Алхам 28: Туршилтын код - Ашигласан функцууд
0 ба 1 зэрэглэлийн хоосон функцууд (зөвхөн буцах үед).
// FUNÇÃO VAZIAdouble v (double x) {} // FUNÇÃO SOMENTE COM RETORNO double r (double x) {return x; } // FUNÇÃO DE GRAU 0 double f0 (double x) {return 2.202196968876e+02; } // FUNÇÃO DE GRAU 1 давхар f1 (давхар x) {буцах 2.202196968876e + 02 + 3.561383996027e-01 * x; }
2, 3, 4 -р ангийн функцууд.
// FUNÇo DE GRAU 2double f2 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2);));)) + 2.082790802069e-10 * pow (x, 4); }
5 ба 6 -р ангийн функцууд.
// FUNÇo DE GRAU 5double f5 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5);)) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }
Цэргийн хоригдлуудыг ашиглан 13 -р ангийн функц.
// FUNÇÃO DE GRAU 13 USANDO O POWdouble f13_comPow (double x) {return 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * pow (x, 2) + -3, 968558178426 pow (x, 3) + 1, 047910519933e-08 * pow (x, 4) + -1, 479271312313e-11 * pow (x, 5) + 1, 220894795714e-14 * pow (x, 6) + -6, 136200785076e-18 * pow (x, 7) + 1, 910015248179e-21 * pow (x, 8) + -3, 566607830903e-25 * pow (x, 9) + 5, 000280815521e-30 * pow (x, 10) + 3, 434515045670e-32 * pow (x, 11) + -1, 407635444704e-35 * pow (x, 12) + 9, 871816383223e-40 * pow (x, 13); }
Цэргийн хоригдлуудыг ашиглахгүйгээр 13 -р ангийн функц.
// FUNÇÃO DE GRAU SEM USAR O POWdouble f13_semPow (double x) {return 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * x * x + -3, 968558178426e-06 * * x + 1, 047910519933e-08 * x * x * x * x + -1, 479271312313e-11 * x * x * x * x * x + 1, 220894795714e-14 * x * x * x * x * x * x + -6, 136200785076e-18 * x * x * x * x * x * x * x + 1, 910015248179e-21 * x * x * x * x * x * x * x * x + -3, 566607830903e- 25 * x * x * x * x * x * x * x * x * x + 5, 000280815521e-30 * x * x * x * x * x * x * x * x * x * x + 3, 434515045670e- 32 * x * x * x * x * x * x * x * x * x * x * x + -1, 407635444704e -35 * x * x * x * x * x * x * x * x * x * x * x * x + 9, 871816383223e-40 * x * x * x * x * x * x * x * x * x * x * x * x * x; }
Алхам 29: Файлууд
Файлуудыг татаж авах:
INO
Хүснэгт
Зөвлөмж болгож буй:
Макей Макей GO ба хөгжилтэй тоглоомын талаар мэдэх хэрэгтэй зүйлс: 4 алхам
Makey Makey GO болон хөгжилтэй тоглоомын талаар мэдэх хэрэгтэй зүйлс: Олон хүмүүс MaKey MaKey GO -ийг авдаг бөгөөд үүнийг яахаа мэдэхгүй байна. Та хөгжилтэй тоглоомуудыг эхнээс нь тоглож, гартаа үргэлж хүртээмжтэй болгох боломжтой! Танд хэрэгтэй зүйл бол MaKey MaKey GO болон зураас авах боломжтой компьютер юм
MPU6050 тохиргоо ба тохируулгын гарын авлага: 3 алхам
MPU6050 тохиргоо ба шалгалт тохируулгын гарын авлага: MPU6050 бол инерцийн хэмжих нэгж, 3 тэнхлэгт гироскопоор дамжих өнцгийн хурдатгал, шугаман хурдатгалын тусламжтайгаар шугаман хурдатгалыг мэдэх гайхалтай мэдрэгчтэй 6 DoF (эрх чөлөөний зэрэг) IMU юм. руу
Релений талаар мэдэх ёстой бүх зүйл: 6 алхам (зурагтай)
Релений талаар мэдэх ёстой бүх зүйл: Реле гэдэг нь цахилгаан гүйдэлтэй унтраалга юм. Олон реле унтраагуурыг механикаар ажиллуулахын тулд цахилгаан соронз ашигладаг боловч хатуу төлөвт реле гэх мэт бусад ажиллагааны зарчмуудыг бас ашигладаг. Релейг хянах шаардлагатай газарт ашигладаг
LED -ийн талаар мэдэх ёстой бүх зүйл: 7 алхам (зурагтай)
LED -ийн талаар мэдэх ёстой бүх зүйл: Гэрэл ялгаруулах диод нь гүйдэл дамжих үед гэрэл ялгаруулдаг электрон төхөөрөмж юм. LED нь жижиг, маш үр ашигтай, тод, хямд, электрон эд анги юм. Хүмүүс LED нь зүгээр л нийтлэг гэрэл ялгаруулдаг бүрэлдэхүүн хэсэг гэж боддог & хандлага
Анхан шатны электроникийн талаар мэдэх ёстой бүх зүйл: 12 алхам
Эхлэгч электроникийн талаар мэдэх ёстой бүх зүйл: Дахин сайн байна уу. Энэхүү зааварчилгааны номонд бид маш өргөн сэдвийг авч үзэх болно: бүх зүйл. Энэ нь боломжгүй мэт санагдаж болохыг би мэднэ, гэхдээ хэрэв та бодоод үзвэл манай дэлхий усны менежментээс эхлээд кофе үйлдвэрлэх хүртэл электрон хэлхээгээр удирддаг