Emrah Duatepe Ответов: 0

Коммутация ротора с помощью энкодера


Привет ребята,
Я пытаюсь коммутировать двигатель BLDC с помощью энкодера, и одна ревуляция-это значение 1024 энкодера.И двигатель 10 пар полюсов,в этом случае 18 кодирующее значение(60 электрических градусов) равно 6 механическим градусам, так что, когда Ротор достигнет 18 изменений, я должен выполнить следующий этап.

Например, теперь Ротор в 0. положение и поворот кодера 13 значение, а затем поворот CCW -10(1024-13-10= 1001) я не могу решить, как я могу найти правильную последовательность.Я не могу найти хороший алгоритм решения для этого?Как люди делают это правильно?

Что я уже пробовал:

encoderValue = Get_Encoder_Pos();

if(((encoderValue - xEncoderValue) >= 18) && dir==1)
{
   Set_Commutation_and_DutyCycle(table[x],PWM);
}
//This doesn't work,If motor rotate CCW from 0 to in this case enc value will increase 1024-1023 .... like that.

CPallini

Пожалуйста, детализируйте свой сценарий и будьте точны. Например, если оборот соответствует 1024 на энкодере, то 18 должно соответствовать примерно 6 (а не 60) градусам.

Emrah Duatepe

каждые 6 механических градусов равны 60 электрическим градусам в соответствии с 10 полюсными двигателями,поэтому для энкодера max 1024 подсчета, 360/1024 = 0.3515625 и 6 механических градусов равны примерно 17 значениям энкодера.Я собираюсь попробовать сделать кодировщик карт, как

1,2,3 значение кодера соответствует таблице[1],таблице[2],таблице[3] = активировать фазы А и с так, вероятно, работает таблица[18] = активировать разные фазы.

CPallini

Предполагая, что энкодер измеряет электрический угол, то, согласно следующей странице:
https://www.researchgate.net/post/Is_there_a_relation_between_the_electrical_and_mechanical_angle
значение кодера 18 будет соответствовать
около 6 градусов (электрический угол)
около 30 градусов (механический угол)
Тем не менее, что вы пытаетесь сделать? Это то, что должна вычислить ваша программа?
И все же мне это непонятно.

Emrah Duatepe

код, который я указываю выше, не является хорошим подходом, уже неправильным.Я пытаюсь создать таблицу, связанную с перемещением двигателя и значениями энкодера, чтобы открыть фазы в правильной последовательности.Из-за разрешения энкодера я получаю ошибку разрешения.60 электрических градусов для 20-полюсного двигателя для 60 электрических градусов равно значению энкодера 8.53333.Полностью электрическая степень составляет 20*360 для 20 полюсов,но формула говорит (20/2)*360 ? Я в замешательстве.20 полюсов означает 20 магнитных, и каждый магнитный создает один 360-й электрический градус.

0 Ответов