Перейти к содержанию
    

Есть задача под STM32

Здравия желаю.

Есть разработанная и собранная плата, но нужен софт.

Устройство собрано в пяти экземплярах и не факт, что будет тиражироваться.

 

Плата на STM32f415

 

Вообще-то есть и софт под всё это дело, он даже как-то работал, но есть следующие особенности:

1. с тех пор я изменил схему и камень (тоже STM32, но я взял покруче), добавил по аналоговым входам усилители PGA с управлением по SPI, на выходе поставил опторазвязку, управление скоростью PWM вместо DAC.

2. исходник без комментов, недостаточно структурен, на си, программист устал и отвалился.

3. Математики я почти совсем не знаю, но мой друг математик, видевший этот код, говорил о неоптимальности применённого алгоритма синхронного детектирования (выделения первой

гармоники). Он готов на математическом языке понимальщику свои соображения изложить.

Но в принципе, даже я почти всё понимаю в этом коде, кто там что делает. "Даже" относится к тому, что я не программист, тем более, что почти

совсем не знаю си, но на Паскалевиче программки допиливал-модернизировал-фиксил.

 

Да, всё железо уже есть, включая программатор, отладочные платки для разминки, компьютер, частотный привод, мотор с энкодером и проч.

 

Теперь Т.з.:

Нужно разработать ПО следующего устройства ввода-вывода.

Технические параметры:

3 цифровых входа инкрементного углового датчика

- опорный(0), квадратурные "А" и "В". Уровни сигналов - TTL.

Диапазон частот опорного сигнала 0-500Гц.

4 аналоговых входа с предусилителями с переключаемым по SPI коэфф. усиления.

Диапазон частот полезного сигнала 0.5-500Гц.

Диапазон напряжений на 4-х аналоговых входах 0.5 - 4.5V(p-p), ноль смещён на 2.5V, но постоянная

составляющая не интересует, соответственно на входе - развязывающий кондюк.

Интерфейс с ведущим компьютером - MODBUS RS-232

 

Режимы работы:

0. Режим управления: принимаем из компьютера управляющие посылки:

15 байт данных +

один байт - команда включить один из режимов работы.

1. Режим разгона: получаем с порта значение требуемой скорости вращения, ШИМом преобразуем с каким-то коэффициентом в управляющее напряжение, пропорционально требуемой скорости,

меряем частоту опорного сигнала (Z), как только её нестабильность станет меньше константы, переходим в режим измерения, если так и не стала стабильной

(нестабильность меньше соотв. константы) за заданное константой время разгона - выдать соответствующий код ошибки на порт и продолжать ловить частоту.

2. Режим измерения: непрерывно получаем оцифрованные сигналы с встроенного АЦП (от 1-го до 4-х) и

опорные импульсы, синхронно детектируем, т.е. выделяем из всех аналоговых сигналов первую гармонику (sin/cos преобразование)

с частотой, равной частоте опорных импльсов, векторно усредняем значения амплитуд и фаз сигналов и N раз в сек.

выдаём в порт накопленные за этот период усреднённые значения амплитуд и фаз по каждому из 4-х каналов и опорной частоты. Не всегда нужны все 4 канала АЦП.

Скорее всего, экономить время, выбирая к-во каналов АЦП, меньшее, чем 4, и не нужно - надо смотреть.

В начале измерения по каждому каналу подбираем коэфф. усиления для оптимального попадания во входной диапазон АЦП и записываем их в соответствующий программируемый усилитель по SPI

Надо мерить ОДНОВРЕМЕННО все каналы и загонять данные через DMA.

Вроде, скоростей должно хватить.

АЦП 12 разрядов,

3. Режим измерения угла: получаем импульсы: опорный(0) и 2

квадратурных с двух каналов энкодера, непрерывно считаем их и выдаём в порт угловое значение в единицах, равных учетверённому количеству импульсов на оборот энкодера.

Выдача в порт по запросу.

энкодер 600 имп. на оборот (или меньше)

При этом энкодер в некоторых случаях соединен с ротором, угловое положение которого интересует, при помощи ременной передачи, соответственно от случая к случая количество

импульсов на оборот разное. Но индексный импульс (Z) приходит с метки на измеряемом роторе, соответственно мы за один поворот ротора всегда получаем строго один и только один импульс.

И при повороте ротора вручную или на выбеге можем посчитать число импульсов А и В на оборот.

4. Режим вывода - по сигналу с порта выводим биты на шесть ног (оптопары).

5. режим позиционирования - два выхода (оптопары) - команда "вперёд" и "назад", один выход - через ШИМ и оптопару делает управляющее постоянное напряжение на привод (скорость).

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

 

Пишите на [email protected]

 

В случае успешного опыта сотрудничество обещает быть продлённым...

 

UPD 2 ALL:

Кактегорически не приветствуется обсуждение избранной мной стратегии решения МОЕЙ задачи и схемное реализации оной.

 

Кактегорически приветствуются и рукопожимаются конкретные предложения услуг по созданию/допилу ПО.

 

С пониманием и поддержкой отношусь к вопросам/уточнениям, высказанным с целью лучшего понимания поставленной задачи.

 

Спасибо за в нимание.

Изменено пользователем Fester Addams

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ременная передача и ацп 12 разрядов... кто это всё проэктировал? это баг или фича?

 

ИМХО, для 5+ шт эффективнее(по времени и средствам) сделать аналоговый фазовый детектор да и всю схему АСУ, с цифровым управлением.

Изменено пользователем In_an_im_di

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ременная передача и ацп 12 разрядов... кто это всё проэктировал? это баг или фича?

 

ИМХО, для 5+ шт эффективнее(по времени и средствам) сделать аналоговый фазовый детектор да и всю схему АСУ, с цифровым управлением.

 

Слёзно прошу не учить меня жыть. Если Вы можете эффективно решить поставленную задачу за разумное время и адекватные средства - welcome с предложениями или уточнениями в личку или опубликованную пошту.

 

UPD 2 ALL:

Кактегорически не приветствуется обсуждение избранной мной стратегии решения МОЕЙ задачи и схемное реализации оной.

 

Кактегорически приветствуются и рукопожимаются конкретные предложения услуг по созданию/допилу ПО.

 

С пониманием и поддержкой отношусь к вопросам/уточнениям, высказанным с целью лучшего понимания поставленной задачи.

 

Спасибо за в нимание.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С пониманием и поддержкой отношусь к вопросам/уточнениям, высказанным с целью лучшего понимания поставленной задачи.

В таком случае, пожалуйста, можете написать, что Вам надо, вместо написанного, как Вы хотите это получить? глядишь, люди и подтянутся.

Я серьёзно. Мозговой штурм де дал результатов по пониманию исходной задачи. Грубо говоря, написали много, но по делу не написано ничего. Что обдумывать, над чем работать, оценивать трудоёмкость чего? итдд

 

ну, например:

1. описание объекта управления

2. описание режимов управления: ручная уставка угла, набор скорости, работа через редуктор, и тд...

3. ...

...

N-2. условия сдачи-приёмки

N-1. сроки

N. оплата

 

ПС. Если Вы, конечно, не ищщете очередного программиста, который "программист устал и отвалился".

Изменено пользователем In_an_im_di

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В таком случае, пожалуйста, можете написать, что Вам надо, вместо написанного, как Вы хотите это получить? глядишь, люди и подтянутся.

Надо написать или допилить ПО с учетом процитированных ниже особенностей.

но есть следующие особенности:

1. с тех пор я изменил схему и камень (тоже STM32, но я взял покруче), добавил по аналоговым входам усилители PGA с управлением по SPI, на выходе поставил опторазвязку, управление скоростью PWM вместо DAC.

2. исходник без комментов, недостаточно структурен, на си, программист устал и отвалился.

3. Математики я почти совсем не знаю, но мой друг математик, видевший этот код, говорил о неоптимальности применённого алгоритма синхронного детектирования (выделения первой

гармоники). Он готов на математическом языке понимальщику свои соображения изложить.

 

Что делает устройство описано в тексте первого поста после слов "Теперь Т.з.:" достаточно подробно для понимания масштаба задачи.

 

По конкретным уточнениям - готов отвечать.

Изменено пользователем Fester Addams

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Up to you.

Вы скрытный какой-то.

Или Ваш бюджет не покрывает заявленный Вами "масштаб задачи"?

Изменено пользователем In_an_im_di

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы скрытный какой-то.

Вы часто слышали в магазине, как продавец спрашивает бюджет у покупателя ?

Не можете назвать свою цену на батон - отойдите.

 

1. Режим разгона:

2. Режим измерения:

3. Режим измерения угла:

4. Режим вывода

5. режим позиционирования

Более эффективной постановкой задачи было бы: "Разрабатываю установку для балансировки колес".

Зачем шифроваться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..синхронно детектируем, т.е. выделяем из всех аналоговых сигналов первую гармонику (sin/cos преобразование)

с частотой, равной частоте опорных импльсов, векторно усредняем значения амплитуд и фаз сигналов и N раз в сек...

 

С пониманием и поддержкой отношусь к вопросам/уточнениям, высказанным с целью лучшего понимания поставленной задачи.

 

А можно не синхронно детектировать?

А усреднять не векторно?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если это тот камень, о котором я думаю, т.е. CortexM4 разработки якобы НИИЕТ, а на самом деле - ЦР, то почему бы сразу не обратиться к авторам тестового софта под него, а именно, к Вектору? Они профи, с этим камнем год почти возились.

Сразу предупреждаю, если этот тот самый камень, то намучаетесь с ним .. одно DMA там чего стоит армовское ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы часто слышали в магазине, как продавец спрашивает бюджет у покупателя ?

Не можете назвать свою цену на батон - отойдите.

Вы не товар, а услугу приобретаете, разовую и эксклюзивную. В этом разница, существенная.

В зависимости от бюджета будет вариативное решение вашей задачи.

 

А батон, он в куче лабазов есть, на любой вкус и цвет. В отличии от.

 

Более эффективной постановкой задачи было бы: "Разрабатываю установку для балансировки колес".

Зачем шифроваться?

Это может быть и не только задача балансировки колёс, но и литьё и балансировка лопастей турбины, коленвала.

А бюджет может быть выделен на погремушку.

 

ЗЫ: есть и математик и программист и дсп программист. От 700 т.р. без исходников.

Изменено пользователем =pcb=

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С пониманием и поддержкой отношусь к вопросам/уточнениям, высказанным с целью лучшего понимания поставленной задачи.

 

По какой причине "устал и отвалил" предыдущий программист ? )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно не синхронно детектировать?

А усреднять не векторно?

Можно, но мне нужно то, что я написал.

 

Если это тот камень, о котором я думаю, т.е. CortexM4 разработки якобы НИИЕТ, а на самом деле - ЦР, то почему бы сразу не обратиться к авторам тестового софта под него, а именно, к Вектору? Они профи, с этим камнем год почти возились.

Сразу предупреждаю, если этот тот самый камень, то намучаетесь с ним .. одно DMA там чего стоит армовское ...

Это камень от ST.com Названные Вами буквы мне неведомы.
Изменено пользователем Fester Addams

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно, но мне нужно то, что я написал.

 

Так вам нужна первая или главная гармоника?

Или нужна траектория n-ой гармоники во времени?

Какая точность оценки нужна?

 

В курсе что фильтр постоянной составляющей вносит фазовые искажения?

Какой динамический диапазон сигналов?

Задача может быть вообще нетривиальной при достаточно высокой частоте измерений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...