Multi-Set.ru - Форум - Показать сообщение отдельно - Тойота Дуэт(EJ-VE). Большой расход, норма или родовая травма?!
Показать сообщение отдельно
  #159  
Старый 01.11.2019, 19:32
Zabl Zabl вне форума
advir
 
Регистрация: 19.04.2017
Сообщения: 101
По умолчанию

Цитата:
Сообщение от Алекс555
Т.к. "пила" - это уже реакция на что-то(пусть кривое, косое, неправильное), не могли бы вы снять данные вольтметром Админа со своего автомобиля
(либо другого, где все хорошо с петлей ДК) с целью сравнить.
Не могу, по двум причинам, у админа .hex файл для меги. У меня есть только уно и нано. Во вторых свободного времени мало. Можно попробовать альтернативный вариант из интернета. Проект Ардуино открытый и осциллографов, на ардуино, в сети хватает. Но быстро не гарантирую, времени свободного мало. Можете попробовать скетчь из интернета и сравнить графики, вполне может быть админ с фильтром накосячил и его скетч пилу рисует. Или дополню свой скетч опросом аналогового входа, но на тестирование так же время нужно.
Добавил опрос аналогового входа, на столе работает. Можно опорное уменьшить до1,1 в убрав косые черточки перед строчкой analogReference(INTERNAL);
Код:
#define INJECTOR_PIN 6 // Номер ноги для форсунки unsigned long dur_injector_open ; //Продолжительность импульса форсунки unsigned long t;//время изменения сигнала unsigned long pre_t;// предыдущее время изменения сигнала unsigned long t_injector_open ; //время открытия форсунки unsigned long t_injector_closed ; //время закрытия форсунки unsigned long period_injector ;//период открытия форсунки boolean injector ; boolean pre_injector ; void setup() { Serial.begin(115200); pinMode(INJECTOR_PIN, INPUT_PULLUP); //analogReference(INTERNAL);//опорное напряжение 1,1 вольта ,для меги изменить на INTERNAL1V1 } void loop() { pre_injector = injector ; injector = digitalRead(INJECTOR_PIN) ; if (injector != pre_injector) { //если состояние форсунки изменилось t = micros(); if (!injector) {//если форсунка открыта pre_t = t_injector_open ; t_injector_open = t; period_injector = (t_injector_open - pre_t) ; //период открытия } if (injector) { // если форсунка закрыта t_injector_closed = t; dur_injector_open = (t_injector_closed - t_injector_open) ; Serial.print(dur_injector_open);//вывод в порт длины импульса Serial.print(",");//разделитель для эксель Serial.print(period_injector);//вывод в порт периода импульса Serial.print(",");//разделитель для эксель Serial.println(analogRead(A0));//вывод напряжения } } }
Ответить с цитированием