Jump to content
    

Многоканальный скоростной ШИМ-контроллер

Требуется реализовать 4 канальный ШИМ-контроллер, управляемый по I2C с тактовой частотой не ниже 1 МГц, а лучше по более скоростной шине SPI. Подскажите, какие есть варианты?
Имеющаяся PCA9685 избыточна по каналам (16 ШИМ-каналов), но не достаточно шустрая. 

Share this post


Link to post
Share on other sites

1 час назад, Валентиныч сказал:

Имеющаяся IRS20954 избыточна по каналам (16 ШИМ-каналов), но не достаточно шустрая. 

Уточните, что вам вообще нужно? Упомянутая вами IRS20954 это полумостовой драйвер MOSFET/IGBT, который может управляться ШИМ-сигналом. Причем тут вообще "ШИМ-контроллер" и что такое в вашем понимании "ШИМ-контроллер"?

 

IRS20954S.pdf

Share this post


Link to post
Share on other sites

Извините, я по невнимательности написал не то название микросхемы. Должно быть PCA9685 (16-channel, 12-bit PWM Fm+ I2C-bus LED controller). Просто в разрабатываемой схеме имеются и IRS20954, которые используются по прямому назначению - в качестве драйвера усилителя класса D. Исправил ошибку в первом сообщении.


А нужно 4-6 независимых каналов функционального генератора с высоковольтным выходом (~100 вольт), способных выдавать в нагрузку 300-500 мА. Первоначально пытался реализовать это на PCA9685, но оказалось, что даже на 1 МГц SCL может не хватать времени на периодическое изменение параметров ШИМ.
Ничего более подходящег
о сам не нашел, поэтому и обратился за помощью.

 

PCA9685.pdf

Share this post


Link to post
Share on other sites

Замените микроконтроллер на другой — сейчас даже у примитивных МК есть несколько выходов ШИМ, поэтому для производителей ИС сомнительная выгода делать отдельно ШИМ.

Во-вторых, есть большие сомнения, что микроконтроллер, не имеющий 6 выходов ШИМ, способен реализовать 6 функциональных генераторов — возможно 6 шт. МК, по одному на канал, будет проще реализовать.

Share this post


Link to post
Share on other sites

14 hours ago, Валентиныч said:

А нужно 4-6 независимых каналов функционального генератора

У меня в проекте ПЛК 4 ШИМ выхода, которые можно привязать к выходу ПИД-регулятора с минимальным шагом 1мс (для моих задач меньше не требуется). Использую STM32F446 на 168МГц, который даже не замечает работы этой связки, ибо работают аппаратные таймеры.

Внизу картинки управление обогревом одной секцией тёплого пола. 

image.thumb.png.1af26224da787c79a03626f768e28327.png

Согласен с Plain, что нужно взять подходящий МК. Если же есть большой проект, который споткнулся из-за ШИМ, то, как вариант возьмите МК, который сможет делать вам 6-6 ШИМ и управляйте им по SPI.

Share this post


Link to post
Share on other sites

14 часов назад, Валентиныч сказал:

Первоначально пытался реализовать это на PCA9685, но оказалось, что даже на 1 МГц SCL может не хватать времени на периодическое изменение параметров ШИМ.

Вам нужен микроконтроллер в котором есть таймеры с режимом работы PWM. К PWM-выходам подключите м/с драйверов на необходимый вам ток. Это самый реальный вариант, если вам нужно быстро управлять параметрами ШИМ.

Share this post


Link to post
Share on other sites

1 час назад, tonyk_av сказал:

Использую STM32F446 на 168МГц. ...нужно взять подходящий МК.

Ничего не имею против STM-ок, просто не умею их готовить. Поэтому вынужден довольствоваться архаичными AVR-ками типа ATMega8/16/32/328. При этом сам ни разу не программист, немножко пишу только на АСМе. Отсюда все аппаратные изыски.

Добавлю: ко всему прочему, требуется довольно высокочастотный 16-разрядный ШИМ, с частотой не ниже 300-500 кГц. При этом период обновления параметров ШИМ-каналов довольно медленный, порядка 1-3 мс. STM-ка с тактовой 168 МГц с этим справится (наверное), а вот 16-мегагерцовая АТМега вряд ли... Поэтому и ищу аппаратное решение реализации ШИМ на внешнем девайсе, работающем независимо от контроллера.

