ШИМ на GyverPWM

Hасширенная генерация ШИМ на Arduino

Пользовательские блоки ПИД регуляторов, прочих регуляторов и для работы с ШИМ выходами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

ШИМ на GyverPWM

#1

Сообщение AlexCrane » 19.05.2021{, 21:10}

Блоки расширенной генерации ШИМ на библиотеке GyverPWM

Поддерживаемые платформы: платы на ATmega328/168 (Arduino Nano, UNO, Pro Mini)
    GyverPWM.png
    GyverPWM.png (2.51 КБ) 5833 просмотра
      Полное описание возможностей
      https://alexgyver.ru/gyverpwm/

      Используемые библиотеки (в блок не интегрированы, скачивать по ссылкам ниже):
      https://github.com/AlexGyver/GyverLibs/ ... verPWM.zip

      Блоки бета-версия: Исправления ошибок Исправление ошибок в блоке PWM_Resolution

      Обозначения:
      _|¯ - постоянная подача true, отработка по переднему фронту
      _|_ - Подача сигнала через RTrig на один цикл

      Описание входов и выходов добавлю позже если будут вопросы...

      Блоки не тестировал, просто упаковал в блоки. Если испытаете и отпишитесь буду благодарен
      Если блок понравился, можете отблагодарить...
      Последний раз редактировалось AlexCrane 27.10.2021{, 22:34}, всего редактировалось 4 раза.
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      Аватара пользователя
      Vuktor
      Сержант
      Сообщения: 237
      Зарегистрирован: 11.04.2021{, 14:44}
      Репутация: 12
      Имя: Vuktor

      ШИМ на GyverPWM

      #2

      Сообщение Vuktor » 19.05.2021{, 21:23}

      :smile152:

      Аватара пользователя
      Di123
      Капитан
      Сообщения: 828
      Зарегистрирован: 03.11.2018{, 19:38}
      Репутация: 29
      Имя: Дмитрий

      ШИМ на GyverPWM

      #3

      Сообщение Di123 » 28.05.2021{, 07:48}

      ошибка с блоком выдаёт
      Arduino: 1.8.13 (Windows 10), Плата:"Arduino Uno"

      C:\Users\User\AppData\Local\Temp\flprog\pr21\pr21.ino: In function 'void setup()':

      pr21:166:21: error: expected primary-expression before ')' token

      PWM_prescaler(3,);

      ^

      Несколько библиотек найдено для "OneWire.h"

      Используется: c:\PortableFLProg_7-3-4_Win64\ideV6\portable\sketchbook\libraries\OneWire

      Не используется: c:\PortableFLProg_7-3-4_Win64\ideV6\libraries\OneWire

      exit status 1

      expected primary-expression before ')' token



      Этот отчёт будет иметь больше информации с
      включенной опцией Файл -> Настройки ->
      "Показать подробный вывод во время компиляции"
      Отправлено спустя 3 минуты 47 секунд:
      1.rar
      (255.44 КБ) 46 скачиваний
      Отправлено спустя 59 секунд:
      я так понял на дути мы подаём число из таблицы для выбора частоты ?
      2021-05-28_115256.png
      2021-05-28_115256.png (869 байт) 2115 просмотров

      Аватара пользователя
      AlexCrane
      Капитан
      Сообщения: 895
      Зарегистрирован: 20.10.2017{, 13:22}
      Репутация: 294
      Откуда: Ульяновск
      Имя: Александр

      ШИМ на GyverPWM

      #4

      Сообщение AlexCrane » 28.05.2021{, 08:57}

      Di123, Спасибо за тестирование. Исправил. Качать в шапке viewtopic.php?f=89&t=7389&p=103838#p103838
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      Аватара пользователя
      Di123
      Капитан
      Сообщения: 828
      Зарегистрирован: 03.11.2018{, 19:38}
      Репутация: 29
      Имя: Дмитрий

      ШИМ на GyverPWM

      #5

      Сообщение Di123 » 27.06.2021{, 06:27}

      на ресолутион в паскорект на пине 3 ничего не работает

      2021-06-27_102510.png

      дрон
      Рядовой
      Сообщения: 94
      Зарегистрирован: 09.11.2017{, 19:25}
      Репутация: 2
      Откуда: Москва
      Имя: Андрей

      ШИМ на GyverPWM

      #6

      Сообщение дрон » 27.06.2021{, 10:43}

      Здравствуйте Александр и форумчане, вот бы еще блок для серво на библиотеке SERVOSMOOTH(https://alexgyver.ru/servosmooth/ ). Прошу прощения если пишу не в той теме.

      Аватара пользователя
      Di123
      Капитан
      Сообщения: 828
      Зарегистрирован: 03.11.2018{, 19:38}
      Репутация: 29
      Имя: Дмитрий

      ШИМ на GyverPWM

      #7

      Сообщение Di123 » 27.06.2021{, 11:48}

      av, запятая не помогает

      Аватара пользователя
      AlexCrane
      Капитан
      Сообщения: 895
      Зарегистрирован: 20.10.2017{, 13:22}
      Репутация: 294
      Откуда: Ульяновск
      Имя: Александр

      ШИМ на GyverPWM

      #8

      Сообщение AlexCrane » 27.06.2021{, 20:09}

      Di123 писал(а):
      27.06.2021{, 06:27}
      на ресолутион в паскорект на пине 3 ничего не работает
      Исправил
      av писал(а):
      27.06.2021{, 10:00}
      Обычная ошибка (торопимся при создании блока).
      В данном случае да. Но всплыли еще некоторые особенности редактора блоков, не нравятся ему некоторые слова в именах входов ...
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      Аватара пользователя
      Di123
      Капитан
      Сообщения: 828
      Зарегистрирован: 03.11.2018{, 19:38}
      Репутация: 29
      Имя: Дмитрий

      ШИМ на GyverPWM

      #9

      Сообщение Di123 » 18.07.2021{, 13:01}

      в плескареле наблюдается при плавном нарастании шим на светодиоде некий всплеск яркости под максимум в течении около милисикунды такая некая вспышка на 10 битах а на 8 битах всё норм и при убывании она же повторятся снова

      2021-07-18_164701.png
      2021-07-18_164701.png (10.99 КБ) 1934 просмотра

      меняю блок на ресолютион выставляю теже настройки и всё норм на 10 битах а так же на 8 и 12 всё плавно загорается и гаснет как надо

      2021-07-18_164719.png
      2021-07-18_164719.png (10.55 КБ) 1934 просмотра

      меняю блоки обратно и опять вспышка на плескареле
      возвращаю обратно ресолютион всё норм
      :smile37:
      2.mp4
      (3.95 МБ) 58 скачиваний

      Аватара пользователя
      AlexCrane
      Капитан
      Сообщения: 895
      Зарегистрирован: 20.10.2017{, 13:22}
      Репутация: 294
      Откуда: Ульяновск
      Имя: Александр

      ШИМ на GyverPWM

      #10

      Сообщение AlexCrane » 18.07.2021{, 13:24}

      Di123, Может дело все-таки в проекте, можно посмотреть?
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      Аватара пользователя
      Di123
      Капитан
      Сообщения: 828
      Зарегистрирован: 03.11.2018{, 19:38}
      Репутация: 29
      Имя: Дмитрий

      ШИМ на GyverPWM

      #11

      Сообщение Di123 » 18.07.2021{, 13:36}

      но в проекте ничего не меняется кроме вашего блоков

      1.rar
      (263.94 КБ) 47 скачиваний

      Аватара пользователя
      ingener
      Лейтенант
      Сообщения: 556
      Зарегистрирован: 14.10.2018{, 00:26}
      Репутация: 20
      Имя: Андрей

      ШИМ на GyverPWM

      #12

      Сообщение ingener » 15.09.2021{, 11:50}

      Почему-то не добавляется библиотека в скетче (добавить ZIP библиотеку) - выдает текст в IDE, в списке она не появляется

      Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: MALFORMED
      at java.util.zip.ZipCoder.toString(ZipCoder.java:58)
      at java.util.zip.ZipFile.getZipEntry(ZipFile.java:583)
      at java.util.zip.ZipFile.access$900(ZipFile.java:60)
      at java.util.zip.ZipFile$ZipEntryIterator.next(ZipFile.java:539)
      at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:514)
      at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:495)
      at processing.app.tools.ZipDeflater.deflate(ZipDeflater.java:41)
      at processing.app.Base.handleAddLibrary(Base.java:2414)
      at processing.app.Base$6.actionPerformed(Base.java:1124)
      at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
      at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
      at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
      at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
      at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
      at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:842)
      at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:886)
      at java.awt.Component.processMouseEvent(Component.java:6539)
      at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
      at java.awt.Component.processEvent(Component.java:6304)
      at java.awt.Container.processEvent(Container.java:2239)
      at java.awt.Component.dispatchEventImpl(Component.java:4889)
      at java.awt.Container.dispatchEventImpl(Container.java:2297)
      at java.awt.Component.dispatchEvent(Component.java:4711)
      at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
      at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
      at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
      at java.awt.Container.dispatchEventImpl(Container.java:2283)
      at java.awt.Window.dispatchEventImpl(Window.java:2746)
      at java.awt.Component.dispatchEvent(Component.java:4711)
      at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
      at java.awt.EventQueue.access$500(EventQueue.java:97)
      at java.awt.EventQueue$3.run(EventQueue.java:709)
      at java.awt.EventQueue$3.run(EventQueue.java:703)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
      at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
      at java.awt.EventQueue$4.run(EventQueue.java:733)
      at java.awt.EventQueue$4.run(EventQueue.java:731)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

      Аватара пользователя
      AlexCrane
      Капитан
      Сообщения: 895
      Зарегистрирован: 20.10.2017{, 13:22}
      Репутация: 294
      Откуда: Ульяновск
      Имя: Александр

      ШИМ на GyverPWM

      #13

      Сообщение AlexCrane » 27.10.2021{, 22:37}

      Исправил блоки в шапке.
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      Аватара пользователя
      Di123
      Капитан
      Сообщения: 828
      Зарегистрирован: 03.11.2018{, 19:38}
      Репутация: 29
      Имя: Дмитрий

      ШИМ на GyverPWM

      #14

      Сообщение Di123 » 15.11.2021{, 17:11}

      2021-11-15_203630.png
      2021-11-15_203630.png (1.5 КБ) 1677 просмотров
      конфликт.flp
      (6.96 МБ) 35 скачиваний

      ваш блок невыдаёт шим если использовать вачдог

      Аватара пользователя
      AlexCrane
      Капитан
      Сообщения: 895
      Зарегистрирован: 20.10.2017{, 13:22}
      Репутация: 294
      Откуда: Ульяновск
      Имя: Александр

      ШИМ на GyverPWM

      #15

      Сообщение AlexCrane » 15.11.2021{, 18:05}

      Di123, А вот тут непонятно чей баг, похоже на баг редактора.
      Лечится легко. Я давно для себя взял за правило кусок кода в новом редакторе заканчивать переводом строки (Enter), иначе может при компиляции объединить строки кода в одну строку (и иногда не правильно, как в этом случае).
      Так что подправьте блок WatchDog и будет все работать.
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      Аватара пользователя
      Di123
      Капитан
      Сообщения: 828
      Зарегистрирован: 03.11.2018{, 19:38}
      Репутация: 29
      Имя: Дмитрий

      ШИМ на GyverPWM

      #16

      Сообщение Di123 » 15.11.2021{, 18:13}

      но я в нём ничего не понимаю :)
      для меня это набор букв и цыфр не более
      даже еслиб он был написан на китайском я бы не возмутился

      Отправлено спустя 24 секунды:
      ладно поищю автора

      Аватара пользователя
      AlexCrane
      Капитан
      Сообщения: 895
      Зарегистрирован: 20.10.2017{, 13:22}
      Репутация: 294
      Откуда: Ульяновск
      Имя: Александр

      ШИМ на GyverPWM

      #17

      Сообщение AlexCrane » 15.11.2021{, 18:16}

      Di123, Подправил блок WatchDog
      не конфликт v2.flp
      (6.89 МБ) 55 скачиваний
      Если не знаю, то не скажу. Если скажу, то сначала проверю...
      Если нет возможности отблагодарить материально, хотя бы оцени пост....

      aidar_i
      Полковник
      Сообщения: 3122
      Зарегистрирован: 24.12.2016{, 16:55}
      Репутация: 674
      Откуда: Уфа
      Имя: Айдар
      Контактная информация:

      ШИМ на GyverPWM

      #18

      Сообщение aidar_i » 15.11.2021{, 20:05}

      AlexCrane писал(а):
      15.11.2021{, 18:05}
      А вот тут непонятно чей баг, похоже на баг редактора.
      Автор писал , это не баг, а фича!

      Отправлено спустя 2 минуты 18 секунд:
      Di123 писал(а):
      18.07.2021{, 13:01}
      в плескареле наблюдается при плавном нарастании шим на светодиоде некий всплеск яркости под максимум в течении около милисикунды такая некая вспышка на 10 битах а на 8 битах всё норм и при убывании она же повторятся снова
      Поставьте уарт, посмотрите не на 255 вспышка?

      Аватара пользователя
      Di123
      Капитан
      Сообщения: 828
      Зарегистрирован: 03.11.2018{, 19:38}
      Репутация: 29
      Имя: Дмитрий

      ШИМ на GyverPWM

      #19

      Сообщение Di123 » 15.11.2021{, 20:35}

      aidar_i, верно происходит на 255
      на осцылографе это выглядит как пропуск импульсов с удержанием единицы на выходе

      2021-11-16 00-26-42.JPG
      притом чем меньше ускорение допустим раз в секунду тем он намного дольше горит на максимуме

      aidar_i
      Полковник
      Сообщения: 3122
      Зарегистрирован: 24.12.2016{, 16:55}
      Репутация: 674
      Откуда: Уфа
      Имя: Айдар
      Контактная информация:

      ШИМ на GyverPWM

      #20

      Сообщение aidar_i » 15.11.2021{, 22:00}

      У Гувера есть в библиотеке исправление этой ошибки (или нет?), это происходит, потому что в библиотеке Ардуино прописано (8 бит) :

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

      void analogWrite(uint8_t pin, int val) {
      pinMode(pin, OUTPUT);
      	if (val == 0)
      	{
      		digitalWrite(pin, LOW);
      	}
      	else if (val == 255)
      	{
      		digitalWrite(pin, HIGH);
      	}
      	........
      	
      А Вы используете 10 бит.
      Нужно просто прописать на выходе если =255 то выход равно 256, те проскакиваем это или используем ШИМ без обращения к портам с помощью библиотек Ардуино (не используйте analogWrite) .
      PS. У него не нашел исправление в библиотеке.
      В других блоках он обращается напрямую к портам.

      Ответить

      Вернуться в «ПИД регуляторы (PID), блоки для ШИМ»