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

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

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

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

7. Электроунициклы и ПДД. (Моноколеса (электроунициклы)) от Ripido (20.05.2019 в 15:52)8. Фото и видео электромотоциклов (Электромотоциклы ) от Stanislavchik (20.05.2019 в 15:51)9. Kugoo M2 - разбор полётов (Электросамокаты Kugoo M и G серии и аналоги ) от stramcovanastasia@gmail.c (20.05.2019 в 15:51)10. (2018) Моноколесо Gotway MCM5 14" (Моноколёса GotWay) от Schmurge (20.05.2019 в 15:50)11. Kugoo g-booster 48V max 2400 Вт 20Ah/10Ah (Электросамокаты Kugoo M и G серии и аналоги ) от arthuru (20.05.2019 в 15:50)12. Bafang движок под каретку (Электровелосипеды с подвесным двигателем) от Бешеный енот (20.05.2019 в 15:49)
Не нравится реклама? Пройдите простую регистрацию на форуме и не будете видеть рекламу.

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

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

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

TRO

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

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

i

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

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

edw123

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

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

TRO

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

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


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

i

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

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

edw123

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

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

TRO

Украина, г. Запорожье. Сообщений: 7349
, я написал чуть выше как правильно отвязаться от нестабильности амплитуды и частоты.
Сортируем полученные величины по возрастанию 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

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

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

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

Спасибо.

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

TRO

Украина, г. Запорожье. Сообщений: 7349
Всегда пожалуста, вам тоже спасибо за
Цитата
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

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

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

edw123

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

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

i

Администратор Иваново Сообщений: 3827
Пусть есть 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

 

Как получить рекуперативный тормоз? (електро тормоз)

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

Ответов: 1
Просмотров: 464
Последний ответ 28 Окт 2017 в 12:34
от илс
Электротяга для инвалидов - как получить гос.поддержку?

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

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

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

Ответов: 27
Просмотров: 2857
Последний ответ 26 Янв 2017 в 13:24
от anatoli_nik
проблема напряжения отсечки на контроллерах...как решать?

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

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

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

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