Skip to content

Commit

Permalink
Update Tacho.h
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexGyver committed Nov 17, 2020
1 parent 6b8d4b6 commit 91c9e52
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions minimLibs/tachometer/Tacho.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,18 @@
// класс тахометра v1.1
// встроенный медианный фильтр
// вызывай tick() в прерывании по фронту
// забирай getRPM() в оборотах в минуту и getHz() - в Герцах
// забирай getRPM() частоту в оборотах в минуту
// забирай getHz() частоту в Герцах
// забирай getPeriod() период в мкс

#define _TACHO_TICKS_AMOUNT 10 // количество тиков для счёта времени
#define _TACHO_TIMEOUT 1000000 // таймаут прерываний (мкс), после которого считаем что вращение прекратилось

class Tacho {
public:
void tick() { // tachoTime - время в мкс каждых _TACHO_TICKS_AMOUNT тиков
ticks++;
if (ticks == _TACHO_TICKS_AMOUNT) {
ticks = 0;
if (!ticks--) {
ticks = _TACHO_TICKS_AMOUNT - 1;
tachoTime = micros() - tachoTimer;
tachoTimer += tachoTime; //== tachoTimer = micros();
ready = true;
Expand All @@ -23,7 +24,7 @@ class Tacho {
uint16_t getRPM() {
if (ready) { // если готовы новые данные
ready = false;
if (tachoTime != 0) rpm = 60ul * _TACHO_TICKS_AMOUNT * 1000000 / median3(tachoTime);
if (tachoTime != 0) rpm = (uint32_t)_TACHO_TICKS_AMOUNT * 60000000 / median3(tachoTime);
}
if (micros() - tachoTimer > _TACHO_TIMEOUT) rpm = 0;
return rpm;
Expand All @@ -38,6 +39,10 @@ class Tacho {
return hz;
}

uint32_t getPeriod() {
return median3(tachoTime);
}

private:
// быстрая медиана
long median3(long value) {
Expand All @@ -54,7 +59,7 @@ class Tacho {
volatile uint32_t tachoTimer = micros();
volatile int ticks = 0;
volatile bool ready = false;
long buf[3] = {100000, 100000, 100000}; // для плавного старта значений
uint32_t buf[3] = {100000, 100000, 100000}; // для плавного старта значений
byte counter = 0;
int rpm = 0;
float hz = 0.0;
Expand Down

0 comments on commit 91c9e52

Please sign in to comment.