Считает обороты в минуту вращающегося вала мотора с помощью диска с прорезями/сверлениями и оптического датчика. Также выполняет подсчёт наработки мотора.
Исходник под фреймворк Arduino
https://oshwlab.com/kfmutrus/k-1-03_oboroty_narabotka
Схема устройства в PDF-формате
Полная спецификация с артикулами по "Чип-и-Дип"
Сокращённый вариант:
Designator | Name | Quantity | Manufacturer | Manufacturer Part |
---|---|---|---|---|
C1 | 0u1 / 50V | 1 | Murata | GRM319R71H104KA01J |
C2 | 10u / 10V | 1 | NoName | SMD-A |
C3,C4 | 22p / 50V | 2 | Murata | GRM3165C1H220JD01D |
C5 | 1u / 50V | 1 | Murata | GRM31MR71H105KA88L |
C6 | 10n / 50V | 1 | Murata | GRM319R71H103KA01D |
CON_I2C | MW-4M | 1 | Connfly | DS1066-4MVW6X |
CON_PWR | CWF-2MR | 1 | Connfly | DS1069-2MRW6SA |
D1 | MBR0520L | 1 | ON Semiconductor | MBR0520L |
F1 | MF-MSMF014 / 140mA | 1 | Bourns | MF-MSMF014 |
LED_PW | LED-3216 | 1 | NoName | LED-3216 |
R1,R2 | 4k7 | 2 | NoName | 1206 |
R3 | 6k2 | 1 | NoName | 1206 |
R4 | 180 | 1 | NoName | 1206 |
R5 | 2k2 | 1 | NoName | 1206 |
SW_DBG | PLS-2 | 1 | Connfly | DS1021-1*2SF11-B |
U1 | ATtiny85-20PU | 1 | Atmel | ATtiny85-20PU |
U2 | LP2985 | 1 | Texas Instruments | LP2985AIM5X-5.0/NOPB |
U3 | TCST1103 | 1 | Vishay | TCST1103 |
X1 | 16MHz | 1 | NoName | HC-49S |
На ATTtny85 программа выдаёт около 80k отсчётов в секунду. Для уверенного измерения оборотов необходимо 3-4 отсчёта на каждое состояние(прорезь/диск), поэтому максимальное число состояний в секунду 20k-27k. Для 24k оборотов вала мотора, 400 оборотов в секунду, имеем максимум в 34( (27000/400)/2 ) прорези на диске.
Для получения минимального количества прорезей нужно определиться с приемлемой погрешностью на минимальных измеряемых оборотах в заданном периоде сэмплирования(SMPLNG_PRD). Допустим, минимальные обороты в минуту 1k5, период сэмплирования 0.3с и погрешность измерения 0.5%. Оборотов в секунду - 25, оборотов за период сэмплирования - 7.5, погрешность - 0.0375 оборота. Погрешность соответствует одному(двум?) состояниям за период сэмплирования, соответственно:
0.0375 * 2 * <число_прорезей> = 1
<число_прорезей> = 1 / 0.075 = 13.(3)
DISK_HLS = 14
Если берём период сэмплирования 1с, погрешность - 0,125 оборота:
0.125 * 2 * <число_прорезей> = 1
<число_прорезей> = 1 / 0.25 = 4
DISK_HLS = 4
Для измерения оборотов мотора подсчитываются полные(!) смены состояний, поэтому реальный период сэмплирования будет меньше заданного, особенно на низких оборотах и малом числе прорезей/сверлений на диске.
Наработка считается, если обороты мотора превышают заданное значение RPM_LIMIT. Посчитанная наработка сбрасывается, если длительность останова превысила заданное значение ZERO_BRK.
Результаты отображаются на ЖКД-дисплеи типоразмера 1602 подключенного по протоколу I2C. Длительность выведения результатов на ATtiny85 около 1/3 секунды.
Если на ATtiny85 отключить функцию сброса МК(НЕ рекомендуется!!!) на пине PB5, то вместо наработки, при замыкании(?) этого пина на землю будет отображаться отладочная информация: учтённая длительность сэмплирования, количество полных смен состояния, общее количество отсчётов за период сэмплирования.
kfmut, 2021г
Creative Commons Zero v1.0 Universal