USART communication


STM32 마이크로컨트롤러의 PA2와 PA3 상에 가능한 USART2 인터페이스는 ST-LINK MCU, ST morpho 커넥터 혹은 Arduino 커넥터로 연결될 수 있습니다. 이 선택은 관련된 solder bridge를 설정하는 것에 의해서 변경될 수 있습니다. 티폴트로 Mbed(SB13과 SB14 ON, SB62와 SB63 OFF)를 위한 가상 COM 포트를 지원하기 위해서 타겟 STM32와 ST-LINK MCU 사이에 USART2 통신이 가능합니다. 만일 타겟 STM32 PA2 (D1) 혹은 PA3 (D0) 그리고 쉴드 혹은 확장 보드 사이에 통신이 요구되면, SB62과 SB63는 ON 되어야 하고 SB13과 SB14는 OFF 되어야 합니다. 그러한 경우에 또다른 USART를 ST-LINK MCU로 ST morpho 커넥터와 CN3 사이에 연결선을 사용하여 연결이 가능합니다. NUCLEO-F103RB의 예를 들어, PC10 (TX) and PC11 (RX) 상에 가능한 USART3를 사용하는 것이 가능합니다. 두 연결선(flying wire)은 다음과 같이 연결되어야 합니다:

• PC10 (USART3_TX) available on CN7 pin 1 to CN3 pin RX

• PC11 (USART3_RX) available on CN7 pin 2 to CN3 pin TX


Push-buttons

B1 USER: 유저 버튼은 STM32 마이크로컨트롤러의 I/O PC13 (핀 2)에 연결됩니다.

B2 RESET: 이 푸쉬 버튼은 NRST에 연결되고 STM32 마이크로컨트롤러의 RESET에 사용됩니다.

Note: 푸쉬 버튼에 위치한 파란색 그리고 검은색 플라스틱 덥개는 만일 필요하다면 제거될 수 있습니다. 예를 들어 쉴드 혹은 애플리케이션 보드가 누클레오 보드의 위에 꼽힐 때 등입니다. 이는 버튼에 압력 그러므로 가능한 영구적인 타겟 STM32 RESET을 피할 수 있습니다.


JP6 (IDD)


IDD라 라벨된 점퍼 JP6은 점퍼를 제거하고 전류계를 연결하는 것에 의해서 STM32 마이크로컨트롤러 전류 소비를 측정하는데 사용됩니다:

• Jumper ON: STM32 microcontroller is powered (default).STM32 마이크로컨트롤러가 전력이 공급됩니다(디폴트).

• Jumper OFF: 전류계는 STM32 마이크로컨트롤러 전류를 측정하기 위해서 연결되어야만 합니다. 만일 전류계가 없다면 STM32 마이크로컨트롤러는 전력이 공급되지 않습니다.



'Embedded Programming > STM32 Cortex-M4' 카테고리의 다른 글

NUCLEO-F446RE 보드 설정(6)  (1) 2018.01.21
NUCLEO-F446RE 보드 설정(5)  (0) 2018.01.21
NUCLEO-F446RE 보드 설정(3)  (0) 2018.01.21
NUCLEO-F446RE 보드 설정(2)  (0) 2018.01.21
NUCLEO-F446RE 보드 레이아웃  (0) 2018.01.14
Posted by Nature & Life


OSC clock


OSC clock 공급

외부 고속 클럭(external high-speed clock; HSE)과 대응하는 핀을 설정하는 4가지 방법이 있습니다:

ST-LINK로부터 MCO: ST-LINK MCU의 MCO 출력이 입력 클럭으로서 사용됩니다. 이 주파수는 8MHz로 변경할 수 없고 STM32 마이크로컨트롤러의 PF0/PD0/PH0-OSC_IN로 연결됩니다. 다음의 설정이 필요합니다:

– SB55 OFF and SB54 ON

– SB16 and SB50 ON

– R35 and R37 removed

X3 크리스탈(미제공)로부터 온보드 HSE 오실레이터: 전형적인 주파수와 커패시터 그리고 저항에 대해서 STM32 마이크로컨트롤러 데이터시트를 참조하세요. STM32 마이크로컨트롤러에 대한 오실레이터 설계 가이드에 대한 AN2867 Application note를 참조하세요. X3 크리스탈은 다음의 특성을 갖습니다: 8MHZ, 16pF, 20ppm 그리고 DIP footprint. Hong Kong X'tals Limited에서 제조한 9SL8000016AFXHF0을 사용할 것을 권장합니다. 다음의 설정이 요구됩니다:

– SB54 and SB55 OFF

– R35 and R37 soldered

– C33 and C34 soldered with 20 pF capacitors

– SB16 and SB50 OFF

• 외부 PF0/PD0/PH0로부터 오실레이터: CN7 커넥터의 29 핀을 통한 외장 오실레이터로부터. 다음의 설정이 요구됩니다:

– SB55 ON

– SB50 OFF

– R35 and R37 removed

• HSE not used: PF0/PD0/PH0 and PF1/PD1/PH1이 클럭 대신에 GPIO로써 사용됩니다. 다음의 설정이 요구됩니다:

– SB54 and SB55 ON

– SB16 and SB50 (MCO) OFF

– R35 and R37 removed


STM32 누클레오 보드 하드웨어 버젼에 따라서 HSE 핀의 두가지 가능한 디폴트 설정이 있습니다. 보드 버젼 MB1136 C-01 혹은 MB1136 C-02은 PCB 뒷면에 위한 스티커 상에 표시됩니다. 보드에 대응하는 보드 마킹 MB1136 C-01은 HSE가 사용되지 않은 것이고 MB1136 C-02 혹은 그 이상은 클럭 입력으로 ST-LINK MCO를 사용합니다.

Note: NUCLEO-L476RG과 NUCLEO-L452RE에 대하여 ST-LINK MCO 출력은 저 파워 모드에서 전력 소비를 줄이기 위해서 OSCIN으로 연결되지 않았습니다. 결론적으로 NUCLEO-L476RG 그리고 NUCLEO-L452RE 설정은 HSE가 사용되지 않는 것입니다.


OSC 32 kHz clock supply


저 속도 클럭(LSE)에 대응하는 핀을 설정하는 3가지 방법이 있습니다:

• On-board oscillator: X2 크리스탈, STM8S를 위하 오실레이터 설계 가이드를 참조하세요. STM32 마이크로컨트롤러를 위한 오실레이터 설계 가이드에 대해서 STM8A와 STM32 microcontrollers application note (AN2867). Abracon corporation에서 제조된 ABS25-32.768KHZ-6-T을 사용하는 것을 권장합니다.

• Oscillator from external PC14: CN7 커넥터의 25 핀을 통한 외장 오실레이터로부터. 다음의 설정이 요구됩니다:

– SB48 and SB49 ON

– R34 and R36 removed

• LSE not used: PC 14와 PC 15는 저 속도 클럭 대신에 GPIO로서 사용됩니다. 다음의 설정이 요구됩니다:

– SB48 and SB49 ON

– R34 and R36 removed


STM32 누클레오 보드 하드웨어의 버젼에 따라서 3가지 가능한 디폴트 설정이 있습니다. 보드 버젼 MB1136 C-01 혹은 MB1136 C-02는 PCB 뒷면에 위치한 스티커 상에 표시됩니다. 보드 마킹 MB1136 C-01는 LSE가 사용되지 않은 것으로써 설정된 보드에 대응합니다. 보드 마킹 MB1136 C-02 혹은 그 이상 버젼은 온보드 32 kHz 오실레이터로 설정된 보드를 의미하고 보드 마킹 MB1136 C-03 그 이상 버젼은 새로운 LSE 크리스탈(ABS25) 그리고 C26, C31 그리고 C32 값 갱신을 사용한 보드입니다.



'Embedded Programming > STM32 Cortex-M4' 카테고리의 다른 글

NUCLEO-F446RE 보드 설정(5)  (0) 2018.01.21
NUCLEO-F446RE 보드 설정(4)  (1) 2018.01.21
NUCLEO-F446RE 보드 설정(2)  (0) 2018.01.21
NUCLEO-F446RE 보드 레이아웃  (0) 2018.01.14
NUCLEO-F446RE 보드 설정(1)  (0) 2018.01.13
Posted by Nature & Life


STM32 누클레오 보드는 2 파트로 나누어집니다: ST-LINK 파트와 STM32 파트. PCB의 ST-LINK 파트는 보드의 사이즈를 줄이기 위해서 자를 수 있습니다. 이 경우에 남겨진 타겟 STM32 파트는 오직 VIN, E5V 그리고 ST morpho 커넥터 상에 3.3V 그리고 Arduino 커넥터 CN6 상에 3.3V에 의해서 전력이 공급될 수 있습니다. 메인 STM32는 CN4와 ST morpho 커넥터(SWCLK CN7 pin 15 그리고 SWDIO CN7 pin 13) 상에 가능한 SWD 사이에 연결선을 이용해서 프로그램하는데 ST-LINK를 사용하는 것은 여전히 가능합니다.


Embedded ST-LINK/V2-1


ST-LINK/V2-1 프로그래밍과 디버깅 툴은 STM32 누클레오 보드에 집적되었습니다. ST-LINK/V2-1는 STM32 누클레오 보드가 Mbed가 가능하도록 합니다. 임베디드(embeddedST-LINK/V2-1는 STM32 디바이스에서 오직 SWD만을 지원합니다. 디버깅 그리고 프로그래밍에 대한 정보에 대해서 그 기능은 STM8 그리고 STM32 User manual(UM1075)에 대한 ST-LINK/V2 in-circuit debugger/programmer를 참조하세요. 이 메뉴얼에서는 모든 ST-LINK/V2 기능에 대하여 자세하게 설명합니다.


ST-LINK/V2에서의 변화는 다음과 같습니다.

• New features supported on ST-LINK/V2-1:

– USB software re-enumeration

– Virtual COM port interface on USB

– Mass storage interface on USB

– USB power management request for more than 100 mA power on USB

• Features not supported on ST-LINK/V2-1:

– SWIM interface

– Minimum supported application voltage limited to 3V

• Known limitation:

ST-LINK/V2-1 target 상에 readout protection을 활성화하는 것은 타켓 애플리케이션을 앞으로 동작할 수 없습니다. 타겟 readout protection은 ST-LINK/V2-1 보드에서 유지되어져아 합니다.


점퍼 상태에 따라 임베디드 ST-LINK/V2-1를 사용하는 2가지 다른 방법이 있습니다:



• 온보드(on-board) STM32을 프로그램/디버그

SWD 커넥터 CN4에 연결된 케이블을 사용하여 외부 애플리케이션 보드에서 MCU를 프로그램/디버그


드라이버


누클레오-64 보드를 USB를 이용하여 Windows 7, Windows 8 혹은 Windows XP PC로 연결하기 전에 ST-LINK/V2-1 드라이버는 설치되어야 합니다. 이는 www.st.com 웹사이트로부터 다운로드 할 수 있습니다. 경우에 따라서 STM32 누클레오-64 보드는 드라이버가 설치되기 전에 PC에 연결될 수 있고, PC 디바이스 메니저는 일부 누클레오 인터페이스를 "Unknown"으로 보고할 수도 있습니다. 이런 상황을 해결하기 위해 해당 드라이버를 설치한 후에 STM32 누클레오-64 보드에서 발견된 "Unknown" USB 장치를 이 해당 드라이버로 디바이스 메니저에서 직접 변경해 주어야만 합니다.

Note: 다음 그림에서 보여지는 것과 같이 USB Composite Device를 사용해서 진행하는 것을 추천합니다.



ST-LINK/V2-1를 사용하여 보드 상에 STM32의 프로그래밍과 디버깅


보드에 STM32를 프로그래밍하기 위해서 다음 그림에서 같이 CN2에 두 점퍼를 꼽습니다. 이는 STM32 누클레오 보드의 STM32 마이크로컨트롤러와 통신을 방해할 수 있기 때문에 CN4 커넥터를 사용하지 마세요.



ST-LINK/V2-1를 사용해서 외부 STM32 애플리케이션을 프로그래밍과 디버깅


외부 애플리케이션에서 STM32를 프로그래밍하기 위해서 ST-LINK/V2-1를 사용하는 것은 매우 쉽습니다. 다음 그림에서 나타내듯이 CN2에서 두 점퍼를 간단히 제거하고 그리고 아래 테이블과 같이 CN4 디버그 커넥터로 애플리케이션을 연결합니다.

Note: SB12 NRST (타겟 STM32 RESET)은 만일 CN4 핀 5가 외부 애플리케이션에서 사용된다면 OFF 되어져야만 합니다.




'Embedded Programming > STM32 Cortex-M4' 카테고리의 다른 글

NUCLEO-F446RE 보드 설정(4)  (1) 2018.01.21
NUCLEO-F446RE 보드 설정(3)  (0) 2018.01.21
NUCLEO-F446RE 보드 레이아웃  (0) 2018.01.14
NUCLEO-F446RE 보드 설정(1)  (0) 2018.01.13
NUCLEO-F446RE 보드 스펙  (0) 2018.01.13
Posted by Nature & Life


https://e2e.ti.com/blogs_/b/motordrivecontrol/archive/2015/02/19/start-your-bldc-journey-with-motor-startup-part-iii-initial-position-detection-ipd


초기 위치 감지(initial position detection; IPD)는 회전이 시작하기 전에 모터 위치를 감지하는 방법입니다. BEMF(back electromotive force)에 연관된 방법은 모터가 스타트 하기 전에는 불가능하기 때문에 우리는 모터 위치의 함수인 또 다른 모터 특성을 찾을 필요가 있습니다. 모터 권선 인덕턴스 (포화)는 이 요구를 만족시킬 수 있습니다.


모터 고정자 권선의 등가회로는 저항과 직렬 연결된 인덕터(inductor)입니다. 권선에 자기장(magnetic field)은 상이 전류로 구동될 때 증가합니다.



권선 코어 재질인 규소(silicon) 강판에 자기장은 인가된 전류가 증가하는 것만큼 빠르게 증가할 수 없는 곳에 포화지점(saturation point)을 갖습니다. 이 포화지점은 재질의 자화 곡선(BH curve)에 의해서 결정됩니다.



BLDC 모터의 영구 자석은 권선 코어에 자기장을 생성하는데, 이 자기장은 상전류에 의해서 생성된 자기장에 중복될 수 있습니다.



여기에 이 원리를 입증하는 간단한 실험입니다:


1) 스위치를 켭니다. 12V 전원은 인덕터에 에너지를 축적하기 시작합니다.

2) 인덕터 전류가 1.6A에 도달했을때 스위치를 끕니다.

3) 전류 파형을 캡쳐합니다.

4) 영구자석을 인덕터 가까히 위치시킵니다.

5) 인덕터 코어에 여분의 자기장을 공급합니다.

6) 테스트를 반복합니다.



결과:

자석이 가까히 존재할 때 인덕터는 포화되고 전류는 빠르게 증가합니다.



또한 강한 영구 자석을 선택할수록 전류가 임계값(threshold)에 도달하는데 더 빠릅니다.



우리는 이 개념을 모터에 적용할 수 있습니다. 모터의 3상 중의 두 상에 전압을 이런 식으로 순차적으로 공급합니다: VW WV UV VU WU UW. 전류가 임계값에 도달했을 때 모터에 걸린 전압은 멈추게 됩니다. 전압이 공급된 후로부터 전류 임계치에 도달할 때까지 걸린 시간을 측정합니다. 이 시간은 모터 권선에 인덕턴스의 함수로서 변하게 됩니다.



가장 짧은 시간을 갖는 상태는 최소 인덕턴스를 갖는 상태(마치 minimum inductive kick과 같은)를 나타냅니다. 최소 인덕턴스는 이들 특별한 구동 상태에서 위 그림에서와 같이 모터의 N극에 정렬되었기 때문입니다. 정확한 IPD 결과를 얻기 위해서 다음의 파라미터가 적절히 선택되어야 합니다.


1. IPD current threshold

2. IPD clock

3. IPD release mode


전류가 임계치에 도달하였을 때 모터에 공급되는 전압을 중단하는데는 2가지 방법이 있는데 recirculate 모드와 하이 임피던스 모드입니다. 하이 임피던스 모드에서 전류는 출력 MOSFET의 body diode를 통해서 전원으로 흐르게 됩니다. 하이 임피던스 상태에서 상전류는 보다 빠른 settle-down 시간을 갖지만 VCC에 서지(surge)를 초래할 수 있습니다. 그러므로 하이 임피던스 모드를 적용하기 위해서는 적당한 클램프 회로나 VCC와 GND 사이에 충분한 커패시턴스가 요구됩니다.




'Flight Controller 이해 > 모터제어이론' 카테고리의 다른 글

Start up with BLDC(PMSM) - align and go  (2) 2018.01.18
전기회로 vs. 자기회로  (5) 2016.02.26
SPM vs. IPM  (1) 2016.02.26
PMSM의 모델식  (0) 2016.02.26
PMSM의 토크 제어 방법  (0) 2016.01.28
Posted by Nature & Life


https://e2e.ti.com/blogs_/b/motordrivecontrol/archive/2014/11/20/start-your-brushless-dc-journey-with-motor-startup-part-i
https://www.infineon.com/dgdl/ap0801810_Sensorless_Variable_Inductance_Sensing.pdf?fileId=db3a304412b407950112b40c7c150b39


빠르고 신뢰성 있는 startup는 많은 시스템 설계자가 이미 해왔던 것처럼 도전입니다. 가장 어려운 도전은 거의 모든 센서리스 해법이 위치 추정을 위해서 BEMF(back electromotive force) 감지에 의존하기 때문에 정지 상태로부터 출발이라는 것입니다. BEMF는 모터 속도에 비례하고 startup 전에는 '0'입니다. 결과적으로 초기 위치 감지(initial position detection; IPD)를 위해서는 inductive sense, mutual inductance 등 혹은 모터를 간단히 회전시키는 방법(blindly spin up; "align and go") 등 다른 방법을 찾을 필요가 있다는 것입니다. 이들 2가지 방법은 장점과 단점을 가지며 어떤 애플리케이션에 대해서는 유용합니다. 우리의 애플리케이션에 대해서 최상의 해법과 최상의 파라미터를 찾기 위해서 이들 장단점 사이에서 trade off를 결정해야만 합니다. 다양한 애플리케이션을 지원하기 위해서 이상적으로 모터 드라이버는 유연성과 startup 방법과 startup 파라미터를 선택할 수 있는 옵션을 제공해야 합니다.


'blind' startup (혹은 ramp up method)


비록 많은 새로운 첨단의 BLDC 제어 알고리즘이 위치 관측(position observation), 위치 추정(position estimation) 그리고 FOC(field-oriented control)를 강조할지라도, 알려진 commutation 시퀀스를 간단히 이용해 모터를 "blindly" 강제 구동하는 방법이 여전히 종종 사용됩니다.


스텝퍼(stepper) 모터를 생각해보면, 스텝퍼 모터의 위치는 피드백 센서 없이 수백 개의 스텝 중의 하나로 이동하고 멈추도록 명령될 수 있습니다. 이는 부하가 너무 크지 않는 이상 적당한 애플리케이션에서 잘 동작합니다. 모터가 잘못된 스텝으로 그리고 멈추기도 합니다. 피드백 센서 없이 제어기는 잘못된 스텝이나 정지 조건을 알아차리지 못합니다. 그러므로 'blind' 혹은 'open loop control'이라 부릅니다.


Brushed DC 모터 제어를 생각해보면, brushed DC 모터는 피드백 센서 없이, 제어기 조차도 없이 DC 전원으로부터 작동되도록 설계됩니다. 모터의 속도는 부하가 증가하는 동안 떨어집니다. 모터 속도를 감지하기 위한 특별한 기술이 존재하지 않는 이상, brushed DC 모터는 'blindly' 제어됩니다.


이러한 개념을 3상 BLDC 모터에 구현하면 다음과 같습니다. U상에서 V상으로 DC 전류를 공급하고 모터가 자리잡을 때까지 기다립니다(실제로 우리는 충분히 길게 기다릴 수 있습니다. 왜냐하면 우리는 'blind' 제어를 수행하고 있고 우리는 모터가 정지했는지 아닌지 알 수 없기 때문입니다). 그리고 나서 W상에서 V상으로 DC 전류를 공급하고 기다립니다. 이를 다음의 시퀀스 WU->VU->VW->UW->UV->WV->WU로 지속합니다. 모터는 약간의 흔들림과 함께 회전을 시작할 것입니다.



각 스텝에서 흔들림을 최소화하기 위해서 우리는 간단히 스텝 사이즈를 줄여 위에서 보여지는 2 스텝의 각 사이에 하나의 스텝을 추가하여 회전을 부드럽게 할 수 있습니다. 예를 들어 UV와 WV 사이에 (UW)V 스텝을 추가하고 그 의미는 U상과 W상이 동시에 V상에 전류를 공급함을 의미합니다.



만약 좀더 부드럽게 개선을 원한다면 우리는 존재하는 스텝 사이에 추가적으로 스텝을 더 추가할 수 있습니다. 예를 들어 UV에서 (UW)V 사이에 U상의 전류의 크기를 감소시키고 W상에 전류를 증가시키는 방법으로 몇 개의 스텝에 이를 반복하는 것입니다. 스텝의 수가 어떤 높은 값에 도달하면 제어는 스텝이 없고 부드러운 프로파일을 보여줍니다. 이는 또 사인파 프로파일로 변조(modulate)될 수 있습니다(DRV10983은 256 스텝의 모든 전기적 사이클을 갖고 사인파 전류 프로파일을 제공합니다).



사인파 'blind' startup은 적당한 크기로 3상 사인파 전류를 공급하는 것입니다. 이는 '0' (혹은 매우 낮은) 주파수에서 시작해서 모터의 실제 위치에 상관없이 적당한 가속으로 사인파 전류의 주파수를 증가시킵니다(open-loop 동작). Open-loop 동작은 모터를 어느 속도로 동작시키는데, 이 속도는 모터의 제어 로직이 closed loop로 모터를 정확하게 구동시킬 정도로 충분한 BEMF를 생성할 것입니다(closed-loop 제어는 모터 위치 기준 제어(motor position oriented control)를 의미합니다).



'Blind' startup는 부하 조건이 예측 가능한 애플리케이션에 특별히 모터의 속도를 올리는 매우 실용적인 방법입니다. 그러나 넓은 범위의 모터의 응용을 커버하기 위해서는 몇개의 파라미터들이 startup 성능을 최적화시키기 위해서 적절히 선택되는 것이 필요합니다.



Parameter 1: Open to closed loop threshold. (Op2ClsThr)


예제로 모터 A는 진공청소기 용이고 60,000rpm (4pole, 2000Hz)까지 회전합니다. 이 모터의 BEMF는 5mV/Hz. 모터 B는 천정팬 용이고 최대 속도는 150rpm (8pole, 10Hz)이고 모터 B의 BEMF는 1V/Hz입니다. 우리는 모터 A에 대해서 약 200Hz에서 Op2ClsThr을 설정할 필요가 있습니다. 왜냐하면 이 모터는 closed-loop control를 위해서 200Hz에서 1V BEMF을 생성하기 때문입니다. 우리는 모터 B를 200Hz에서 Op2ClsThr 설정을 원치 않습니다. 왜냐하면 그것은 그렇게 높이 결코 도달하지 않기 때문입니다. 모터 B에서는 1Hz 혹은 1.5Hz가 훌륭한 선택입니다. 만일 여러분이 매우 작은 BEMF 정보를 요구하는 closed-loop control 방법을 갖고 있다면 여러분은 낮은 속도에서 제어를 closed loop로 넘기는 것을 고려할 수 있습니다.


Parameter 2: Align time (AlignTime)


모터는 다음 startup 전에 어떤 위치에서도 정지할 수도 있습니다. 'blind' startup은 초기 위치가 알려지지 않았기 때문에 어떤 애매한 초기 위치에서 모터를 회전시키는데 종종 실패하기도 합니다. 이것이 왜 우리가 초기화가 필요한지를 말해줍니다. 모터 상에 사인파 전류를 흘리기 전에 우리는 어떤 시간 동안 고정 상태(예를 들어 U에서 V로)로 DC 전류를 구동하는 것에 의해서 모터를 초기화하고 고정된 알려진 위치로 모터가 자리잡도록 할 수 있습니다. 이 방법이 'align and go'로 알려집니다.



정렬의 결과로서 다음 스텝, 가속은 알려진 고정된 위치에서 시작합니다. 이 기술은 모터의 초기 위치의 불확실성을 제거하기 때문에 startup 신뢰도를 중요하게 개선합니다. Align time은 모터가 처음에 어디에 있더라도 기대된 위치에 올바로 자리잡는 것을 담보하기 위해서 충분히 긴 시간이 요구됩니다. 그러나 거기에는 작은 여지가 있는데 모터의 초기 위치가 정렬 위치와 아래 그림에서와 같이 반대인 경우(180도 전기각이 떨어져 있는)입니다. 이 조건에서 우리는 아무리 오랫동안 정렬을 할지라도 로터는 움직이지 않을 것입니다.



여기에 2가지 해법이 있습니다:


1) Dual-align: 서로 120도 떨어져 (혹은 0도 혹은 180도를 제외한 어떤 각도) 두번 정렬을 실행합니다. 만일 모터가 처음 정렬 이전에 불운한 위치에 있었다면, 두번째 정렬은 그것을 확실하게 두번째 정렬 위치로 당길 것입니다.



2) Dynamic align: 고정된 위치에 정렬하는 것 대신에 정렬을 하는 동안 위치를 천천히 움직입니다. 아래와 같이 이러한 동작은 가속과 함께 조합될 수 있으며 그 결과 우리는 부드럽고 더욱 신뢰성 있는 startup을 얻을 수 있습니다.



Parameter 3: Motor acceleration rate. (A1)


모터 구동 토크는 acceleration momentum 공급하고, 샤프트 마찰(shaft friction)과 어떤 부하를 극복하는 것이 요구됩니다.


Td = A1*J + Tf

Td = Kt*Ip*cos(Ө)


그러므로, A1 < Kt*Ip / J


A1: Acceleration rate

Tf: Motor load torque

J: Motor inertial

Td: Motor driving torque

Ө: Angle between combined 3-phase current and rotor position

Kt: Motor torque constant

Ip: Motor phase current peak



큰 관성 모터는 느린 acceleration rate를 요구합니다; 작은 Kt 모터는 느린 acceleration rate를 요구합니다; 높은 구동 전류는 빠른 acceleration rate를 지원할 수 있습니다. 만일 Kt*Ip > Td이면 Ө는 자동적으로 0에서부터 90 이하로 증가할 것입니다.


Parameter 4: Second order acceleration (A2)


2차 가속은 동적인 정렬과 가속 프로파일(포물선)을 생성합니다. 만일 모터가 초기 위치 감지(IPD) 혹은 startup 이전에 정렬을 했다면 2차 가속은 필요하지 않습니다.


Parameter 5: Startup current


startup 전류는 'blind' 동작 구간 중에 인가된 전류입니다. 만일 'blind' startup acceleration rate가 선택되었다면 startup 전류는 startup 구간에 영향을 주지 않을 것입니다. 그러나 작은 startup 전류는 startup 실패를 야기할 수 있는 좀 더의 기회를 갖을 것입니다. 다른 한편으로 만일 작은 startup 전류가 애플리케이션에서 요구된다면 우리는 신뢰성 있는 startup을 확보하기 위해서 acceleration rate를 낮추는 것이 요구됩니다. 'blind' startup에는 몇가지 단점이 있습니다.


1) startup은 closed loop 방법보다 느립니다.


100% 성공률을 얻기 위해서 acceleration rate은 큰 마진과 함께 식 A1 < Ip*Kt / J을 만족시켜야 합니다. 왜냐하면 제어기는 모터가 동상에 있는지 아닌지(즉 모터가 구동 속도를 따르는 것을 실패하는 것입니다) 알지 못하기 때문입니다. 만일 어떤 것이 모터 회전을 방해한다면, 제어기는 모터의 이들 벗어난 조건을 바로잡는 것이 불가능하고 시도하지도 않습니다. 예를 들어, 샤프트 마찰은 조립의 이유로 다른 모터들보다 혹은 모터가 완전히 정지하지 않은 그리고 제어기가 회전을 시도할 때 반대방향으로 움직일 때보다 조금 큽니다.


2) 예측 가능한 부하에 대해서 잘 동작합니다.


면도기, 머리 트리머 그리고 장난감에 대하여 부하는 어떻게 사용자가 그것을 사용하는 가에 따라 크게 변하게 됩니다.


3) 서로 다른 모터와 애플리케이션에 대해서 다른 파라미터를 요구합니다.


사용자는 부하 조건을 이해하고 모든 특별한 애플리케이션에 적합하도록 제어기를 튜닝할 필요가 있습니다. 무엇보다도 'blind' startup은 팬이나 펌프 그리고 예측 가능한 부하를 갖는 다른 형태의 모터에 실용적인 방법입니다.


The drawback of ‘blind’ spin up is that the motor may start with back and forth; the aesthetics aren’t desirable if the motor blades are exposed to customers (for example ceiling or pedestal fans. Also, for applications where reverse spinning is prohibited (for example HDD motor or VCM) you should not choose ‘blind’ spin up. Initial position detect (IPD) method can avoid the reversing or back and forth during startup. Check back for part III of this series, which will cover the principle of IPD, the typical implementation of IPD and the how to select the IPD parameters.

'blind' startup의 결점은 모터가 앞뒤로 움직이며 회전을 시작할 수 있다는 것입니다; 미학은 모터의 바람개비 날개가 사용자에게 노출되는 한 요구되지 않는다는 것입니다(예를 들어 천장 혹은 받침대 팬). 또한 역회전이 금지된 애플리케이션(예를 들어 HDD 모터 혹은 VCM)에서 'blind' startup을 선택하지 않아야 합니다. 초기 위치 감지(IPD) 방법은 역회전 혹은 startup 동안에 앞뒤로 움직임은 피할 수 있습니다.



'Flight Controller 이해 > 모터제어이론' 카테고리의 다른 글

Start up with BLDC(PMSM) - variable inductive sense  (0) 2018.01.19
전기회로 vs. 자기회로  (5) 2016.02.26
SPM vs. IPM  (1) 2016.02.26
PMSM의 모델식  (0) 2016.02.26
PMSM의 토크 제어 방법  (0) 2016.01.28
Posted by Nature & Life


NUCLEO-F446RE 보드의 레이아웃(layout)입니다.


Top 레이아웃


Bottom 레이아웃



'Embedded Programming > STM32 Cortex-M4' 카테고리의 다른 글

NUCLEO-F446RE 보드 설정(3)  (0) 2018.01.21
NUCLEO-F446RE 보드 설정(2)  (0) 2018.01.21
NUCLEO-F446RE 보드 설정(1)  (0) 2018.01.13
NUCLEO-F446RE 보드 스펙  (0) 2018.01.13
STM32F4 시리즈  (1) 2018.01.13
Posted by Nature & Life


STM32 누클레오 보드의 스펙입니다:

• STM32 microcontroller in LQFP64 package

• Three LEDs:

– USB communication (LD1), user LED (LD2), power LED (LD3)

• 2 push buttons: USER and RESET

• 2 types of extension resources

– Arduino™ Uno V3 연결을 위한 connector

– ST morpho extension을 위한 모든 I/O의 헤더

• Flexible board power supply:

– USB VBUS or external source (3.3 V, 5 V, 7 - 12 V)

– Power management access point

• On-board ST-LINK/V2-1 debugger and programmer with SWD connector

– Selection-mode switch to use the kit as a standalone ST-LINK/V2-1

• USB re-enumeration capability. Three different interfaces supported on USB:

– Virtual COM port

– Mass storage

– Debug port

• Comprehensive free software HAL library including a variety of software examples

• Arm® Mbed™ (see http://mbed.org)


전원


전원은 USB 케이블을 통한 호스트 PC나 외부 소스: VIN(7~12V), E5V(5V) 혹은 CN6 혹은 CN7 상에 +3.3V 전원 핀에 의해서 공급됩니다. VIN, E5V 혹는 +3.3V는 외부 전원 장치 혹은 보조 장치를 사용하여 STM32 누클레오 보드에 전력을 공급하는데 사용됩니다. 이 전원은 표준 EN-60950-1:2006+A11/2009를 준수해야 합니다. 그리고 제한된 전력 용량과 함께 Safety Extra Low Voltage(SELV)이어야 합니다.


ST-LINK/V2-1은 USB 파워 메니지먼트를 지원하며 이는 호스트 PC로부터 100mA 이상의 전류를 필요로 합니다. STM32 누클레오 보드와 쉴드 모두는 ST-LINK USB 커넥터 CN1 (U5V 혹은 VBUS)로부터 전력이 공급될 수 있습니다. 오직 ST-LINK 파트만 전력이 USB enumeration 전에 공급됨을 유의하세요. 왜냐하면 호스트 PC는 그 시간에 보드에만 100mA를 공급하기 때문입니다. USB enumeration 동안에는 STM32 누클레오 보드는 호스트 PC로부터 300mA 전류를 요구합니다.


만일 호스트가 요구된 전력을 공급가능하다면 STM32 MCU는 급전되고 LED LD3는 켜집니다. 그러므로 STM32 누클레오 보드와 쉴드 보드는 최대 300mA까지 소비할 수 있습니다. 만일 호스트가 요구된 전류 공급이 불가능하다면 STM32 MCU와 확장 보드를 포함한 MCU 파트는 전원이 공급되지 않습니다. 결론적으로 LED LD3는 커져있고 이러한 경우에 외부 전원을 사용해야 합니다: 외장 전원 입력: VIN와 E5V


USB (U5V)에 의해서 전원이 공급될 때 JP5의 핀 1과 핀 2는 연결되어야 합니다. USB (U5V)에 의해서 전원이 공급될 때 보드의 최대 전류 소비에 따라 JP1을 설정할 수 있습니다. JP1 점퍼는 USB에 의해서 전원이 공급되고 U5V 상에 최대 전류 소비가 확장보드 혹은 Arduino 쉴드를 포함하여 100mA를 초과하지 않아야 합니다. 그러한 조건에서 100mA 이하의 전류가 PC로 요구되기 때문에 USB enumeration는 항상 성공할 것입니다. 가능한 JP1의 설정은 다음과 같습니다.



외장 전원 VIN과 E5V는 다음 표와 같습니다. 보드는 VIN 혹은 E5V에 의해서 전원이 공급되며 점퍼는 다음을 따라야 합니다:

      • JP5에 핀 2와 핀 3을 점퍼로 연결합니다.

      • JP1에 점퍼를 제거합니다.



VIN 혹은 E5V는 외부 전원으로 사용될 수 있습니다. 이 경우에 STM32 누클레오 보드와 확장 보드의 전류 소비는 USB 경우에 허용된 전류를 초과합니다. 이 조건에서 통신, 프로그래밍, 디버깅으로만 USB를 사용하는 것이 여전히 가능합니다. 그러나 VIN 혹은 E5V를 사용할 때 우선 보드에 전원을 공급하고 나서 USB 케이블을 PC에 연결하는 것은 필수입니다. 이런 식의 절차는 enumeration이 외장 전원 덕택에 이루어지는 것을 보장합니다.


다음의 절차를 따라야 합니다:


1. JP5의 핀 2와 핀 3를 점퍼로 연결합니다.

2. JP1이 제거되었는지 확인합니다.

3. 외장 전원을 VIN 혹은 E5V에 연결합니다.

4. 외장 전원의 전력은 7V< VIN < 12V to VIN, or 5V for E5V

5. LD3가 켜졌는지 확인합니다.

6. PC를 USB 커넥터 CN1에 연결합니다.


만약 이 순서를 따르지 않는다면 보드는 우선 VBUS에 공급된 후 VIN 혹은 E5V에 공급되어질 수 있어 다음의 위험에 직면할 수 있습니다:

1. 만일 300mA 이상이 보드에 의해서 요구되면 PC는 손상될 수 있고 혹은 전류원은 PC에 의해서 제한될 수 있습니다.

2. 300mA는 enumeration에서 요구되고 (JP1은 OFF이어야 하기 때문) 그래서 이 요구는 거절되고 enumeration은 PC가 충분한 전류를 공급할 수 없다면 성공하지 못하는 위험이 있습니다. 결론적으로 보드는 전원이 공급되지 않습니다 (LED LD3 OFF 상태를 유지합니다).


예를 들어 경우에 따라서 3.3V가 확장 보드에 의해서 공급될 수 있고 전원 입력으로 곧바로 +3.3V (CN6 pin 4 or CN7 pin 12 and pin 16)를 사용할 수 있습니다. STM32 누클레오 보드는 +3.3V로 전원이 공급될 때 ST-LINK는 전원이 공급되지 않고 그러므로 프로그래밍과 디버그 특성이 불가능합니다. 외장 전원 +3.3V는 다음과 같이 간략화 하였습니다.



보드로 +3.3V를 사용할 때 2가지 다른 설정이 가능합니다:

ST-LINK를 제거합니다 (PCB cut). or

• SB2 (3.3V regulator) and SB12 (NRST) are OFF.


USB, VIN or E5V으로 전원을 공급할 때 +5V (CN6 pin 5 or CN7 pin 18) Arduino 쉴드 혹은 확장 보드를 위한 전원으로서 사용될 수 있습니다. 이 경우에 최대 전류는 위의 관련 표를 따라야 합니다. +3.3V (CN6 pin 4 or CN7 pin 12 and 16)도 전원으로 또한 사용될 수 있습니다. 전류는 regulator U4 (500 mA max)의 최대 전류 용량으로 제한됩니다.


LED


3색 LED(green, orange, redLD1 (COM)은 ST-LINK 통신 상태에 대한 정보를 지시합니다. LD1 디폴트 색깔은 red이고 LD1은 다음 setup과 함께 PC와 ST-LINK/V2-1 사이에 통신이 진행 중임을 지시하기 위해서 green으로 변경됩니다.

• 느린 깜박임 Red/Off: USB 초기화 전

• 빠른 깜박임 Red/Off: PC와 ST-LINK/V2-1 (enumeration) 사이에 첫번째 올바른 통신 후에

• Red LED On: PC와 ST-LINK/V2-1 사이에 초기화가 완료되었을 때

• Green LED On: 성공적인 장치 통신 초기화 후에

• 깜박임 Red/Green: 장치와 통신 통신 중에

• Green On: 통신을 성공적으로 마침

• Orange On: 통신 실패

사용자 LD2: green LED는 STM32 타겟에 의존하는 STM32 I/O PA5 (pin 21) or PB13 (pin 34)에 대응하는 Arduino 신호 D13에 연결된 사용자 LED입니다:

• I/O 가 HIGH value, LED는 켜집니다

• I/O 가 LOW, LED는 커집니다

LD3 PWR: red LED는 STM32 파트가 전원이 공급되고 +5V가 가능하지를 지시합니다.



'Embedded Programming > STM32 Cortex-M4' 카테고리의 다른 글

NUCLEO-F446RE 보드 설정(2)  (0) 2018.01.21
NUCLEO-F446RE 보드 레이아웃  (0) 2018.01.14
NUCLEO-F446RE 보드 스펙  (0) 2018.01.13
STM32F4 시리즈  (1) 2018.01.13
STM32 MCU 누클레오 보드  (0) 2018.01.12
Posted by Nature & Life


STM32 Nucleo-64 개발보드는 STM32F446RE MCU를 실장하며 Arduino와 ST morpho 연결이 가능합니다. 다음은 ST사의 보드 설명과 간단한 스펙 그리고 사용자 메뉴얼입니다.


NUCLEO-F446RE

Brief specification

사용자 메뉴얼


요약하면 STM32 누클레오 보드는 사용자에게 STM32 MCU를 이용하여 새로운 아이디어와 프로토타입을 만드는데 저렴하고 유연한 방법을 제공합니다. 성능과 전력 소모 그리고 스펙의 다양한 조합의 선택해서 말입니다. 호환되는 보드로서 SMPS는 Run 모드에서 전력 소모를 크게 줄여줍니다.


Arduino Uno V3 연결이 가능하고 ST morpho 헤더는 광범위한 특성화된 쉴드 보드의 선택과 함께 STM32 누클레오 오픈 개발 플랫폼의 기능의 손쉬운 확장을 가능하게 합니다.


STM32 누클레오 보드는 별도의 프로브를 필요로 하지 않는데 이는 ST-LINK/V2-1 디버거/프로그래머를 탑재하기 때문입니다.


STM32 누클레오 보드는 다양한 패키지 형태의 소프트웨어 예제와 함께 STM32의 이해가 쉬운 소프트웨어 HAL 라이브러리와 제공되며 게다가 http://mbed.org의 Arm Mbed 온라인 리소스에 곧바로 접근할 수 있습니다.


Key Features

    • STM32 microcontroller in LQFP64 package

    • External SMPS to generate Vcore logic supply (only available on '-P' suffixed boards)

    • 1 user LED shared with Arduino™

    • 1 user and 1 reset push-buttons

    • 32.768 kHz LSE crystal oscillator

    • Board expansion connectors:

      • Arduino™ Uno V3

      • ST morpho extension pin headers for full access to all STM32 I/Os

      • External SMPS experimentation dedicated connector (only available on '-P' suffixed boards)

    • Flexible power-supply options: ST-LINK USB VBUS or external sources

    • On-board ST-LINK/V2-1 debugger/programmer with USB re-enumeration capability. Three different interfaces supported on USB: mass storage, virtual COM port and debug port

    • Comprehensive free software libraries and examples available with the STM32Cube MCU Package

    • Support of a wide choice of Integrated Development Environments (IDEs) including IAR™ , Keil® , GCC-based IDEs, Arm® Mbed™

    • Arm® Mbed Enabled™ compliant (only for some Nucleo part numbers)


NUCLEO-F446RE


위 보드는 상단과 하단의 PCB로 구분되며 상단의 MCU는 ST-LINK/V2-1 디버거/프로그래머가 구현된 부분으로, 온보드(on-board 혹은 embedded) 디버거/프로그래머라 합니다. 이 PCB 상의 USB 포트에 사용자 개발환경(IDE)이 설치된 PC와 연결되고 각 사용자 개발환경에 따라서 USB 드라이버를 설치(www.st.com)해야 합니다.


P-NUCLEO-IHM001



'Embedded Programming > STM32 Cortex-M4' 카테고리의 다른 글

NUCLEO-F446RE 보드 레이아웃  (0) 2018.01.14
NUCLEO-F446RE 보드 설정(1)  (0) 2018.01.13
STM32F4 시리즈  (1) 2018.01.13
STM32 MCU 누클레오 보드  (0) 2018.01.12
Discovery vs. Nucleo board  (1) 2018.01.11
Posted by Nature & Life


STM32F4 시리즈는 ARM사의 Cortex-M4 코어를 사용한 ST사의 고성능 MCU로 음성신호와 같은 디지털 신호 처리에 필수적인 DSC(Digital Signal Controller)와 부동소수점 연산기(Floating Point Unit; FPU)를 내장하고 있어 기존 MCU가 가지고 있었던 약점을 극복하고, 많은 주변 장치들을 탑재하여 다양한 용도에 손쉽게 사용할 수 있도록 만들어졌습니다.


ARM Cortex-M4 기반의 STM32F4 MCU 시리즈는 180MHz 주파수까지 동작하는 플레시 메모리로부터 실행되는 최대 225 DMIPS/608 CoreMark를 갖는 Cortex-M 기반의 MCU를 위한 산업계 최고의 벤치마크 점수에 도달이 가능하게 한 ST의 NVT 기술과 ART 가속기의 지렛대 역할을 해 왔습니다.


동적 전력 스케일링으로 전류소모는 STM32F410에서 최소 89 µA/MHz으로부터 STM32F439의 260 µA/MHz까지의 플레시 범위에서 동작합니다. 다음은 STM32F4 시리즈의 중요 스펙입니다:


  • Cortex-M4 코어.

    • 최대 동작 클럭 : 168MHz

    • 최대 210DMIPS(1.25DMIPS/MHz)

    • DSP instruction

    • 16bit FPU 내장

  • Memory

    • 512KB Flash

    • 192KB SRAM + 4KB Backup SRAM

    • MPU

    • DMA

  • Peripherals

    • 16 채널 12 bit ADC. 최대 2.4MSPS

    • 2 채널 12 bit DAC

    • 16/32 bit Timer

- Advanced Control Timer

- General Purpose Timer

- Capture/Compare/PWM

    • RTC

    • Watchdog Timer

    • 6 UART/USART

    • 3 SPI, 3 I2C, SDIO

    • USB Full-speed, High-speed

    • CAN. 최대 1Mbps

    • 10/100 Ethernet

    • True Random Number Generator


다음의 STM32F4 시리즈의 ST사의 일복요연한 구분입니다. 참고하시기 바랍니다:



'Embedded Programming > STM32 Cortex-M4' 카테고리의 다른 글

NUCLEO-F446RE 보드 설정(1)  (0) 2018.01.13
NUCLEO-F446RE 보드 스펙  (0) 2018.01.13
STM32 MCU 누클레오 보드  (0) 2018.01.12
Discovery vs. Nucleo board  (1) 2018.01.11
STM32F4 시리즈의 소자 구별 방법  (0) 2018.01.03
Posted by Nature & Life


매우 저렴한 STM32 누클레오(Nucleo) 보드는 STM32 MCU를 사용하여 사용자의 새로운 아이디어를 시도하고 빠르게 프로토타입을 생성하게 합니다. 동일한 커넥터를 사용하여 STM32 누클레오 보드 시리즈는 다양한 특화된 애플리케이션 하드웨어 애드온(add-on)(Nucleo-64는 Arduino Uno rev3와 ST morpho 커넥터를 포함하고, Nucleo-32는 Arduino Nano 커넥터를 포함합니다) 방식으로 쉽게 확장할 수 있습니다.


Arduino UNO R3 and ST morpho connector


STM32 누클레오 보드는 ST-Link 디버거/프로그래머를 동일 보드에 구현하였기 때문에 별도이 프로브가 필요하지 않습니다.


다양한 소프트웨어 예제와 함께 이해가 쉬운 STM32 소프트웨어 HAL 라이브러리가 STM32 누클레오 보드와 함께 제공되며, IAR EWAEM, Keil MDK-ARM, mbed 그리고 GCC/LLVM-based IDE를 포함한 넓은 범위의 개발 환경에서 완벽하게 동작합니다.


모든 STM32 누클레오 사용자는 www.mbed.org에서 mbed 온라인 리소스(compiler, C/C++ SDK, and 개발자 커뮤니티)에 자유롭게 접근할 수 있으며 불과 수분 내에 완성된 애플리케이션의 제작이 가능합니다.


다음의 ST사에서 STM32 누클레오 보드의 구분입니다.



다음은 누클레오 보드의 주문 코드와 탑재된 STM32 MCU의 목록입니다.



다음은 누클레오 보드의 주문코드에 대한 의미를 나타낸 예제입니다.



'Embedded Programming > STM32 Cortex-M4' 카테고리의 다른 글

NUCLEO-F446RE 보드 스펙  (0) 2018.01.13
STM32F4 시리즈  (1) 2018.01.13
Discovery vs. Nucleo board  (1) 2018.01.11
STM32F4 시리즈의 소자 구별 방법  (0) 2018.01.03
STM32F405xx 스펙 요약  (0) 2017.11.17
Posted by Nature & Life