Реклама: Как из мгновенного межфазного напряжения получить фазный угол?

Расширенный поиск      

Хочешь стать куратором любимой темы?

* Комментарии к новостям

7. Почему скорость вращения МК разные? (Электросамокаты Kugoo S серии и аналоги ) от inetchik 8. Электросамокат или моноколесо? (Электросамокаты) от m_denisov 9. Kugoo g-booster 48V max 2400 Вт 20Ah/10Ah (Электросамокаты Kugoo M серии и аналоги) от Ushlakoff 10. Как правильно "лечить" разбалансированный СА (Свинцовые аккумуляторы) от Branimir 11. Speedway mini4 8" (Электросамокаты MiniMotors) от Сергей И. 12. Помогите выбрать электросамокат! Обсуждаем промышленные электросамокаты (Электросамокаты) от СергНик
Не нравится реклама? Пройдите простую регистрацию на форуме и не будете видеть рекламу.

Прочитано 241 раз

0 Пользователи и 1 Гость просматривают эту тему.

17 Дек 2018 в 13:24
Прочитано 241 раз
Онлайн

TRO

Украина, г. Запорожье. Сообщений: 7194
Вкратце, есть у меня моторчик с аналоговыми датчиками холла соединенными треугольником.
С помощью АЦП диференциально снимаю с 3 входов межфазное напряжение.
Получаю красивые классические 3 синуса( ~11 бит грязными ) со сдвигом в 120 градусов.
Хочу использовать его как энкодер.
Вопрос: как из этих трех величин получить угол (8-10 бит) с минимумом вычислений, вернее с максимальным быстродействием. Планирую код запихнуть в АВР микроконтроллер (надо будет сваять быструю ассемблерную вставку ). Так что всякие прожорливые арксинусы и арктангенсы отпадают (как делать с ними на языке высокого уровня я знаю, не устраивает быстродействие почти на порядок). Очень желательно ограничится действиями: умножение, сложение, и вычитание (на крайний случай деление).
Погрешность до 1% будет вполне приемлимой.
« Последнее редактирование: 17 Дек 2018 в 13:39 от TRO »
Сообщение понравилось: Frolikum

17 Дек 2018 в 14:16
Ответ #1
Оффлайн

i

Администратор Иваново Сообщений: 3794
В ROM создать таблицу синуса в пол- или четверть периода.
Пронормировать измерения АЦП, чтоб уложились в диапазон 0-255. Требуется знание максимума и умножение.
Найти в таблице ближайшее значение совпадающее с нормированым измерением. Позиция значения даст угол.
Возможно потребуется учесть прежнее измерение, чтоб узнать находимся на спаде или подъеме.
Как-то так.

17 Дек 2018 в 14:21
Ответ #2
Онлайн

edw123

ПодМосква Сообщений: 9415
Вкратце, есть у меня моторчик с аналоговыми датчиками холла соединенными треугольником.
...
Погрешность до 1% будет вполне приемлимой.
Наверное только по табличке или попробовать в ряд пораскладывать, но 1% быстро не получить всё рвно таким путём, кмк.

17 Дек 2018 в 15:11
Ответ #3
Онлайн

TRO

Украина, г. Запорожье. Сообщений: 7194
Помедитировал на синусоиды, и решил проверить линейность пилы состоящей из наиболее приближенных к прямой пересекающихся участков синусоид. Короче картинка.

Прикол в том что (как мне показала симуляция в экселе) на одном участке пилы нелинейность всего +-0,26%. Это на отрезке в 1/6 периода, а для полных 360 электрических градусов погрешность должна по идее быть еще в 6 раз меньше. Если дотошно подойти к вопросу, то для половинки (половинки симетричны) одной "прямой" можно накидать поправочную табличку.
В принципе если АЦП и сигнал с датчиков достаточно стабилен, то достаточно брать эти куски и складывать в одну прямую. Но, что бы нивелировать всякие дрейфы датчиков и АЦП, наверно нужно брать пропорцию двух отрезков между тремя точками (3х значений с АЦП), она всегда будет более точной.
В общем, задачка в рамках указанной точности можно сказать решена.


18 Дек 2018 в 10:21
Ответ #4
Оффлайн

i

Администратор Иваново Сообщений: 3794
Согласен, выглядит хорошо.
Пара соображений и неястностей (для меня):
1. С ростом скорости крутизна отрезков тоже будет расти, как и амплитуда пиков. Таким образом одно значение АЦП будет соответствовать разным фазным углам.
2. Масштаб временной оси фиксирован, он жестко задан частотой выборок, следовательно число точек на отрезке будет зависеть от оборотов.
Короче, задачка получается весьма интересной.

18 Дек 2018 в 12:06
Ответ #5
Онлайн

edw123

ПодМосква Сообщений: 9415
В общем, задачка в рамках указанной точности можно сказать решена.
Если ещё добавить неизбежную техническую потерю точности при дискретизации, то 5 разных углов прямых на полуволну будет вполне нормально. С другой стороны при табличном подходе любое напряжение однозначно определяет фазу независимо от частоты при нормированном максимуме.

18 Дек 2018 в 16:31
Ответ #6
Онлайн

TRO

Украина, г. Запорожье. Сообщений: 7194
, я написал чуть выше как правильно отвязаться от нестабильности амплитуды и частоты.
Сортируем полученные величины по возрастанию A>B>C , и вычисляем номер отрезка по порядку от 0 до 5.
Потом по формуле (B-C)*256/(A-C) получаем значение угла на отрезке считая от начала отрезка в диапазоне 0-256 (и пусть амплитуда с АЦП хоть заплавается, отношение между точками при делении будет фиксировано). Потом номер отрезка умножаем на 256 и прибавляем полученный угол, получаем полный угол в диапазоне 0 - 256*6, т.е. 0-1536 (и это только разрешение одного электрического оборота, в реале 6 электрических на круг, т.е.
 9216 на полный оборот). 
В коде для аттини44 уже работает (на бейсике), еле уложился в пол миллисекунды на 8 мегагерц. Жаль дешевые ардуинки на мега328 не умеют диференциально АЦП измерять, прийдется операционники лепить, так как по итогу надо именно на мегу328 ассемблерную вставку сделать.
« Последнее редактирование: 18 Дек 2018 в 18:03 от TRO »
Сообщение понравилось: i, Frolikum

19 Дек 2018 в 11:37
Ответ #7
Оффлайн

i

Администратор Иваново Сообщений: 3794
Здорово! :wow:

Немного сбило с толку ABC в формуле, когда понял, что в ней a=max(A,B,C), b=mid(ABC), c=min(A,B,C), все получилась.

Пила стоит как вкопанная, реально не зависит от амплитуды.

Спасибо.

19 Дек 2018 в 13:37
Ответ #8
Онлайн

TRO

Украина, г. Запорожье. Сообщений: 7194
Всегда пожалуста, вам тоже спасибо за
Цитата
a=max(A,B,C), b=mid(ABC), c=min(A,B,C)
Посмотрел у себя в компиляторе, есть и там такие команды.
А я не знал, и не пользовался, плодил код из кучи условий (в 3 раза больше).
Век живи век учись.

19 Дек 2018 в 13:45
Ответ #9
Оффлайн

Frolikum

Синяокая Сообщений: 54
Что то не нашел где эксель файл прикреплен.
Хотел поиграть с графиками

19 Дек 2018 в 14:26
Ответ #10
Оффлайн

i

Администратор Иваново Сообщений: 3794
Сообщение понравилось: Frolikum

19 Дек 2018 в 14:31
Ответ #11
Онлайн

edw123

ПодМосква Сообщений: 9415
Всегда пожалуста, вам тоже спасибо за Посмотрел у себя в компиляторе, есть и там такие команды.
А я не знал, и не пользовался, плодил код из кучи условий (в 3 раза больше).
Век живи век учись.
Эти функции точно такой же код и используют, только стек забивают.

19 Дек 2018 в 15:14
Ответ #12
Оффлайн

i

Администратор Иваново Сообщений: 3794
Пусть есть 3 ячейки памяти a, b и c. В них лежат числа.
1. сравнить a и b, если b<a поменять их местами.
2. сравнит b и c, если c<b - поменять местами
3. повторить п.1
После этого числа в ячейках  будут расположены по убыванию.
Кстати, обменять регистры значениями, можно тремя командами EOR, при этом дополнительный регистр не потребуется.
Типа так:
sort:       CP    R1,R2
            BRCC  m82
            EOR   R1,R2
            EOR   R2,R1
            EOR   R1,R2
m82:        CP    R2,R3
            BRCC  m83
            EOR   R2,R3
            EOR   R3,R2
            EOR   R2,R3
m83:        CP    R1,R2
            BRCC  m84
            EOR   R1,R2
            EOR   R2,R1
            EOR   R1,R2
m84:        RET
Сообщение понравилось: TRO

 

Электротяга для инвалидов - как получить гос.поддержку?

Автор vzhik777Раздел Инвалидные коляски на электротяге

Ответов: 6
Просмотров: 1133
Последний ответ 13 Сен 2016 в 14:38
от Piramidon
Как с датчика холла получить 0-5 В ?

Автор FlygreenРаздел Микроэлектроника

Ответов: 27
Просмотров: 2525
Последний ответ 26 Янв 2017 в 13:24
от anatoli_nik
Как получить рекуперативный тормоз? (електро тормоз)

Автор suslovmРаздел Микроэлектроника

Ответов: 1
Просмотров: 410
Последний ответ 28 Окт 2017 в 12:34
от илс
проблема напряжения отсечки на контроллерах...как решать?

Автор dracoРаздел Электровелосипеды

Ответов: 35
Просмотров: 583
Последний ответ 21 Окт 2018 в 00:45
от TULSUNDUR
Как лучше сделать преобразователь напряжения?

Автор electrobikerРаздел Электровелосипеды

Ответов: 24
Просмотров: 8398
Последний ответ 18 Авг 2010 в 20:53
от Vetal