Всем спасибо за советы переползти на другую платформу, но воспользоваться этими советами мне довольно проблематично.  

Share this post


Link to post
Share on other sites

8 minutes ago, Валентиныч said:

Поэтому вынужден довольствоваться архаичными AVR-ками типа ATMega8/16/32/328

Хм, вроде, у этих МК до 6 ШИМ каналов.

Или ищите ШИМ-контроллер с аналоговым управлением и DAC с SPI.

Share this post


Link to post
Share on other sites

8 минут назад, Валентиныч сказал:

требуется довольно высокочастотный 16-разрядный ШИМ, с частотой не ниже 300-500 кГц.

16-разрядный ШИМ с частотой 500кГц требует тактовой частоты 32768МГц(!), если я ничего не напутал. Вы не хотите своего осетра урезать?

Share this post


Link to post
Share on other sites

2 часа назад, rezident сказал:

16-разрядный ШИМ с частотой 500кГц требует тактовой частоты 32768МГц(!), если я ничего не напутал.

Или я чего-то не понимаю, или Вы несколько ошибаетесь. Возможно, не внимательно прочитали требования к ШИМ, которые были озвучены чуть выше.
ШИМ с частотой 500 кГц требует именно 500 кГц тактовой, и ни герцем выше. Вы, видимо, смешали понятия частоты ШИМ импульсов, частоты и разрядности дискретизации исходного сигнала, который нужно зашимить. А период выборок при формировании требуемых сигналов 1-3 мс, или 333-1000 Гц. А уж какова разрядность этих выборок - это дело другое, и к итоговой частоте ШИМ не имеет никакого отношения. Главное, чтобы внутренние делители микроконтроллера (таймеры или прескалеры) были в состоянии сгенерировать такую частоту. Для 16 МГц клока камня это как два байта отослать. 
 

P.S. Перечитал, что написал, и понял, что не прав. Видимо, осетра придется резать на части.

Share this post


Link to post
Share on other sites

1 минуту назад, Валентиныч сказал:

Полагаю, Вы несколько ошибаетесь. Или не внимательно прочитали требования к ШИМ, которые были озвучены чуть выше.

Я могу прочитать только то, что вы сами написали. Указанная вами м/с PCA9685 дает ШИМ с частотой до 1526 Гц и имеет разрядность 12 бит. Вы же возжелали частоту ШИМ 500кГц при разрядности 16 бит. Может в вашей размерности пространства другие правила математики, но у меня 500000 * 2^16 = 32768000000.

image.thumb.png.c634dae1cd7b068016385b184ba5b0f8.png

Share this post


Link to post
Share on other sites

1 час назад, Валентиныч сказал:

период выборок при формировании требуемых сигналов 1-3 мс

1 кГц · 216 = 65,5 МГц

Share this post


Link to post
Share on other sites

3 minutes ago, Plain said:

1 кГц · 216 = 65,5 МГц

1-3мс это как часто ТС хочет значение ШИМа изменять. (то что у него сейчас в i2c не пролазит с pca9685),  а частота всё же 500кГц, и соответственно 32ГГц при 16ти разрядах

Quote

требуется довольно высокочастотный 16-разрядный ШИМ, с частотой не ниже 300-500 кГц. При этом период обновления параметров ШИМ-каналов довольно медленный, порядка 1-3 мс

 

 

На замену pca9685 для быстрого изменения скважности раз уж так не хочется слазить с AVR, в дополнение к основному контроллеру повесить ему на spi сколько надо каких-нибудь atmega48, там пара каналов 16ти разрядного ШИМа есть.

а для 16бит и 500кГц либо пересаживаться на МК где есть HRPWM с сотней пс разрешения (XMC4, TMS320, в каких-то stm32 вроде было).

либо как уже советовали любой "аналоговый" шим контроллер от какого-нибудь dc-dc и ЦАП ему на вход обратной связи. 16ти бит там конечно не будет, но возможно получится лучше чем на АВР с его 16МГц частоты.

Share this post


Link to post
Share on other sites

11 часов назад, _pv сказал:

1-3мс это как часто ТС хочет значение ШИМа изменять

Автору, при частоте дикретизации 1 кГц, нужно ещё озвучить и желаемое время установления до требуемых 1/3 МЗР, потому что не 500 кГц его определяют.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...