Генератор сигналов датчиков коленчатого и распределительного валов двигателя
- Войдите на сайт для отправки комментариев
Как учебный проект, хотелось бы сделать генератор сигналов датчиков коленчатого и распределительного валов двигателя внутреннего сгорания, с управлением через serial port, для выявления неисправностей блоков управления двигателем в лабораторных условиях.
Сигнал датчика положения коленчатоговала (ДПКВ) имееет форму синусоиды, но на вход блока управления двигателем можно подавать и меандр, сигнал датчика положения распределительного вала тоже меандр но другой длительности и периодичности.
Вопросов много.
Я так понял, что передачу данных через serial port нужно вести в основном цикле а сигналы генерировать по таймеру? На картинке четко видно, что састота сигнала ДПКВ меняется, как это реализовать пока не знаю.
Имею в распоряжении arduino duo.
Про таймеры нашел вот такую статью https://habr.com/post/337430/
Про одновременную установку уровня сигнала на разных пинах нашел вот такой материал на зарубежном сайте https://arduino.stackexchange.com/a/12584 но не совсем понял как создавать битовую маску для того чтобы не перезаписывать весь порт.
Ну и может кому быдет полезно, нашел распиновку для arduino due http://forum.arduino.cc/index.php/topic,132130.0.html с картинками м желаемом формате.
Основной вопрос, как организовать архитектуру программы, для бесперебойной генерации сигналов, как я понял в arduino ide моногие функции занимают большое количество процессорного времени.
Ну и может кому быдет полезно, нашел распиновку для arduino due http://forum.arduino.cc/index.php/topic,132130.0.html с картинками м желаемом формате.
Молодец, что нашёл, это гораздо лучше, чем тупо спрашивать на форуме "где взять - в гугле нету", но забавно, что .... Вы читали "Похищение белого слона" Марка Твена? Так вот, эта распиновка спокойненько лежит здесь на этом форуме в прикреплённой "гвоздиком" теме - http://arduino.ru/forum/obshchii/pin-mapping-sootvetstvie-vyvodov-i-registrov#comment-32058
:))))
saskor, вам сначала не вопросы задавать нужно, а описать техническим языком задачу. Сначала частотно-временные характеристики сигнала, например "необходимо с выхода МК получить сигнал типа меандр амплитудой 5 вольт, частотой 10кГц в котором после каждых xx периодов на y периодов делается пауза с лог. 0 на выходе, и так по кругу бесконечно". В случае если необходимо генерировать 2 сигнала одновременно, нужно аналогично описать второй сигнал, указать есть ли между сигналами какая-либо синхронизация и зависимость, и если есть, то описать по каким принципам она происходит. Далее какими параметрами хотите управлять, почему через сериал, а не кнопками например. Дискретность управления параметрами. Допустимая точность установки. Например необходимо регулировать частоту вышеописанного сигнала от 1 кГц до 15 кГц с дискретностью не более 25 Гц, допустимая погрешность установки частоты не более +/- 100 Гц.
Теория.
коленчатый и распред валы вращаются полностью синхронно, только коленвал с вдвое большей частотой.
У датчика коленвала должна иметься метка верхней мертвой точки (или там за сколько-то градусов до нее), между ними импульсы за оборот.
Как там формируются метки вмт и сколько импульсов идет за оборот это, как понимаю, для кадого авто может быть свое.
вот почитайте, может что полезное увидете
я так понимаю через сериал порт вы хотите задавать обороты двигателя. Можно упростить и поставить потенциометр для установки нужных оборотов. Проблема в том , как сымитировать синусоидальный сигнал индуктивного датчика КВ. Понятно, что можно меандр подавать, а вот как быть с местом в сигнале, где идёт пропуск двух зубьев? как это прямоугольным сигналом обыграть?
а вообще моё видение такое, когда не разбираешься в таймерах. Берём скетч генератора сигналов, например от Dimax. Duty делаем 50%, типа симметричный меандр. Частоту (обороты в нашем случае) при этом мы можем настраивать. Подаём этот сигнал на пин int0 . Прерыванием считаем какой сейчас № импульса (читай зуб задающего диска датчика КВ). В зависимости от номеров импульсов (номера зуба) рулим другими пинами, создавая различные сигналы относительно как бы задающей частоты импульсов генератора сигнала. Рулить пинами лучше не digitalWrite, а прямым доступом к порту. Создаваемые различные сигналы это :
1. сигнал датчика коленвала теперь уже с пропуском зубьев
2. сигнал датчика распредвала
Мне кажется, если нужен синус, не следует пытаться выжать его из встроенных в контроллер таймеров. Если дорого AD9850, можно использовать что-то типа ICL8038.
Всем спасибо. Синус не надо. Таймеры очень помогли и прямой доступ к портам. Спасибо MaksVV.
Осталось через сериал порт настроить парсинг конфигурации сигналов, ну и запуска и остановки таймера.
Как доделаю отпишусь.