1. Уважаемый Гость! При написании вопросов в раздел форума [ArduCopter] Вопросы, проблемы и решения обязательно придерживаться шаблона сообщения, оговоренного в правилах раздела! Если сообщение не будет оформлено должным образом, то и ответ на вопрос будет с наименьшим приоритетом. Старайтесь дать максимально полную информацию по вашей проблеме, чтобы можно было более детально рассматривать вопрос!
    Скрыть объявление
  2. Уважаемый Гость! Хотите получать кэшбэк с покупок в online-магазинах? Сервис "LetyShops" дает такую возможность!
    Скрыть объявление
  3. Друзья! Для нашего ресурса необходим дополнительный объем пространства в облаке Dropbox. Подробнее.
    Скрыть объявление

Счетчик моточасов для бензогенератора

Тема в разделе "Уголок любителей паяльника", создана пользователем raefa, 8 апр 2016.

  1. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Все началось с приобретения бензогенератора, да и оказывается и к нему необходимо для полного счастья иметь некоторые ништяки. Кроме масла и запасных свечей не плохо бы знать (в автоматическом режиме) сколько же генератор уже проработал. Стал искать готовые фабричные счетчики моточасов, но ценник остановил. Варианты у китайцев - около 10 баксов, в оффлайн магазинах 2-3т.р. Имея в наличии дешевые МК ATmega8 или Arduino не трудно и сделать самому. Поиск готовых самоделок на контроллерах Atmel ничего хорошего не дал. Тут я подумал, что заново изобрести велосипед - оно мое! Надо сделать счетчик, который бы запоминал общее время работы генератора, а так же отображал текущее время работы. Задачи ставить счетчик на лодку нет, поэтому тахометр не нужен. Питание устройства от штатного напряжения 12В на генераторе.

    Поехали!

    Понадобится (расписывать не буду - со схемы все понятно):
    1. Контроллер ATmega8 (+кварц 16МГц и 2 конденсатора 22пФ) или аналогичный, либо Arduino Pro Mini / Nano - 1шт.
    Я использовал atmega8a в корпусе TQFP.
    ATmega8L не подойдет, т.к. этот МК работает на максимальной частоте 8МГц.
    2. Семисегментный тройной индикатор с общим катодом TOT-3361AH-1N - 1шт.
    3. Стабилизатор напряжения 5В - 1шт.
    4. Резисторы.
    5. Конденсаторы.
    6. Корпус.
    Описание и подробности.
    ATmega8L не подходит для устройства.
     
    Последнее редактирование: 21 ноя 2016
  2. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Схема подключения:

    raefaMotoCount_m8.png

    Алгоритм работы:
    1. При подаче питания происходит зарядка конденсатора через резистор по управлению Reset МК. При достижении заряда (около 5-10 секунд, подбираем кому как надо) контроллер стартует.
    2. При замыкании перемычки J1 и удержании 5 секунд и включении устройства на индикаторе загорается "888", затем происходит очистка EEPROM, после чего на индикаторе отобразится "000", что свидетельствует о сбросе. После этого перемычку можно/нужно снять и работа продолжится.
    3. После включения 5 секунд отображается количество часов наработки, Далее 5 секунд - часы, 5 секунд - минуты (значения читаются из EEPROM контроллера).
    4. Далее идет отсчет текущего времени работы в формате М.СС (Минута.СекундаСекунда) до достижения 10 минут. После этого отображается Ч.ММ. Максимальное время отображения - 10 часов (этого вполне мне достаточно, т.к. бака 5 литров хватает на 5 часов работы и для дозаправки надо генератор глушить).
    5. Запись отработанного времени производится в EEPROM каждые 5 минут работы (на готовых фабричных устройствах 6 минут).
    6. После 10 часов происходит программная перезагрузка контроллера и отсчет начинается заново (отработанное время записывается и на индикаторе отобразится "888").

    Версии.
    То, что получилось изначально.
    Мелкая правка обработки записи в EEPROM.
    Уменьшение задержки цикла.
    Считает количество запусков. Отображение при старте до общего количества часов и минут наработки. Запись в память после отображения.
    Запись количества запусков в 2 ячейки, обнуление при количестве больше 999.

    Особенности:
    • Устройство считает время с момента старта средствами контроллера, модуля часов нет (точность зависит от кварца).
    • Запись в EEPROM каждые 5 минут - сильной необходимости считать каждую минуту нет, т.к. генератор если запустил, то час или больше должен работать, поэтому минуты считать не будем. Ресурс ячеек EEPROM - 100000 циклов записи. Этого должно хватить на 347 дней непрерывной работы, либо больше 2х лет по 10 часов/день.
    • Перезагрузка сделана для наглядности отработанных 10 часов (для удобного отображения на тройном семисегментном индикаторе).
    • Первый раз запись наработки происходит через 5 минут после включения. Запись счетчика запуска производится через 15 секунд после включения.
    • Конденсатор задержки включения МК сделан для обеспечения стабильного старта при "плохом напряжении" при заводке. Так же используется BrownOut Detect (порог 4В) для предотвращения повреждения данных в EEPROM.
    • Если ваш генератор не имеет 12В на борту, то можно дополнить устройство блоком питания от ~220В. Блок питания может быть либо на 12В, либо если 5В, то из схемы исключаем стабилизатор 5В.
    • Программа написана в среде Arduino, контроллер применен atmega8 (объем кода 6кб).
    • Дополнительная индикация возможна по последовательному порту, для этого необходимо распаять дополнительно разъем (RX - D0, TX - D1, GND) и иметь адаптер USB-UART. Отображается старт, очистка памяти, перезагрузка и запись в EEPROM каждые 5 минут. Скорость подключения 9600 бод.
    • Максимальное отображаемое время при включении устройства - 999 часов (41 день работы для первого цикла). При превышении счетчик продолжает работать дальше, но отображение продолжается с "000", т.е. цифра слева обрезается. Максимальное время работы, хранящееся в памяти - 25599 ч. 59м. (почти 3 года наработки), после чего общий счетчик обнулится. Все значения, не отображаемые на семисегментном индикаторе - можно смотреть в терминале.
    • Максимальное время непрерывной работы около 50 суток - ограничение применяемого контроллера. Связано с переполнением счетчика миллисекунд. В теории дальше должно работать корректно, но думаю, до таких крайностей не дойдет.
    • Максимальное количество числа запусков - 999 раз. При превышении значение обнуляется.

    Процесс сборки должен пройти без особых трудностей. Прошивка заливается любыми доступными средствами для контроллеров Atmel (программа avrdude, программатор USBasp).

    Фьюзы ATmega8
    Low Fuse 0x1F (включен BrownOut Detect, 4В)
    High Fuse 0xCA

    Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
    Low Fuse 0xFF
    High Fuse 0xDA
    Extended Fuse 0x05


    Arduino NG or older w/ ATmega8

    Low Fuse 0xDF
    High Fuse 0xCA

    На всякий случай (это больше мне надо) соответствие ног atmega8(328)-arduino.
    ATmega8 (TQFP)-Arduino Pin Mapping.png

    Перед началом работы необходимо сделать очистку EEPROM (все ячейки в 00, а не FF с заводского состояния) принудительно для установки нулей в ячейках памяти. Для этого внутри корпуса можно установить микрокнопку.

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

    Фото сборки:

    20160408_080813.jpg 20160408_120215.jpg 20160408_120222.jpg 20160408_125905.jpg

    Фото готового устройства:

    20160408_144738.jpg

    Схема и .hex во вложении.

    ATmega8 - raefaMotoCount_m8_v13.zip

    Планы в будущем:
    1. Изменение алгоритма для продления ресурса EEPROM.
    2. Сохранение наработки только перед окончанием работы генератора (продление ресурса EEPROM и возможность повысить точность счета - до минут).
    3. Тахометр.

    Если кому понадобится .hex для Arduino, обращаемся. :)

    Удачной сборки!
     

    Вложения:

    Последнее редактирование: 21 ноя 2016
  3. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.067
    Город:
    Реж
    Имя:
    Тимур
    Саша, я бы подумал над:
    На фотках вижу - внешний кварц всё-таки поставил :)
    Наверное и над возможными пульсациями тоже подумал...

    Не могут быть внезапные остановки? Или оно успеет записаться в случае обесточивания?
     
  4. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Контроллер "защитил", чтобы сразу не включался. А вот как поведет себя 7805 в условиях старта с плохим напряжением - еще предстоит испытать. Обвязка конденсаторами по даташиту сделана, пока понадеюсь на нее.
    Внезапные остановки контроллера или генератора? И то и то должно быть штатной ситуацией для счетчика. Если остановится контроллер от помех - это конечно плохо. А если генератор - то это событие надо обработать (контроль напряжения и если оно просело, поможет диод и конденсатор, чтобы еще на пару секунд продлить работу).
     
  5. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Произвел испытания. Никаких помех, наводок и т.д. Работает как часы. :geek:
    На фото конечно не видать что показывает из-за вибраций и частоты обновления индикатора (работает в динамическом режиме).

    20160409_143012_800.jpg
     
    5yoda5 нравится это.
  6. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.067
    Город:
    Реж
    Имя:
    Тимур
    Конечно внезапную остановку генератора. Конденсатора хватит, чтобы успеть записать событие и результаты работы в ЕЕПРОМ. Главное - мониторить обороты и вольтаж.
    Кстати, а логгирование событий предусмотрено? (и нужно ли?) Или только часы наработки?
     
  7. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Да оно и не нужно. Ну можно еще сделать количество запусков. А это идея! :thumbsup:
    Готово. V1.2.
     
    Последнее редактирование: 12 апр 2016
  8. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
  9. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Переделал схему. На входе поставил диодный мост, который так же должен немного помочь против возможных пульсаций напряжения при питании устройства. Далее на входе стабилизатора стоит конденсатор 470мкФ*35В (который я и забыл поставить в самом начале). Дальнейшие полевые испытания покажут, как будет работать устройство. ;)
     
    LampGraph нравится это.
  10. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Полевые испытания продолжительностью 2 раза примерно по 10 часов показали, что все работает. Ни пульсации, ни ВЧ наводки никак на работу не влияют.
     
  11. serg4207

    serg4207 Абитуриент

    Регистрация:
    16 ноя 2016
    Сообщения:
    11
    Город:
    Златоуст
    Имя:
    Сергей
    Доброго времени суток. Если не затруднит опубликуйте схему и прошивку для ATmtga 8a с указанием выводов мк.
    Схема понравилась, хочется собрать. Но какие куда выводы разводить не понятно. У меня корпус DIP.
     
  12. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Сергей, рад приветствовать!
    Переработал шапку. Поправил картинку согласно выводам. Перезалил архив. На данный момент все актуально для atmega8.
     
  13. serg4207

    serg4207 Абитуриент

    Регистрация:
    16 ноя 2016
    Сообщения:
    11
    Город:
    Златоуст
    Имя:
    Сергей
    Благодарю что ответили. Скачал схему и прошивку.Собрал на макетке. Но схема не запустилась, все индикаторы
    темнее ночи. Собирал на ATmega 8L и ATmega 8A , в корпусе DIP (монтаж с отверстиями).Если правильно понял
    то на схеме стоит индикатор с общим катодом. Где засада не пойму.
     
  14. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    На ATmega8L работать не будет (или будет криво), т.к. она работает до 8МГц.
    Верно.

    А фьюзы правильные установили?

    Могу прислать исходник на Arduino с обещанием невыкладывания в Интернетах. ;)
     
  15. serg4207

    serg4207 Абитуриент

    Регистрация:
    16 ноя 2016
    Сообщения:
    11
    Город:
    Златоуст
    Имя:
    Сергей
    Фьюзы прикрепил. Попробую собрать в смд варианте. на Arduino никогда ничего не собирал.Даже не знаю как подходить.
    В программировании полный ноль. Да и ардуину нужно дождаться, у меня её нет. О выкладывание любой информации
    в интернете без разрешения автора считаю подлостью. За это можете не беспокоиться. Спасибо что относитесь с пониманием
    к моей не компитентности.
    --- Сообщения объединены, 18 ноя 2016 ---
    Забыл прикрепить файлик
     

    Вложения:

    • fuses.rar
      Размер файла:
      210,3 КБ
      Просмотров:
      3
  16. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    В Arduino надо загрузить исходник, далее выбрать тип МК - atmega8, далее нужен программатор USBasp или STK500 совместимый.
    Какой у вас программатор?
     
  17. serg4207

    serg4207 Абитуриент

    Регистрация:
    16 ноя 2016
    Сообщения:
    11
    Город:
    Златоуст
    Имя:
    Сергей
    У меня Mini Pro.
     
  18. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Ну отлично. Заливаете специальную прошивку, которая заставляет работать Arduino как программатор, подключаете соответственно и заливаете прошивку в atmega8.
    Наверно так и делали?
     
  19. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.327
    Город:
    Zhigulevsk
    Имя:
    Александр
    Мне интересен результат, чтобы у вас заработала программа из предложенного мною .hex. Специально его "шаманил" для такой заливки. Сливал его с запрограммированной atmega8.
     
  20. serg4207

    serg4207 Абитуриент

    Регистрация:
    16 ноя 2016
    Сообщения:
    11
    Город:
    Златоуст
    Имя:
    Сергей
    Ещё раз попробую и обязательно отпишусь.