임베디드(Embedded)나 펌웨어 궁극적으로는 둘다 작은 시스템 내에 하드웨어 제어를 위해 EEPROM 등에 기록되는 일종의 프로그램입니다. 거의 같다라고 봐도 무방합니다. 하지만 근래 들어서 시스템의 복잡화로 인해 기존의 펌웨어를 제작할 때 사용되는 프로그래밍 방식 '슈퍼루프 방식'은 프로그래머의 체계적인 프로그램 설계와 짜임세 있는 구성이 프로그래머를 피곤하게 할 만큼 복잡하게 되었습니다.


이에 대한 대안으로서 나온 것이 RTOS(Real Time OS)라는 것인데 ROM에 기록되는 펌웨어 중에서도 특히 이런 RTOS를 이용한 것을 임베디드(내장형 시스템)라 칭하는 경우가 많습니다. RTOS를 사용하게 되면 ROM에 기록되어야 할 펌웨어의 크기가 커지고, 시스템 오버해드라 하여 불필요한 부하를 가져다 주게 됩니다. 하지만, 펌웨어 개발의 융통성과, 안정성, 정확성을 고려할 때 펌웨어의 크기나 시스템 오버해드는 충분이 무시할 수 있는 요소가 된다는 것입니다.


대표적인 RTOS인 ChibiOS


RTOS를 이용한 임베디드 시스템은 꼭 ARM같이 거대한 프로세서에만 사용되는 것은 아닙니다. 상당히 유명한 uCOS-II경우 구식 8051부터 Intel 32bit까지 다양한 플랫폼을 지원합니다. 8051계열에도 얼마든지 임베디드 시스템을 펌웨어로 올릴 수 있습니다.


펌웨어는 일반적으로 롬(ROM)에 저장된 하드웨어를 제어하는 마이크로 프로그램을 의미합니다. 프로그램이라는 관점에서는 소프트웨어와 동일하지만 하드웨어와 밀접한 관계를 가지고 있다는 점에서 일반 응용 소프트웨어와 구분되어 펌웨어는 소프트웨어와 하드웨어의 특성을 모두 가지고 있다고 할 수 있습니다.


예를 들어 어떤 기능을 발휘하는 하드웨어를 만든다고 할 때, 그것을 제어하는 모든 회로를 하드웨어로만 만들면, 그 구조도 대단히 복잡해지고 심지어는 논리적인 표현을 하기가 어려운 부분도 발생합니다. 이런 경우 상당부분을 소프트웨어로 대체하되 그 소프트웨어가 저장된 기억장치를 하드웨어의 제어회로 중의 중심부분으로 구성하면, 매우 간단하면서도 적은 비용으로 문제를 해결할 수 있게 됩니다. 이렇게 만든 하드웨어적인 소프트웨어를 펌웨어라 합니다.


이렇게 할 경우 하드웨어의 입장에서는 별도의 논리회로를 가진 것이 아니기 때문에 소프트웨어적인 특성을 가지고 있지만, 소프트웨어 입장에서는 마이크로 프로그램이 하드웨어를 제어하기 때문에 하드웨어적인 특성을 가진다고 설명할 수 있습니다.


소프트웨어의 기능을 펌웨어로 변경할 수 있으면 속도가 현저하게 증대되어 고속 처리가 필요한 프로그램은 펌웨어로 만들어 사용하기도 합니다. 또한 하드웨어의 기능을 펌웨어로 변경하면 속도는 느려지지만, 그 기능을 위한 논리회로를 설계하여 사용하는 것보다 저렴하고, 편리하게 구현하여 사용할 수 있는 장점을 가지기도 한다는 것입니다.




'Embedded Programming > Environment' 카테고리의 다른 글

왜 RTOS가 필요한가?  (0) 2018.01.31
Posted by Nature & Life
Radio Control/etc2015. 4. 30. 18:38


사람마다 멀티콥터(Multicopter)를 즐기는 방법은 크게 2가지가 있습니다.


● 레저활동으로 다이나믹한 조종비행과 고공촬영을 즐기는 매니아 층

● 멀티콥터를 직접 제작부터 비행까지 취미생활을 영위하는 매니아 층


자신이 단순히 레저활동으로 비행을 즐기고 촬영을 감상하는 매니아 층이라면 Flight Controller(FC)를 포함한 상업용 완전한 기체(RTF)를 구입하여 바로 비행에 나서는 것이 시간을 단축시키는 길입니다. 그러나 Flight Controller의 구성(GPS 등) 및 펌웨어(Firmware) 등을 수정하며 조립과정에서부터 비행까지 직접 관여하며, 프론티어 정신에 비중을 두는 매니아 층이라면 완전한 기체(RTF)보다는 반조립 기체(ARF)에 자신이 직접 제작한 Flight Controller 등을 탑재하길 원할 것입니다.


만일 후자의 경우라면 전자와 다르게 고려해야 될 것이 많이 있습니다. 대부분의 상업용 기체는 Rock solid한 반면에 자작용 기체는 유연하지만 안정성이 떨어질 수 밖에 없다는 것입니다. 'Rock soild'라 함은 제조사에서 무수한 시행착오로 고도로 최적화되어 있어 안정한 비행이 가능하다는 것이고, 후자는 하드웨어적 유연성으로 인해 혹은 여러 부품과의 호환성으로 인해 안정성은 결국 유저 자신의 몫이라는 것입니다.


하지만 후자의 경우 여러 장점도 있습니다. 상업용 기체는 안정성을 담보로 로열티에 대한 댓가를 치루어야 합니다. 즉 비싸다는 것입니다. 그러나 후자는 기체만을 구입하고 Flight Controller 등은 Open source 이기에 저렴하다보니 조립하는 것이 [반드시 그렇지는 않지만] 싸질 수 있다는 것입니다. 자신의 드론(Drone) 제작에 앞서 드론을 정복하기 위해서는 많은 관련지식과 시행착오를 겪어야 하며 때론 추가의 비용과 많은 시간이 걸릴 수도 있다는 것을 기억해야 합니다.


멀티콥터를 제작하려면 우선 Flight Controller를 선택해야 합니다. Open source로는 크게 Multiwill와 APM 시리즈가 있는데 두터운 사용자 층을 고려한다면 Multiwill가 추천되는 추세입니다. 이는 Community가 보다 활성화되어 있어 조립과정 중에 혹은 기체 셋팅 중에 발생할 수 있는 문제를 쉽게 해결할 수 있다는 것입니다. 기타 Open source를 골라야 한다면 원론적으로 메인 칩셋부터 확인해야 할 것입니다. 왜냐면 단적으로 STM시리즈의 마이크로컨트롤러(Microcontroller)에 익숙하지 않다면 수정은 고사하고 코드를 읽기조차 힘들기 때문입니다.


Multiwill은 Community에서 지속적으로 업데이트되고 있으며 포럼에서 많은 도움을 받을 수 있으며 코드의 수정과 업로드하는 과정을 간단화시킨 근래의 아두이노(Arduino) 환경에서 쉽게 개발할 수 있기 때문입니다. 게다가 메인 칩셋은 Atmel사의 칩으로 C언어로 최적화가 잘되는 마이크로컨트롤러로 알려지며 폭넓게 사용되고 사용자 층이 넓기 때문입니다.


어떤 매니아는 ESC조차도 자작을 시도하는데 이 경우를 제외하면 기체는 Brushless 모터를 포함한 프롭과 ESC, 프레임을 모두 갖춘 보급형 퀴드콥터 기체가 입문자로서 적당할 것입니다. F450 ARF 기체는 중국 DJI사(http://www.dji.com) 제작한 쿼드콥터 기체로 그래도 저렴한 편이며, 최근에 많이 보급되어 프레임이 견적으로 이어지면 쉽게 교환할 수 있는 장점이 있습니다.


Phantom 3


또한 F550 ARF는 헥사콥터(엄밀하게 6개의 Arm을 가짐) 기체용이며 DJI사는 자사의 Naza 시리즈 Flight Controller를 탑재하여 Phantom 시리즈로 조립, 발매하고 있습니다. F450 ARF 기체는 Flight Controller와 송/수신기, 밧데리 등은 제외하고 있으며 스펙은 다음과 같습니다.

    • Frame Weight(기체 무게) : 282g

    • Diagonal Wheelbase(대각선 기체 길이) : 450mm

    • Takeoff Weight(이륙 중량) : 800g ~ 1200g

    • Propeller : 10 x 4.5inch

    • Battery : LiPo(3S 1500mAh ~ 2600mAh)

    • Motor : 2212 ~ 2216(stator size)

    • ESC : 15A ~ 25A



F450 ARF 기체의 외형


F450 ARF 기체의 구성




'Radio Control > etc' 카테고리의 다른 글

Power Distribution Board란?  (0) 2017.03.08
Posted by Nature & Life
Radio Control/ESC2014. 6. 19. 11:52



다음은 Simon Kirby(http://0x.ca/)의 오픈 RapidESC 펌웨어 개발 사이트입니다.


https://github.com/sim-/tgy


This tree contains Atmel AVR assembly code for ATmega-based 3-phase sensor-less motor electronic speed control (ESC) boards, originally for Turnigy and similar models. This work is based on Bernhard Konze's "tp-18a" software, which was a port from his earlier personal work to the TowerPro 18A and original (not current!) Turnigy Plush boards. Please see tgy.asm for Bernhard's license.

이 목록은 ATmega 기반의 3상 브러쉬리스 모터 전자 속도 제어기(ESC) 보드를 위한 Atmel AVR 어셈블리 코드를 포함합니다. 원래는 Turnigy와 유사한 모델을 위한 것이었습니다. 이 프로젝트는 Bernhard Konze의 'tp-18a' 소프트웨어에 기반을 둡니다. 이것은 TowerPro 18A과 원래의 Turnigy Plush 보드의 그의 앞선 개인적인 프로젝트를 포트(port)한 것이었습니다. Bernhard의 라이센스에 대해서 tgy.asm을 보시기 바랍니다.


Patches and comments are always welcome! Let me know how it goes!

패치와 주석은 항상 환영합니다. 알려주세요!


Features

    • 16MHz operation on most boards

    • 16-bit output PWM with full clock rate resolution (~18kHz PWM with a POWER_RANGE of 800 steps)

    • 24-bit timing and PWM pulse tracking at full clock rate resolution

    • ICP-based pulse time recording (on supported hardware) for zero PWM input control jitter

    • Immediate PWM input to PWM output for best possible multicopter response (but NOT where soft start or really any significant current limiting is needed!)

    • Accepts any PWM update rate (minimum ~5microseconds PWM low time)

    • Optimized interrupt code (very low minimum PWM and reduced full throttle bump)

    • Configurable board pin assignments by include file

    • Smooth starting in most cases

    • Forward and reverse commutation supported, including RC-car style reverse-neutral-forward PWM ranges, with optional braking


Hardware

See http://wiki.openpilot.org/display/Doc/RapidESC+Database and/or https://docs.google.com/spreadsheet/ccc?key=0AhR02IDNb7_MdEhfVjk3MkRHVzhKdjU1YzdBQkZZRlE for a more complete list. Some board pictures here: http://0x.ca/sim/esc/

http://wiki.openpilot.org/display/Doc/RapidESC+Database 그리고/또는 좀더 완전한 목록을 위해서 https://docs.google.com/spreadsheet/ccc?key=0AhR02IDNb7_MdEhfVjk3MkRHVzhKdjU1YzdBQkZZRlE을 보시기 바랍니다. 일부 보드의 그림은 여기에 있습니다: http://0x.ca/sim/esc/


Tested boards by target:

    • afro2:

        • AfroESC 2 (prototype)

    • afro_hv:

        • AfroESC HV (high voltage, with all-N FETs and drivers)

    • afro_nfet:

        • AfroESC with all-N FETs (revision 3)

    • birdie70a:

        • Hobby King Birdie 70A (BIRD-60A)

        • Hobby King Red Brick 200A (RB200A, black board)

    • bs:

        • Hobby King 6A (HK_261000001)

        • Hobby King 10A (HK_261000002)

        • Hobby King 40A (F-40A)

        • Hobby King 60A (F-60A)

    • bs_nfet:

        • Hobby King 20A (F-20A)

        • Hobby King 30A (F-30A)

    • bs40a:

        • Hobby King BlueSeries 40A (and some Mystery 40A boards)

    • dlu40a:

        • Pulso Advance Plus DLU40A with opto-isolated inverted PWM input

        • Hobby King Multistar 45A

    • dlux:

        • Turnigy dlux 20A SBEC

    • hk200a:

        • Hobby King SS Series 190-200A (HK-SS200ALV)

        • RCTimer 50A TQFP version

    • kda:

        • Keda 12A rev B with inverted PWM input (30A should also work)

        • Dynam 18A, 25A with Blue Heat Shrink

        • Hobby King Multistar series (30A and under)

    • maytech30a:

        • Maytech 30A and 20A, complementary PWM

    • maytech40a:

        • Maytech 40A, complementary PWM

    • maytech60a:

        • Maytech 60A, complementary PWM

    • mkblctrl1:

        • MikroKopter BL-Ctrl v1.x (flashable by ISP only)

    • rb50a.hex

        • Hobby King Red Brick 50A (RB50-ESC)

    • rb70a.hex

        • Hobby King Red Brick 70A (RB70A)

        • Hobby King Red Brick 200A (RB200A-BTO, black board)

    • rct50a:

        • RCTimer 50A older MLF version

    • tbs:

        • Team BlackSheep TBS 30A ESC (ICP input version)

    • tp:

        • Original TowerPro 17A, 25A

        • Hobby King SS models without "-HW" in part number

    • tp_8khz:

        • tp at 8kHz PWM (workaround for DYS/HK-SS clones with PWM noise problems)

    • tp_i2c:

        • tp modified for I2C input (old ADC4 routed to ADC1)

    • tp_nfet:

        • Newer TowerPro 25A with inverted low side (BL8003 drivers)

    • tp70a:

        • TowerPro 70A with BL8003 FET drivers (inverted low side)

        • tgy (these boards typically have no external resonator):

        • Original TowerPro 18A

        • Original Turnigy Basic and Turnigy Plush 10A, 18A, and 25A (Hobbywing OEM)

        • RCTimer 10A, 18A, 20A, 30A, 40A (18A, 20A, 30A are same board with more or less FETs)

        • Hobby King SS models with "-HW" in part number

    • tgy6a:

        • Original Turnigy Plush 6A


Turnigy Plush 18A


Notes

    • If it breaks, you get to keep both pieces! (만일 부러지면, 두 조각을 그대로 유지하면 됩니다!)

    • Use at your own risk, and always test first without propellers! (손상을 감안해야 하며 항상 프롭 없이 테스트를 먼저 해야 합니다!)

    • New Turnigy Plush, Basic, Sentry and Pentium boards (Hobbywing OEM) have all switched to SiLabs C8051F334, d'oh! (새로운 Turnigy Plush, Basic, Sentry 그리고 Pentium 보드들(Hobbywing OEM)은 모두 SiLabs사의 C8051F334으로 전환한 상태입니다.)

    • If your ESC has 6 pads and an AVR, it's probably compatible; the pads are MOSI, MISO, SCLK, GND, VCC, and RESET. If it has 4 pads, it is probably a newer SiLabs-based one, for which this code will not work. (Except HK_261000001 which has 4 pads but has an AVR.) (여러분의 ESC가 6개의 패드와 AVR을 사용한다면 아마도 호환가능할 것입니다; 패드는 MOSI, MISO, SCLK, GND, VCC, 그리고 RESET입니다. 만일 4개의 패드를 가지고 있다면, 아마도 이것은 이 코드에서 동작하지 않는 새로운 SiLabs 칩을 사용하는 보드일 것입니다.(HK_261000001는 예외로 4개의 패드를 갖지만 AVR을 사용합니다))

    • I build and maintain this in Linux with AVRA (1.3.0 or newer). Patches welcome for AVR Studio APS files, etc. (저는 AVRA (1.3.0 or newer)로 Linux 상에서 컴파일하였습니다. AVR Studio *.aps 파일의 패치 또한 환영합니다.)

    • The TowerPro/Turnigy Plush type boards typically do not come with external oscillators, which means their frequency drifts a bit with temperature and between boards. Multicopters and RC-car/boat controllers (with a neutral deadband) would probably be better on a board with an external oscillator. The Mystery/BlueSeries boards typically have them, as well as most higher current boards. (TowerPro/Turnigy Plush 타입의 보드는 전형적으로 외장 오실레이터를 갖지 않는데 이것은 ESC의 주파수가 온도와 보드 사이에서 약간 변동될 수 있음을 의미합니다. (데드밴드를 가진) 멀티콥터와 RC자동차/보트 콘트롤러는 아마도 외장 오실레이터를 가진 보드에서 더 좋을 수 있습니다. Mystery/BlueSeries 보드는 전형적으로 외장 오실레이터를 가집니다. 게다가 가장 높은 전류를 갖는 보드입니다.)

    • This doesn't yet check temperature or battery voltage. This is not desired on multi-rotor platforms; however, people still want to use this on planes, cars, boats, etc., so I suppose I'll add it. (이것은 아직 온도와 밧데리 전압을 체크하지 않습니다. 이것은 멀터로터 플랫폼에서 요구되는 것이 아닙니다; 그러나 사람들이 비행기나 자동차, 보트 등에 이를 사용하기를 원한다면 저는 이 기능을 추가할 수 있습니다)






'Radio Control > ESC' 카테고리의 다른 글

PX4ESC의 스펙  (0) 2015.12.08
ESC32의 스펙  (0) 2015.12.04
RapidESC FAQ's  (0) 2014.06.11
RapidESC Flashing  (0) 2014.06.03
RapidESC란?  (0) 2014.05.26
Posted by Nature & Life



과거에는 PC DOS 응용프로그램 개발시 어떻게 메모리를 효율적으로 관리하느냐가 관건이었던 적이 있습니다. 당시에는 메모리 집적기술의 한계로 PC에 1Mbyte를 설치하였다면 큰 자랑꺼리였으며 가격도 비쌌던 시절였습니다. 그러므로 응용프로그램은 DOS가 사용하는 영역의 나머지인 상위메모리를 사용하곤 하였습니다.


하지만 근래에는 메모리가 부족하여 응용프로그램을 실행하지 못하는 경우는 거의 없습니다. CPU의 속도와 메모리 용량 그리고 대용량 하드디스크의 발전은 더이상 가독성이 떨어지는 낮은 수준(low level)의 언어 사용은 물론 엄격한 메모리 관리의 부담을 덜어주게 되었습니다.


그러므로 언제부턴가 어셈블러(ASM)나 C-언어가 아닌 사용자에 즉, 사람에게 친숙한 높은 수준(high level)의 언어인 비쥬얼베이직(Visual Basic), C++ 언어 등이 대세가 되었습니다. 그럼에도 불구하고 AVR이나 PIC계열의 마이크로콘트롤러(MCU)에서는 여전히 낮은 수준의 프로그램 언어를 사용하고 있습니다.


MCU의 속도나 메모리 용량 등과 같은 성능의 발전과 avr-gcc와 같은 컴파일러의 지속적인 향상에 힘입어 요즈음은 어셈블러보다는 C-언어를 선호하게 된 것도 사실입니다. C-언어로 작성해 굳이 오버헤드(overhead)가 있을지라도 속도와 메모리 같은 개선된 MCU 성능으로 적용하는데 크게 문제가 되지 않은다는 것입니다.


하지만 아직도 상업적인 용도의 AVR 펌웨어(firmware)는 여전히 어셈블러를 사용하고 있습니다. 고성능의 MCU를 사용하여 단가를 높이기 보다는 합리적인 성능의 자원에 펌웨어를 어셈블러로 정교하게 작성하고 최적화하여 시장 경쟁력을 얻는다는 것입니다.





그러므로 어셈블러는 적어도 한번은 다루어봐야 하는 언어로 C-언어와 비교하여 다음과 같은 장점을 갖습니다.


1) 새로운 언어를 배운다는 스트레스는 문법을 익혀야 한다는 부담일 것입니다. 하지만 어셈블러는 문법이 C-언어에 비해서 매우 간단하다는 것입니다. 어셈블러는 원하는 코드 구현 자체가 까다로운 것이지 문법을 처음 익히기는 매우 쉽다는 것입니다. 


구현이 까다롭다는 것은 하드웨어에 대해 일일이 알아야 한다는 것과 아마도 120여개에 이르는 다양한 AVR 명령어가 존재하기 때문일 것입니다. 그러나 다양한 명령어는 기능이 유사한 소위 파생된 명령어로 인하여 용도별로 분류하면 사실상 몇 종류가 되지 않으며, 필요시 그때 그때 가져다 사용하면 됩니다.


2) 어셈블러를 다루면 특히 메모리 영역과 같은 하드웨어를 자세하게 익힐 수 있으며 이러한 지식은 향후 C-언어로 구현시 최적화된 코드를 생성할 수 있는 기회를 제공한다는 것입니다.


기존의 C-언어에서는 하드웨어를 자세히 다룰 필요는 없었습니다. 왜냐하면 사용코자 하는 AVR를 지정하면 컴파일러가 알아서 해주기 때문입니다. 메모리가 부족하면 컴파일러는 이를 사용자에게 일러주고 사용자는 불필요한 변수를 삭제해주면 되었기 때문입니다.


3) 정밀한 타이밍을 요구하는 펌웨어를 작성할 수 있습니다. 


어셈블러 명령어는 1~2 사이클의 클럭을 필요로 하며 사용자는 이를 직접 보면서 다루기 때문입니다. 하지만 C-언어를 사용할 때는 해당코드가 컴파일 후에 얼마의 클럭을 요구하는지 알 수가 없고, 알아낸다 하더라도 1us 정도의 정밀한 타이밍은 사실상 불가능하다는 것입니다. 예를 들어, 브러쉬리스(brushless) 모터를 제어시에 C-언어로 작성된 펌웨어는 고속 회전 영역에서 제어 불능상태가 될 수 있다는 것입니다.







'Embedded Programming > Assembler' 카테고리의 다른 글

Assembly어의 문장 형식  (6) 2014.06.26
식별자와 상수  (0) 2014.06.16
Posted by Nature & Life
Radio Control/ESC2014. 6. 3. 12:35


How is it done?

어떻게 프로그래밍 하는지요?

The process is popularly called flashing. It's actually quite similar to the firmware update from the OpenPilot product through the USB cable and the Ground Control Software.
이 과정은 'flashing'이라고 부릅니다. OpenPilot 제품을 USB 케이블과 지상 제어 스프트웨어(Ground Control Software)를 이용하여 펌웨어를 업데이트 하는 것과 실제로 매우 유사합니다.

The ESC must be connected to the computer via an interface adapter. Afterwards, new software is installed onto the ESC via your computer. Unfortunately, the ESC is not equipped with a standard USB connection port. nor was it intended to be upgraded by the user, so a few little tricks are needed to upgrade the software. This document will illustrate how to successfully upgrade your ESC.
ESC는 인터페이스 어댑터를 통하여 컴퓨터로 연결되어야 합니다. 후로 새로운 소프트웨어가 여러분의 컴퓨터를 통해서 설치됩니다. 불행하게도 ESC는 표준 USB 연결 포트와 잘 연결되도록 갖추고 있지 않으며, 사용자에 의해서 업그레이드를 허용하지도 않습니다. 그래서 작은 트릭이 소프트웨어를 업그레이드 하기 위해서 요구됩니다. 이 문서는 어떻게 여러분의 ESC를 성공적으로 업그레이드 하는 지를 설명할 것입니다.


Risks:
Please note that there is always a possibility you will damage your ESC. Loading the wrong firmware may damage your ESC permanently. The upgrade should be done at your own risk.
여러분의 ESC를 손상시킬 수 있는 가능성이 항상 존재함을 기억하세요. 올바르지 못한 펌웨어를 탑재하는 것은 여러분의 ESC를 영구적으로 손상시킬 수 있습니다. 업그레이드는 전적으로 여러분의 책임입니다.

Compatible ESCs
호환되는 ESC들

The first step is to check whether your ESC can actually be upgraded. At the time of ths writing, only ESCs with an ATMEL micro controller can be upgraded. ESCs equipped with a SiLabs micro controller, which are mainly recent HobbyWing ESCs, cannot currently be upgraded.
처음 단계는 여러분의 ESC가 실제 업그레이드 될 수 있는지 확인하는 것입니다. 이 글을 쓰는 시점에서 ATMEL MCU로 만들어진 ESC만 업그레이드 될 수 있습니다. 주로 최근에 HobbyWing ESC에 사용되고 있는 SiLabs MCU를 실장한 ESC는 현재 업그레이드 할 수 없습니다.

Close up from a Hobbyking 18A ESC with a Atmel micro controller. 

Atmel MCU를 실장한 Hobbyking 18A ESC의 확대사진


An ESC with this version of MCU can normally be upgraded.
이 버젼의 MCU는 정상적으로 업그레이드가 가능합니다.

Close up from a Hobbywing 6A ESC with a SiLabs micro controller.

SiLabs MCU를 실장한 Hobbywing 6A ESC의 확대사진


An ESC with this version of MCU is typically accompanied with 4 contacts or programming points and cannot be upgraded.
이 버젼의 MCU를 실장한 ESC는 전형적으로 4개의 접점 혹은 프로그래밍 포인트를 가지므로 업그레이드를 할 수 없습니다.

Please note that the latest Hobbywing ESCs are no longer sold with an Atmega microprocessor. While earlier versions of these ESCs are equipped with an Atmga MCU and can be upgraded, newer versions cannot be upgraded. The only way of knowing if you have an Atmel processor on your ESC is removing the protective heat shrink and verifying the MCU type. If the MCU is an Atmel like in the above noted picture, then it should be possible to upgrade the ESC.
가장 최근의 Hobbywing ESC들은 더 이상 Atmega MCU를 실장하지 않음을 주의하세요. 반면에 이들 ESC의 초기 버젼들은 Atmega MCU를 내장하여 업그레이드가 가능하고, 새로운 버젼들은 업그레이드 할 수 없습니다. 여러분이 여러분의 ESC가 Atmel 프로세스를 내장하는지를 아는 유일한 방법은 protective heat shrink(외부 포장재)를 제거하고 MCU 형태를 파악하는 것입니다. 만일 MCU가 위에서 언급된 그림에서와 같이 Atmel이라면 그 때 ESC를 업그레이드 하는 것은 가능할 것입니다.

Check your ESC
여러분의 ESC를 확인하세요

The only way to check whether your ESC is compatible and flash new firmware is to remove the protection. Caution here... you can damage the components on the ESC if you are not careful. In the following slideshow an X-acto knife is used to cut the protective shrink tube. Carefully cut along the side of the PCB and do not damage the components.
여러분의 ESC가 호환되고 새로운 펌웨어를 프로그램할 수 있는지는 확인하는 유일한 방법은 보호필름(외부 포장재)을 제거하는 것입니다. 여기서 주의해야 할 것은 여러분이 ESC상에 부품들에 손상을 줄 수 있다는 것입니다. 다음의 슬라이드에서 X-acto 칼이 보호필름 튜브를 자르는데 사용됩니다. PCB의 측면을 따라서 주의롭게 자르고 부품을 손상시키지 않습니다.




The micro controller should be an Atmel controller, it is regularly accompanied with 6 contact points, but this is not necessarily a requirement.
MCU는 Atmel 콘트롤러이어야 합니다. 이것은 보통 6개의 접점 포인트를 가지지만 반드시 있는 것은 아닙니다.


Please refer to the  RapidESC Database to verify if your ESC is compatible.
여러분의 ESC가 호환되는지는 알아보기 위해서 RapidESC 데이터베이스를 참고하시기 바랍니다.



'Radio Control > ESC' 카테고리의 다른 글

RapidESC, 오픈 소스 펌웨어 개발 사이트  (0) 2014.06.19
RapidESC FAQ's  (0) 2014.06.11
RapidESC란?  (0) 2014.05.26
Wii-ESC에 대한 FAQ  (0) 2014.04.07
Wii-ESC 프로젝트의 소개입니다  (0) 2014.04.04
Posted by Nature & Life


아두이노(Arduino)가 오픈 소스 플랫폼으로 자리잡은 이유는 AVR 칩이 제공하는 Self-programming 기능으로 거슬러 올라갑니다. Self-programming 기능이란 칩의 퓨즈를 적절히 설정함으로써 부팅시 Application 영역이 아닌 Boot 영역으로 시작 지점이 변경된다는 것입니다.



한편, AVR 칩은 추가적인 하드웨어 구성 없이 USART나 TWI, SPI 등으로 통신이 가능한데, 칩이 Boot 영역에서 수신된 데이터를 감지하고 Application 영역을 변경할 수 있다는 것입니다. 이러한 기능은 3세대 AVR 칩에서 등장하여 펌웨어의 유지 및 보수 목적으로 특히 가혹한 원격지에서 펌웨어 업그레이드에 유연성을 주기 위함이었습니다.


따라서 이러한 기능이 가능하게끔 작성된 Bootloader를 최초 한번 JTAG이나 ISP를 이용하여 펌웨어를 프로그래밍을 하면 아두이노는 그 다음부터 ISP 없이 USART로 프로그램의 간단히 업로드가 가능하게 됩니다. 결국 아두이노 보드는 아래 회로도에서와 같이 별도의 ATmega16U2 칩을 이용해 USB로 데이터를 송수신하고, 이를 다시 ATmega328 칩에 USART 규격으로 통신하는 구조를 가집니다.



요약하면 아두이노 IDE 환경은 AVR 칩에 최초 Bootloader를 탑재하여 PC의 USB 포트로 C 코드인 스케치(Sketch) 파일을 컴파일하고 이를 아두이노 보드로 추가의 하드웨어 없이 전송하여 쉽고 빠른 개발환경을 제공한다는 것입니다. 게다가 아두이노 IDE 환경에서 함께 제공하는 Serial Monitor를 이용해서 클릭 한번으로 그 결과를 바로 확인할 수 있다는 장점을 가집니다.





Posted by Nature & Life
Radio Control/ESC2014. 4. 4. 08:49

 

 

 

About

 

This firmware designed as a replacement for many commercially available ESC designs based on the AVR MCU. It implements scalar sensor less method to drive Brushless Motor by detecting BEMF zero-crossing instants. The goal of this project is to create firmware most suitable to use in multi-rotors, using cheap and commercially available hardware.

 

이 펌웨어는 AVR 마이크로콘트롤러(MCU)에 기반을 둔 많은 상업용 ESC의 대체용으로 설계되었습니다. 이것은 BEMF zero-cross 순간을 감지하여 Brushless 모터를 구동하는 Sensorless 방법을 구현하였습니다. 이 프로젝트의 목표는 저렴하고 상업적으로 가능한 멀티로터(Multi-rotor) 기체를 사용하는 데에 가장 적당한 펨웨어를 개발하는 것입니다.

 

Features:

 

  • Fastest possible power response.

  • Up to 4000 steps of resolution.

  • Low noise with comparatively high efficiency (Sigma-delta modulator, instead of fixed frequency PWM)

  • Linear power response. (completely no "bump" at 100%)

  • Jitter-free input PWM measurement without harware assisted input capture.

  • Accepts any PWM update rate

  • Sync recovery.

  • Safe stall detection.

  • Complimentary PWM support (AKA: active freewheeling, active rectification)

  • Fixed throttle end-points. No need to calibrate. (since version 2.0.9 it is also possible to calibrate end-points using stick programming procedure)

  • Automatic oscillator calibration.
    Enhanced PPM filter, preventing accidental motor startup (when FC is rebooted, for example)

  • Configurable. The configuration parameters are stored in EEPROM. The Wii-ESC flash tool has visual parameters editor. No more stick programming.

  • Modularity. The high-level implementation is separated from actual hardware with HAL layer.

  • Portability. The firmware is written in C++, which means it can be easilly ported to different platform.

 

Supported Hardware:

 

For complete mapping between targets and real hardware, it is possible to use RapidESC Database. Currently tested targets:

 

펌웨어와 실제 하드웨어 사이에 완전한 매핑을 위하여 RapidESC 데이타베이스를 사용하는 것이 가능합니다. 현재 검증된 펨웨어는 다음과 같습니다.

 

  • bs.hex

  • bs_nfet.hex

  • bs40a.hex

  • kda.hex

  • qynx.hex

  • rb50a.hex

  • rct30nfs.hex

  • rct45nfs.hex

  • tgy.hex

  • tp.hex

  • tp_nfet.hex

 

다음은 아래의 상업용 HobbyKing BlueSeries 40A(HK40A-bs) ESC에서 APC prop.을 장착하고 원래 출고당시 제품과 SimonK와 Wii-ESC 펌웨어를 탑재하였을 때의 추력 등의 특성을 서로 비교한 데이터입니다.

 

 

 

 

 

 

 

 

마지막으로 상업용 ESC에 재프로그램(reflashing)하는 절차입니다.

 

 

 

 


 

'Radio Control > ESC' 카테고리의 다른 글

RapidESC FAQ's  (0) 2014.06.11
RapidESC Flashing  (0) 2014.06.03
RapidESC란?  (0) 2014.05.26
Wii-ESC에 대한 FAQ  (0) 2014.04.07
Wii-ESC란?  (0) 2014.03.13
Posted by Nature & Life
Radio Control/ESC2014. 3. 13. 19:46

 

 

ESC는 Electronic Speed Controller의 약자로 우리말로 '전자변속기'라고 부릅니다. ESC는 밧데리로부터 전기를 전기모터에 공급하는 장치로 멀티콥터(Multicopter)를 비롯한 각종 RC 기체에 회전 동력을 필요로 하는 곳에 사용하여 로터(rotor)를 회전시켜 양력을 얻거나, 멀티콥터의 짐벌(gimbal)에 응용하여 기계적 장치를 움직이게 합니다.

 

과거의 엔진기체에는 전기모터가 필요없지만 근래에는 밧데리 용량과 방전 특성이 크게 개선되어 전기모터를 동력원으로 하는 기체가 대중화되었습니다. 기존의 DC 모터를 사용하는 경우, 기계적 브러쉬(brush)로 회전자에 전기를 급전하기에 기계적 접점이 불가피하여 모터가 회전시 스파크나 소음이 발생하는 등 효율이 좋지 않고 모터의 수명 또한 단축되었습니다.

 

최근에는 이러한 기계적 접점을 없앤 브러쉬리스(brushless; BLDC) 모터가 등장하여 소음도 현저히 줄어들고, 반영구적이며, 효율이 개선되어 RC 기체의 정숙비행과 체공시간의 증대로 전동기체가 범람하게 되었습니다. 기존의 DC 모터를 구동하기 위해서는 스로틀(throttle)의 위치에 따라 트랜지스터(transistor)와 같은 액티브 스위치(active switch)를 PWM 형태로 개폐하므로 장치가 간단하지만 브러쉬리스 모터를 사용하는 경우 장치가 매우 복잡해지고 단가가 상승하게 됩니다.

 

 

BLDC 모터를 구동하는 ESC는 8-bit PIC나 AVR 시리즈 등의 마이컴(Micom)으로 정교하게 제어하는 방법을 채택하고, 상용 ESC의 제조사는 하드웨어를 제작하고 여기에 펌웨어(Firmware)를 적절히 튜닝하여 시판하게 됩니다. 최근에는 멀티콥터가 대중화되면서 이에 걸맞는 성능을 갖춘 예를 들어, 빠른 응답 특성을 가진 ESC를 필요로 하게 되었습니다.

 

 

이러한 요구는 전 세계적으로 ESC를 자작(DIY)하려는 매니아나 동호회를 등장시켰습니다. 대다수는 ESC는 동일 클럭에서 속도가 빠르고 내부에 A/D 컨버터나 비교기 등의 고기능을 지원하는 AVR를 사용하는데, 대부분 어셈블러(Assembler) 수준에서 펌웨어를 개발하기 때문에 일반인이 접근하기에는 쉽지 않다는 것입니다.

 

Wii-ESC는 멀티위(MultiWii) 등의 멀티콥터에 최적화된 ESC 펌웨어를 만들기 위한 오프 소스(open source) 펌웨어 개발 프로젝트로 전 세계적으로 여러 사람이 참여하고 있으며, 어셈블러가 아닌 C 언어 기반이므로 일반 매니아층도 펌웨어의 이해와 수정이 가능하여 자기만의 멀티콥터에 최적화된 펌웨어를 구현할 수 있다는 장점이 있습니다.

 

다음은 Wii-ESC 프로젝트의 링크이며 소개를 간단히 번역한 것입니다.

(번역이 원문과 상이하거나 매끄럽지 못한 부분은 댓글로 남겨 주시면 감사하겠습니다)

 

http://code.google.com/p/wii-esc/

 

 

About

This firmware designed as a replacement for many commercially available ESC designs based on the AVR MCU. It implements scalar sensor less method to drive Brushless Motor by detecting BEMF zero-crossing instants. The goal of this project is to create firmware most suitable to use in multi-rotors, using cheap and commercially available hardware.

이 펌웨어는 AVR MCU에 기반을 둔 많은 상용 ESC를 위한 대체용으로 개발되었습니다. 이것은 역기전력(BEMF)이 '0' 레벨을 지나가는 순간(ZC point)를 감지함으로서 BLDC 모터를 구동하는 sensorless method를 구현하였습니다. 이 프로젝트의 목표는 저렴한 상용 하드웨어를 사용하여 멀티콥터에 가장 적합한 펌웨어를 만드는 것입니다.

 

* Sensorless method

BLDC 모터는 센서(sensor)의 유무에 따라 크게 두 가지 구분하는데, CD-ROM 모터로 대표되는 센서를 가진 BLDC 모터는 제어기가 간편해질 수는 있으나 모터에 센서가 장착되어 단가가 올라가고, 혹한 환경에서 센서의 정밀도가 떨어지며, 모터 외부로 추가적인 배선이 요구되는 등 고장이 쉽다는 것입니다. 하지만 센서 없는 BLDC 모터는 이를 구동하는 제어기가 복잡해지는 단점은 있지만, MCU의 지속적인 성능 개선으로 얼마든지 이를 극복할 수 있으므로 근래에 보다 선호하게 되었다는 것입니다.

 

Features:

  • Fastest possible power response.

  • Up to 4000 steps of resolution.

  • Low noise with comparatively high efficiency. (Sigma-delta modulator, instead of fixed frequency PWM)

  • Linear power response. (completely no "bump" at 100%)

  • Jitter-free input PWM measurement without harware assisted input capture.

  • Accepts any PWM update rate.

  • Sync recovery.

  • Safe stall detection.

  • Complimentary PWM support. (AKA: active freewheeling, active rectification)

  • Fixed throttle end-points. No need to calibrate. (since version 2.0.9 it is also possible to calibrate end-points using stick programming procedure)

  • Automatic oscillator calibration.

  • Enhanced PPM filter, preventing accidental motor startup. (when FC is rebooted, for example)

  • Configurable. The configuration parameters are stored in EEPROM. The Wii-ESC flash tool has visual parameters editor. No more stick programming.

  • Modularity. The high-level implementation is separated from actual hardware with HAL layer.

  • Portability. The firmware is written in C++, which means it can be easilly ported to different platform.

 

 

 

'Radio Control > ESC' 카테고리의 다른 글

RapidESC FAQ's  (0) 2014.06.11
RapidESC Flashing  (0) 2014.06.03
RapidESC란?  (0) 2014.05.26
Wii-ESC에 대한 FAQ  (0) 2014.04.07
Wii-ESC 프로젝트의 소개입니다  (0) 2014.04.04
Posted by Nature & Life

 

 

APM(Autopilot-Mega) v2.5는 매우 진보된 비행제어기(flight controller)이지만 비싼것이 흠입니다. 그러나 근래에는 APM v2.5에 필적하는 성능의 저렴한 Multiwii 비행제어기가 등장하였습니다. 성능면에서 APM v2.5는 v2.0과 크게 다르지 않으며 단지 몇가지 문제점이 개선되었으며 많은 착탈식 센서들을 설치가능하다는 것입니다. 최근에 APM v2.5를 대체할만한 비행제어기 중에 하나로 많은 매니아들이 Crius AIOP(All in one Pro)를 뽑고 있다고 알려집니다.

 

이러한 Crius AIOP 보드의 전 세계적인 보급은 Crius AIOP의 하드웨어에 MegaPirates를 탑재하여 APM v2.5 만큼이나 강력함에도 불구하고 가격이 훨씬 저렴하다는 장점 때문일 것입니다. MegaPirates는 우리말로 '메가해적'이라 부르는 국내 사용자들이 계시며, Autopilot 펌웨어로 Arducopter로부터 다양한 보드에 사용하기 위해 포트되었다고 전해집니다.

 

이러한 MegaPirates은 'position hold' 기능 등이 없었던 기존의 Multiwii 보드에서는 ATMega 328과 같은 메인 프로세서의 EEPROM 사이즈의 제약으로 Crius AIO 보드(ATMega 2560 processor) 이상의 버젼에서 구동가능한 프로그램입니다.

 

다음의 링크는 MegaPirates 사이트와 공개 코드를 다운로드 받을 수 있는 곳입니다.

(MegaPirateNG(MPNG)는 MegaPirates Next Generaion의 약자입니다) 

 

 

 

APM v2.5와 Crius AIOP 보드를 간단히 비교하면 다음과 같습니다.

 

- APM v2.5와 달리 Crius AIOP 보드는 정사각형의 형태로 Multicopter에 부착이 용이합니다.

- Crius AIOP 보드는 설정을 변경하여 Spectrum Satellite을, SBUS의 경우에는 추가적인 어댑터를 사용하여 가능하지만, APM v2.5 보드는 펌웨어 자체의 변경이 필요하다는 것입니다.

- Crius AIOP 보드는 APM v2.5 보다 저렴한 표준 GPS 모듈을 지원합니다.

- Crius AIOP 보드는 펌웨어로 오픈 소스 형태의 Multiwii나 MegaPirateNG(MPNG) 그리고 AeroQuad 등이 가능하지만 APM v2.5의 경우에는 APM 시리즈에만 국한됩니다.

- APM v2.5 보드는 제조사로부터 메뉴얼이 자세히 제공되지만 Crius AIOP 보드는 단지 전 세계의 일부 사용자들에 의해 작성되고 웹상에서 이들을 서로 공유하는 정도입니다.

- APM v2.5와 Crius AIOP 보드 모두는 Mission Planner를 이용하여 파라미터나 비행 계획 등을 설정할 수 있습니다.

 

다음은 MegaPirateNG(MPNG)의 특징입니다.

 

- MPNG는 DYP-ME007와 같은 저렴한 Sonar 센서들을 지원합니다.

- MPNG는 RemzibiOSD, MinimOSD, E-OSD(Syberian’s)와 같은 서로 다른 OSD를 지원합니다.

- MPNG는 사용자 층이 없어 OpticalFlow와 Maxbotix sonar를 지원하지 않습니다.

(그 밖의 다른 특성은 ArduCopter와 동일합니다)

 

 

 

 

 

'Radio Control > Flight Controller' 카테고리의 다른 글

AutoQuad 사이트에서 소소 코드를 확인하는 법  (0) 2015.12.02
AutoQuad란?  (0) 2015.11.29
다양한 Multiwii 보드  (0) 2014.03.03
Multiwii란?  (0) 2014.02.26
3DR社의 Pixhawk  (0) 2013.10.23
Posted by Nature & Life