Сигнал с индуктивного датчика оборотов(проблема c уровнями)

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение BlackKilkennyCat »

На всякий случай еще раз напомню об инициализации переменных.
frequency_in_avg+=frequency_in_raw; выполняется сразу, но гарантированное значение frequency_in_avg принимает лишь потом. В самом начале оно неопределено, и значит, может изначально быть неопределенная погрешность.
Почему Вы написали int i=0; ? зачем i здесь присвоен нуль, но переменные выше оставлены без внимания? Пишите так:

Код: Выделить всё

int Htime = 0;       // целочисленная переменная для хранения времени высокого логического уровня
int Ltime = 0;       // целочисленная переменная для хранения времени низкого логического уровня
int frequency_in_avg = 0; // переменная для хранения частоты входной
и т.д.
Это минимизирует ошибки.
после цикла не нужно i = 0; если она больше нигде не используется, она обнуляется сама в начале цикла.

Если написать так (вынеся первую итерацию цикла в начало):

Код: Выделить всё

void loop()
{
	Htime=pulseIn(2,HIGH,100000);    // прочитать время высокого логического уровня
	Ltime=pulseIn(2,LOW,100000);     // прочитать время низкого логического уровня
	frequency_in_raw = 1000000/(Htime+Ltime);
	frequency_in_avg = frequency_in_raw;
	Serial.println(frequency_in_raw);
	for(i=0;i<2;i++)
    {
		Htime=pulseIn(2,HIGH,100000);    // прочитать время высокого логического уровня
		Ltime=pulseIn(2,LOW,100000);     // прочитать время низкого логического уровня
		frequency_in_avg += 1000000/(Htime+Ltime);
		Serial.println(frequency_in_raw);
    }
	frequency_in_avg_rez= frequency_in_avg / ( i+1);
	Serial.println(frequency_in_avg_rez);
	Serial.println(' ');
То это исключит неточность первого измерения из-за начального значения frequency_in_avg и исключит ошибки вычислений среднего, если количество итераций цикла захочется изменить
Меня здесь больше нет
Реклама
ferio
Прорезались зубы
Сообщения: 204
Зарегистрирован: Вт мар 31, 2009 09:14:47

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение ferio »

Это какой -то :shock: :shock: :shock:

Не думал, что какой то преобразователь частоты вызовет кучу вопросов.
С ардуино наконец то разобрался. Поставил на выход ОУ полевик, и подтянул к питанию. Тем самым увеличив размах U вых до U пит. Все отлично заработало.

А вот схема с ОУ в реальной установке работать отказалась.
Изображение
R2=100k
Rкор = 1.5K
напряжение на входе ОУ = пила амплитудой 1В.
на выходе Ноль.


Может Rкор уменьшить до нуля? Проблема тестировать сразу на столе. Тк сперва дома собираю, а затем несу для подключения в машину.
Реклама
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение BlackKilkennyCat »

[uquote="ferio",url="/forum/viewtopic.php?p=3853842#p3853842"]Не думал, что какой то преобразователь частоты вызовет кучу вопросов.[/uquote]
можно было просто взять готовое автомобильное решение. их куча, многие просто уже можно в классику записывать.
Меня здесь больше нет
ferio
Прорезались зубы
Сообщения: 204
Зарегистрирован: Вт мар 31, 2009 09:14:47

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение ferio »

BlackKilkennyCat, дайте хоть одну ссылочку?? я что нашел, то только готовое за деньги.

хотя с другой стороны, уже почти готово. завтра схожу в магазин за подстроечным резистором и попробую с разным порогом сравнения. похоже в реальном включении оно иное, нежели эмулирует протеус.
Реклама
Эиком - электронные компоненты и радиодетали
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение BlackKilkennyCat »

https://www.drive2.ru/l/8286978/
честно говоря, ща то же что-то немного нашлось, раньше (когда занимался авто-мото) было намного больше.
а вообще, лучше искать по "variable-reluctance sensor interface"
тогда может и такое найтись: https://www.maximintegrated.com/en/prod ... X9924.html

по приведенной ссылке на драйв2 схема, очень сильно похожа на ту, которая в отечественных блоках управления
Меня здесь больше нет
Реклама
ferio
Прорезались зубы
Сообщения: 204
Зарегистрирован: Вт мар 31, 2009 09:14:47

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение ferio »

не спорю, на MAX992* красивое решение.
если не одержу убедительную победу нынешними средствами, возможно и заморочусь)
Реклама
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение GoldenAndy »

А вот схема с ОУ в реальной установке работать отказалась.
Изображение
R2=100k
Rкор = 1.5K
напряжение на входе ОУ = пила амплитудой 1В.
на выходе Ноль.
на выходе Ноль. - Возможно из-за того, что LM358 не Rail-to-Rail ОУ ?
Попробуйте плюсовой вход ОУ подключить к делителю, подключенному к питалову и земле. Так, что бы на входе было порядка 2...2,5 вольт.
А сигнал с индуктивного датчика подать через разделительную емкость.

Добавлено after 1 hour 44 minutes 48 seconds:
Re: Сигнал с индуктивного датчика оборотов(проблема c уровнями)
В продолжение анализа предыдущей схемы.

Когда сигнал с датчика выше нуля (а неинвертирующий вход ОУ "сидит" по схеме на нуле через Rкор) - ОУ пытается на выходе сделать отрицательное напряжение, но не может, ибо минусовое питание ОУ - на земле.
Когда сигнал с датчика становится ниже нуля (и ниже потенциала на неинвертирующем входе) - теоретически ОУ должен выдать на выходе положительное напряжение. но не может, ибо сигнал входной становится ниже минусового питания ОУ.
Решается это дело созданием искусственной средней точки для ОУ и смещением всех сигналов на потенциал этой точки.

Накидал тут в Протеусе малость....
СпойлерИзображение
R3R4 - делитель питания, обеспечивает среднюю точку (подтяжку "+" входа ОУ) напряжением порядка 2 вольт.
R1R2 определяют коэффициент усиления ОУ, k = R1/R2 = 100/4.7 = ~21.3 раза.
Соответственно, что бы выходной сигнал имел амплитуду 4 вольта - на вход достаточно подать сигнал порядка 200 милливольт.
Конденсатор С1 - развязка входа по постоянному напряжению.
С2 - для повышения устойчивости ОУ (без него Протеус любит падать на ошибках симуляции)
Если найти стабилитроны D1D2 с напряжением стабилизации порядка 2.2 вольт - то амплитуда сигнала на выходе ОУ будет как раз до 5 вольт и ее можно подавать на вход МК без проблем (при напряжении питания ОУ 9 вольт).
Так же можно уменьшить R3 до 4.7кОм - тогда средняя точка ОУ будет порядка 1.12 вольт, что даст на выходе ОУ максимальное напряжение порядка 5.1 вольт. Но не следует забывать, что средняя точка зависит от напряжения питания 9 вольт и будет "плавать" при изменении этого напряжения, что может привести к напряжению на выходе ОУ, превышающем максимально допустимое входное для МК.
Что бы не иметь таких плясок с бубном - добавлен ограничитель выходного уровня D3R5, обеспечивающий сигнал для МК, не превышающий 4.7 вольт.

Да, еще для стабильности можно добавить конденсатор 0.1 мкф параллельно R3

Ниже - тестирование вышеприведенной схемы на различных частотах и амплитудах входного сигнала.
Желтый сигнал - входной с таходатчика, красный - вход ОУ, зеленый - выход на МК с ограничением напряжения.

Вход 500 мВ, 1 кГц
Изображение

Вход 1 В, 2 кГц
Изображение

Вход 4 В, 10 кГц
Изображение


Кстати, в живом журнале Леонида Ивановича пробегала схема усилителя для таходатчика с кучкой теории и моделирования, настоятельно рекомендую почитать.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение Ivanoff-iv »

если уж применен ОУ или компаратор, то проще делать по схеме с плавающим уровнем (я на первой странице рисовал и схему и симуляцию)
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
ferio
Прорезались зубы
Сообщения: 204
Зарегистрирован: Вт мар 31, 2009 09:14:47

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение ferio »

GoldenAndy, спасибо за ответ.
Преобразователь частоты я все же завершил. Сейчас все работает корректно.
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение GoldenAndy »

Ivanoff-iv, Схем можно разных. Я дал рекомендации по той, что не заработала в железе у ferio.

ferio, Покажите народу схему :)
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
ferio
Прорезались зубы
Сообщения: 204
Зарегистрирован: Вт мар 31, 2009 09:14:47

Re: Сигнал с индуктивного датчика оборотов(проблема c уровня

Сообщение ferio »

СпойлерИзображение
на схеме только стабилитрон D4 развернуть нужно.
Ответить

Вернуться в «Умные мысли»