Как стать автором
Обновить

Счетчик моточасов, дешевый и долговечный

Бензиновыми и дизельными двигателями различной мощности сегодня пользуются многие и повсеместно. Надёжность и экономичность работы бензогенераторов, пил, косилок и триммеров, помп, мотоблоков, квадроциклов, лодочных моторов и другой техники зависит от своевременности техобслуживания. Сменил масло раньше времени — выкинул часть его ресурса (и стоимости) впустую. Заменил позже, не очистил вовремя фильтр, не проконтролировал состояние узлов, — сократил жизнь своему стальному другу, получил неожиданный отказ в работе, потратился на замену испорченных деталей. Чтобы в обслуживании моторной техники не действовать по наитию и не утруждаться учетом времени наработки, применяются счётчики моточасов.

Статья описывает схему, конструкцию и прошивку авторского счётчика моточасов, легкую для повторения любителями с небольшим опытом, и не содержащую сколько-нибудь дорогих или дефицитных деталей. Счётчик не содержит элементов питания и не нуждается в них, работает с любым карбюраторным, дизельным, инжекторным или компрессионным двигателем внутреннего сгорания, имеющим генератор, зарядную или осветительную катушку, а также может быть использован для учёта рабочего времени любых имеющих электропитание устройств.

Не проще ли было купить китайский?
Существует 2 подхода к учету времени наработки. Первый — по количеству оборотов, совершённых двигателем за время работы, второй — по самому времени работы в астрономических часах. Каждый подход имеет свои достоинства и недостатки. При преимущественно низкой частоте вращения значение расхода моторесурса, рассчитанное по числу оборотов, будет ниже фактического, а при форсированной работе двигателя на высоких оборотах заниженным окажется результат, определённый по астрономическим часам.

В случае мотовездехода и бензогенератора более адекватным является учёт астрономических часов работы мотора, который и осуществляется нашим цифровым счётчиком.

Распространенные в России и странах СНГ счетчики-тахометры и мотокомпьютеры китайского производства чаще всего имеют энергозависимую память и жидкокристаллический индикатор с питанием от встроенных элементов. Данные о работе двигателя берутся в виде импульсов с куска провода, наматываемого на высоковольтный провод свечи зажигания (дизелю и компрессионнику не годится).

Корпуса таких изделий герметичны (или не очень, причём воду в себя вбирают, а обратно не отдают), и после разряда элементов питания прибор либо выбрасывается, либо его владельца ждёт «увлекательная» работа по вскрытию корпуса, разрушению слоя эпоксидной заливки, установке новых элементов и восстановлению корпуса, либо перестановке устройства в новый. Цена китайского устройства также представляется завышенной, особенно при покупке в российских магазинах.

Данных недостатков лишен самодельный счётчик времени наработки, собранный автором для своего мотоцикла-вездехода «Атаман» с двигателем-аналогом Honda GX200. Такие стоят в сотнях моделей самых распространённых мотоблоков, миниэлектростанций, помп и иной бензотехники, и для адекватного обслуживания каждого из чудесных стальных помощников весьма желателен счётчик моточасов.

Схема и конструкция

Схема предельно проста и экономна. Мощности выходов микроконтроллера PIC16F630 (или 676) вполне достаточно для прямого питания светодиодов трёхразрядного семисегментного индикатора SP420361. Питание МК осуществляется от конденсатора, заряжаемого через общеизвестный интегральный стабилизатор 7805 и диод, в качестве которого сойдёт любой маломощный выпрямительный. Конденсатор столь значительной ёмкости нужен для обеспечения сохранения данных о времени наработки в энергонезависимую память МК после отключения питания устройства, о котором МК узнаёт благодаря входу RA3, подключенному к выходу стабилизатора до диода. Для компенсации падения напряжения на последнем служит второй диод между опорным выводом 7805 и землёй схемы. Третий диод на входе стабилизатора служит однополупериодным выпрямителем, т.к. схема питается переменным током от генераторной катушки двигателя. Назначение фильтрующих конденсаторов и токоограничивающих резисторов самоочевидно и в комментариях не нуждается. Резистор на выходе стабилизатора нужен для быстрого разряда конденсаторов фильтра и правильного формирования сигнала об остановке двигателя.

