#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
Повідомлень: 1,025

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
Повідомлень: 160

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
Повідомлень: 411

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

Rimarko пише:

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

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

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

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму