|
|
  |
Atmega8 - контроль по тахометру |
|
|
|
Mar 2 2015, 07:36
|
Группа: Новичок
Сообщений: 7
Регистрация: 2-03-15
Из: РБ
Пользователь №: 85 435

|
Машина ВАЗ 2110. Делаю автозапуск на atmega8. При написании кода на СИ зашел в тупик, а именно при написании алгоритма контроля работы двигателя по тахометру. Сигнал буду брать с приборной панели с контакта, приходящий от ЭБУ. Счетчик 16-битный, тактовая частота контроллера 4МГц, предделитель 64(может можно взять другой). Алгоритм такой: Стартером начинает крутить двигатель и как только двигатель завелся обороты поднимаются и нужно отпустить стартер. Предлагаю, при первом получении импульса с ЭБУ на тахометр, запускать счетчик и считать до тех пор, пока он не насчитает некое число(которое соответствует 400об/мин) между импульсами. Как только он насчитывает больше - отпускать стартер и переходить к контролю работы двигателя. Контроль заключается в следующем: Счетчик считает между импульсами и сравнивает полученное значение с условием( если например кто то нажал на педаль газа и обороты повысились выше 2000 об/мин). Если условие выполнилось - машина глохнет. Подскажите как это организовать грамотно? Я только начинаю осваивать это все, без помощи трудновато написать самому
|
|
|
|
|
Mar 2 2015, 10:42
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 8-07-09
Из: Украина
Пользователь №: 51 059

|
запоминаешь счётчик между импульсами холостого хода прогретого двигателя. При запуске если счётчик меньше запомненного - отпускаешь стартер.
|
|
|
|
|
Mar 2 2015, 16:32
|
Группа: Новичок
Сообщений: 7
Регистрация: 2-03-15
Из: РБ
Пользователь №: 85 435

|
Цитата(pfc @ Mar 2 2015, 15:42)  запоминаешь счётчик между импульсами холостого хода прогретого двигателя. При запуске если счётчик меньше запомненного - отпускаешь стартер. Это я понимаю, а как это будет выглядеть в коде?
|
|
|
|
|
Mar 2 2015, 16:49
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(Jipper @ Mar 2 2015, 10:36)  Подскажите как это организовать грамотно? Я только начинаю осваивать это все, без помощи трудновато написать самому а классически не катит ?! Код starter_on();
for( int tout_s = 100; tout_s; tout_s-- ) { measure_start(); wait_1sec(); int impulses = measure_stop(); if( impulses > 2000 ) break; } starter_off();
void measure_start() { timer_clear(); timer_start(); }
int measure_stop() { timer_stop(); return timer_value(); }
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
Mar 3 2015, 04:29
|
Группа: Новичок
Сообщений: 7
Регистрация: 2-03-15
Из: РБ
Пользователь №: 85 435

|
Отвечу по всем вопросам) 1. Иммобилайзера нету, как обойти сигналку я уже сделал. 2. все временные задержки тоже в коде будут 3. Включаю зажигание и кручу стартер(как будто ключом завожу) 4. Вот это можно, чтобы автозапуск не сработал если на АКБ менее 10,5-11В 5. Развязка на 30А реле 6. Сигналку я купил с обратной связью в том году с мыслю что автозапуск нафиг не нужен, а сейчас что то загорелся желанием)
Сообщение отредактировал IgorKossak - Mar 3 2015, 15:39
Причина редактирования: бездумное цитирование
|
|
|
|
|
Mar 3 2015, 04:51
|
Местный
  
Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940

|
хорошо. Я посоветую сделать так. 1. тахометр завести на пин внешнего прерывания, где сделать простой инкремент счетчика 2. включить таймер в режиме СТС примерно на 250/500 мсек 3. в основной программе, если подан сигнал включается реле стартера (напр выходной пин=1) 4. в прерывании таймера постоянно отслеживается показания тахометра (счетчик) и если он выше ЗНАЧЕНИЯ, то выключается реле стартера (соот выходной пин=0). после счетчик обнуляется 5. 400 об/мин - это мало, лучше контролировать 700..800 об/мин Это процедура самого запуска
Есть еще основной алгоритм работы (упрощенный): 1. сидеть на связи и контролировать напряжение АКБ, температуру в салоне и на улице 2. Получив разрешение на запуск - отключить сигналку, проверить допустимые условия - напряжение, нейтраль на коробке передач, постановка на ручник, возможно температуру 3. включить главное реле и включить фары примерно на 10 сек 4. выключить фары и через примерно 10 сек пройти к процедуре запуска ДВС 5. При не успешной процедуре запуска, выключить стартер через 10 сек и подождать 30 сек, после - повторить запуск. Общее количество попыток - не более ТРЕХ 6. При успешном запуске - контролировать условия останова - температура ДВС, температура салона, время работы ДВС 7. При останове ДВС - включить сигналку
|
|
|
|
|
Mar 3 2015, 06:00
|
Группа: Новичок
Сообщений: 7
Регистрация: 2-03-15
Из: РБ
Пользователь №: 85 435

|
Цитата(alexeyv @ Mar 3 2015, 09:51)  Все что Вы описали это я и так учитываю.. Я делаю процедуру выхода из машины(поднят ручник, выключено зажигание-двигатель продолжает работу, ввыхожу из машины и ставлю на сигналку - двигатель глохнет, разрешение на автозапуск есть) по части автозапуска я делаю так: по доп каналу сигнализации(открытие багажника) поступает сигнал на МК, замыкаю концевик багажника(как будто он открыт, тем самым отключается датчик удара), обхожу все блокировки, включаю зажигание и моргаю дальним, включаю стартер - машина завотидся.. Мне нужно только разработать контроль работы двигателя и контроль запуска. С таймерами и счетчиками пока только на Вы, поэтому трудности))
|
|
|
|
|
Mar 6 2015, 04:05
|
Группа: Новичок
Сообщений: 7
Регистрация: 2-03-15
Из: РБ
Пользователь №: 85 435

|
Цитата(megajohn @ Mar 2 2015, 21:49)  а классически не катит ?! [code][/code] Скажите пожалуйста этот код Вы сами написали или выдернули откуда то? мне бы полный вариант и чтоб понятней было, тяжело разобраться самому
|
|
|
|
|
Mar 6 2015, 06:22
|

профессиональный дилетант
   
Группа: Участник
Сообщений: 866
Регистрация: 16-03-06
Из: Шебекино - Лысьва - Тюмень
Пользователь №: 15 292

|
Цитата(Jipper @ Mar 2 2015, 10:36)  Предлагаю, при первом получении импульса с ЭБУ на тахометр, запускать счетчик и считать до тех пор, пока он не насчитает некое число(которое соответствует 400об/мин) между импульсами. Все правильно, считать интервал между импульсами. Цитата(Jipper @ Mar 2 2015, 10:36)  Как только он насчитывает больше - отпускать стартер и переходить к контролю работы двигателя. Когда насчитает меньше - тогда отпускать стартер. Больше частота - меньше период.
--------------------
Скоро дело сказывается, да не скоро сказка делается, или тише будешь - дальше уедешь...  
|
|
|
|
|
Mar 6 2015, 06:34
|
Группа: Новичок
Сообщений: 7
Регистрация: 2-03-15
Из: РБ
Пользователь №: 85 435

|
Цитата(Abell @ Mar 6 2015, 11:22)  Когда насчитает меньше - тогда отпускать стартер. Больше частота - меньше период. Да, да.. это я и имел ввиду, чем выше обороты тем чаще импульсы проходят, соответственно между импульсами меньше насчитает. Алгоритм понятен, я не могу это реализовать в програмном коде. Не могли бы Вы помочь?
|
|
|
|
|
Mar 6 2015, 12:13
|
Группа: Новичок
Сообщений: 7
Регистрация: 2-03-15
Из: РБ
Пользователь №: 85 435

|
Abell,если бы этот код был более менее понятен, то вопросов не было бы) Система будет отключаться автоматически,это предусмотрел уже
Сообщение отредактировал Jipper - Mar 6 2015, 12:17
|
|
|
|
|
Mar 6 2015, 19:03
|

профессиональный дилетант
   
Группа: Участник
Сообщений: 866
Регистрация: 16-03-06
Из: Шебекино - Лысьва - Тюмень
Пользователь №: 15 292

|
Jipper, конфигурацию таймера Т1 уже сделали? Теперь разрешаем прерывания по переполнению и захвату. Пишем функции обработки прерываний. Если интервал между импульсами недопустимо велик - таймер переполняется, вызывается обработка прерывания по переполнению, это состояние ошибки. Если импульс с тахометра пришел вовремя - вызывается прерывание по захвату, содержимое таймера сохраняется в регистре, функция обработки обнуляет таймер и сравнивает регистр захвата с предыдущим значением из предварительно заданной глобальной переменной. Если результат больше - сохраняет регистр захвата в глобальную переменную. Если результат намного меньше - двигатель завелся, стартер можно отпустить. Как-то так, один из вариантов решения, если я все правильно понял и нигде не ошибся Повторю - проверять состояние нейтрали, закрытых дверей и ручника надо ДО постановки на автозапуск, это тоже та еще задачка
--------------------
Скоро дело сказывается, да не скоро сказка делается, или тише будешь - дальше уедешь...  
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|