#1 2019-01-29 16:31:55

Rimarko
Участник
Зарегистрирован: 2019-01-29
Сообщений: 9

ФУОЗ на Ардуино про мини

Доброго времени суток форумчане cool ... Занялся я программированием мк, и для облегчения себе жизни начал с платформы ардуино... Уроки по миганию светодиода, разработки дальномера на HC-SR04 и подобное я делал hmm ... Много инфы читал, смотрел видеоуроки (хочу отметить канал AlexGyver, https://alexgyver.ru/), но как то туго идет процесс... Но я стараюсь... Суть вопроса вот в чем: есть идея организовать формирователь угла опережения зажигания (ФУОЗ) на мотоцикл... У меня ява 350 и очень хотелось бы сделать такой девайс для улучшения динамики мотоцикла... Не знаю, есть ли тут мото или автолюбители которые меня поняли бы... По ФУОЗу есть много инфы в инете, по этому обьяснять детально этот вопрос не буду... Есть 2 датчика Холла от ваз 2109 по одному на каждый цилиндр, 2 коммутатора и 2 катушки зажигания аналогично. Нужно в разрез сигнальных проводов которые идут к коммутатору, подключить плату ардуино с прошивкой, которая смогла бы задерживать сигнал в зависимости от оборотов коленчатого валла... Пытался реализовать эту задумку как описано это здесь: https://www.jawaclub.ru/forum/index.php?topic=4440.0 , но ничего толкового не вышло... По этому прошу Вашей помощи. Данные с временным отставанием есть, есть все расчеты- да вот никак не могу скомпилировать все... Спасибо за понимание и жду вашего мнения.. smile

#2 2019-01-29 17:42:00

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,732

Re: ФУОЗ на Ардуино про мини

Как вы хотите что-бы вам помогли? Объясните более конкретно, пожалуйста?

#3 2019-01-29 18:41:24

Rimarko
Участник
Зарегистрирован: 2019-01-29
Сообщений: 9

Re: ФУОЗ на Ардуино про мини

Мне нужно что бы опытные люди помогли реализовать этот проект(помогли с кодом в конце конов) wink , обьяснили что и как нужно писать... smile

#4 2019-01-29 19:03:40

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,732

Re: ФУОЗ на Ардуино про мини

А что вам непонятно с кодом?

#5 2019-01-29 19:52:50

Rimarko
Участник
Зарегистрирован: 2019-01-29
Сообщений: 9

Re: ФУОЗ на Ардуино про мини

Моя задумка такова: есть 2 датчика Холла, подключаем их на пины с прерыванием и считаем колличество оборотов в минуту, если это значение больше 750 об\мин- то на каждый диапазон частот прибавляем своё время задержки сигнала(время уменьшается с увеличением оборотов коленчатого вала) и посылаем сигнал на выход с ардуинки к коммутатору, а тот, в свою очередь, подаёт сигнал на катушку зажигания, что в последствии приводит к искре на свечке... Если обороты меньше 750-обходим блок прибавления задержки и работаем"на прямую"-то есть подучили сигнал с датчика Холла-передали его на коммутатор... Проблема в том, что куски примитивного кода есть, а собрать все в кучу не получается... И не понятно как вставить масив зависимости задержки от оборотов roll

Редактировался Rimarko (2019-01-29 19:54:17)

#6 2019-01-29 19:54:38

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 777

Re: ФУОЗ на Ардуино про мини

Rimarko пишет:

Мне нужно что бы опытные люди помогли реализовать этот проект(помогли с кодом в конце конов) wink , обьяснили что и как нужно писать... smile

давайте код, посмотрим...

#7 2019-01-29 20:01:59

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,732

Re: ФУОЗ на Ардуино про мини

Используйте аппаратный таймер для формирования задержки. По другому не получится.

#8 2019-01-29 20:18:31

Rimarko
Участник
Зарегистрирован: 2019-01-29
Сообщений: 9

Re: ФУОЗ на Ардуино про мини

Вот то что начал писать... Я совсем зеленый, так что не сочтите... Критика приемлима, на ошибках учимся... Спасибо за понимание...)
/*
FUOZ
*/

unsigned long lastflash;
int RPM;

void setup() {
  Serial.begin(9600);  //открыть порт
  attachInterrupt(0,HallSensor1,RISING); //подключить прерывание на 2 пин при повышении сигнала
  attachInterrupt(1,HallSensor2,RISING); //подключить прерывание на 3 пин при повышении сигнала
  pinMode(2, INPUT_PULLUP);   //2 пин как вход
  pinMode(3, INPUT_PULLUP);  //3 пин как вход
 
}
void Hallsensor1() {
  RPM=60/((float)(micros()-lastflash)/1000000);  //расчет
  lastflash=micros();  //запомнить время последнего оборота
}

void Hallsensor2() {
  RPM=60/((float)(micros()-lastflash)/1000000);  //расчет
  lastflash=micros();  //запомнить время последнего оборота
}
void loop() {
  if ((micros()-lastflash)>1000000){ //если сигнала нет больше секунды
    RPM=0;  //считаем что RPM 0
  }
  Serial.println(RPM);   //вывод в порт
  delay(50);  //задержка для стабильности
}

#9 2019-01-29 20:24:00

Rimarko
Участник
Зарегистрирован: 2019-01-29
Сообщений: 9

Re: ФУОЗ на Ардуино про мини

Вот графики опережения зажигания:
https://ibb.co/VS9ZpyL
https://ibb.co/L1yVtx9

#10 2019-01-29 20:26:23

Rimarko
Участник
Зарегистрирован: 2019-01-29
Сообщений: 9

Re: ФУОЗ на Ардуино про мини

обороты    время сигнала         L1- расстояние до ВМТ, мм            β- расстояние до ВМТ в градусах                α*- угол модулятора в             время сигнала с задержкой            задержка сигнала в
ω    Т        (опережение)            если считать вмт 0 градусов                зависимости от оборотов                        зависимости от оборотов
750    0,012222222        2,35            6,51                57,21            0,012713333            0,000491111
1000    0,009166667        2,4            6,65                57,08            0,009513333            0,000346667
1250    0,007333333        2,45            6,78                56,95            0,007593333            0,00026
1500    0,006111111        2,5            6,92                56,82            0,006313333            0,000202222
1750    0,005238095        2,55            7,06                56,69            0,005399048            0,000160952
2000    0,004583333        2,6            7,20                56,56            0,004713333            0,00013
2250    0,004074074        2,65            7,34                56,43            0,00418            0,000105926
2500    0,003666667        2,7            7,48                56,3            0,003753333            8,66667E-05
2750    0,003333333        2,75            7,62                56,17            0,003404242            7,09091E-05
3000    0,003055556        2,8            7,75                56,04            0,003113333            5,77778E-05
3250    0,002820513        2,85            7,89                55,91            0,002867179            4,66667E-05
3500    0,002619048        2,9            8,03                55,78            0,00265619            3,71429E-05
3750    0,002444444        2,95            8,17                55,65            0,002473333            2,88889E-05
4000    0,002291667        3            8,31                55,52            0,002313333            2,16667E-05
4250    0,002156863        3,05            8,45                55,39            0,002172157            1,52941E-05
4500    0,002037037        3,1            8,58                55,26            0,002046667            9,62963E-06
4750    0,001929825        3,15            8,72                55,13            0,001934386            4,5614E-06
5000    0,001833333        3,2            8,86                55            0,001833333            0

#11 2019-01-29 20:28:05

Rimarko
Участник
Зарегистрирован: 2019-01-29
Сообщений: 9

Re: ФУОЗ на Ардуино про мини

VS9ZpyL
L1yVtx9

#12 2019-01-29 20:39:58

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,732

Re: ФУОЗ на Ардуино про мини

У вас период оборота менее 80 мс при превышении 750 об/мин. А системные часы Ардуино с разрешением 1 мс и то не точно. Вам еще много придется изучить. Начните с улучшения знаний С/С++ и изучения даташита на микроконтроллер. И с таблицей станет понятнее. Читайте тексты хороших программ, например, исходники библиотек Ардуино.

#13 2019-01-29 23:41:29

MikeM
Участник
Из Киев
Зарегистрирован: 2017-11-03
Сообщений: 124

Re: ФУОЗ на Ардуино про мини

Прерывания нулевого таймера, будучи асинхронным с сигналами датчиков Холла, будут сбивать работу системы.

#14 2019-01-30 01:00:42

Rimarko
Участник
Зарегистрирован: 2019-01-29
Сообщений: 9

Re: ФУОЗ на Ардуино про мини

...ну тогда подскажите или дайте пример как нужно делать... smile

#15 2019-01-30 01:21:17

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,732

Re: ФУОЗ на Ардуино про мини

Rimarko пишет:

...ну тогда подскажите или дайте пример как нужно делать... smile

Это руководство по использованию таймеров: https://www.microchip.com/wwwAppNotes/A … e=en591026 Готовой программы зажигания, для демонстрации в качестве примера, у меня нет. Поищите в интернете, может найдете.

Редактировался Вячеслав Азаров (2019-01-30 01:24:18)

#16 2019-04-23 11:20:54

tom Smith
Участник
Зарегистрирован: 2019-04-23
Сообщений: 1

Re: ФУОЗ на Ардуино про мини

Вот более подробные руководства ... о датчиках и таймерах https://www.allicdata.com/blog.html

#17 2019-04-24 14:29:00

Kaka
Участник
Зарегистрирован: 2018-03-21
Сообщений: 365

Re: ФУОЗ на Ардуино про мини

Rimarko пишет:

Мне нужно что бы опытные люди помогли реализовать этот проект(помогли с кодом в конце конов) wink , обьяснили что и как нужно писать... smile

Так обратись к своему корешу AlexGyver. У него и форум собственный есть https://community.alexgyver.ru/

Надеюсь, этот безграмотный блогер тебе поможет.

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела