Да, ночью займусь.
датчик положения дроссельной заслонки
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
- Реклама
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
Я правильно понял, что Вы используете Ардуино Нано? полагаю, есть и Arduino IDE?
Покажите схему подключения.
Соберу "стенд" у себя, так будет гораздо проще и надёжнее. Судя по коду выше, это просто считывание показаний с АЦП и вывод на индикатор.
предварительно так (ошибки не исключены, и даже скорее всего есть, Ардуино у меня не так давно):
Спойлер
Код: Выделить всё
const uint8_t Dta[11] PROGMEM = {
0b11111100 /*0*/, 0b01100000 /*1*/, 0b11011010 /*2*/, 0b11110010 /*3*/, 0b01100110 /*4*/, 0b10110110 /*5*/,
0b10111110 /*6*/, 0b11100000 /*7*/, 0b11111110 /*8*/, 0b11110110 /*9*/, 0b00000000 /* */
};
volatile uint8_t dig = 0;
volatile uint16_t display = 0;
volatile uint16_t filteredADC = 0;
ISR(TIMER2_OVF_vect) {
PORTB &= 0xC3; // Выключить все разряды
dig = (dig + 1) & 0x03;
uint8_t segments = pgm_read_byte(&Dta[(display >> (dig << 2)) & 0x0F]);
if (dig == 2) segments &= ~0x01;
PORTD = (PORTD & 0x03) | (segments >> 2) & 0xFC;
PORTB = (PORTB & 0x03) | (segments & 0x03) | (1 << (2 + dig));
}
ISR(ADC_vect) {
static uint32_t sum = 0;
static uint8_t count = 0;
sum += ADC;
if (++count >= 16) {
filteredADC = (filteredADC * 7 + (sum >> 4)) >> 3;
sum = 0;
count = 0;
}
}
inline void updateDisplay() {
uint16_t val = filteredADC;
uint8_t d3 = val % 10;
val /= 10;
uint8_t d2 = val % 10;
val /= 10;
uint8_t d1 = val % 10;
val /= 10;
uint8_t d0 = val;
if (d0 == 0) {
d0 = 10;
if (d1 == 0) {
d1 = 10;
if (d2 == 0) d2 = 10;
}
}
display = (uint16_t)d0 << 12 | (uint16_t)d1 << 8 | (uint16_t)d2 << 4 | d3;
}
void setup() {
/** Порты */
DDRD |= 0xFC; // PD2..PD7 = выходы (A-F)
DDRB |= 0x3F; // PB0..PB5 = выходы (G,H + Dig1..Dig4)
PORTB &= 0xC3; // Выключить все разряды
/** ADC */
ADMUX = (1 << REFS0) | 7;
ADCSRA = (1 << ADEN) | (1 << ADIE) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
// Free Running Mode
ADCSRB = 0;
ADCSRA |= (1 << ADATE) | (1 << ADSC);
/** TIM2 */
TCCR2A = 0;
TCCR2B = (1 << CS22) | (1 << CS21);
TIMSK2 |= (1 << TOIE2);
sei();
}
void loop() {
updateDisplay();
delay(50);
}Re: датчик положения дроссельной заслонки
прилагаю схему
сигнал на двух входах одинаковый 0-4,5в. на первом индикаторе "ТРИМ" значение должно быть 0-80,0. на втором индикаторе "ДАВЛЕНИЕ" 0-4,00.
задача создать третий вход считывая импульсы (включения герконов) 2,5в и 5в. по их очередности определять направление считывания в+ или в- . при 150 импульсах значение должно быть 30,0 (эти показания уточним на месте по факту).
сигнал на двух входах одинаковый 0-4,5в. на первом индикаторе "ТРИМ" значение должно быть 0-80,0. на втором индикаторе "ДАВЛЕНИЕ" 0-4,00.
задача создать третий вход считывая импульсы (включения герконов) 2,5в и 5в. по их очередности определять направление считывания в+ или в- . при 150 импульсах значение должно быть 30,0 (эти показания уточним на месте по факту).
- Вложения
-
- Schematic_INDIKATOR-TRIM-LODKA_2026-06-03.png
- (97.38 КБ) 17 скачиваний
самое сложно - сделать просто
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
Отлично, потому что тогда ни Ваш, ни мой код не подходят даже для текущей схемы
Я соберу ночью это у себя и напишу новый, рабочий вариант, с входами для новых сигналов. Вопрос лишь что отображать от их поведения?
- Реклама
Re: датчик положения дроссельной заслонки
в предыдущем посту я описал функционал.
уточню вывод последней индикации - (длина фала). вывод этой индикации осуществлять на второй индикатор (ДАВЛЕНИЕ). активация вывода (т.е. переключение с режима "ДАВЛЕНИЕ" в режим "длина фала") происходит при появлении сигналов на входе "длина фала". переход в обратное состояние происходит при отсутствии сигналов на входе "длина фала" в течении 10 секунд.
уточню очень важный момент . скорость вывода индикации в режиме "ТРИМ" должна быть очень высокой. иначе фактическое состояние трима и индикация его не будут соответствовать. скорость считывания должна быть примерно 10-50 раз в секунду. а в режиме "ДАВЛЕНИЯ " наоборот - целесообразнее ее затормозить - иначе скачут цифры на индикаторе . думаю примерно 1 раз в 1-2 секунды.
уточню вывод последней индикации - (длина фала). вывод этой индикации осуществлять на второй индикатор (ДАВЛЕНИЕ). активация вывода (т.е. переключение с режима "ДАВЛЕНИЕ" в режим "длина фала") происходит при появлении сигналов на входе "длина фала". переход в обратное состояние происходит при отсутствии сигналов на входе "длина фала" в течении 10 секунд.
уточню очень важный момент . скорость вывода индикации в режиме "ТРИМ" должна быть очень высокой. иначе фактическое состояние трима и индикация его не будут соответствовать. скорость считывания должна быть примерно 10-50 раз в секунду. а в режиме "ДАВЛЕНИЯ " наоборот - целесообразнее ее затормозить - иначе скачут цифры на индикаторе . думаю примерно 1 раз в 1-2 секунды.
самое сложно - сделать просто
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
Ввёл настройку для этого, сможете сами подстроить. Но какое максимальное значение? Если 99, то можно добавить признак, что отображается именно этот счётчик: вращение верхнего квадратика на индикаторе.ЗАВ писал(а): Ср июн 03, 2026 08:56:45 при 150 импульсах значение должно быть 30,0 (эти показания уточним на месте по факту).
----
Пока восстановлено отображение дисплея (так как мне неизвестен тип, на всякий случай для обоих, с общим катодом и с общим анодом). Добавил несколько простеньких настроек: максимальные и минимальные значения на дисплеях, а также частоту. Это позволит самостоятельно подстроить под любой датчик, не обращаясь к программистам.
Текущее состояние работы приложено файлом и для удобства в спойлере.
Немного по-индусски, но так проще.
Всё это проверено на макетке.
То есть, на данный момент это то, что работает сейчас, плюс частично адаптированное для третьего датчика.
Спойлер
Код: Выделить всё
/*********** Настройки **********************************************************************************/
#define DISPLAY_COMMON_CATHODE //Дисплей с общим катодом
//#define DISPLAY_COMMON_ANODE //Дисплей с общим анодом
/* Максимальное отображаемое значение при необходимом напряжении равно L + (H - L) * 5 / V,
где H - отображаемое число при напряжении V, L - отображеемое число при напряжении 0.
* Например: для значений на дисплее 80.0 и 4.00 при напряжении 4.5 В
* HIGH_VALUE_DISLAY_TRIM = LOW_VALUE_DISLAY_TRIM + (800 - LOW_VALUE_DISLAY_TRIM) * 5 / 4.5 = 889
* HIGH_VALUE_DISLAY_PRESSURE = LOW_VALUE_DISLAY_PRESSURE + (400 - LOW_VALUE_DISLAY_PRESSURE) * 5 / 4.5 = 444
* Значения всегда должны быть из трёх цифр, если используется запятая, при этом она игнорируется при расчёте и устанавливается в DOT_TRIM и DOT_PRESSURE.
*
* LOW_VALUE_DISLAY_TRIM и LOW_VALUE_DISLAY_PRESSURE должны учитывать точку. То есть, если требуется отображение числа "2", при этом
* DOT_TRIM равен 1, то необходимо установить 20, иначе на дисплее будет "0.2" */
#define LOW_VALUE_DISLAY_TRIM 0 // Минимальное отображаемое значение "ТРИМ".
#define HIGH_VALUE_DISLAY_TRIM 889 // Максимальное отображаемое значение "ТРИМ" при сигнале 5 В.
#define DOT_TRIM 1 // Количество разрядов после запятой дисплея "ДАВЛЕНИЕ" (3 - запятая выключена).
#define FREQ_TRIM 2 // Период опроса в десятках миллисекунд датчика "ТРИМ" \
// значение 1...100, например: 1 = опрос 100 раз в секунлду, 100 = раз в секунду.
#define LOW_VALUE_DISLAY_PRESSURE 0 // Минимальное отображаемое значение "ДАВЛЕНИЕ".
#define HIGH_VALUE_DISLAY_PRESSURE 445 // Максимальное отображаемое значение "ДАВЛЕНИЕ" при сигнале 5 В.
#define DOT_PRESSURE 2 // Количество разрядов после запятой дисплея "ДАВЛЕНИЕ" (3 - запятая выключена).
#define FREQ_PRESSURE 100 // Период опроса в десятках миллисекунд датчика "ДАВЛЕНИЕ" \
// значение 1...100, например: 1 = опрос 100 раз в секунлду, 100 = раз в секунду.
#define IMPULS 1 // Количество импульсов, изменяющих счётчик на единицу
/*********** конец настроек пользователя **********************************************************************************/
#define CH_ADC_TRIM 1 // Канал АЦП датчика "ТРИМ".
#define CH_ADC_PRESSURE 2 // Канал АЦП датчика "ДАВЛЕНИЕ".
#define CH_ADC_COUNT 0 // Канал АЦП датчика "СЧЁТЧИК".
#define INDICATOR_1 0 // Смещение разрядов первого индикатора.
#define INDICATOR_2 3 // Смещение разрядов второго индикатора.
// Массивы сегментов, номер элемента массива соответсвует отображаемой цифре. Десятый элемент - пробел.
#ifdef DISPLAY_COMMON_CATHODE
const uint8_t Segments[11] = { 0xFC, /*0*/ 0x18, 0x6D, 0x3D, 0x99, 0xB5, 0xF5, 0x1C, 0xFD, 0xBD /*9*/, 0x00 };
#else
const uint8_t Segments[11] = { 0x03, /*0*/ 0xE7, 0x92, 0xC2, 0x66, 0x4A, 0x0A, 0xE3, 0x02, 0x42 /*9*/, 0xFF };
#endif
volatile uint8_t display[9] = { 0 }; // Дисплейный буфер. ЭЛЕМЕНТЫ 0...2 - первый индикатор, 3...5 - второй индикатор, 6...8 - третий индикатор.
volatile uint8_t currentDig = 0; // Текущий отображаемый разряд.
volatile uint8_t adcChannels[3] = { CH_ADC_TRIM, CH_ADC_PRESSURE, CH_ADC_COUNT}; // Каналы АЦП для датчиков 1...3 индикаторов 1...3
/******** Дисплей ************************************************************************************************************************/
// Функция преобразования числа и точки в сегменты дисплейного буфера для определённого индикатора.
void updatedisplay(uint16_t val, uint8_t dot, uint8_t indicator) {
// Выделение цифр из числа:
uint8_t d3 = (uint8_t)(val / 100); // сотни,
uint8_t d2 = (uint8_t)((val / 10) % 10); // десятки,
uint8_t d1 = (uint8_t)(val % 10); // единицы.
// Проверка на лишние нули слева:
if ((!d3) && (!d2) && (!d1)) { // если все три цифры - 0...
d3 = d2 = 11; // ... то они становятся пробелами,
dot = 3; // а точка не нужна при 0;
}
if ((!d3) && (dot != 2)) { // если крайний левый разряд не отделен точкой и равен 0...
d3 = 11; //... то он становится пробелом.
}
// Получение сегментов соответственно цифрам:
uint8_t seg3 = Segments[d3];
uint8_t seg2 = Segments[d2];
uint8_t seg1 = Segments[d1];
// Добавление точки к нужному разряду:
#ifdef DISPLAY_COMMON_CATHODE
if (dot == 2) seg3 |= 0x02;
if (dot == 1) seg2 |= 0x02;
if (dot == 0) seg1 |= 0x02;
#else
if (dot == 2) seg3 &= ~0x02;
if (dot == 1) seg2 &= ~0x02;
if (dot == 0) seg1 &= ~0x02;
#endif
// Обновление массива дисплея новыми данными:
cli();
display[indicator + 2] = seg1;
display[indicator + 1] = seg2;
display[indicator + 0] = seg3;
sei();
}
// Отображение разрядов индикаторов
ISR(TIMER2_OVF_vect) {
uint8_t seg = 0;
#ifdef DISPLAY_COMMON_CATHODE
PORTB |= 0x38; // Выключить все разряды первого индикатора
PORTC |= 0x38; // Выключить все разряды второго индикатора
#else
PORTB &= ~0x38; // Выключить все разряды первого индикатора
PORTC &= ~0x38; // Выключить все разряды второго индикатора
#endif
// бесконечный перебор шести разрядов
if (++currentDig > 5) {
currentDig = 0;
}
seg = display[currentDig];
PORTD = (PORTD & 0x03) | seg; // управление сегментами A...F (PD2-PD7)
PORTB = (PORTB & 0xFC) | (seg & 0x03); // управление сегментом G и точкой (PB0,PB1)
// включение текущего разряда
#ifdef DISPLAY_COMMON_CATHODE
if (currentDig < 3) {
PORTB &= ~(1 << (currentDig + 3));
} else {
PORTC &= ~(1 << (8 - currentDig));
}
#else
if (currentDig < 3) {
PORTB |= (1 << (currentDig + 3));
} else {
PORTC |= (1 << (8 - currentDig));
}
#endif
}
/******** АЦП ************************************************************************************************************************/
ISR(ADC_vect) {
static uint32_t sum[3] = { 0 };
static uint8_t count[3] = { 0 };
static uint8_t hz[3] = { 0 }; // Частота обновления
static uint8_t ch = 0; // Текущий канал
int8_t ready = -1; // флаг готовности данных
uint32_t val = 0;
sum[ch] += ADC; // Сохранение результата текущего канала
if (++count[ch] > 32) { // Усреднение после 32 измерений
count[ch] = 0;
val = sum[ch] >> 5;
sum[ch] = 0;
ready = ch;
if (hz[ch] < 255) hz[ch]++;
}
if (++ch > 2) { // Переключение на следующий канал
ch = 0;
}
ADMUX = (ADMUX & 0xF0) | adcChannels[ch]; // изменение канала в ADMUX (сохраняя REFS0)
// val = 921; // тест показаний дисплея при 4.5 В
switch (ready) {
case 0:
if (hz[0] >= FREQ_TRIM) {
hz[0] = 0;
val *= (HIGH_VALUE_DISLAY_TRIM - LOW_VALUE_DISLAY_TRIM);
updatedisplay((uint16_t)(LOW_VALUE_DISLAY_TRIM + val / 1023), DOT_TRIM, INDICATOR_1);
}
break;
case 1:
if (hz[1] >= FREQ_PRESSURE) {
hz[1] = 0;
val *= (HIGH_VALUE_DISLAY_PRESSURE - LOW_VALUE_DISLAY_PRESSURE);
updatedisplay((uint16_t)(LOW_VALUE_DISLAY_PRESSURE + val / 1023), DOT_PRESSURE, INDICATOR_2);
}
break;
case 2:
hz[2] = 0;
break;
default:
break;
}
ready = -1;
}
void setup() {
/** Порты */
DDRD = 0xFC; // выходы PD2...PD7 - A...F
DDRB = 0x3B; // выходы PB0, PB1 - G,H; PB3...PB5 - Dig1...Dig3 (displayTRIM)
DDRC = 0x38; // выходы PC3...PC5 - Dig4...Dig6 (displayPRESSURE)
#ifdef DISPLAY_COMMON_CATHODE
PORTB |= 0x38; // Выключить все разряды displayTRIM
PORTC |= 0x38; // Выключить все разряды displayPRESSURE
#else
PORTB &= ~0x38; // Выключить все разряды displayTRIM
PORTC &= ~0x38; // Выключить все разряды displayPRESSURE
#endif
/** ADC */
ADMUX = (1 << REFS0) | adcChannels[0]; // AVCC, канал первого датчика
ADCSRA = (1 << ADEN) | // Включить АЦП
(1 << ADIE) | // Разрешить прерывание по завершению
(1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // предделитель 128
// Free Running Mode
ADCSRB = 0;
ADCSRA |= (1 << ADATE) | (1 << ADSC);
/** TIM2 */
TCCR2A = 0;
TCCR2B = (1 << CS22) | (1 << CS20);
TIMSK2 |= (1 << TOIE2);
sei();
}
void loop() {
}
- Вложения
-
- sketch_20260604024833.zip
- (10.22 КБ) 3 скачивания
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
Исправил ошибку с АЦП, оказывается, оно бывает у клонов ардуин 12 бит
- Вложения
-
- sketch_20260604024833.zip
- (10.9 КБ) 4 скачивания
Re: датчик положения дроссельной заслонки
спасибо . расписано много и подробно . но для меня НЕпрограммиста мало что понятно (исключение- настройка индикации) . попробовать все собрать получится не раньше вечера понедельника. буду пробовать на макетке . результат отпишусь, если получится раньше. какой пин для счетчика ?
самое сложно - сделать просто
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
а какой удобно? он в любом случае будет настраиваемый.
и хватит ли значения 99?
Re: датчик положения дроссельной заслонки
уточните значения 99 - по входу или выходу счетчика? выход известен - 30. вход будет более 99 . думаю около 300 *2 уровня.
ввиду намотки фала внавал, при намотке, не факт , что значения вернуться в ноль. далее погрешность будет накапливаться. поэтому нужно сделать сброс счетчика в ноль , если значение по входу 5 и меньше и не меняются в течении 10 секунд.
уточню важный вопрос - на счетчик идут импульсы амплитудой 5в и 2-2,5в. (один геркон подключу через резистивный делитель) их в счетчике нужно разделить . и по началу счета 5в или 2в определять направление счета. мы правильно поняли друг друга? поэтому думаю целесообразно считать по 5в импульсу , а по 2в определять направление.
как поведет себя скетч , если будет остановка на герконе? не зависнет скетч?
вход счетчика напрашивается а0
ввиду намотки фала внавал, при намотке, не факт , что значения вернуться в ноль. далее погрешность будет накапливаться. поэтому нужно сделать сброс счетчика в ноль , если значение по входу 5 и меньше и не меняются в течении 10 секунд.
уточню важный вопрос - на счетчик идут импульсы амплитудой 5в и 2-2,5в. (один геркон подключу через резистивный делитель) их в счетчике нужно разделить . и по началу счета 5в или 2в определять направление счета. мы правильно поняли друг друга? поэтому думаю целесообразно считать по 5в импульсу , а по 2в определять направление.
как поведет себя скетч , если будет остановка на герконе? не зависнет скетч?
вход счетчика напрашивается а0
самое сложно - сделать просто
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
99 - отображаемое число на индикаторе. Вход может быть любым, в настройке будет указываться число импульсов на 1 единицу счётчика. Раз максимальное 30, то добавлю вращающийся квадратик, как признак того, что отображается счётчик, а не другое.
Время сброса счётчика будет настраиваться.
Направление счёта и пороги обоих уровней также будут настраиваться.
Если будет остановка на герконе, то это всего лишь вместо вечного 0 вечные 2.5 или 5. Никакой разницы. Счёт ведётся по смене состояний. Насколько мне известно, у геркона есть достаточно большой гистерезис, чтобы исключать ситуацию попадания в "дрожащее" состояние.
К вечеру понедельника будет готово.
Время сброса счётчика будет настраиваться.
Направление счёта и пороги обоих уровней также будут настраиваться.
Если будет остановка на герконе, то это всего лишь вместо вечного 0 вечные 2.5 или 5. Никакой разницы. Счёт ведётся по смене состояний. Насколько мне известно, у геркона есть достаточно большой гистерезис, чтобы исключать ситуацию попадания в "дрожащее" состояние.
К вечеру понедельника будет готово.
Re: датчик положения дроссельной заслонки
думаю , что по двум уровням сигнала, счетчик не сможет достоверно понять направление вращения, ведь не известно с какого места начнется отсчет. считаю, что нужно ставить 3 геркона , разделить их по напряжению 5, 3, 1,5в. для их включения использовать один магнит. это уменьшит точность до 0,3м. но этого будет достаточно. один магнит даст точное понимание последовательности включения , и значит и направления вращения. есть понимание как это программно организовать ?
самое сложно - сделать просто
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
Понял. Я думал, что выбор напряжения - это делает какой-то тумблер, то есть, пользователь, выбрав направления вращения, одновременно этим выбором установил амплитуду импульсов, и она всегда одна и та же и является информацией о направлении.
Если это два геркона 2.5 и 5, поочередно срабатывающих, то получить направление вращения всё равно возможно, при условии, что они стоят рядом, а скорость вращения всегда равномерна (более-менее):
предположим, что расстояние между ними 1/4 длины окружности, магнит один.
Тогда в одну сторону период T(2.5 -> 0 -> 5) равен 1/4, а в другую - 3/4 от времени оборота. И импульс - это когда три уровня сменились именно за 1/4 времени, а направление вращения - порядок смены.
Добавление третьего напряжения позволяет считать не по времени, а по порядку срабатывания, а также проще прикрепить несколько магнитов, что ускорит получение данных. И здесь преимущество, если вращение неравномерное. Минус - менее чёткое разделение сигнала, то есть, риск получения ошибки и потери части информации.
Программная реализация и того, и другого решения проста. Ресурсов у Arduino Nano ещё более 90%, можно и ещё что-то придумать.
Замечу, что если за одну операцию вращение всегда в одну сторону, притом счётчик между операциями сбрасывается, то достаточно лишь одного геркона.
Если это два геркона 2.5 и 5, поочередно срабатывающих, то получить направление вращения всё равно возможно, при условии, что они стоят рядом, а скорость вращения всегда равномерна (более-менее):
предположим, что расстояние между ними 1/4 длины окружности, магнит один.
Тогда в одну сторону период T(2.5 -> 0 -> 5) равен 1/4, а в другую - 3/4 от времени оборота. И импульс - это когда три уровня сменились именно за 1/4 времени, а направление вращения - порядок смены.
Добавление третьего напряжения позволяет считать не по времени, а по порядку срабатывания, а также проще прикрепить несколько магнитов, что ускорит получение данных. И здесь преимущество, если вращение неравномерное. Минус - менее чёткое разделение сигнала, то есть, риск получения ошибки и потери части информации.
Программная реализация и того, и другого решения проста. Ресурсов у Arduino Nano ещё более 90%, можно и ещё что-то придумать.
Замечу, что если за одну операцию вращение всегда в одну сторону, притом счётчик между операциями сбрасывается, то достаточно лишь одного геркона.
Re: датчик положения дроссельной заслонки
скорость вращения разная при сбросе высокая, при подборе раз в 5 ниже. меня терзают сомнения по быстродействию , дребезгу и помехи от вибрации (работа мотора при считывании будет только на холостой, на полном ходу вибрация ПРИЛИЧНАЯ - может как то ускорить деградацию геркона ?) . Я опасаюсь, что с тремя герконами нагородим систему, а ввиду вышеозвученных ограничений герконов, от них придется отказаться и ставить датчик холла, а направление брать с кнопок подъем / сброс +12в . технических вариантов много каким идти? с герконами огромный плюс , что нужен один провод и все! какое Ваше мнение?
самое сложно - сделать просто
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
Надо идти тем вариантом, где самая простая механическая реализация.
Если в месте расположения датчика помимо одного провода и общего, есть ещё + какого-то питания, то можно вообще что угодно придумать, и по одному проводу передать не только обороты, но и дополнительную информацию от дополнительных датчиков.
Насколько плохо живут герконы в условиях вибрации я не знаю, вообще практически нет опыта их эксплуатации, только в "тепличных" условиях сигнализаций.
Если в месте расположения датчика помимо одного провода и общего, есть ещё + какого-то питания, то можно вообще что угодно придумать, и по одному проводу передать не только обороты, но и дополнительную информацию от дополнительных датчиков.
Насколько плохо живут герконы в условиях вибрации я не знаю, вообще практически нет опыта их эксплуатации, только в "тепличных" условиях сигнализаций.
Re: датчик положения дроссельной заслонки
на лебедке есть и+ - и один свободный провод.пробуем с 3-мя герконами?
самое сложно - сделать просто
-
Zapolyarny
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Чт май 07, 2026 00:30:38
Re: датчик положения дроссельной заслонки
Давайте попробуем с ними. Не получится - никто ж не запрещает и что-то другое.