Когда двигатель запускается, микроконтроллер загружает из энергонезависимой памяти текущие значения времени наработки и запускает цикл динамической индикации с подсчётом времени текущего сеанса работы. Запись суммарного времени наработки двигателя в EEPROM контроллера производится лишь однократно за сеанс работы двигателя, в момент остановки, причём перезаписываются только те ячейки памяти, значения для которых изменились. Таким образом, ресурс EERPOM расходуется очень экономно, что делает счётчик практически вечным. После наработки тысячи моточасов отсчёт продолжается с нуля. Учёт времени наработки осуществляется с дискретностью 20 секунд, тактирование осуществляется от встроенного RC-генератора МК. Такой точности вполне достаточно для своевременного ухода за верным моторным другом.


Счётчик собран на макетной плате из деталей с проволочными выводами, смонтированных с двух сторон. Внутрисхемное программирование не предусматривается, МК устанавливается в панельку. Последнюю пришлось разрезать вдоль на две половины для осуществления двустороннего монтажа. Возможны и другие варианты разводки платы, в том числе, с переназначением выводов МК и соответствующим изменением констант таблицы индикации в прошивке. Корпусом послужила прозрачная пластиковая коробочка от скрепок из гипермаркета «Ашан».

Программа для микроконтроллера написана на языке JAL v.2.
-- Compiler: 2.4l
include 16f630
pragma target CLOCK 4_000_000
pragma target OSC INTOSC_NOCLKOUT
pragma target WDT disabled
pragma target PWRTE enabled
pragma target MCLR internal
pragma target BROWNOUT enabled
pragma target CPD disabled
pragma target CP disabled

enable_digital_io()
PORTA_direction = 0
PORTC_direction = 0
PORTA = 6
PORTC = 4

alias d3 is pin_c2
alias d2 is pin_a2
alias d1 is pin_a1
-- включение разрядов индикатора
alias trig is pin_a3
-- датчик остановки двигателя

const volatile byte pa [10] = { 23, 23, 39, 55, 55, 54, 54, 23, 55, 55 }
const volatile byte pc [10] = { 31, 4, 30, 22, 5, 23, 31, 6, 31, 23 }
-- кодировка отображения цифр. изменится при другой разводке платы

include pic_data_eeprom
include delay

var volatile byte h1
var volatile byte h2
var volatile byte h3
-- счётчики единиц, десятков, сотен моточасов
var volatile byte cnt
-- счётчик с разрешением 20 секунд
cnt = data_eeprom (0)
h1 = data_eeprom (1)
h2 = data_eeprom (2)
h3 = data_eeprom (3)
-- загружаем из памяти текущее время наработки

IOCA_IOCA3 = 1
OPTION_REG_INTEDG = 1
INTCON_GIE = on
INTCON_RAIF = off
INTCON_RAIE = off

var volatile word i = 0
-- внутренний счётчик времени: 1 цикл индикации = 20 мс
var volatile byte t = 0
var volatile byte t1 = 0
var volatile byte t2 = 0
var volatile byte t3 = 0
-- триггеры изменения разрядов счёта

procedure interrupt is
pragma interrupt
 if INTCON_RAIF then
  INTCON_RAIF = off
 end if
end procedure

forever loop
 while trig == high loop
  PORTA = pa[h1]
  PORTC = pc[h1]
  d1 = low
  delay_1ms(7)
  PORTA = pa[h2]
  PORTC = pc[h2]
  if h2>0 then
   d2 = low
  end if
  if h3>0 then
   d2 = low
  end if
  delay_1ms(7)
  PORTA = pa[h3]
  PORTC = pc[h3]
  if h3>0 then
   d3 = low
  end if
  delay_1ms(6)
  i = i+1
  if i >= 1000 then
   i = 0
   cnt = cnt+1
   t = 1
   if cnt >= 180 then
    cnt = 0
    h1 = h1+1
    t1 = 1
    if h1 > 9 then
     h1 = 0
     h2 = h2+1
     t2 = 1
     if h2 > 9 then
      h2 = 0
      h3 = h3+1
      t3 = 1
      if h3 > 9 then
        h3 = 0
      end if
     end if
    end if
   end if
  end if
 end loop
 PORTA = 6
 PORTC = 4
 if t == 1 then
  data_eeprom_write(0,cnt)
  if t1 == 1 then
   data_eeprom_write(1,h1)
   if t2 == 1 then
    data_eeprom_write(2,h2)
    if t3 == 1 then
     data_eeprom_write(3,h3)
    end if
   end if
  end if
 end if
 INTCON_RAIE = on
 asm sleep
 INTCON_RAIE = off
