Мазмуну:

Ардуинонун жардамы менен мотор ылдамдыгын өлчөө: 6 кадам
Ардуинонун жардамы менен мотор ылдамдыгын өлчөө: 6 кадам

Video: Ардуинонун жардамы менен мотор ылдамдыгын өлчөө: 6 кадам

Video: Ардуинонун жардамы менен мотор ылдамдыгын өлчөө: 6 кадам
Video: Как управлять приводом с помощью Arduino - Robojax 2024, Июль
Anonim
Мотор ылдамдыгын өлчөө Arduino аркылуу
Мотор ылдамдыгын өлчөө Arduino аркылуу
Мотор ылдамдыгын өлчөө Arduino аркылуу
Мотор ылдамдыгын өлчөө Arduino аркылуу
Мотор ылдамдыгын өлчөө Arduino аркылуу
Мотор ылдамдыгын өлчөө Arduino аркылуу

Мотордун айлануусун өлчөө кыйынбы ??? Мен андай деп ойлобойм. Бул жерде бир жөнөкөй чечим бар.

Сиздин комплектеги бир гана IR сенсор жана Arduino муну кыла алат.

Бул постто мен IR сенсорунун жана Arduino UNO/нанонун жардамы менен ар кандай мотордун RPMин кантип өлчөө керектигин түшүндүргөн жөнөкөй окуу куралын берем.

Берилиштер:

1. Arduion uno (Amazon) / Arduion nano (Amazon)

2. IR сенсор (Amazon)

3. DC мотору каалаган (Amazon)

4. ЖК 16*2 (Amazon)

Колдонулган куралдар

1. Паяльник (Амазонка)

2. Wire Stripper (Amazon)

1 -кадам: Кадам: 1 Сенсорлордун жана түзмөктөрдүн иштөө шарттарын камсыз кылуу

IR сенсор - бул айланадагы нерселерди сезүү үчүн жарык чыгаруучу электрондук түзүлүш. IR сенсор объекттин жылуулугун өлчөй алат, ошондой эле кыймылды аныктайт. Адатта, инфракызыл спектрде бардык объекттер кандайдыр бир жылуулук нурлануусун таркатышат. Мындай нурлануу түрлөрү биздин көзүбүзгө көрүнбөйт, бирок инфракызыл сенсор бул нурланууну аныктай алат.

Туруктуу ток (DC) мотору - электр энергиясын механикалык энергияга айландыруучу электр машинасынын бир түрү. DC кыймылдаткычтары электр энергиясын түз ток аркылуу алышат жана бул энергияны механикалык айланууга айландырышат.

DC кыймылдаткычтары чыгаруучу валдын ичинде бекитилген ротордун кыймылын камсыз кылган электрдик токтон пайда болгон магнит талааларын колдонушат. Чыгуу моменти жана ылдамдыгы электрдик кирүүгө да, мотордун дизайнына да байланыштуу.

Arduino деген эмне?

Arduino-ачык булак электроника платформасы, колдонууга оңой аппараттык жана программалык камсыздоого негизделген. Arduino такталары кирүүлөрдү окуй алат - сенсордогу жарык, баскычтын манжасы же Twitter билдирүүсү - жана аны чыгууга айландыруу - моторду иштетүү, LEDди күйгүзүү, интернетте бир нерсе жарыялоо. Тактадагы микроконтроллерге көрсөтмөлөрдүн топтомун жөнөтүү менен тактаңызга эмне кылуу керек экенин айта аласыз. Бул үчүн сиз Arduino программалоо тилин (зымга негизделген) жана кайра иштетүүгө негизделген Arduino программасын (IDE) колдоносуз.

ARDUINO IDE жүктөп алыңыз

2 -кадам: Бул кантип иштейт?

Демек мунун артында кандай логика жатат ???

Бул коддогучка абдан окшош иштейт. Жаңыдан баштагандар үчүн коддогучтарды түшүнүү кыйын. Сиз билишиңиз керек болгон нерсе IR сенсору импульсту түзөт жана биз ар бир импульстун ортосундагы убакыт аралыгын билип жатабыз.

Бул учурда, IR сенсору Ардуиного импульсту жиберет, качандыр бир убакта анын IR нуру мотордун винттери менен кармалып турат. Адатта биз эки пышак менен винт колдонобуз, бирок мен сүрөттө көрсөтүлгөндөй үч пышак менен винтти колдонгом. винт пышактарынын санына жараша RPMди эсептөөдө кээ бир баалуулуктарды өзгөртүүбүз керек.

Келгиле, бизде эки пышагы бар винт бар экенин карап көрөлү. Ар бир революция мотору үчүн бычак IR нурун эки жолу кармайт. Ошентип, IR сенсору ар дайым кармап турганда импульстарды чыгарат.

Эми биз белгилүү бир убакыт аралыгында IR сенсорунун өндүргөн импульсун өлчөй турган программа жазышыбыз керек.

Маселени чечүүнүн бир нече жолу бар, бирок биз бул коддордун кайсынысы мыкты экенин тандап алышыбыз керек, мен үзгүлтүктөрдүн ортосундагы узактыкты өлчөдүм (IR сенсору) Мен микро секунддарда импульстун узактыгын өлчөө үчүн micros () функцияларын колдондум.

Сиз бул формуланы RPMRPM = ((1/узактыгы)*1000*1000*60)/бычактарды өлчөө үчүн колдоно аласыз

мында, узактыгы - импульстардын ортосундагы убакыт аралыгы.

60 - секунддан мүнөткө чейин

1000 - секундадан милл

1000 - тегирменден микрого чейин

пышактар - винтте канаттар жок.

LCD дисплейи - Arduino LCD дисплейинин буйруктарын жана маалымат регистрлерин жаңыртат. Бул LCD дисплейде ASCII белгилерин көрсөтөт.

3 -кадам: Arduino IDE аркылуу Arduino программаңыз

#кошуу

LiquidCrystal lcd (9, 8, 7, 6, 5, 4); const int IR_IN = 2; // IR сенсор INPUT белгиси узун prevmicros; // Убакытты кол коюусуз узак мөөнөткө сактоо үчүн; // Убакыт айырмасын сактоо үчүн белгисиз узак lcdrefresh; // int rpm жаңыртуу үчүн lcdге убакыт сактоо үчүн; // RPM мааниси логикалык Currentstate; // IR киргизүү сканеринин учурдагы абалы логикалык prevstate; // Мурунку сканер жараксыздыгындагы IR сенсорунун абалы () {pinMode (IR_IN, INPUT); lcd.begin (16, 2); prevmicros = 0; prevstate = LOW; } void loop () {///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// RPM Measurement currentstate = digitalRead (IR_IN); // IR сенсорунун абалын окуңуз, эгер (prevstate! = Currentstate) // Киргизүүдө өзгөрүү болсо {if (currentstate == LOW) // Киргизүү HIGHдон LOWга чейин өзгөрсө {Duration = (micros () - prevmicros); // Микросекунддук айлануудагы революциянын ортосундагы убакыт айырмасы = ((60000000/узактыгы)/3); // rpm = (1/ millis)*1000*1000*60; prevmicros = micros (); // nect революциясын эсептөө үчүн убакыт сактоо}} prevstate = currentstate; // кийинки сканерлөө үчүн бул сканерлөө (алдын ала сканерлөө) маалыматтарын сактоо //////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ((миллис ()-lcdrefresh)> = 100) {lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Мотордун ылдамдыгы"); lcd.setCursor (0, 1); lcd.print ("RPM ="); lcd.print (rpm); lcdrefresh = millis (); }}

4 -кадам: Proteus колдонулган симуляция

Proteus колдонуу симуляциясы
Proteus колдонуу симуляциясы

Мен муну proteusдун жардамы менен окшоштурууга аракет кылганымда, бул долбоор абдан жакшы иштеди.

IR сенсорун колдонуунун ордуна мен DC импульс генераторун колдондум.

сиз колдонгон сенсорго жараша программаңызга өзгөртүүлөрдү киргизишиңиз керек

LM358 менен IR сенсор бул буйрукту колдонушу керек.

if (currentstate == HIGH) // Эгерде киргизүү LOW ден HIGH чейин гана өзгөрсө

LM359 менен IR сенсор бул буйрукту колдонушу керек.

if (currentstate == LOW) // Эгерде киргизүү гана HIGHдон LOWга өзгөрсө

5 -кадам: Аппараттык аткаруу

Аппараттык аткаруу
Аппараттык аткаруу
Аппараттык аткаруу
Аппараттык аткаруу
Аппараттык аткаруу
Аппараттык аткаруу

Схемалык түрдө симуляциялык сүрөттөрдү колдонуңуз же программанын коддоруна кайрылыңыз жана ошого жараша байланыштарды түзүңүз. Программанын кодун Arduinoго жүктөңүз жана каалаган мотордун RPM ченегиле. Кийинки постумду күтүп туруңуз жана менин YouTube каналымды көрүңүз.

Сунушталууда: