Search
Write a publication
Pull to refresh

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

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

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

Не проще ли было купить китайский?
Существует 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 ячейки энергонезависимой памяти МК можно записать требуемые начальные значения.

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

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.