센서없는 BLDC 모터의 startup 토크
Posted on August 16, 2014
One of the major challenges when working on my custom open source ESC was to get good startup torque and low-speed performance with sensorless motors. This challenge has been addressed in several places around the net:
저 개인적 오픈 소스 ESC를 만들 때 주요한 도전 중의 하나는 센서 없는 모터에서 좋은 startup 토크와 낮은 속도에서의 좋은 성능을 얻는 것이었습니다. 이 도전은 인터넷의 여러 군데에서 시도되어 왔습니다:
Team Novak은 왜 센서를 갖는 시스템이 센서 없는 시스템보다 우수한지를 설명한 글:
http://teamnovak.com/tech_info/view_article/24
역시 같은 주제를 다룬 전기 스쿠터(electric scooter)에 대한 글:
홀(hall) 센서를 갖는 모터로 개조한 metroboard:
http://metro-board.com/brushless-outrunner-motor-testing/
마블 전기 스케이트보드 또한 홀 센서를 사용한다:
http://howtomakeanelectricskateboard.wordpress.com/2014/06/22/marbel-kickstarter/
표준 센서없는 hobby ESC를 갖는 electric longboard의 비디오입니다. 분명한 startup과 낮은 속도에서 이슈가 있습니다:
http://www.youtube.com/watch?v=SNt70MdUh0Q
Techniques I used
센서 없이 부드럽고 빠른 startup을 얻기 위해서 저는 몇가지 트릭을 사용했습니다, 즉:
There are no hardware low-pass filters that introduce phase delay. Such filters can be avoided because the ADC samples are synchronized to the PWM timer and adjusted dynamically every time the duty cycle or switching frequency is changed.
위상 지연(phase delay)을 야기하는 어떠한 하드웨어적인 저역 통과 필터(low-pass filters)들을 사용하지 않았습니다. 그러한 필터들은 ADC 샘플들이 PWM 타이머와 동기화되고, 듀티 싸이클 혹은 스위칭 주파수가 변할 때마다 동적으로 맞추기 때문에 피할 수 있습니다.
After a zero crossing, the area under the voltage is integrated until a threshold for commutation based on the motor parameters. This integration is robust agaist acceleration and provides good SNR since an integrator is a low-pass filter.
Zero crossing 후에 전압의 면적은 모터 파라미터들에 근거한 commutation의 threshold까지 적분됩니다. 이 적분은 가속에 대해서 robust하고 적분기가 저역 통과 필터이기 때문에 좋은 SNR 특성을 제공합니다.
There is a parameter that defines the voltage coupling between the windings when measuring the back-emf. This make a huge difference when running at low speeds with low duty cycle. This compensation has a RPM dependence though, which is something I tried to avoid where possible because the RPM estimation has a delay and thus causes problems during acceleration.
BEMF를 측정할 때 고정자의 코일 사이에 커플링 전압(voltage coupling)을 정의하는 파라미터가 존재하고 이것은 낮은 듀티 싸이클과 함께 낮은 속도로 회전할 때 큰 차가 존재합니다. 그러므로 이들의 보상은 RPM 의존성을 갖습니다. RPM 추정은 시간 지연을 야기하고 그러므로 가속 동안에 문제를 일의킬 수 있기 때문에 가능한한 여기서 피하고자 시도한 것입니다.
To get better voltage samples, the switching frequency is adaptive and proportional to the duty cycle. This is because the back-EMF only can be sampled during the ON-time of the PWM cycle and low duty cycles have short ON time. Since the motor is running slowly on low duty cycles, sampling and switching does not have to be as fast to keep up with the motor which makes this less of a problem. Lower switching frequency also decreases switching losses, which is a positive side-effect.
우수한 전압 샘플을 얻기 위해서 스위칭 주파수는 적응형(adaptive)이고 듀티 싸이클에 비례합니다. 이는 BEMF가 오직 PWM 싸이클의 ON 타임 동안에 그리고 짧은 ON 타임을 갖는 낮은 듀티 싸이클 동안에 샘플링되기 때문입니다. 모터는 낮은 듀티 싸이클에서 천천히 회전하기 때문에 샘플링과 스위칭은 모터를 따라 잡기 위해서 충분히 빠르지 않아야만 하고 이는 문제가 덜 되도록 합니다. 낮은 주파수 일수록 또한 switching loss를 감소시키는데 이는 부수적으로 긍정적인 효과를 갖는 다는 것입니다.
When the motor is un-driven, the back-emf on all phases is analysed to track the position, direction and speed of the motor. So when the motor is already spinning, the algorithm will begin in the exact state of the motor (position, duty-cycle, direction).
모터가 구동되지 않을 때 모든 상에 BEMF는 위치, 회전방향, 모터의 속도를 추적하기 위해서 분석됩니다. 그래서 모터가 이미 회전 중일 때 알고리즘은 모터의 정확한 같은 상태(위치, 듀티 싸이클, 회전방향)에서 시작할 것입니다.
I have also used some hack-ish conditions based on trial and error to improve the startup.
저는 startup을 개선하기 위해서 시행착오에 근거한 일종의 hack-ish 조건들을 또한 사용하였습니다.
Closed loop operation is used from the first commutation, since the measured values are clean enough when using these techniques.
폐루프 동작은 처음 commutation부터 사용되었는데 이는 이 기술들을 사용할 때 측정된 값이 충분히 깨끗하기 때문입니다.
다음 비디오는 이것이 어떻게 scorpion outrunner와 electric longboard에서 동작하는지를 보여줍니다:
Some examples with plots
** 모든 플롯은 모터 제어기에서 캡춰한 전압 샘플이고, 이는 PWM 타이머에 동기화되었습니다. 이것은 스위칭이 신호를 왜곡하기 때문에 오실로스코프 상에서 다르게 보일 수 있습니다. **
이것은 상전압이 전형적인 startup 시쿼스에 대해서 어떻게 보이는지를 보여줍니다. 여기서 듀티 싸이클을 5%로 설정되었습니다:
Even though the duty cycle is only 5%, the waveform is clean. This is because the switching frequency is low at this speed and the on-time is long enough to get good samples. The first commutation is a bit off at first since the motor is not perfectly aligned, but the second commutation already looks perfect.
듀티 싸이클이 5%일지라도 파형은 깨끗합니다. 이는 스위칭 주파수가 이 속도에서는 낮고 ON 타임이 좋은 샘플을 얻기 위해서 충분히 길기 때문입니다. 처음 commutation은 모터가 완전하게 정렬되지 않았기 때문에 약간 벗어나지만 두번째 commutation은 이미 완벽하게 보입니다.
Here is another example with 35% duty cycle:
35% 듀티 싸이클의 또 다른 예입니다:
And this is the measured current for the same startup:
그리고 다음은 같은 startup에 대해서 측정된 전류입니다:
Here the phase voltage has some commutation spikes in the beginning because the current is quite high during acceleration, but even so the commutations are even and clean.
여기에 상전압은 초기에 commtation spike를 갖습니다. 왜냐하면 전류는 가속동안에 매우 높기 때문입니다. 그러나 그렇다 하더라도 commutation은 고르고 깨끗합니다.
Here is an example where the duty cycle is ramped towards 100% rapidly:
다음은 듀티 싸이클이 100%까지 급하게 상승할 때의 예입니다:
Again, because of the current, there are commutation spikes on the voltage. The voltage from my lab power supply is also dropping because of the load. Even so, the commutations are even and clean.
다시 전류로 인해서 전압 상에 commutation spike가 존재합니다. 제 전원공급기로부터 전압은 부하로 인하여 또한 떨어졌습니다. 그렇다 하더라도 commutation은 고르고 깨끗합니다.
Here is one unusual case, for which I had to restart the motor 20 or 30 times to get it captured:
다음은 캡쳐하기 위해서 모터를 20 혹은 30회 다시 시작한 경우의 비정상적인 경우입니다:
The first commutation happens to be exactly at a position where no torque is produced, which is as sub-optimal as it can get. On the current waveform, it can be seen that the current limit of 60A is applied. After 40 millisecond, the algorithm decides that nothing has happened for a too long time and adds an auto-commutation. After this, the motor is tracked right away and the commutations are nice and even. This works even though the motor was stalled with 60A for a while.
처음 commutation은 어떠한 토크도 만들지 않는 위치에 정확히 발생하고 이것은 얻을 수 있는 차선책입니다. 전류 파형 상에서 60A의 전류 제한이 보여집니다. 40ms 후에 알고리즘은 어떠한 것도 너무 긴 시간에 일어나지 않았고 auto-commutation을 추가하기로 결정합니다. 이후에 모터는 즉시 추적되고 commutation은 훌륭하고 고르게 나타났습니다. 이것은 모터가 잠시 동안 60A로 실속한 경우 조차에서도 동작하였습니다.
Here is one example where I start the motor, switch off power after a few commutations and then switch on power again:
다음은 모터를 startup 하고 수 commutation 후에 전원을 크고 그리고 다시 전원을 켠 예입니다:
It can be seen that the un-driven back-emf is tracked perfectly while the power is gone and no commutation is missed or distorted during the transitions.
전원이 커진 동안 구동되지 않은 BEMF가 완전하게 추적되고 어떠한 commutation도 놓치거나 천이 동안에 왜곡되지 않았음을 볼 수 있습니다.
Results
The electric longboard I have been working on starts perfectly smooth without sensors (see the video above).
제가 작업한 electric longboard는 startup 상에서 센서 없이 완벽하게 부드럽습니다(see the video above).
I have also tested this on a 700w hub motor on an electric bicycle with extremely good results. Full throttle from a complete stop is smooth and no problem at all. I don’t miss hall sensors here one bit.
저는 또한 전기 자전거인 700w hub 모터에서도 시험하였고 매우 우수한 결과를 얻었습니다. 완전한 정지로부터 full 스로틀까지 부드럽고 전혀 문제가 없었습니다. 저는 여기서 조금도 홀 센서를 그리워하지 않습니다.
'Flight Controller 이해 > 전자속도제어기(ESC)' 카테고리의 다른 글
VESC - Open Source ESC(6) (0) | 2018.01.06 |
---|---|
Communicating with the VESC using UART (1) | 2018.01.05 |
Qt에서 bldc-tool 컴파일 방법 (0) | 2017.12.24 |
VESC 하드웨어(v4.8) 회로도 (0) | 2017.12.21 |
Embitz에서 VESC 펌웨어 컴파일 방법 (0) | 2017.12.17 |