end loop

Готовая прошивка в HEX формате
:100000002228FF3FFF3FFF3FDF00030E8301A200D6
:100010000A08A3008A01CE2882071F3404341E3444
:100020001634053417341F3406341F34173482074E
:1000300017341734273437343734363436341734DA
:10004000373437340730990083168501870106302D
:100050008312AE002E0885000430AF002F08870001
:1000600089284908CC004A08CD0083169C183528F9
:1000700083124C0883169B001C141A088312CB00B1
:100080004B080800C5004308C7004408C800831691
:100090009C1847288312470883169B008312450843
:1000A00083169A001C15831246108B1B46148B1363
:1000B000553083169D00AA309D009C14831246186B
:1000C00063288B1364288B1783161C1108003D08C6
:1000D000BF003E08C000C101C20180288312031383
:1000E0000230A0006130A1000A128A11A10B74280D
:1000F0000A128A11A00B72280000C10A0319C20A51
:1001000041083F02A000420840022004031D6E285F
:100110000800B101B2013108C9003208CA0031201B
:100120008312B3003308B0003008A7000130B400D8
:10013000B5013408C9003508CA0031208312B60061
:100140003608B0003008A4000230B700B801370804
:10015000C9003808CA0031208312B9003908B0003C
:100160003008A5000330BA00BB013A08C9003B08BB
:10017000CA0031208312BC003C08B0003008A60041
:100180008316961501178B170B108B118312A8017C
:10019000A901AA01AB01AC01AD01D7280B180B10C6
:1001A00023088A00220E8300DF0E5F0E09008312EF
:1001B000851D662900308A00240817208312AE00AE
:1001C0002E08850000308A0024080C208312AF001E
:1001D0002F088700AE102E0885000730BD00BE0135
:1001E000672000308A008312250817208312AE0092
:1001F0002E08850000308A0025080C208312AF00ED
:100200002F0887002508031908292E112E088500BC
:10021000260803190E292E112E0885000730BD006F
:10022000BE01672000308A0083122608172083123F
:10023000AE002E08850000308A0026080C208312AC
:10024000AF002F0887002608031929292F112F082E
:1002500087000630BD00BE0167208312A80A03197B
:10026000A90A03302902031D3729E830280203199F
:100270003B29031CD728A801A901A70A0130AA001D
:10028000B430270203194629031CD728A701A40A62
:100290000130AB00093024020319D728031CD728EA
:1002A000A401A50A0130AC00093025020319D728A2
:1002B000031CD728A501A60A0130AD00093026028B
:1002C0000319D728031CD728A601D7280630AE006B
:1002D0002E0885000430AF002F08870001302A0265
:1002E000031D9429C301C401270842200130831251
:1002F0002B02031D94290130C300C40124084220AD
:10030000013083122C02031D94290230C300C40162
:1003100025084220013083122D02031D9429033049
:10032000C300C401260842208B1563008B11D72817
:08400000FF3FFF3FFF3FFF3FC0
:02400E00C43FAD
:104200000000000000000000FF00FF00FF00FF00B2
:00000001FF

При прошивке контроллера вместо нулей в первые 4 ячейки энергонезависимой памяти МК можно записать требуемые начальные значения.

Подведение итогов
Проект удался на славу, все двухколёсные, двуногие и четвероногие друзья одобрили его результат. Надеюсь, уважаемым читателям Хабра он пригодится и понравится!

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.