Страница 1 из 2
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 03 янв 2024, 15:08
t405
Написал скрипт для ардуино нано для захвата двух шим сигналов и формирования их произведения на вывод. Возникла проблема с детекцией и определением duty в замкнутом на gnd и висящем в воздухе входе. Определяется не стабильно и значения могут путаться, сам уже не знаю куда смотреть. Захватываю сигнал с частотой 20-100гц, отладка сыпется в уарт. Помогите свежим взглядом.
Захват ШИМ сигнала, проблема с 0 и 100
Добавлено: 03 янв 2024, 17:57
kulibinsvv
ШИМ равный 0% - это логический 0,
100% - логическая 1,
открытый вход - недопустимая ситуация.
Эти состояния вы должны контролировать и обрабатывать в программе. Ещё лучше обслуживать аппаратно.
Захват ШИМ сигнала, проблема с 0 и 100
Добавлено: 03 янв 2024, 23:13
t405
kulibinsvv писал(а): 03 янв 2024, 17:57
ШИМ равный 0% - это логический 0,
100% - логическая 1,
открытый вход - недопустимая ситуация.
Эти состояния вы должны контролировать и обрабатывать в программе. Ещё лучше обслуживать аппаратно.
Если я делаю подтяжку на плюс, то на входе висит +5в, мне нужно, чтобы это определялось ШИМ0(инвертировано), когда я замыкаю на массу, мне нужно ШИМ100. Так вот, даже в положении замкнуто на массу он не всегда корректно определяет шим 100. Пытаюсь понять, как корректно обработать эти значения. При старте МК ШИМ100 вне зависимости в воздухе висит пин или на массе. Подскажите, как обработать эти состояния?
Захват ШИМ сигнала, проблема с 0 и 100
Добавлено: 03 янв 2024, 23:42
SerOv
А два аналогового переключателя Инверсия K1 и Инверсия K2. Разве могут работать без подключенного входа S?
[spoiler]
capture_001_03012024_233628.jpg
[/spoiler]
Захват ШИМ сигнала, проблема с 0 и 100
Добавлено: 05 янв 2024, 01:08
t405
SerOv писал(а): 03 янв 2024, 23:42
А два аналогового переключателя Инверсия K1 и Инверсия K2. Разве могут работать без подключенного входа S?
[spoiler]capture_001_03012024_233628.jpg[/spoiler]
если ставлю инвертированный вход и не подключаю его, то работает, я так понимаю, но умолчанию там висит false
Захват ШИМ сигнала, проблема с 0 и 100
Добавлено: 05 янв 2024, 12:44
rw6cm
t405 писал(а): 03 янв 2024, 15:08
Возникла проблема с детекцией и определением duty в замкнутом на gnd и висящем в воздухе входе.
Определяется не стабильно и значения могут путаться
Здесь выход повторителя скоростного счетчика не корректно определяет состояние входа.
Как вариант в место его использовать дополнительный цифровой вход (например запараллелить D2-D6)
C D6 (включить в нем анти дребезг или поставить за ним TOF) взять сигнал на свитч (0-100)
Захват ШИМ сигнала, проблема с 0 и 100
Добавлено: 05 янв 2024, 21:10
t405
rw6cm писал(а): 05 янв 2024, 12:44
t405 писал(а): 03 янв 2024, 15:08
Возникла проблема с детекцией и определением duty в замкнутом на gnd и висящем в воздухе входе.
Определяется не стабильно и значения могут путаться
Здесь выход повторителя скоростного счетчика не корректно определяет состояние входа.
Как вариант в место его использовать дополнительный цифровой вход (например запараллелить D2-D6)
C D6 (включить в нем анти дребезг или поставить за ним TOF) взять сигнал на свитч (0-100)
А некорректное определение входа это баг программы? может можно исправить блок, чтобы он корректно определял?
Захват ШИМ сигнала, проблема с 0 и 100
Добавлено: 06 янв 2024, 08:00
rw6cm
t405 писал(а): 05 янв 2024, 21:10
А некорректное определение входа это баг программы? может можно исправить блок, чтобы он корректно определял?
Нет, это не баг. Скоростной счетчик работает на прерываниях, а этот метод не определяет состояние пина, он следит лишь за нужными изменениями на нем. Если вдумчиво почитаете описание этого выхода ("выход "IV" на котором будут дублироваться
импульс поступающие на выбранный вход") то поймете, что он для логики вашей программы не надежный вариант.
Захват ШИМ сигнала, проблема с 0 и 100
Добавлено: 13 фев 2024, 17:28
t405
Проблема с детекцией 0 и 100 решена через параллельные входы. выяснилась еще одна проблема, что детекция шим сигнала плавает, из-за чего я не могу корректно и стабильно его считывать, пробовал использовать фильтры, но они не помогли, подскажите, может я что-то делаю не так? Считываю ШИМ 95%(duty1), получаю следующее:
Офтопик
F1 78 duty1 94 P1 0.63 N1 12.11 1 F2 89 duty2 73 P2 2.96 N2 8.23 1 mPWM 71.40
F1 78 duty1 55 P1 0.63 N1 12.11 1 F2 80 duty2 88 P2 1.46 N2 10.93 1 mPWM 74.31
F1 78 duty1 19 P1 0.62 N1 12.11 1 F2 82 duty2 85 P2 1.73 N2 10.36 1 mPWM 73.96
F1 78 duty1 95 P1 4.81 N1 7.93 1 F2 79 duty2 93 P2 0.81 N2 11.83 1 mPWM 78.35
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 91 P2 1.11 N2 11.49 1 mPWM 77.86
F1 78 duty1 95 P1 0.62 N1 12.11 1 F2 92 duty2 79 P2 2.23 N2 8.58 1 mPWM 82.57
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 80 duty2 92 P2 0.98 N2 11.39 1 mPWM 82.34
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 91 P2 1.08 N2 11.49 1 mPWM 79.89
F1 78 duty1 94 P1 0.63 N1 12.11 1 F2 78 duty2 94 P2 0.72 N2 11.99 1 mPWM 79.83
F1 78 duty1 87 P1 0.63 N1 12.11 1 F2 78 duty2 93 P2 0.81 N2 11.87 1 mPWM 79.82
F1 111 duty1 95 P1 0.63 N1 8.33 1 F2 87 duty2 77 P2 2.55 N2 8.95 1 mPWM 70.06
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 81 duty2 87 P2 1.58 N2 10.74 1 mPWM 69.57
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 91 P2 1.08 N2 11.57 1 mPWM 77.22
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 78 duty2 94 P2 0.73 N2 11.99 1 mPWM 77.15
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 81 duty2 88 P2 1.36 N2 10.92 1 mPWM 71.32
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 93 P2 0.76 N2 11.89 1 mPWM 76.81
F1 142 duty1 95 P1 0.63 N1 6.38 1 F2 82 duty2 90 P2 1.17 N2 11.01 1 mPWM 79.21
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 81 duty2 87 P2 1.55 N2 10.70 1 mPWM 77.84
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 91 P2 1.08 N2 11.49 1 mPWM 77.80
F1 78 duty1 90 P1 0.63 N1 12.11 1 F2 79 duty2 89 P2 1.32 N2 11.21 1 mPWM 81.74
F1 170 duty1 95 P1 0.63 N1 5.22 1 F2 79 duty2 94 P2 0.74 N2 11.87 1 mPWM 82.53
F1 78 duty1 5 P1 3.85 N1 8.89 1 F2 83 duty2 82 P2 2.09 N2 9.92 1 mPWM 71.06
F1 75 duty1 95 P1 0.63 N1 12.59 1 F2 81 duty2 87 P2 1.49 N2 10.84 1 mPWM 69.85
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 82 duty2 84 P2 1.90 N2 10.23 1 mPWM 74.25
F1 78 duty1 59 P1 0.63 N1 12.11 1 F2 79 duty2 90 P2 1.24 N2 11.34 1 mPWM 74.77
F1 78 duty1 95 P1 3.72 N1 9.02 1 F2 79 duty2 90 P2 1.19 N2 11.35 1 mPWM 73.17
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 89 P2 1.26 N2 11.31 1 mPWM 73.93
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 89 P2 1.27 N2 11.38 1 mPWM 80.46
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 85 duty2 80 P2 2.33 N2 9.36 1 mPWM 80.37
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 92 P2 0.93 N2 11.62 1 mPWM 76.81
F1 78 duty1 62 P1 0.61 N1 12.13 1 F2 83 duty2 83 P2 1.92 N2 10.05 1 mPWM 78.44
F1 172 duty1 62 P1 0.63 N1 5.17 1 F2 82 duty2 90 P2 1.20 N2 10.92 1 mPWM 75.04
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 82 duty2 86 P2 1.60 N2 10.55 1 mPWM 71.40
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 80 duty2 87 P2 1.51 N2 10.98 1 mPWM 76.42
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 84 duty2 79 P2 2.37 N2 9.42 1 mPWM 73.20
F1 78 duty1 92 P1 0.63 N1 12.11 1 F2 80 duty2 89 P2 1.34 N2 11.14 1 mPWM 72.62
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 91 P2 1.08 N2 11.49 1 mPWM 72.19
F1 78 duty1 50 P1 0.63 N1 12.11 1 F2 79 duty2 90 P2 1.13 N2 11.45 1 mPWM 74.14
F1 78 duty1 95 P1 4.66 N1 8.08 1 F2 84 duty2 81 P2 2.18 N2 9.71 1 mPWM 77.01
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 86 duty2 76 P2 2.74 N2 8.81 1 mPWM 77.81
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 91 P2 1.06 N2 11.45 1 mPWM 78.23
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 79 duty2 90 P2 1.15 N2 11.35 1 mPWM 72.98
F1 78 duty1 21 P1 1.30 N1 11.44 1 F2 95 duty2 85 P2 1.56 N2 8.94 1 mPWM 73.08
F1 78 duty1 95 P1 9.49 N1 3.25 1 F2 81 duty2 87 P2 1.55 N2 10.72 1 mPWM 71.33
F1 78 duty1 95 P1 0.63 N1 12.11 1 F2 83 duty2 85 P2 1.73 N2 10.32 1 mPWM 73.12
F1 78 duty1 88 P1 0.63 N1 12.10 1 F2 89 duty2 72 P2 3.07 N2 8.05 1 mPWM 68.76
F1 78 duty1 20 P1 0.63 N1 12.11 1 F2 83 duty2 83 P2 2.02 N2 9.89 1 mPWM 69.93
F1 78 duty1 95 P1 9.58 N1 3.16 1 F2 85 duty2 87 P2 1.47 N2 10.27 1 mPWM 75.51
Периодически провалы по duty...
Прикреплю текущий файл flprog, подскажите, у кого какие идеи?
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 17 фев 2024, 03:03
t405
Нашел похожую проблему в другом форуме, подскажите, как реже считывать сигнал шим, чтобы у МК было время для других операций?
https://community.alexgyver.ru/threads/ ... inoj.8019/
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 18 фев 2024, 00:48
t405
Удалил запись и чтение переменных лишних, при запуске контроллера некоторое время считывает корректно потом начинает периодически лагать. Не знаю, в какую сторону еще смотреть.
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 18 фев 2024, 09:54
rw6cm
t405 писал(а): 18 фев 2024, 00:48
Не знаю, в какую сторону еще смотреть.
Тяжело советовать когда нет ТЗ.
Что это будет? и шимы межу собой будут гулять от 20 до 100Гц?
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 18 фев 2024, 12:59
t405
rw6cm писал(а): 18 фев 2024, 09:54
t405 писал(а): 18 фев 2024, 00:48
Не знаю, в какую сторону еще смотреть.
Тяжело советовать когда нет ТЗ.
Что это будет? и шимы межу собой будут гулять от 20 до 100Гц?
2 шим сигнала с ЭБУ двигателя заданы с частотой 78гц, заполнение от 0 до 100, мне нужно их корректно считать(D2, D3)(D4 и D5 использую для определения 0 и 100 шим), перемножить значение заполнения (%pwm1 * %pwm2)/100 и выдать результат на пин(D6) с частотой ~78гц.
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 19 фев 2024, 10:57
rw6cm
t405 писал(а): 18 фев 2024, 12:59
2 шим сигнала с ЭБУ двигателя заданы с частотой 78гц, заполнение от 0 до 100,
перемножить значение заполнения (%pwm1 * %pwm2)/100 и выдать результат на пин(D6) с частотой ~78гц.
Частота 78гц = 12.8мс
Заполнение от 0 до 100% 12.8/100= 1% = 128мкс.
Чтобы на пин(D6) "нанки" генератор выдал импульсы 128мкс с частотой ~78гц, надо что бы цикл программы был меньше 128мкс.
Для этого: про дисплей, сом порт, текст, и тд (а также куче ваших фильтров) можно забыть.
В проекте нужна только хорошо продуманная логика, и ни чего лишнего.
Настройка по анализатору, "ослику". Тогда возможно что то и получится.
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 19 фев 2024, 11:33
t405
rw6cm писал(а): 19 фев 2024, 10:57
t405 писал(а): 18 фев 2024, 12:59
2 шим сигнала с ЭБУ двигателя заданы с частотой 78гц, заполнение от 0 до 100,
перемножить значение заполнения (%pwm1 * %pwm2)/100 и выдать результат на пин(D6) с частотой ~78гц.
Частота 78гц = 12.8мс
Заполнение от 0 до 100% 12.8/100= 1% = 128мкс.
Чтобы на пин(D6) "нанки" генератор выдал импульсы 128мкс с частотой ~78гц, надо что бы цикл программы был меньше 128мкс.
Для этого: про дисплей, сом порт, текст, и тд (а также куче ваших фильтров) можно забыть.
В проекте нужна только хорошо продуманная логика, и ни чего лишнего.
Настройка по анализатору, "ослику". Тогда возможно что то и получится.
Т.е. провалы при считывании шим на d2 и d3 из-за выхода на d6?
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 19 фев 2024, 11:38
rw6cm
t405 писал(а): 19 фев 2024, 11:33
Т.е. провалы при считывании шим на d2 и d3 из-за выхода на d6?
из за большого цикла программы
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 19 фев 2024, 14:00
t405
rw6cm писал(а): 19 фев 2024, 11:38
t405 писал(а): 19 фев 2024, 11:33
Т.е. провалы при считывании шим на d2 и d3 из-за выхода на d6?
из за большого цикла программы
Спасибо, буду стараться оптимизировать
Еще вопрос, если взять stm в размере платы нано, это решит проблему?
Отправлено спустя 1 час 13 минут 5 секунд:
Убрал все лишнее, как еще оптимальнее сделать не знаю, пойду тестировать ))
если еще будут идеи как ускорить, буду очень благодарен
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 19 фев 2024, 14:13
kipiaxxx
Я измеряю ШИМ-сигнал (30...300 Гц) скоростным счетчиком иначе и проблем нет.
тест ШИМ.jpg
Скоростной счетчик настроен на измерение длительности импульса PDP и паузы PDN.
Далее простая математика: PDP* умножается на 10000 (для получения макс. высокой разрешающей способности)
и делится на сумму PDN + PDP.
Все вычисления в интегер или лонгинтегер (как более быстрые).
Во флоат переходим только в самом конце всех вычислений, причем умножением (но не делением)!
Фильтры добавлять по вкусу.
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 19 фев 2024, 18:59
rw6cm
t405 писал(а): 19 фев 2024, 14:00
будут идеи как ускорить,
mPWM с ЭБУ.flp
на счет шим 0 и 100% быть не должно. Может быть 0.000...1% или 99.9999...
А вообще для какой цели нужны эти проценты?
Без них можно проще.
2024_02_19_19_53_13_FLProg_7.3.8.png
Захват ШИМ сигнала, проблема с 0 и 100, стабильность определения duty ШИМ
Добавлено: 19 фев 2024, 22:29
t405
kipiaxxx писал(а): 19 фев 2024, 14:13
Я измеряю ШИМ-сигнал (30...300 Гц) скоростным счетчиком иначе и проблем нет.
тест ШИМ.jpg
Скоростной счетчик настроен на измерение длительности импульса PDP и паузы PDN.
Далее простая математика: PDP* умножается на 10000 (для получения макс. высокой разрешающей способности)
и делится на сумму PDN + PDP.
Все вычисления в интегер или лонгинтегер (как более быстрые).
Во флоат переходим только в самом конце всех вычислений, причем умножением (но не делением)!
Фильтры добавлять по вкусу.
В Вашей схеме не хватает детектора 0 и 100%. Исключил из схемы деления по максимуму, больше не знаю где урезать код. Все равно периодически подсыпает неверными значениями.
rw6cm писал(а): 19 фев 2024, 18:59
t405 писал(а): 19 фев 2024, 14:00
будут идеи как ускорить,
mPWM с ЭБУ.flp
на счет шим 0 и 100% быть не должно. Может быть 0.000...1% или 99.9999...
А вообще для какой цели нужны эти проценты?
Без них можно проще.
2024_02_19_19_53_13_FLProg_7.3.8.png
Красивая схема, если отказаться от 0 и 100%. У меня ШИМ задается с шагом 1% в принципе могу поставить везде от 1 до 99, критично на работоспособность сказаться не должно, если только провод не отвалится и в воздухе не повиснет.
Завтра опробую самую простую схему, если она будет работать, то ее и оставлю, без 0, 100 и диагностики в уарт.
Отправлено спустя 22 минуты 22 секунды:
t405 писал(а): 19 фев 2024, 22:07
kipiaxxx писал(а): 19 фев 2024, 14:13
Я измеряю ШИМ-сигнал (30...300 Гц) скоростным счетчиком иначе и проблем нет.
тест ШИМ.jpg
Скоростной счетчик настроен на измерение длительности импульса PDP и паузы PDN.
Далее простая математика: PDP* умножается на 10000 (для получения макс. высокой разрешающей способности)
и делится на сумму PDN + PDP.
Все вычисления в интегер или лонгинтегер (как более быстрые).
Во флоат переходим только в самом конце всех вычислений, причем умножением (но не делением)!
Фильтры добавлять по вкусу.
В Вашей схеме не хватает детектора 0 и 100%. Исключил из схемы деления по максимуму, больше не знаю где урезать код. Все равно периодически подсыпает неверными значениями.
rw6cm писал(а): 19 фев 2024, 18:59
t405 писал(а): 19 фев 2024, 14:00
будут идеи как ускорить,
mPWM с ЭБУ.flp
на счет шим 0 и 100% быть не должно. Может быть 0.000...1% или 99.9999...
А вообще для какой цели нужны эти проценты?
Без них можно проще.
2024_02_19_19_53_13_FLProg_7.3.8.png
Красивая схема, если отказаться от 0 и 100%. У меня ШИМ задается с шагом 1% в принципе могу поставить везде от 1 до 99, критично на работоспособность сказаться не должно, если только провод не отвалится и в воздухе не повиснет.
Завтра опробую самую простую схему, если она будет работать, то ее и оставлю, без 0, 100 и диагностики в уарт.
Подскажите, замена нано на stm32 упростила бы задачу или подобные операции сложные для данных устройств?