arduino
Обсуждение увлечений, которые помогают нам скоротать свободное время
- Rokky
- Наездник
- Темы: 3
- Сообщений: 423
- Зарегистрирован: 15 сен 2016, 14:41
- Авто: Audi A4 B8, 1.8 TFSI
- Имя: Жека
- Откуда: Минск
- Контактная информация:
- Статус: Не в сети
arduino
Сообщение Rokky » 06 фев 2018, 23:16
Maxxtro2, наверняка не скажу, но можно проверить думаю с помощью функции attachInterrupt(interrupt, function, mode), посмотреть скок прерываний там вызывается, перекрывают ли они сильно поток выполнения..
Или использовать обратную функцию detachInterrupt(interrupt)
Или использовать обратную функцию detachInterrupt(interrupt)
https://www.drive2.ru/r/audi/a4/453354483729040251/
Rokky
- Maxxtro2
- Механик
- Темы: 30
- Сообщений: 1024
- Зарегистрирован: 10 ноя 2009, 00:46
- Имя:
- Статус: Не в сети
arduino
Сообщение Maxxtro2 » 15 ноя 2018, 17:15
И снова с вопросом.
Не очень нравится выходная регулировка PWM, складывается впечатление что считывание данных приходят так быстро что на выходе 50Гц отрабатывает не совсем правильно.
Еще интересует вопрос вывода информации на экран, если входящие данные просто бросать на экран, то это становится не читабельно для наших глаз, как бы правильно их преобразовывать чтобы они выводились более привлекательней (к примеру 556 - 560, 381 - 380 и т.д.)
Не очень нравится выходная регулировка PWM, складывается впечатление что считывание данных приходят так быстро что на выходе 50Гц отрабатывает не совсем правильно.
Еще интересует вопрос вывода информации на экран, если входящие данные просто бросать на экран, то это становится не читабельно для наших глаз, как бы правильно их преобразовывать чтобы они выводились более привлекательней (к примеру 556 - 560, 381 - 380 и т.д.)
Код: Выбрать все
#include <PWM.h>
int MAP = A1;
int VNT = 9;
unsigned long frequency = 50;
int MAPval = 0;
int VNTon[10] = {0, 242, 219, 196, 173, 150, 128, 94, 61, 28};
int MAPbar[11] = {-900, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200};
void setup()
{
InitTimersSafe();
SetPinFrequencySafe(VNT, frequency);
}
void loop()
{
MAPval = analogRead(MAP);
MAPval = MAPval * 2.518891688 - 1000;
if (MAPval < MAPbar[0])
{
pwmWrite(VNT, VNTon[0]);
}
else if (MAPval < MAPbar[1])
{
pwmWrite(VNT, VNTon[1]);
}
else if (MAPval < MAPbar[2])
{
pwmWrite(VNT, VNTon[2]);
}
else if (MAPval < MAPbar[3])
{
pwmWrite(VNT, VNTon[3]);
}
else if (MAPval < MAPbar[4])
{
pwmWrite(VNT, VNTon[4]);
}
else if (MAPval < MAPbar[5])
{
pwmWrite(VNT, VNTon[5]);
}
else if (MAPval < MAPbar[6])
{
pwmWrite(VNT, VNTon[6]);
}
else if (MAPval < MAPbar[7])
{
pwmWrite(VNT, VNTon[7]);
}
else if (MAPval < MAPbar[8])
{
pwmWrite(VNT, VNTon[8]);
}
else if (MAPval < MAPbar[9])
{
pwmWrite(VNT, VNTon[9]);
}
else if (MAPval < MAPbar[10])
{
pwmWrite(VNT, VNTon[0]);
}
else
{
pwmWrite(VNT, VNTon[0]);
}
}
Maxxtro2
- Rokky
- Наездник
- Темы: 3
- Сообщений: 423
- Зарегистрирован: 15 сен 2016, 14:41
- Авто: Audi A4 B8, 1.8 TFSI
- Имя: Жека
- Откуда: Минск
- Контактная информация:
- Статус: Не в сети
arduino
Сообщение Rokky » 15 ноя 2018, 18:26
Maxxtro2, да скорость считывания большая, тут можно или задержку всунуть или среднее брать (последнее будет мне кажется предпочтительней)
Про вывод не совсем понял.., какие именно данные? у вас на входе только 1 число.. а в примере диапазон
Про вывод не совсем понял.., какие именно данные? у вас на входе только 1 число.. а в примере диапазон
https://www.drive2.ru/r/audi/a4/453354483729040251/
Rokky
- Maxxtro2
- Механик
- Темы: 30
- Сообщений: 1024
- Зарегистрирован: 10 ноя 2009, 00:46
- Имя:
- Статус: Не в сети
arduino
Сообщение Maxxtro2 » 15 ноя 2018, 18:46
Rokky,
вход пин A1
выход пин 9
Вход читаем с датчика и скорость очень большая
Выход с частотой 50Гц и прописанной скважностью.
Думаю правильно будет среднее брать со входа и также с частотой 50Гц - вот только правда не понимаю как это среднее высчитать.
Про вывод на экран - выводить нужно данные с пина A1 преобразованные в MAPval (в коде вывода на экран нет), но т.к. данные считываются тоже быстро, они также быстро и на экране отображаются, а наши глаза это не воспринимают, вот и хочется эти данные преобразовывать для того чтобы наш глаз это воспринимал, да и еще было бы замечательно округлить их - к примеру 556 - 560, 381 - 380 и т.д.
вход пин A1
выход пин 9
Вход читаем с датчика и скорость очень большая
Выход с частотой 50Гц и прописанной скважностью.
Думаю правильно будет среднее брать со входа и также с частотой 50Гц - вот только правда не понимаю как это среднее высчитать.
Про вывод на экран - выводить нужно данные с пина A1 преобразованные в MAPval (в коде вывода на экран нет), но т.к. данные считываются тоже быстро, они также быстро и на экране отображаются, а наши глаза это не воспринимают, вот и хочется эти данные преобразовывать для того чтобы наш глаз это воспринимал, да и еще было бы замечательно округлить их - к примеру 556 - 560, 381 - 380 и т.д.
Maxxtro2
- Rokky
- Наездник
- Темы: 3
- Сообщений: 423
- Зарегистрирован: 15 сен 2016, 14:41
- Авто: Audi A4 B8, 1.8 TFSI
- Имя: Жека
- Откуда: Минск
- Контактная информация:
- Статус: Не в сети
arduino
Сообщение Rokky » 15 ноя 2018, 20:25
ну среднее примерно так можно:
По поводу отображения, не надо так часто, отображайте например раз в секунду ( не чаще).
Тут еще вопрос куда выводите, например, можно не выводить значения на экран если они совпадают с предыдущими, т.к они уже там. Т.е такой фильтр на повторяющиеся значения.
Округление, если не ошибаюсь вам нужно такая, вот пример:
Код: Выбрать все
double val=0.0;
int countItem = 10;
for(int i = 0; i < countItem ; i++)
{
MAPval = analogRead(MAP);
MAPval = MAPval * 2.518891688 - 1000;
double +=MAPval;
// можно мини-задержку сделать
//delay(10);
}
double /=countItem ;
По поводу отображения, не надо так часто, отображайте например раз в секунду ( не чаще).
Тут еще вопрос куда выводите, например, можно не выводить значения на экран если они совпадают с предыдущими, т.к они уже там. Т.е такой фильтр на повторяющиеся значения.
Округление, если не ошибаюсь вам нужно такая, вот пример:
Код: Выбрать все
#include <math.h>
int roundNum(int val, int des = 10)
{
double vl = (double)val / des;
auto t = floor(vl + 0.5);
t *= des;
return t;
}
int main()
{
int val = 556;
int newVal = roundNum(val);
return 0;
}
https://www.drive2.ru/r/audi/a4/453354483729040251/
Rokky
- Rokky
- Наездник
- Темы: 3
- Сообщений: 423
- Зарегистрирован: 15 сен 2016, 14:41
- Авто: Audi A4 B8, 1.8 TFSI
- Имя: Жека
- Откуда: Минск
- Контактная информация:
- Статус: Не в сети
arduino
Сообщение Rokky » 16 ноя 2018, 10:19
пару опечаток нашел, писал на коленке..
Код: Выбрать все
double val=0.0;
int countItem = 10;
for(int i = 0; i < countItem ; i++)
{
MAPval = analogRead(MAP);
MAPval = MAPval * 2.518891688 - 1000;
double +=MAPval;
// можно мини-задержку сделать
//delay(10);
}
val /=countItem ;
https://www.drive2.ru/r/audi/a4/453354483729040251/
Rokky
Rokky
- Rokky
- Наездник
- Темы: 3
- Сообщений: 423
- Зарегистрирован: 15 сен 2016, 14:41
- Авто: Audi A4 B8, 1.8 TFSI
- Имя: Жека
- Откуда: Минск
- Контактная информация:
- Статус: Не в сети
arduino
Сообщение Rokky » 16 ноя 2018, 13:16
Maxxtro2, в моем примере не регулируется это. если добавить задержку, то в этом пример получится он в течении секунды считает среднее значение, а потом будет выдавать на шим что-то
т.е тут делаем 20 циклов считывание значения с задержкой в 50 мс между циклами
Код: Выбрать все
double val=0.0;
int countItem = 20;
for(int i = 0; i < countItem ; i++)
{
MAPval = analogRead(MAP);
MAPval = MAPval * 2.518891688 - 1000;
val+=MAPval;
// можно мини-задержку сделать
//delay(50);
}
val /=countItem ;
т.е тут делаем 20 циклов считывание значения с задержкой в 50 мс между циклами
https://www.drive2.ru/r/audi/a4/453354483729040251/
Rokky
Rokky
Rokky
- Bill Humble
- Специалист
- Темы: 8
- Сообщений: 1523
- Зарегистрирован: 09 июл 2009, 00:12
- Авто: A4Q 1.8T AMB '04
- Имя:
- Откуда: Логойск
- Контактная информация:
- Статус: Не в сети
arduino
Сообщение Bill Humble » 06 апр 2020, 10:37
Ардуинщику на карантине отключили интернет.
Не умножай сущностей без надобности
Bill Humble
Перейти
- FAQ (ЧИТАТЬ ОБЯЗАТЕЛЬНО!)
- Правила форума
- Расписание съездов Белорусского Audi Клуба
- Как вступить в Белорусский Ауди Клуб?
- Как добавить изображение в сообщение на форуме?
- Как связаться с Администрацией сайта?
- Клубная жизнь
- Жизнь клуба
- Съезды клуба
- Архив анонсов Клубных мероприятий
- Филиалы клуба
- Брестский филиал
- Витебский филиал
- Гомельский филиал
- Гродненский филиал
- Могилёвский филиал
- Бобруйский филиал
- Клубы-побратимы
- Друзья клуба
- Автосервисы СТО
- Предложения з/ч
- Exist.by
- Клубные сувениры с символикой
- О нашем проекте
- Модели Audi
- Audi 80, 90, Coupe
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- Audi 100, 200 и V8
- Audi A2
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- Audi A3
- 8L
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- 8P
- Audi A4
- B5
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- B6
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- B7
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- B8
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- Audi A5
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- Audi A6
- C4
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- C5
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- C6
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- C7
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- С8
- Audi A8
- D2
- Двигатель
- Трансмиссия
- Топливная система
- Подвеска и Рулевое управление
- Тормозная система
- Охлаждение, отопление и кондиционирование
- Выхлопная система
- Кузов и Салон
- Электрооборудование
- D3
- Audi TT
- Audi Allroad
- Audi Q3
- Audi Q5
- Audi Q7
- Эксплуатация автомобиля
- Расшифровка VIN + История обслуживания (Audi, VW, Skoda, Seat)
- Руководства по эксплуатации
- Программы для диагностики авто
- ETKA, ELSA
- VAG-Com
- Автодата
- Общетехнические вопросы и системы
- Выбор масла
- Выбор запчастей
- Средства по уходу за автомобилем
- Автозвук
- Электрооборудование
- GPS навигация
- Тюнинг
- Шины, диски
- Кузов, салон, оптика
- Выбираем автомобиль
- Новинки от Audi
- Юридическая консультация
- Выбор СТО
- Отзывы об СТО
- Оффтоп
- Всё обо всём
- Всё о мото-вело
- Всё о компьютерах, мобильниках и IT
- Всё о бизнесе
- Юмор
- Путешествия
- Беларусь
- Постсоветское пространство
- Россия
- Украина
- Европа
- Ближний восток
- Азия
- Америка
- Африка
- Австралия
- Антарктида
- На досуге...
- Онлайн игра
- Поздравления
- Объявления
- Автомобили
- Диски/Шины
- Запчасти
- Другое
- Отдам даром! Приму в дар!
Кто сейчас на форуме
Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 1 гость