Yandex да направи безконтактен честотомер от arduino тахометър. Сензор за скорост на въртене

Тахометърът е полезен инструмент за отчитане на RPM (обороти в минута) на колело или нещо, което се върти. Най-лесният начин да направите тахометър е да използвате IR предавател и приемник. Когато комуникацията между тях се прекъсва, вие знаете, че нещо се върти и можете да използвате кода, за да изчислите RPM въз основа на честотата на прекъсванията на комуникацията.

В тази статия ще разгледаме как да използвате IR предавател и приемник, за да направите тахометър с помощта на Arduino. Резултатът се показва на 16x2 LCD дисплей.

Целта на този проект е да се създаде система с един вход и един изход. На входа на устройството има сигнал, който се променя от високо (+5V) на ниско (+0V) ниво при прекъсване на комуникацията. Според този сигнал Arduino ще увеличи стойността на вътрешния брояч. След това се извършва допълнителна обработка и изчисление и когато тригерът бъде прекъснат, изчислените RPM ще бъдат показани на LCD дисплея.

За комуникация ще използваме инфрачервен лъч от инфрачервен светодиод, свързан чрез резистор с ниско съпротивление, така че да свети ярко. Като приемник ще използваме фототранзистор, който се "затваря" при липса на IR LED светлина. Компютърният вентилатор ще бъде поставен между IR предавателя и приемника и ще бъде включен. IR приемник, свързан чрез транзисторна верига, ще генерира прекъсвания. За показване на резултата ще се използва Arduino LCDинтерфейс, за да можем да покажем крайната стойност на RPM на LCD дисплея.

елементи:
Arduino UNO
16x2 LCD
Дъска за хляб
Тример резистор 5 kΩ
Джъмпери
SIP конектори
2x 2N2222 NPN транзистор
инфрачервен светодиод
Фототранзистор
Резистор 10 ома
Резистор 100 kΩ
Резистор 15 kΩ или 16 kΩ
компютърен вентилатор

Подробен списък с артикули

Всички елементи, използвани в проекта, са изброени по-горе, но ще опиша функциите на основните елементи по-подробно.

Arduino UNO
Това е платката на Arduino, която ще използваме за обработка на импулсите на прекъсване на IR, които ни казват кога лопатката на компютърния вентилатор е между приемника и сензора. Arduino ще използва тези импулси заедно с таймер за изчисляване на RPM на вентилатора.

LCD дисплей 16x2
След като Arduino изчисли RPM, тази стойност ще се покаже на дисплея по удобен за потребителя начин.

Тример резистор 5 kΩ
Този тример ще се използва за регулиране на контраста на 16x2 LCD. Той осигурява аналогово напрежение в диапазона от 0 до +5V, което ви позволява да регулирате яркостта на LCD.

Инфрачервен светодиод и фототранзистор
Фототранзисторът се отваря, когато върху него попадне мощна инфрачервена светлина. Следователно, когато IR светодиодът е включен, той поддържа фототранзистора отворен, но ако IR светодиодът е покрит, например, от перка на вентилатор, тогава фототранзисторът е затворен.

2N3904 и 2N3906
Тези транзистори се използват за преобразуване на нивото на сигнала, за да осигурят изходни импулси от фототранзистора към Arduino, в които няма напрежения, различни от +0 и +5V.

електрическа схема


На диаграмата LCD комуникационният интерфейс е опростен и има само 2 линии за управление и 4 линии за данни.

Характеристики на веригата

Интерфейс на LCD дисплей 16x2
2 контролни пина и 4 за пренос на данни са свързани от Arduino към LCD. Това казва на LCD дисплея какво да прави и кога.

Верига за прекъсване на инфрачервения лъч
Сигналът за прекъсване на инфрачервения лъч отива към 2-ри цифров Arduino щифт. Това прекъсва Arduino, позволявайки му да брои импулса и позволява на тахометра да получава данни.

Arduino LCD библиотека

За този проект ще използваме LCD библиотеката на Arduino. По принцип просто ще актуализираме стойността на RPM на втория ред с новата.

Като подготовка вижте кода по-долу, който използва тази библиотека, за да покаже „Hello, World!“ на LCD дисплея. В тахометъра ще използваме подобен код, особено: "lcd.print(millis()/1000);".


Разберете възможно най-подробно функциите на тази LCD библиотека, преди да продължите. Не е прекалено сложно и е добре документирано на уебсайта на Arduino.

Броене на обороти с Arduino

Тъй като ще изчислим RPM на компютърен вентилатор, трябва да разберем, че използваме прекъсване на IR лъч за изчисляване. Това е много удобно, но трябва да вземем предвид, че компютърният вентилатор има 7 перки. Това означава, че 7 прекъсвания се равняват на 1 оборот.

Ако проследяваме прекъсвания, трябва да знаем, че всяко седмо прекъсване означава, че току-що е извършено 1 пълно завъртане. Ако следим времето, необходимо за пълен оборот, тогава можем лесно да изчислим RPM.

Време на 1-ви оборот = P * (µS/rev)
RPM = RPM = 60 000 000 * (µS/min) * (1/P) = (60 000 000 / P) * (RPM)

За да изчислим RPM, ще използваме формулата по-горе. Формулата е точна и точността зависи от това колко добре Arduino може да следи времето между прекъсванията и да брои броя на пълните обороти.

На снимката по-долу можете да видите всички необходими части и джъмпери, както е показано на диаграмата.


Първо свържете +5V и LCD линии за данни/контрол. След това LCD, потенциометър за контраст и светодиод за захранване.


Веригата за прекъсване на инфрачервения лъч е сглобена. Опитайте се да поддържате разстояние между IR LED и фототранзистора. Тази снимка показва разстоянието между IR LED и фототранзистора, където ще поставя вентилатора на компютъра.


Стига приказки за хардуер! Нека започнем да правим фърмуер/програма, за да видим как работи устройството!

Софтуерна част

Има две основни части от кода, които са показани и подробно описани по-долу:
-Основен цикъл на опресняване на LCD
- Актуализирайте времето за прекъсване

В основния цикъл се броят оборотите и актуализациите на LCD. Тъй като основният цикъл е гигантски цикъл while(1), той винаги ще работи, оборотите в минута ще се броят и LCD ще се актуализира няколко пъти в секунда. Функцията в прекъсването отчита времето между IR прекъсванията, така че можете да преброите RPM в главния цикъл.

Сензор за скорост на въртенеFC -03

Модул за сензор за скорост или линейно движение. Тип модул FC-03. Предназначен е за контрол на механичните параметри на движещи се части на различни механизми за битови и учебни цели. Когато е инсталиран в базовите платформи на малка роботика, той ви позволява да сглобявате системи за управление на двигателя и да установявате контрол върху движението на обект.

Монтаж на сензора за скорост на въртене FC-03 върху шасито на колесния робот.

Характеристики

Захранване 3.3 - 5 V
Широчина на просвета за шлицов диск 5 мм
Размери на модула 38 x 14 x 7 mm
Монтажен отвор за винт 3 мм

КонтактиFC-03



Контактите са маркирани на таблото.

VCC е сила.
GND- общ проводник, отрицателен полюс на мощността.
DO - импулсен изходен сигнал.
AO - директен изход от оптрон ITR9608.

Принцип на действие


Приемащият елемент на модула е оптична двойка ITR9608. Инфрачервен светодиод е разположен в единия ръб на корпуса, насочен към фототранзистор, разположен в друг ръб. Ако в пролуката между издатините се постави непрозрачна плоча, тогава инфрачервеното лъчение от светодиода се блокира и фототранзисторът се затваря. Такъв компонент понякога се нарича фотопрекъсвач, но той само блокира прекъсването. светлинен поток. Както е показано на диаграмата от емитера на транзистора, сигналът влиза във веригата на устройството.

Светлината се блокира от пластина, фиксирана върху подвижната част на управлявания механизъм. С помощта на сензора се определя движението до крайните позиции на движещата се равнина, когато структурният елемент, свързан с него, влезе в сензора. Измерете параметрите на въртене на различни механични части. По този начин механичните параметри се преобразуват в електрически величини и след това в програмни стойности.

Сензорът за скорост на въртене FC-03 се използва за измерване на скоростта на въртене. Не може да се използва за определяне на посоката на въртене. На вала на двигателя или зъбното колело на редуктора е монтиран диск с отвори. Оптрона на модула има слот с ширина 5 мм. Когато дискът се върти, както е показано на анимацията, дупките и секциите на плочата постоянно се редуват в слота. Сензорът преобразува редуването на дисковите елементи в електрически импулси. Електрониката на модула прави сигнала на сензора цифрово разчитаем логически чиповеили микроконтролер.

СхемаFC-03




Сигналът от ITR9608 се подава към входа на компаратора LM393, от неговия изход към щифта D0 и се захранва светодиодният индикатор цифров сигналсъстоящ се от високи и ниски логически нива. Изход A0 се захранва директно от ITR9608 без преобразуване в логически нива. Използването на компаратора LM393 ви позволява да получите гладки ръбове на импулса и леко да увеличите текущото натоварване на изхода на сензора, инсталирайте светодиод във веригата, показващ състоянието на изхода.

Индикация

На платката има 2 светодиода. Единият показва включването на сензора за скорост на въртене FC-03, другият показва липсата на препятствие в сензора. По време на първия пробен пуск и двата светодиода трябва да светят. Когато в свободното пространство на прекъсвача се постави метална пластина, един светодиод трябва да изгасне.

Приложение

С помощта на сензора е възможно да се измерва не само скоростта на въртене, ускорението, но и разстоянието, изминато от колесния робот, както и да се записва изразходваният живот на двигателя. Особено важно е да се контролира скоростта на въртене на колелата, когато всяко колело се задвижва от собствен двигател. За праволинейно движение скоростта на въртене на всички колела трябва да бъде еднаква, докато се въртите, спазвайте алгоритъма на системата за управление.


Докато дискът се върти, известен брой дупки пресичат сензорния процеп за едно завъртане. Като преброите броя на дупките, можете да определите 1 оборот на колелото или например 15,5 оборота. Измервайки броя на оборотите за единица време, получаваме честотата на въртене на колелото, а оттам и скоростта на обекта. Въз основа на сигналите от сензора и имайки точната стойност на времевите интервали, устройството изчислява параметрите на движение. Тук влиза в действие микроконтролерът.
Следната програма Arduino ви позволява да определите броя обороти в минута и извежда резултатите в прозореца на серийния терминал.

#define PIN_DO 2 // Задайте щифт, използван от Arduino
променливи неподписани int импулси;
плаващи обороти в минута;
неподписан дълго времеСтар;
#define HOLES_DISC 15

празен брояч ()
{
варива++;
}

Празна настройка()
{
Serial.begin(9600);
pinMode(PIN_DO, INPUT);
импулси=0;
timeOld = 0;

}

Void loop()
{
if (millis() - timeOld >= 1000)
{
detachInterrupt(digitalPinToInterrupt(PIN_DO));
rpm = (импулси * 60) / (HOLES_DISC);
Сериен println (rpm);

TimeOld = millis();
импулси=0;
attachInterrupt(digitalPinToInterrupt(PIN_DO), counter, FALLING);


32:20 - Алгоритми на фърмуера 16 и 18
36:50 - Променливи на фърмуера
40:40 - Отчитане на сензора на Хол

След като сме сглобили и тествали регулатора, описан тук: https://shenrok.blog...t=1489156293398
Можем да започнем да инсталираме фърмуер, който ще поддържа определената скорост. Но първо, нека се спрем на въпроса за сензора на Хол.
Смяната на тахогенератора със сензор на Хол не е никак трудна. Говоря за това подробно във видеото в 5:48. Но кой да сложа? Имаме нужда от цифров сензор на Хол, за предпочитане биполярен. Тъй като ще даде 2 пъти повече сигнали. А това е много важно за малките революции. Това е този в моя двигател СС441 .

Обмисли PID_12:
В самото начало на скицата имаме редове, в които трябва да въведем стойностите, от които се нуждаем:

int obMax = 6000; //въведете максимални обороти

float kImp = 120; //въведете броя импулси за 10 оборота

В първия ред въвеждаме броя на максималните обороти, които са ни необходими. Второто е минимално. В третия ред поставяме броя на импулсите на нашия сензор за 10 оборота на вала. В четвъртия ред трябва да въведете число, което ще ограничи минималния ток на скоростта. Това ще зависи от броя на минималните обороти и приложените натоварвания. И в петия - номерът, при който двигателят започва да се върти на фърмуер № 6 (ние обърнахме внимание на това).
Следващото е най-важното. Необходимо е да се настроят (изберат) коефициентите на PID регулатора. Те са в 19-ия ред на скицата:
PID myPID(&Вход, &Изход, &Настройка, 0.01 , 0.2 , 0 , ДИРЕКТЕН);

Търсенето дава няколко начина за конфигуриране, можете да използвате всеки. Но честно казано, този контролер не ми хареса особено. Или може би просто нямах търпението да го настроя.

Обмисли _16:
Основните променливи на скицата са същите като в PID контролера:

int obmin = 200; //въведете минималните обороти


intminzn = 115; // минималната стойност на триака, при която започва въртенето.
int ogrmin = 70; // лимит на триак при минимална скорост.
int mindimming = 80; // стойност на триак, когато машината е заседнала (първоначален импулс)

И те са инсталирани по същия начин. Но са добавени 2 стойности. то стойност на триак със заседнала машина (първоначален импулс) Избира се така. На фърмуер № 6 даваме малко натоварване на вала, минималното, само ако валът не е празен. И започваме да въртим регулатора. Необходимо е да се отбележи числото, при което валът ще започне да се върти. Нуждаем се от тази стойност, за да дадем първоначалния импулс на нашата машина. Числото е много условно и допуска известни отклонения. И основната променлива, която ще изисква настройка и избор, е толеранс на оборотите минус и плюс. Това означава в какви граници ще се стабилизира скоростта на нашия двигател. Намираме минималната стойност, при която двигателят ще се върти без резки както на празен ход, така и при натоварване при различни скорости. Този фърмуер вече осигурява добра стабилизация на оборотите в определените граници и може би това вече ще е достатъчно. Ако е необходима точна стабилизация на оборотите, тогава преминаваме към следващото шиене.

Обмисли _18:

Всички стойности се прехвърлят от предишния фърмуер:

int obmin = 200; //въведете минималните обороти
int obMax = 9000; //въведете максимални обороти
int kImp = 120; //въведете броя импулси за 10 оборота
intminzn = 115; // минималната стойност на триака, при която започва въртенето.
int ogrmin = 70; // лимит на триак при минимална скорост.
int mindimming = 80; // стойност на триак, когато машината е блокирала (първоначален импулс)
int dopusk = 200; //толерантност към обороти в минус и плюс
int състезание = 50; //променлива на ускорението 1 - 100

Добавена е само стойността на ускорението или плавността. При стойност 1 стабилизирането става плавно, с увеличаване на стойността ускорението е по-сериозно. Горната граница е много голяма, но след 100 (в моя случай) няма промени.

Паралелно развитие: http://www.motor-r.i...og-page_19.html

Вариант на регулатора на производителя на чипове:

Много въпроси за подробности, къде да поръчам. Поръчах комплект за себе си, споделям с вас.

И поръчах блок релета за реверс и защита. Ще допълваме.

Въз основа на вашите въпроси статията ще бъде допълнена. Затова питаме.

И така, нека продължим да настройваме и усъвършенстваме нашия регулатор на скоростта с обратна връзка.
Започни тук:
1 Идея и разработка
2 PID контролер
3 Сглобяване на регулатора, инструкции стъпка по стъпка
4 Въпроси - отговори, съвети, алгоритъм на работа
5 Настройка на толеранса, премахване на смотаняци, свързани с преливане, превключвател на 2 скорости, реле за защита срещу повреда на триака.

Тези, които вече са направили този регулатор, са се сблъскали с проблем, много е трудно да се намери променлива за толеранс. Методът на изброяване е дълъг и неудобен. И се оказа, че толерансът при ниски и високи скорости може да е различен. Поради това е написан фърмуер, който помага наведнъж много точно да изберете тази стойност както при минимална, така и при максимална скорост.
За да направим това, трябва временно да запоим 10 kΩ променливо съпротивление с централния контакт към щифт A3, нашето ардуино. Крайните контакти на съпротивлението, както винаги, са запоени към + и -.
Сега след качването на фърмуера nastroyka_dopuska , в който първо ще въведем всички променливи, свързани с нашата машина или двигател. Основните ще бъдат минималните и максималните обороти, които са необходими на машината, както и броят импулси на 10 оборота на шпиндела.
Избираме толеранса, както е показано във видеото. След това можем да въведем получените данни във фърмуер 18 и да ги използваме. Дисплеят е подобрен в този фърмуер. Защото ти поиска.
Фърмуер: https://drive.google...iew?usp=sharing


Следващият проблем, който имахме, беше, че при определени обороти на двигателя се появиха „трептения“. За да се разбере причината, беше направен фърмуер, който изпрати стойността на променливата tic към компютъра. Това е броят на циклите, които преминават между сигналите от сензора на Хол. Данните бяха показани в програмата SerialPortPlotter в графична форма.




След консултации се оказа, че повреди възникват, ако сигналът от сензора пристигне едновременно с препълването на брояча, което се случва след 65 535 цикъла. Казаха ми и как да избегна подобни провали, за което съм им много благодарен.

Следващата задача, която ни изправи, беше да реализираме защита срещу повреда на триака с помощта на реле. Така че, ако оборотите надвишат зададените с определен брой, релето ще работи и ще изключи двигателя.
Ще използваме релеен блок от 4 бр., тъй като в бъдеще ще реализираме реверса на двигателя чрез тях. Но ако не се нуждаете от реверс, тогава можете да минете с едно реле.


Прилагаме минус към GND контактите, прилагаме плюс 5 волта към VCC, свързваме IN3 и IN4 към щифта A1 на arduino, това е за обратното, и IN2 към щифта A2. Този контакт ще отговаря за изключването на захранващата платка. Качване на фърмуера proverka_rele , а нашите релета трябва да се включват последователно за 1 секунда и да се изключват. Две сдвоени и една отделна. Ако всичко работи правилно, тогава можете да прекарате кабела, който отива към захранващата платка през това единично реле, качете фърмуера roos_zashita_1 и използвайте контролера. Тук се елиминират шутовете и се прилага защита.

Можем също веднага да инсталираме и свържем превключвател за заден ход с 3 позиции и превключвател, който ще раздели скоростния ни диапазон както желаем. За моята машина направих първата скорост за струговане от 100rpm до 2000rpm, а втората за шлайфане от 1500rpm до 5000rpm. Свързваме ги по следния начин:

Качете скицата за проверка proverka_tumblerov и когато промените позицията на превключвателите, числата на екрана ще се променят. Ако настъпят промени, можете да качите фърмуера roos_zashita_2speed И се наслаждавайте.

Не забравяйте, че във всички фърмуери трябва да въведете стойностите, от които се нуждаете.
фърмуер:
Печат ---- с две релета за заден ход и спирачка https://wdfiles.ru/dr8k

Печат ---- с SMD компоненти и импулсен блокзахранване за кутия D6MG https://drive.google...T0JOd2pFZjI3SmM

За релета 12v прехвърлете джъмпера на маркировка 12
За релетата 5v вече е на 5 точка
Запоете диодите на релетата директно върху платката от страната на проводниците.
За платки с ULN2003 не са необходими диоди на релето.

Списъкът с части се променя в зависимост от избрания печат.

резистор 10k 0.25W-2бр
резистор 4.7k 0.25W-1бр
резистор 2k 0.25W-1бр
резистор 470 0.25W-1бр
резистор 100 2W-1бр
резистор 360 0.25w-2бр
резистор 5k 0.25W-1бр (бутон за реверс)
тример резистор 10k-1бр (за LCD дисплей)
променлив резистор 10k-1pc (rev twister)
тример резистор 10k (на крак A3)
диод RL205 1бр
кондензатор 100n 600V-1бр С4
кондензатор 0.05mf -1бр C3
триак BTA24-600 (BTA16-600) На радиатора
PC817C-1 бр
MOC3021-1бр (MOC3023)
L7805CV-1бр
диоден мост какво би било същото като на платката GBL04-E3 / 51 (KBL04), диоден мост 4A 400V
клеми на табло - двойни - 7 бр.,
реле JS1-12V 2бр може да бъде 5v
електролитни кондензатори 100 microfarad * 25v -2 бр (C1 и C2)
чип ULN2003A - 1бр

трансформатор - какъвто намериш (1.5-3W)
трипозиционен ключ - 1 бр
гнездо за Arduino -1бр

Наличен на борда, не е посочен
резистора на веригата под ардуиното е 10k (от страната на пистите ли е или има значение?) На платката от страната на проводниците, но може и отгоре да го сложиш. И това е необходимо за тези, които ще разделят диапазона за регулиране на скоростта на два поддиапазона.
диоди на обратната страна на платката към релето - какво? отговорът е всеки, който ще бъде възможен RL205
транзистори BC 550 - 2 бр транзистори също са всякакви с обр. емитент можете kt 315 или kt3102

Верига вариант
Коригиран вариант на схемата

Приложени изображения




Публикацията е редактиранаdorio55: 01 май 2017 - 20:05

Модулът на сензора за скорост на двигателя е предназначен основно за откриване на скоростта на въртене на вала на двигателя. Този модул, заедно с микроконтролера, може да определя освен скоростта, броя на импулсите и положението на вала.



Обикновено сензорите измерват величината, като регистрират определени събития, след което броят на събитията се свързва с периода от време, през който са се случили.


Така че в този случай се измерва скоростта - събитията тук се разбират като импулси, получени в резултат на работата на оптичния сензор по време на въртенето на диска със слотове. Сензорът се състои от светодиод и фототранзистор, който отчита наличието или отсъствието на LED излъчване.


Схема


Представената схема може да се използва за изпращане на регистрираните импулси към микроконтролера. Основата на схемата е оптичен сензор OS25B10 (OC1) със светодиод и фототранзисторен изход.


Следва двоен компаратор LM393 IC (IC1), конфигуриран като прост тригер на Schmitt. Зелен светодиод(LED1) показва наличието на напрежение, приложено към веригата, а червеният светодиод (LED2) следи изхода на модула на сензора за скорост на двигателя. Препоръчва се работно напрежениемодул е ​​между 4,5 и 5,5 V.




Имайте предвид, че резистор R1 (180 ома) се използва тук за ограничаване на работния ток на светодиода вътре в оптичния сензор OS25B10 (OC1). Ако е необходимо, можете да промените стойността му за вашия прототип. Можете също така да регулирате стойността на резистора R2 (10 kΩ), за да получите необходимото напрежение за вашата верига. Резистор R7 (10 kΩ) е допълнителен издърпващ резистор.


Диск за енкодер


Диск за енкодер, поставен в гнездото на сензора, разделя оптичния сензор по такъв начин, че от едната страна на диска има светодиод, а от другата страна - фототранзистор. Ако пътят на светлинния лъч от светодиода не е блокиран от диска, фототранзисторът ще премине ток, в противен случай ще бъде затворен.

Това описва цифрово устройство, което измерва скоростта на автомобила и честотата на въртене на коляновия вал на неговия двигател. Индикаторът е LCD тип 1602A, стандартен е, базиран на контролера HD44780.

Означението 1602A всъщност означава, че е на два реда по 16 знака на ред. Индикаторът е закупен на Aliexpress, намерен при поискване "HD44780" (цени от 81 рубли). Както вече споменахме, този индикатор има две линии. И така, в горния ред устройството показва скоростта на автомобила, а в долния - скоростта на коляновия вал на двигателя.

За разлика от много бордови компютри, като Orion-BK и други подобни, както и устройства с LED седемсегментни индикатори, този LCD дисплей, когато подсветката е включена, дава много рязко изображение, идеално видими както на светло, така и през нощта на тъмно, което е особено важно при работа на автомобили.

Схемата на устройството е базирана на готова Arduino платка UNO, на който е разположен микроконтролерът ATMEGA328, както и цялата му „обшивка“, необходима за работата му, включително USB програматор и източник на захранване.

Цената на ARDUINO UNO на същия "Aliexpress" започва от 200 рубли. Описание на платката ARDUINO UNO, както и софтуерза него и свързването към персонален компютър е дадено от автора в L.1, така че ако някой не знае какво е ARDUINO и „с какво се яде“, не забравяйте първо да прочетете статията в L.1.

Устройството е свързано чрез захранване към изхода на контактния ключ на автомобила и получава сигнали от своите сензори на Хол, единият от които е сензор за запалване, а вторият е сензор за скорост.

електрическа схема

Устройството може да работи само в кола с инжекционен двигател (в карбураторите няма сензор за скорост и не всички имат сензор за запалване). Диаграмата на устройството е показана на фигура 1. На тази фигура платката ARDUINO UNO е показана схематично като "изглед отгоре".

Ориз. един. електрическа схемаскоростомер и тахометър, базирани на Arduino.

За съпоставяне на портовете със сензорите се използват каскади на транзистори VT1 ​​и VT2. Тъй като захранването се подава към устройството от изхода на ключа за запалване, то работи само когато запалването е включено. Сензорът за скорост, както и сензорът за запалване на автомобила, са източници на импулси, чиято честота зависи от въртенето на механичните части на автомобила.

Сензорът за запалване на автомобил с четирицилиндров бензинов двигател генерира два импулса на оборот на коляновия вал. Ако двигателят няма четири цилиндъра, честотата на повторение на импулса ще бъде различна.

Сензорите за скорост са различни, но в по-голямата си част, което е особено вярно за домашните автомобили, те дават 6000 импулса на километър. Въпреки че има някои, които дават 2500 импулса на километър, може да има и други.

програма

Програмата C++ с подробни коментари е показана в таблица 1. Действието на програмата се основава на измерване на периода на импулси, идващи от сензорите, и след това изчисляване на скоростта и скоростта на коляновия вал.

Маса 1. Източникпрограми.


За работа се използва функцията pulseln, която измерва в микросекунди продължителността на положителния или отрицателния фронт на входния импулс. И така, за да разберете периода, трябва да добавите продължителността на положителните и отрицателните полупериоди.

където T е периодът в секунди, а F е скоростта в km/h. Тъй като периодът се измерва в микросекунди, действителната формула е:

Ако сензорът е 2500 импулса на км (японски), тогава формулата ще бъде:

Съответно, като се има предвид, че периодът се измерва в микросекунди:

За измерване на скоростта на коляновия вал се използва формулата:

където T е периодът в секунди, а F е скоростта на коляновия вал в обороти в минута. Тъй като периодът се измерва в микросекунди, действителната формула е:

След това резултатите се показват на съответните редове на LCD дисплея. Мерните единици са посочени като "km/h" и "ob/type" (ако не ви харесва, можете да го промените).

Ако няма входен сигнал, например, запалването е включено, но двигателят не е стартиран, не е тръгнал, тогава в редовете, където няма сигнал, ще има надпис "inf".

По принцип не се изисква корекция. Ако обаче не е известно колко импулса на километър дава сензорът за скорост на конкретно превозно средство, това първо трябва да се изясни.

Или се заемете с експериментална настройка на числото, което е разделено на периода, като проверите със скоростомера с циферблат, което е много обезпокоително или невъзможно, ако обикновеният скоростомер е повреден (което може да е причината за производството на това устройство).

Но е по-добре да знаете параметрите на сензора за скорост. И след това изчислете числото, което в програмата е разделено на периода. Нека обозначим това число като X, а броят импулси на километър като N. Тогава X може да се изчисли по следната формула:

X = 3600000000 / N

Например, ако сензорът даде, да речем, 2500 импулса на километър:

X= 3600000000 / 2500 = 1440000

Или, ако сензорът дава 6000 импулса на километър:

X= 3600000000 / 6000 = 600000

Накрая

Ако устройството се повреди, може да е необходимо да се оптимизира режимът на работа на входните етапи на транзистори VT1 ​​и VT2, съответно, чрез избор на съпротивления на резистори R3 и R6, както и капацитет на кондензатори C2 и C3.

Каравкин В. РК-12-16.

Литература:

1. Каравкин В. Мигач за коледно дърво на ARDUINO като лекарство за страх от микроконтролери. РК-11-2016.