датчик положения дроссельной заслонки

Обсуждаем электронику на колесах. Нужен увлажнитель воздуха для Камаза? Вам сюда.
Ответить
Нашел транзистор. Понюхал.
Сообщения: 176
Зарегистрирован: Вт июн 01, 2021 22:09:42

Сообщение ЗАВ »

давление работает норм. сигнал с трима на вход приходит. проговорю алгоритм работы датчика холла. на валу стоит 2 магнита. один полюс включает датчик (дает верхний фронт) , второй магнит обратным полюсом выключает датчик (дает нижний фронт). получается за оборот датчик 2 раза меняет состояние это нужно использовать для счета.
Последний раз редактировалось ЗАВ Пн июн 15, 2026 14:54:45, всего редактировалось 1 раз.
самое сложно - сделать просто
Реклама
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

тогда убедиться, что это соответствие верно:
#define CH_ADC_TRIM 7 // Канал АЦП датчика "ТРИМ".
#define CH_ADC_PRESSURE 2 // Канал АЦП датчика "ДАВЛЕНИЕ".
#define CH_ADC_COUNT 0 // Канал АЦП датчика "СЧЁТЧИК".
Реклама
Нашел транзистор. Понюхал.
Сообщения: 176
Зарегистрирован: Вт июн 01, 2021 22:09:42

Сообщение ЗАВ »

загрузил 21 скеч - трим работает, 22 и 23 трим стоит на нуле.
самое сложно - сделать просто
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

в 21:
#define CH_ADC_TRIM 1 // Канал АЦП датчика "ТРИМ".

Но потом было:
ЗАВ писал(а): Вт июн 09, 2026 11:12:21 схема не соответствует распайки . проверил, по факту трим подключен к А7.
поэтому сейчас стоит
#define CH_ADC_TRIM 7 // Канал АЦП датчика "ТРИМ".

На последней схеме тоже А7
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Сообщения: 176
Зарегистрирован: Вт июн 01, 2021 22:09:42

Сообщение ЗАВ »

трим стоит на А7. у меня 7 нога работает в 21 скетче. на 55 строке. помниться мне у трима в 21 скетче не было ноля. сейчас стоит ноль и не на что не реагирует.(в21 скетче с пустым пином значения бегали хаотично). я подозреваю, что в ТРИМ были внесены изменения для стабилизации ноля?
самое сложно - сделать просто
Реклама
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Да, нашёл: при тесте настройки диапазонов поставил
#define LOW_VOLTAGE_TRIM 800 // Минимальное напряжение (в значениях АЦП), при котором отображается LOW_DISPLAY_TRIM
и забыл вернуть
сделайте
#define LOW_VOLTAGE_TRIM 0
(или какое-то иное значение, если 0 должен отображаться при некотором ненулевом напряжении)
Реклама
Нашел транзистор. Понюхал.
Сообщения: 176
Зарегистрирован: Вт июн 01, 2021 22:09:42

Сообщение ЗАВ »

ТРИМ заработал, однако вместо нуля показания 0,25. и хотя скетче выставлено ТРИМ - 1 знак после запятой, а давление 2 знака, по факту все наоборот. у трима -2 знака , у давления 1 знак. почему в комментариях наоборот ? поменял местами. разрядность восстановилась. ТРИМ нормально считает до 10, потом показывает галиматью. то 24, то 37. ошибка какая то.
счетчик не работает от слова совсем, только переключается при размотки с индикатор ТРИМА (а должен с давления - нужно исправить) и на индикаторе стоит ноль.
самое сложно - сделать просто
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

счётчик я не тестировал.
Диапазон отображения и диапазон фактического напряжения на датчике регулируются с помощью:
#define LOW_DISPLAY_TRIM 0 // Минимальное отображаемое значение "ТРИМ"
#define LOW_VOLTAGE_TRIM 0 // Минимальное напряжение (в значениях АЦП), при котором отображается LOW_DISPLAY_TRIM

#define HIGH_DISPLAY_TRIM 800 // Максимальное отображаемое значение "ТРИМ"
#define HIGH_VOLTAGE_TRIM 952 // Минимальное напряжение (в значениях АЦП), при котором отображается HIGH_DISPLAY_TRIM

АЦП выдаёт 0 при 0 В и 1024 при 5 В.

Комментарии писались методом "копи-пасте", где-то мог забыть исправить. В случае подобных ошибок следует ориентироваться на имена определений.

У меня на первом дисплее показывается 0...80 на втором 0...4 и счётчик переключает второй.
ранее было:
ЗАВ писал(а): Ср июн 03, 2026 08:56:45 на первом индикаторе "ТРИМ" значение должно быть 0-80,0. на втором индикаторе "ДАВЛЕНИЕ" 0-4,00.
притом, каналы:

#define CH_ADC_TRIM 7 // Канал АЦП датчика "ТРИМ".
#define CH_ADC_PRESSURE 2 // Канал АЦП датчика "ДАВЛЕНИЕ".
#define CH_ADC_COUNT 0 // Канал АЦП датчика "СЧЁТЧИК".

volatile uint8_t adcChannels[3] = { CH_ADC_TRIM, CH_ADC_PRESSURE, CH_ADC_COUNT }; // Каналы АЦП для датчиков 1...3 индикаторов 0...2

:dont_know:
Нашел транзистор. Понюхал.
Сообщения: 176
Зарегистрирован: Вт июн 01, 2021 22:09:42

Сообщение ЗАВ »

в 6 строке #define LOW_VOLTAGE_TRIM 50 . поставил 50 вместо 0, однако минимальное значение все равно осталось 2,5.
в 19 строке стоит #define HIGH_DISPLAY_PRESSURE 245 // Максимальное отображаемое значение "ДАВЛЕНИЕ". значит выше 2,45 не может быть значение, а показывает боллее 3,00 при 1,6 в.
Я что то не понимаю ? градуировка вторично, с начало нужно отладить функционал. почему ТРИМ после значения 10 начинает подвисать и боллее 16 показывает ерунду
самое сложно - сделать просто
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Минимальное показание ограничено нулём, но максимальные - 999
То есть, если HIGH_VOLTAGE_DISPLAY 245 при HIGH_VOLTAGE_PRESSURE 1024 тогда да, показания не должны превышать 245.
Но если HIGH_VOLTAGE_PRESSURE 800 - то 245 будет показано при 3,9 В (5 В/1024 * 800 = 3.9). Если датчик выдаст более 3.9 - на дисплее отобразится и большее значение.
То есть, определения LOW_DISPLAY_... HIGH_DISPLAY... и LOW_VOLTAGE_... HIGH_VOLTAGE_... позволяют отмасштабировать реальный диапазон напряжений на датчике к диапазону отображения индикатора.
Это как раз первично, позволяет исключить несоответствия, особенно когда я не знаю, какое напряжение, и фактически:
ЗАВ писал(а): Вт июн 09, 2026 13:38:25 при напряжении на входе ТРИМ 0,5 в ... нужен 0.
Почему может скакать: сейчас логика работы очень проста: АЦП делает тридцать две выборки и получает среднее арифметическое из них. Также предполагается, что сигнал стабильный. У меня в качестве сигнал используется переменный резистор, и всё это на столе - ни помех, ни каких-то нестабильностей от датчика. Индикаторы работают без рывков и зависаний. Но как только я вытаскиваю провод от резистора, даже на столе Ардуино "сходит с ума" и отображает ахинею.
Предыдущий программист мог применять какой-то цифровой фильтр.
То есть, причиной может быть помеха на сигнале датчика или на питании Ардуино.
Оба канала (давление и трим) в программе обрабатываются совершенно одинаково. Просто подставляются те самые LOW_DISPLAY_... HIGH_DISPLAY... и LOW_VOLTAGE_... HIGH_VOLTAGE_...
Нашел транзистор. Понюхал.
Сообщения: 176
Зарегистрирован: Вт июн 01, 2021 22:09:42

Сообщение ЗАВ »

помехи отсутствую. мотор не запущен. датчики аналоговые НЕ резистивные (ТРИМ - датчик холла ) у него сигнал чище, чем резистор. думаю проблема в ПО
загрузил 21 скетч - все считает нормально. в нем нужна только калибровка
Последний раз редактировалось ЗАВ Пн июн 15, 2026 20:18:50, всего редактировалось 1 раз.
самое сложно - сделать просто
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

тогда проблема была бы на обоих каналах... перепроверю сегодня.
Ответить

Вернуться в «АвтоМотоВело»