На всякий случай еще раз напомню об инициализации переменных. 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 и исключит ошибки вычислений среднего, если количество итераций цикла захочется изменить
Заголовок сообщения: Re: Сигнал с индуктивного датчика оборотов(проблема c уровня
Добавлено: Чт июн 11, 2020 19:05:23
Прорезались зубы
Зарегистрирован: Вт мар 31, 2009 09:14:47 Сообщений: 204
Рейтинг сообщения:0
Это какой -то
Не думал, что какой то преобразователь частоты вызовет кучу вопросов. С ардуино наконец то разобрался. Поставил на выход ОУ полевик, и подтянул к питанию. Тем самым увеличив размах U вых до U пит. Все отлично заработало.
А вот схема с ОУ в реальной установке работать отказалась. R2=100k Rкор = 1.5K напряжение на входе ОУ = пила амплитудой 1В. на выходе Ноль.
Может Rкор уменьшить до нуля? Проблема тестировать сразу на столе. Тк сперва дома собираю, а затем несу для подключения в машину.
Заголовок сообщения: Re: Сигнал с индуктивного датчика оборотов(проблема c уровня
Добавлено: Чт июн 11, 2020 20:19:32
Прорезались зубы
Зарегистрирован: Вт мар 31, 2009 09:14:47 Сообщений: 204
Рейтинг сообщения:0
BlackKilkennyCat, дайте хоть одну ссылочку?? я что нашел, то только готовое за деньги.
хотя с другой стороны, уже почти готово. завтра схожу в магазин за подстроечным резистором и попробую с разным порогом сравнения. похоже в реальном включении оно иное, нежели эмулирует протеус.
Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России.
На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.
Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO
подробнее>>
ferio
Заголовок сообщения: Re: Сигнал с индуктивного датчика оборотов(проблема c уровня
Добавлено: Пт июн 12, 2020 10:52:40
Прорезались зубы
Зарегистрирован: Вт мар 31, 2009 09:14:47 Сообщений: 204
Рейтинг сообщения:0
не спорю, на MAX992* красивое решение. если не одержу убедительную победу нынешними средствами, возможно и заморочусь)
А вот схема с ОУ в реальной установке работать отказалась. 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 кГц
Кстати, в живом журнале Леонида Ивановича пробегала схема усилителя для таходатчика с кучкой теории и моделирования, настоятельно рекомендую почитать.
если уж применен ОУ или компаратор, то проще делать по схеме с плавающим уровнем (я на первой странице рисовал и схему и симуляцию)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 234
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения