Цитата:
Сообщение от Алекс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));//вывод напряжения
}
}
}