Форум
Форум » Разное » Флейм » Arduino в Москвич
Abarigen 18 марта 2020, 20:12:44
Vladik Не в "идеальных условиях", а при условии, что диаметр резины и передаточное число главной пары соответствуют расчетному коэффициенту этого привода - 624об/км.
Да. Я как-бы это и имел ввиду.
Для корректировки несоответствия в формулу добавил поправочный коэффициент. Пока равен 1, а дальше будет корректировать под автомобиль. В идеале нужно сделать онлайн подстройку без перезаливки скетча, но пока не придумал как это грамотно реализовать.
Сгенерировал выходной сигнал 10 Гц, что по сути своей и есть 10 импульсов в секунду (10 выбрал чтобы легче проаерять) или 2,671 м/с или 9,615 км/ч.
Работает это дело по следующему алгоритму:
Каждый раз, как на 2 контакте платы Arduino UNO происходит смена сигнала с низкого на высокий (проскакивает очередной импульс с датчика), вызывается функция обработки внешних прерываний и подсчитывает импульсы (переменная impuls).
Каждую секунду я обнуляю счетчик, предварительно пересчитав частоту в скорость [м/с]. Дальше зная скорость могу считать все остальное.
volatile uint16_t impuls = 0;
void setup (){
attachInterrupt (0, pinChange, RISING); // Подключаем обработчик прерывания на контакте 2
}
// Функция обработки прерывания
void pinChange ()
{
impuls = impuls + 1;
}
void loop (){
while(millis() - lastTime >= 1000){
Vs = ((float)impuls*1000)/(float)k; // [м/c]
impuls = 0;
lastTime = millis();
}
}
Изначально я наступил на несколько граблей:
1. Неверно выбрал режим прерывания CHANGE вместо RISING, в итоге получил частоту в два раза выше генерируемой. Благо додумался осциллографом перепроверить.
2. Получал большую погрешность измерения 3-5%. Думал что это из-за потери частичного импульса в момент обнуления счетчика, но когда стал поочередно отслеживать место появление погрешности выяснил что при делении одной целой переменной на вторую целую получается тоже целая, хоть и записывается в дробную. Поэтому перед делением нужно обязательно конвертировать int во float.
Пока настольные испытания продолжаются положительно.
Прикрепленный файл (Размер: 160 КБайт)
______________________________________
Купил Москвич и не жалею... Никого...
|
|
Мастерская
|
|
Форум » Разное » Флейм » Arduino в Москвич