ШИИМ 10 БИТ пользовательский блока на Си
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
ШИИМ 10 БИТ пользовательский блока на Си
Попалась мне на глаза интересная библиотека TimerOne, одна из функций возможность генерировать 10 Битный ШИМ с настраиваемым периодом.
Решил сделать блок:
Название :Блок ШИМ 10Бит
Разрядностью 10Бит (0-1023)
Период можно настраивать
Получилось два блока.
Описание:
PWM_CONST_(CODE)
[spoiler=Спойлер]Блок ШИМ
Разрядностью 10Бит (0-1023)
Период можно настраивать
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Входа
PWM_1, PWM_2, PWM_3 - задается скважность ШИМ в виде значений 0-1023
Параметры
period – Период ШИМ в микросекундах
меньше 100 лучше не ставить
Верхний предел 8388480 (8,4секунды)
pin_1, pin_2, pin_3 - номер пина соответствующего входам PWM_1, PWM_2, PWM_3
Если вход не используется, то надо выставлять 0.
Возможно использовать для следующих пинов
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13
encoder - Совместно сблоком Энкодер_С
Сделал для возможности использовать ШИМ, при примении блока Энкодер_С, в этом режиме параметр period неиспользуется
Период ШИМ будет равен значению period из блока Энкодер_С
! Блок Энкодер_С должен размещятся в проекте раньше Блок ШИМ[/spoiler]
PWM_REG_(CODE)
[spoiler=Спойлер]Блок ШИМ
Разрядностью 10Бит (0-1023)
Период можно настраивать
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Входа
PWM_1, PWM_2, PWM_3 - задается скважность ШИМ в виде значений 0-1023
period – Период ШИМ в микросекундах (если оставить пустым будет период 2000мкс)
Меньше 100 лучше не ставить (хотя это надо тестировать)
Верхний предел 8388480 (8,4секунды)
Параметры
pin_1, pin_2, pin_3 - номер пина соответствующего входам PWM_1, PWM_2, PWM_3
Если вход не используется, то надо выставлять 0.
Возможно использовать для следующих пинов
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13[/spoiler]
Возможно использовать для следующих пинов
Arduino Uno 9, 10
ArduinoLeonardo 9, 10, 11
ArduinoMega 11, 12, 13
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Еще два блока полный аналог предыдущих, только используется Timer3 (есть только в ArduinoLeonardo ArduinoMega)
PWM_CONST_T3
PWM_REG_T3-CODE
Возможно использовать для следующих пинов
Arduino Leonardo 5
Arduino Mega 2, 3, 5
Если у кого есть осциллограф (и не лень), проверти правильность работы и минимальной возможный период.
Обновление
Добавил второй вариант с заданием Периода через вход блока, т.е можно регулировать Период ШИМ по ходу выполнения программы.
Актуальные версии блоков находятся ШИМ 10 БИТ с изменяемым периодом
Все вопросы и предложения в эту тему.
Решил сделать блок:
Название :Блок ШИМ 10Бит
Разрядностью 10Бит (0-1023)
Период можно настраивать
Получилось два блока.
Описание:
PWM_CONST_(CODE)
[spoiler=Спойлер]Блок ШИМ
Разрядностью 10Бит (0-1023)
Период можно настраивать
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Входа
PWM_1, PWM_2, PWM_3 - задается скважность ШИМ в виде значений 0-1023
Параметры
period – Период ШИМ в микросекундах
меньше 100 лучше не ставить
Верхний предел 8388480 (8,4секунды)
pin_1, pin_2, pin_3 - номер пина соответствующего входам PWM_1, PWM_2, PWM_3
Если вход не используется, то надо выставлять 0.
Возможно использовать для следующих пинов
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13
encoder - Совместно сблоком Энкодер_С
Сделал для возможности использовать ШИМ, при примении блока Энкодер_С, в этом режиме параметр period неиспользуется
Период ШИМ будет равен значению period из блока Энкодер_С
! Блок Энкодер_С должен размещятся в проекте раньше Блок ШИМ[/spoiler]
PWM_REG_(CODE)
[spoiler=Спойлер]Блок ШИМ
Разрядностью 10Бит (0-1023)
Период можно настраивать
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Входа
PWM_1, PWM_2, PWM_3 - задается скважность ШИМ в виде значений 0-1023
period – Период ШИМ в микросекундах (если оставить пустым будет период 2000мкс)
Меньше 100 лучше не ставить (хотя это надо тестировать)
Верхний предел 8388480 (8,4секунды)
Параметры
pin_1, pin_2, pin_3 - номер пина соответствующего входам PWM_1, PWM_2, PWM_3
Если вход не используется, то надо выставлять 0.
Возможно использовать для следующих пинов
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13[/spoiler]
Возможно использовать для следующих пинов
Arduino Uno 9, 10
ArduinoLeonardo 9, 10, 11
ArduinoMega 11, 12, 13
!!!!Возможны конфликты с блоками где используется Timer1 (из известных мне Rremote, Servo)
Еще два блока полный аналог предыдущих, только используется Timer3 (есть только в ArduinoLeonardo ArduinoMega)
PWM_CONST_T3
PWM_REG_T3-CODE
Возможно использовать для следующих пинов
Arduino Leonardo 5
Arduino Mega 2, 3, 5
Если у кого есть осциллограф (и не лень), проверти правильность работы и минимальной возможный период.
Обновление
Добавил второй вариант с заданием Периода через вход блока, т.е можно регулировать Период ШИМ по ходу выполнения программы.
Актуальные версии блоков находятся ШИМ 10 БИТ с изменяемым периодом
Все вопросы и предложения в эту тему.
Последний раз редактировалось Слимпер 12 июл 2016, 04:38, всего редактировалось 1 раз.
ШИИМ 10 БИТ пользовательский блока на Си
DerAlex писал(а):Выхода можно любые использовать?
Есть еще одна Библиотека TimerThree она задействует Timer3 ( есть Leonardo, Mega )Слимпер писал(а):Возможно использовать для следующих пинов
Arduino Uno 9, 10
Arduino Leonardo 9, 10, 11
Arduino Mega 11, 12, 13
Если сделать блок на этой библиотеки то можно будет задействовать ШИМ на пинах:
Arduino Leonardo 5
Arduino Mega 2, 3, 5
Последний раз редактировалось Слимпер 08 июл 2016, 04:45, всего редактировалось 1 раз.
ШИИМ 10 БИТ пользовательский блока на Си
Период ШИМ общий для всех каналов ?Или можно для каждого канала отдельно выставить ?
Добавлено (08.07.2016, 05:26)
---------------------------------------------
Нужный блок , прямо скажем. А то вот как пришлось извращаться. Посмотрите тему =ПАДЕНИЕ ЧАСТОТЫ ГЕНЕРАТОРА=
Добавлено (08.07.2016, 05:26)
---------------------------------------------
Нужный блок , прямо скажем. А то вот как пришлось извращаться. Посмотрите тему =ПАДЕНИЕ ЧАСТОТЫ ГЕНЕРАТОРА=
аврора
ШИИМ 10 БИТ пользовательский блока на Си
В описании библиотек прямо не сказано, но эксперименты показали что общий.DerAlex писал(а):Период ШИМ общий для всех каналов ?Или можно для каждого канала отдельно выставить ?
Но если сделать еще один блок на базе TimerThree Timer3 ( есть Leonardo, Mega ) то можно будет сделать два независимых периода.
Кстати сейчас Период ШИМ настраивается один раз в параметрах блока.DerAlex писал(а):Нужный блок , прямо скажем. А то вот как пришлось извращаться. Посмотрите тему =ПАДЕНИЕ ЧАСТОТЫ ГЕНЕРАТОРА=
Надо будет вечером попробовать сделать вариант с с настройкой через вход.
ШИИМ 10 БИТ пользовательский блока на Си
Сделал Вариант с заданием Периода по входу. То есть можно изменять во время работы программы. Смотреть в первом сообщенииСлимпер писал(а):Кстати сейчас Период ШИМ настраивается один раз в параметрах блока.Надо будет вечером попробовать сделать вариант с с настройкой через вход.
П.С. У кого есть возможность просьба протестировать правильность работы.
Последний раз редактировалось Слимпер 09 июл 2016, 16:41, всего редактировалось 1 раз.
ШИИМ 10 БИТ пользовательский блока на Си
Если вы про измени периода шим. Ну выше уже упоминали тему ПАДЕНИЕ ЧАСТОТЫ ГЕНЕРАТОРА, в ней как раз обсуждали подобную задачу.CraCk писал(а):Нубский вопрос. А зачем ето нужно?
А вообще стандартная частота ШИМ Arduino 500ГЦ, что далеко не всегда подходит.
Сам пробовал раньше регулировать обороты Компьютерного вентилятора 12В, регулировалось но вентилятор при этом пел (издавал противные звуки), по этому отказался от этой затеи.
А вот сейчас можно будет поднять частоту скажем до 5кГц, и думаю писка не будет.
ШИИМ 10 БИТ пользовательский блока на Си
В теме ПАДЕНИЕ ЧАСТОТЫ ГЕНЕРАТОРА обсуждалась работа генератора в приборе проверки форсунок для автомобиля.Там как раз требовался генератор с независимой перестройкой частоты и скважности.
Добавлено (08.07.2016, 19:47)
---------------------------------------------
Без блока предложенного Слимпер, пришлось городить огород.
Использовалось два блока, блок генератора ,скоростной счетчик в режиме задержки и еще внешний триггер RS.Сейчас это возможно без излишних выкрутасов.
Добавлено (08.07.2016, 19:47)
---------------------------------------------
Без блока предложенного Слимпер, пришлось городить огород.
Использовалось два блока, блок генератора ,скоростной счетчик в режиме задержки и еще внешний триггер RS.Сейчас это возможно без излишних выкрутасов.
Последний раз редактировалось DerAlex 08 июл 2016, 19:48, всего редактировалось 1 раз.
аврора
ШИИМ 10 БИТ пользовательский блока на Си
Период ШИМ можно регулировать в пределах от 100мкс (может и меньше) до 8.38сCraCk писал(а):СПС за ответы. А уменьшать можно?
Если я не путаю с переводами, Частота получается от 10кГц до 0.12Гц
Последний раз редактировалось Слимпер 08 июл 2016, 21:14, всего редактировалось 1 раз.
ШИИМ 10 БИТ пользовательский блока на Си
Программа генератора с использованием блока ШИМ.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
аврора
ШИИМ 10 БИТ пользовательский блока на Си
У вас нет необходимых прав для просмотра вложений в этом сообщении.
аврора
ШИИМ 10 БИТ пользовательский блока на Си
А осциллографом не проверяли, ШИМ правильный получатся? А то у меня нечем проверить .DerAlex писал(а):Программа генератора с использованием блока ШИМ.
Последний раз редактировалось Слимпер 10 июл 2016, 19:23, всего редактировалось 1 раз.
ШИИМ 10 БИТ пользовательский блока на Си
Пока не проверял.
Добавлено (11.07.2016, 07:29)
---------------------------------------------
На слух заметно, что только в крайнем положении движка переменного резистора СКВАЖНОСТЬ наиболее сильное изменение звучания.Вечером подключу осциллограф . погляжу в чем дело.
Добавлено (11.07.2016, 07:29)
---------------------------------------------
На слух заметно, что только в крайнем положении движка переменного резистора СКВАЖНОСТЬ наиболее сильное изменение звучания.Вечером подключу осциллограф . погляжу в чем дело.
аврора
-
- Рядовой
- Сообщения: 22
- Зарегистрирован: 29 мар 2016, 10:41
ШИИМ 10 БИТ пользовательский блока на Си
Слимпер, Вы гений!Слимпер писал(а):Если у кого есть осциллограф (и не лень), проверти правильность работы и минимальной возможный период.
Было действительно лень, но попытался проверить этот блок и о чудо, он заработал!
Числа 5, 10, 25, 50, 100 и 200 подтверждаю, периоду в микросекундах соответствуют. Абсолютная погрешность менее 0,1 мкс.Слимпер! писал(а):PWM_REG-CODE-.ubi(97Kb)
Скважность равна 50% при числе 512.
Надо дальше поисследовать.
Мега 2560.
Последний раз редактировалось Электронщик 11 июл 2016, 14:11, всего редактировалось 1 раз.
ШИИМ 10 БИТ пользовательский блока на Си
Спасибо на добром слове, но я просто сделал блок на базе уже готовой библиотеке.Электронщик писал(а):Слимпер, Вы гений!
Добавлено (11.07.2016, 16:23)
---------------------------------------------
Еще два блока полный аналог предыдущих, только используется Timer3 (есть только в ArduinoLeonardo, ArduinoMega)
PWM_CONST_T3
PWM_REG_T3-CODE
Возможно использовать для следующих пинов
Arduino Leonardo 5
Arduino Mega 2, 3, 5
Ссылки в первом сообщении
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
ШИИМ 10 БИТ пользовательский блока на Си
Слимпер, Если не секрет, как вам удается редактировать свое первое сообщение в теме?
Win10-64, FLProg (portable)
ШИИМ 10 БИТ пользовательский блока на Си
А я сам не знаю, почему здесь пока получается, а других нет, то ли еще время не вышло с момента последнего редактирования (я его уже несколько раз правил).rw6cm писал(а):Слимпер, Если не секрет, как вам удается редактировать свое первое сообщение в теме?
А вообще то, надо наверное попросить по работе сайта, предложить возможность автору темы дать возможность редактировать перовое сообщение.
-
- Рядовой
- Сообщения: 22
- Зарегистрирован: 29 мар 2016, 10:41
ШИИМ 10 БИТ пользовательский блока на Си
Период установил 5 мкс.
С входа PWM_1 на 11 ногу таймера вывел ШИМ= 512.
С входа PWM_2 на 12 ногу вывел ШИМ= 100.
Хотел посмотреть на положение фронтов двух сигналов относительно друг друга.
Картинку привести не могу, лень перетаскивать с осц-фа, но картина странная. Фронты импульсов не совпадают, ни какие. не понятно как таймер формирует эти импульсы.
Импульс ШИМ= 100 находится посередине импульса ШИМ= 512.
Поменял значение 512 на 1000, импульс ШИМ= 100 стоит посередине 1000-ного.
Поменял период с 5 на 100, картина не изменилась.
Задействовал дополнительно вход PWM_3 на 13 ногу и вывел ШИМ= 100.
Импульсы на 12 и 13 ногах совпадают полностью.
Поменял на входе PWM_3 ШИМ с 100 на 200, импульс ШИМ 100 расположился внутри интервала импульс ШИМ 200.
Т.о., импульсы с входов PWM_2 и PWM_3 располагаются посередине импульса с входа PWM_1.
Работает следующее правило: импульсы ШИМ располагаются симметрично относительно общей точки на оси времени, расположенной посередине длительности импульса, задаваемой по входу PWM_1 .
Было интересно, как можно использовать Ардуину в среде FLProg для реализации импульсных многофазных приложений, пока не понятно.
С входа PWM_1 на 11 ногу таймера вывел ШИМ= 512.
С входа PWM_2 на 12 ногу вывел ШИМ= 100.
Хотел посмотреть на положение фронтов двух сигналов относительно друг друга.
Картинку привести не могу, лень перетаскивать с осц-фа, но картина странная. Фронты импульсов не совпадают, ни какие. не понятно как таймер формирует эти импульсы.
Импульс ШИМ= 100 находится посередине импульса ШИМ= 512.
Поменял значение 512 на 1000, импульс ШИМ= 100 стоит посередине 1000-ного.
Поменял период с 5 на 100, картина не изменилась.
Задействовал дополнительно вход PWM_3 на 13 ногу и вывел ШИМ= 100.
Импульсы на 12 и 13 ногах совпадают полностью.
Поменял на входе PWM_3 ШИМ с 100 на 200, импульс ШИМ 100 расположился внутри интервала импульс ШИМ 200.
Т.о., импульсы с входов PWM_2 и PWM_3 располагаются посередине импульса с входа PWM_1.
Работает следующее правило: импульсы ШИМ располагаются симметрично относительно общей точки на оси времени, расположенной посередине длительности импульса, задаваемой по входу PWM_1 .
Было интересно, как можно использовать Ардуину в среде FLProg для реализации импульсных многофазных приложений, пока не понятно.
Последний раз редактировалось Электронщик 12 июл 2016, 17:42, всего редактировалось 1 раз.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя