'[H-01] File System' 카테고리의 다른 글

Root file system 만들기  (0) 2010.03.26
Posted by eoseontaek

'[C-04] ATmega2560' 카테고리의 다른 글

Linux에서 AVR 컴파일환경 만들기  (0) 2009.11.09
AVR221: Discrete PID controller  (0) 2009.11.06
Megaload 사이트  (0) 2009.10.22
MegaLoad  (0) 2009.10.22
AVR 부트로더  (0) 2009.10.22
Posted by eoseontaek
2009. 10. 24. 14:34
Datasheet
Link : http://www.atmel.com/dyn/resources/prod_documents/doc6221.pdf




AT91SAM9260-EK
The AT91SAM9260-EK Evaluation Kit enables the evaluation of and code development for applications running on an AT91SAM9260 device.

Link : http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3933






'[C-03] AT91SAM9260' 카테고리의 다른 글

Linux4SAM - Software Tools  (0) 2009.11.15
Linux4SAM - Getting Started  (0) 2009.11.14
AT91SAM Community  (0) 2009.11.10
KEIL ARM의 AT91SAM9260 Device Database site  (0) 2009.11.10
Free LinuxLink Trial  (0) 2009.11.10
Posted by eoseontaek
Posted by eoseontaek

'[C-04] ATmega2560' 카테고리의 다른 글

AVR221: Discrete PID controller  (0) 2009.11.06
AVR Timer 계산기  (0) 2009.10.26
MegaLoad  (0) 2009.10.22
AVR 부트로더  (0) 2009.10.22
MegaLoad 3.0b3 (ATmega128용 Bootloader)  (0) 2009.10.22
Posted by eoseontaek
2009. 10. 22. 15:48

http://www.microsyl.com/
MegaLoad

 

History

MegaLoad is a Windows based boot loader for all Atmel ATMega microcontrollers that support the Bootloader function.  MegaLoad is a solution for everybody who wants fast loading (~8k in 3 seconds) and easy software upgrade via MCU RS232 port. 

 

Features Ver : 8.0

puce

Now support device larger than 128k flash

puce

Small Bootloader code. Only 256 words if only flash program is need (512 word if flash & EEPROM)

puce

Auto baud configuration allowing any oscillator setup. 

puce

Only embedded requirement is RS232 connector like a MAX232. 

puce

Communicates at 9600,19200,38400,57600,115200bps on Com1 to 20

puce

Simple Monitor window is available to help you to debug your code 

puce

Checksum everywhere to secure data 

puce

Automatic page retry, if error in flash programming 

puce

Automatic byte retry, if error in EEPROM programming 

puce Manual set & clear DTR,RTS if need.
puce Reset button

 

System Requirements

puce Windows, .NET framework 2.0 runtime
puce RS232
puce ATMega

 

History

V1.0b0 First Release!
V1.1b0
puce Removed a problem of Access violation on some PC
puce Removed a problem with Intel Hex files larger than 64k
puce Check box Bootloader on reset default to true
puce Add ATMega16 bootloader files
V1.2b0
puce Add autobaud rate in each bootloader
puce Add Baudrate selection in Megaload
V2.0b0
puce Fresh new look that give more information on what's going on!
puce Add support for ATMega32,64,128
puce Split Monitor windows in 2 (inchar,outchar)
puce Check if the file to program is still on your hard drive
V2.1b0
puce Add a help file (made by Alex Shepherd [ashepherd@wave.co.nz]) THANKS
puce Correct a rare problem of division by zero
puce Correct a bug in the ATMega128 bootloader for file larger than 65280byte
puce Modify some message to be more clear
puce Correct a timing problem when big hex file and slow PC
V2.2b0
puce Correct a rare problem of no free comport when hyperterminal had been use before...
puce Add support for COM5 &COM6
puce Correct a bug in the ATMega128 bootloader who don't start the app after flashing
V2.3b0
puce Add support for ATMega162 (by Bryan Low)
puce Add option bootload on reset or not
puce Add internal pull up on RX line in each bootloader
V3.0b3
puce Add EEprom programming (byte by byte)
puce Add LockBits programming
puce Support for ATMega8,16,32,64,128,8515,8535,162,169
puce One BootLoader source C file managed by #define's
puce Add support for RS485 half duplex
V3.0b4
puce Correct a miss reported device
puce Change intstall sheild version
puce Change compiler version
puce Update help file
V3.0b5
puce Correct a problem with EEprom programming not check
V3.0b6
puce Correct a problem with App start
V3.0b7
puce Correct a problem with GICR and MCUCR register difference
puce Add support for Mega2313 not (tested)
puce Change #define to be more clear
puce WinApp Ready for Mega 48/88/168
V4.0b2
puce Completely rewritten in C# .NET
puce Add support for Mega2313,48,88,168,165,32506450
puce Add support for Mega 168,3290,6490,406,640,1280,2560
puce Support Com1 to 20
puce Remote reset button
puce Programming only if file has change
V4.0b3
puce Option had been remove due to a lot of problem...
puce Bootloader had changed
V4.0b5
puce Remove some problem at first time start
V5.0b1
puce Remove all registration requirement.
V6.1
puce ReWritten in Visual Studio 2005 .NET
V6.2
puce Communication many time faster with USB to Serial converter
V6.3
puce Put the bootloader files out of the setup
V6.31
puce Bootloader now support MEGA1280, MEGA2560, MEGA1128
V7.0
puce Bootloader smaller & cleanner, support new devices, fit in 256 word for flash only programming
V8.0
puce Now support device larger than 128k flash & work with watchdog enable

 

 

Download

MegaLoad

And

 The bootloader files

------>Take the two files!!!<------

 

 

Nice small tutorial for Megaload from Tony Pattison,  Thanks Tony!

How to use it? (By: Tony Pattison)

 

The source code of the windows application is available for 100$US, in C# .NET or Borland C++ Builder.

For more information please email me at:

s b i s s o n n e t t e  at  microsyl dot c   o  m

Do not cut/past this address, due to the lot of junk I received I had "encrypted" my email address

 

Step 1: Load bootloader code

MegaLoad requires the ATMega to be programmed with the boot loader code first. This can be done with almost any programmer, including the Atmel STK500, AVRISP and PonyProg.  Instructions for PonyProg follow.  All programmers must program the BOOTRST fuses, for the BOOTSZ1 & BOOTSZ0 you must check in the datasheet of your mega to have a boot size of 512byte.

 

  1. Connect your Mega as shown on PonyProg website
  2. Read the fuse bit of your Mega, change the value of BOOTSZ1..0 and  BOOTRST.
  3. Program the new fuse bit setup (don't touch to RSTDISBL you will scrap your ATmega!)
  4. Locate the bootloader ZIP file in the MegaLoad directory.
  5. Extract the entire file from the ZIP file.
  6. Use ICCAVR from www.imagecraft.com to build your hex file
  7. Don't forget to make the good #define for your hardware (Check the source code the info is there)
  8. Program the ATMega*.HEX file
  9. That's it.

 

 

Step 2: Setup MegaLoad

  1. Run the MegaLoad program
  2. Click Open and locate the HEX file to program
  3. Select the COM port that the ATMega is connected to (only COM1-COM19 are supported)
  4. Connect the ATMega to the Windows PC
  5. Reset the ATMega
  6. MegaLoad should see the ATMega reset and will program the ATMega at the speed of light!

The MONITOR button opens up a basic terminal emulator for simple debugging.

The MegaLoad listens on the selected COM port for a handshake signal when the ATMega resets.  If MegaLoad isn't working make sure that the cable is correctly connected.  Use the MONITOR button to verify that communication is working between the ATMega and Windows.


'[C-04] ATmega2560' 카테고리의 다른 글

AVR Timer 계산기  (0) 2009.10.26
Megaload 사이트  (0) 2009.10.22
AVR 부트로더  (0) 2009.10.22
MegaLoad 3.0b3 (ATmega128용 Bootloader)  (0) 2009.10.22
ATmega2560 Bootloader  (0) 2009.10.22
Posted by eoseontaek
2009. 10. 22. 15:43

Link : http://blog.naver.com/yeluh?Redirect=Log&logNo=50018247149




이 부트로더는 http://www.microsyl.com/ 에서 다운받아 수정하여 사용하였으며 사용방법은 다음과 같은 절차대로 하면 무난히 성공할수 있음.

 대략적인 과정은 다음과 같다 bootlader.zip의 압축을 푼후  www.imagecraft.com 사의 ICCAVR(Demo Version도 잘동작함)로 컴파일 한후 ATmega 부트영역에 Write한후 Megaload를 실행한후 Atmega장비를 PC RS-232포트와 연결한후 전원을 넣어 다운로드 종료

 

1. ICCAVR에서 main.c를 수정한다. 수정내용은 사용자 장비에서 사용하는 CPU종류, CPU클록, 통신속도를 선택한다.

        //*****************************************************************************
        // MCU Fequancy
        //*****************************************************************************
        #define XTAL        16000000

        //*****************************************************************************
        // Bootload on UART x
        //*****************************************************************************
        //#define UART        0
        #define UART       1
        //#define UART       2
        //#define UART       3

        //*****************************************************************************
        // BaudRate
        // If you don't specify the baudRate divisor the bootloader
        // will automaticaly be in AutoBaudrate mode
        //*****************************************************************************
       #define BAUDRATE     115200
2.  assembly.s 를 수정한다 사용 CPU에만 1을 적용

        ;*********************************************************
        ; Place a 1 for the processor you want use
        ;*********************************************************

        MEGATYPE8   =  0
        MEGATYPE16  =  0
        MEGATYPE32  =  0
        MEGATYPE64  =  0
        MEGATYPE128 =  1
        MEGATYPE162 =  0
        MEGATYPE169 =  0
        MEGATYPE8515 = 0
        MEGATYPE8535 = 0
        MEGATYPE2313 = 0
        MEGATYPE48   = 0
        MEGATYPE88   = 0
        MEGATYPE168  = 0
        MEGATYPE165  = 0
        MEGATYPE3250 = 0
        MEGATYPE6450 = 0
        MEGATYPE3290 = 0
        MEGATYPE6490 = 0
        MEGATYPE406  = 0
        MEGATYPE640  = 0
        MEGATYPE1280 = 0
        MEGATYPE2560 = 0
        MEGATYPE1128 = 0 

 

3. 컴파일하여 생선된 HEX를 부트영역에 Write하면 OK  Write Option은 BOOTRST fuses,BOOTSZ1 & BOOTSZ2 를 Set 하여 4KByte의 부트로드영역지정과 Reset시 부트로더영역부터 실행할수 있게해 주어야 한다.

 

4. Megaload를 실행하여 다운로드할 HEX파일을 선택한후 PC의 사용포트와 통신속도를 지정한후 PC의 232C와 장비를 연결한다.

 

5. 장비에 전원을 인가하면 다운로딩 완료.

[출처] AVR 부트로더 |작성자 장희웅




'[C-04] ATmega2560' 카테고리의 다른 글

Megaload 사이트  (0) 2009.10.22
MegaLoad  (0) 2009.10.22
MegaLoad 3.0b3 (ATmega128용 Bootloader)  (0) 2009.10.22
ATmega2560 Bootloader  (0) 2009.10.22
ATmega2560 TWI(I2C) Implementatioin  (0) 2009.10.22
Posted by eoseontaek


Link : http://www.avrfreaks.net/index.php?module=Freaks%20Tools&func=viewItem&item_id=446

MegaLoad 3.0b3

Updated: Jan 20, 2005

Toolimage

Description

Windows base bootloader for ATMega8,16,32,64,128,162,169,8515,8535

Now support:
- Flash Programming
- EEprom Programming (now only the byte in the HEX file will be modify)
- Lock Bits Programming

Categories

  • Programming SW
Version Presented by Website Price Rating
3.0b3 (Find Distributor) http://www.microsyl.com Free! Rank: 5
Documents Files
    Supported AVRs Supported Tools
    AVR
    MegaAVR
    TinyAVR

    '[C-04] ATmega2560' 카테고리의 다른 글

    MegaLoad  (0) 2009.10.22
    AVR 부트로더  (0) 2009.10.22
    ATmega2560 Bootloader  (0) 2009.10.22
    ATmega2560 TWI(I2C) Implementatioin  (0) 2009.10.22
    WinAVR에서 printf 함수의 사용 방법  (0) 2009.10.18
    Posted by eoseontaek

    '[C-04] ATmega2560' 카테고리의 다른 글

    AVR 부트로더  (0) 2009.10.22
    MegaLoad 3.0b3 (ATmega128용 Bootloader)  (0) 2009.10.22
    ATmega2560 TWI(I2C) Implementatioin  (0) 2009.10.22
    WinAVR에서 printf 함수의 사용 방법  (0) 2009.10.18
    ATmega2560 SPI Implementation  (0) 2009.10.17
    Posted by eoseontaek

    [참조문서]
    ATMEL application note
    AVR311: Using the TWI module as I2C slave

    AVR315: Using the TWI module as I2C master
     

    '[C-04] ATmega2560' 카테고리의 다른 글

    MegaLoad 3.0b3 (ATmega128용 Bootloader)  (0) 2009.10.22
    ATmega2560 Bootloader  (0) 2009.10.22
    WinAVR에서 printf 함수의 사용 방법  (0) 2009.10.18
    ATmega2560 SPI Implementation  (0) 2009.10.17
    ATmega2560 UART0 implementation  (0) 2009.10.17
    Posted by eoseontaek

    위의 질문을 받고 WinAVR에서 printf 함수를 사용하는 방법에 대하여 조사를 했습니다. 다행히 현재 우리가 사용하는 WinAVR에서는 이 기능을 아주 잘 만들어 놓아서 다른 MCU에서 보다 사용하기가 상당히 편리하게 되어 있네요...
       현재 저는 "AVR ATmega128 마스터" 책의 제2판을 작업하고 있는데 이 내용을 포함시켜야 겠습니다. 우선 아래에 골자를 요약하여 올립니다.

       이에 관련된 내용은 avr-libc Reference Manual의 5.13 Standard IO facilities에 잘 나와 있으며, 헤더 파일 stdio.h의 안에도 자세한 설명이 있고, avrfreaks.com의 AVR GCC 포럼에도 많은 질문과 답변이 있습니다... 이는 avr-libc의 V1.0(AvrEdit 3.6에서 사용하고 있는 것)에서 처음 지원하는 기능으로 보입니다. 그 이전에는 안되는 것으로 이야기되고 있는 것을 보면...
       그런데, 매뉴얼에 보면 이 기능은 아직 안정된 것이 아니기 때문에 앞으로 얼마든지 수정될 수 있으니 주의하라고 되어 있습니다. 하지만, 최근에 avr-libc의 V1.2.0이 나왔는데 이 매뉴얼에도 보면 이 기능은 아직 바뀌지 않고 그대로였습니다. 제가 보기에도 아주 잘 만들어진 기능이라서 수정할 필요가 없어보입니다만...

       WinAVR에서 printf 함수를 사용하는 핵심은 사용자가 임의로 1문자를 출력하는 함수를 만들고 이를 fdevopen() 함수로 인식시켜야 한다는 것입니다. 보통 다른 MCU의 C컴파일러에서는 이 함수로 반드시 putchar()라는 함수를 사용하여야 했는데 여기서는 임의로 이름을 지어도 좋군요.
       fdevopen() 함수는 일반 C언어에서 fopen()에 해당하는 것으로, 파라미터가 3개 있는데 첫번째는 출력장치 함수(STDOUT, STDERR), 두번째는 입력장치 함수(STDIN)를 지정하며, 마지막 파라미터는 사용하지 않으므로 항상 0으로 줍니다.

    (1) 우선 먼저 프로그램의 서두에서 헤더파일 stdio.h를 인클루드시킵니다.

    (2) 이제 printf를 ATmega128의 USART0로 출력하는 것으로 가정하면 당연히 이 직렬포트를 초기화하여야 합니다. 아래 예제에서는 이를 USART0_initialize() 함수로 만들었습니다.

    (3) 다음에는 USART0 에 1문자를 출력하는 함수를 만듭니다. printf 함수는 항상 내부적으로 vprintf 함수를 참조하고 이 vprintf 함수는 항상 STDOUT 장치를 참조하여 이 1문자 출력함수를 사용하게 됩니다. 아래 예제에서는 USART0_putchar() 함수로 만들었습니다. 이 함수의 return 형은 반드시 int로 하고 파라미터는 char 형으로 해야 합니다. 만약, 다른 형으로 하면 에러로 처리됩니다...

    (4) 이제 fdevopen() 함수의 첫번째 파라미터로 1문자 출력함수를 STDOUT 디바이스로 할당합니다. 만약, scanf() 함수로 입력하는 기능이 필요하면 두번째 파라미터에도 1문자 입력함수를 만들어 할당하면 됩니다만 여기서는 생략합니다. 아래 예제에서는 fdevopen(USART0_putchar,0,0)으로 하였습니다.

    (5) printf 함수를 사용합니다. 우리가 알고 있는 모든 %서식이 사용될 수 있습니다.

    (6) 그런데 이 소스를 컴파일할 때는 반드시 printf 함수에 해당하는 라이브러리를 링크시켜주어야 합니다. WinAVR 패키지에 보면 이들 라이브러리 함수가 있습니다. 여기에는 정수까지만 출력할 수 있는 libprintf_min.a가 있고 부동소수점 형식까지 출력할 수 있는 libprintf_flt.a가 있습니다. 정수만 처리하는데 부동소수점 기능까지 포함되면 오브젝트 코드 전체가 쓸데없이 길어지기 때문에 이렇게 한 듯합니다.
       만약 정수 출력만 한다면 이를 컴파일할 때 링커 옵션에 ,-Wl,-u,vfprintf -lprintf_min 을 추가하면 됩니다. 하지만, 아래의 예제에서처럼 부동소수점 포맷을 사용하면 반드시 링커 옵션에 ,-Wl,-u,vfprintf -lprintf_flt -lm 이라고 해주어야 합니다. 이 링커 옵션에서는 컴마 사용에 주의하시고, l은 숫자 1이 아니라 모두 L의 소문자라는 것에 유의하십시오...

       아래의 예제를 실행하면 직렬통신으로 PC의 화면에 메시지와 숫자가 1초 간격으로 증가하면서 출력되는 것을 볼 수 있습니다.

       이 예제에서는 USART0를 사용하였습니다만, 마찬가지 방법으로 USART1로 수정하여 사용할 수도 있죠. 또한, 직렬포트가 아니라 LCD 모듈로 서식지정하여 출력을 내보내는 것으로 쉽게 수정할 수 있다는 것을 짐작하실 수 있겠습니다.
       제가 아직 실험을 해보지는 않았지만 WinAVR에서는 더 놀라운 기능이 가능할 듯합니다. 즉, fdevopen() 함수에서 1문자 출력함수를 임의로 지정할 수 있기 때문에 하나의 프로그램 안에서 수시로 printf에 의하여 출력되는 장치를 변경할 수 있을 듯하다는 것입니다. 다른 C의 경우에는 이 함수가 putchar()로 고정되어 있으므로 불가능하거든요... 그러나, WinAVR에서는 처음에 fdevopen(USART0_putchar,0,0)으로 하면 printf 함수가 USART0로 출력하며, 다시 fclose()로 이 장치를 닫고 fdevopen(USART1_putchar,0,0)라고 하면 이번에는 printf 함수가 USART1으로 출력하고, 이를 다시 LCD 모듈로 출력하도록 또 변경할 수도 있을 것이라는 거죠... 놀랍지 않습니까? 거의 PC 수준이 되는 것이죠...

       어쨌든 궁금하신 분들은 잘 사용하시기 바랍니다.

    /* =========================================================== */
    /*                                Usage of printf Function                                    */
    /* =========================================================== */
    /*               Designed and programmed by Duck-Yong Yoon in 2005.  */

    #include < avr/io.h >
    #include < stdio.h >
    #include "c:\AvrEdit\OK128c\OK128.h"

    void USART0_initialize(void)                      /* initialize USART0 */
    {
      UBRR0H = 0;                                           // 19200 baud
      UBRR0L = 51;
      UCSR0A = 0x00;                                      // asynchronous normal mode
      UCSR0B = 0x18;                                      // Rx/Tx enable, 8 data
      UCSR0C = 0x06;                                      // no parity, 1 stop, 8 data
    }

    int USART0_putchar(char c)                      /* print a character */
    {
      if(c == '\n')                                             // process carriage return
        USART0_putchar('\r');
      loop_until_bit_is_set(UCSR0A,UDRE0);     // Tx ready ?
      UDR0 = c;
      return 0;
    }

    int main(void)
    { unsigned char i = 0;
      double x = 0.0;

      MCU_initialize();                                       // initialize MCU
      Delay_ms(50);                                         // wait for system stabilization
      LCD_initialize();                                        // initialize text LCD module

      LCD_string(0x80,"printf function ");            // display title
      LCD_string(0xC0,"   to USART0    ");

      USART0_initialize();                                 // initialize USART0
      fdevopen(USART0_putchar,0,0);              // STDOUT and STDERR device open

      while(1)
        { printf("This is printf test message !\n");
          printf("Integer number : %3d\n",i);
          printf("Float number : %7.3f\n\n",x);
          i++;
          x += 0.101;
          Beep();
          Delay_ms(1000);
        }
    }

    '[C-04] ATmega2560' 카테고리의 다른 글

    ATmega2560 Bootloader  (0) 2009.10.22
    ATmega2560 TWI(I2C) Implementatioin  (0) 2009.10.22
    ATmega2560 SPI Implementation  (0) 2009.10.17
    ATmega2560 UART0 implementation  (0) 2009.10.17
    WinAVR - interrupt의 SIGNAL과 ISR의 차이점  (0) 2009.10.17
    Posted by eoseontaek

    [참조 문서]

    ATMEL Application Notes





    Posted by eoseontaek

    [참조문서]

    ATmega2560 Datasheet
    ATMEL Application notes
    ATmega2560의 Fuse bit 설정.


    Posted by eoseontaek

    SIGNAL(SIG_OVERFLOW0)

    ISR(SIG_OVERFLOW0)

    이렇게 하면 둘다 똑같다.

     

    하지만 ISR은 20071221rc1버전 부터는 옵션을 붙일 수가 있다.

    여기의 옵션으로는

    ISR_BLOCK,

    ISR_NOBLOCK,

    ISR_NAKED,

    ISR_ALIASOF(target interrupt)

    이렇게 4가지가 존재한다.

    옵션을 붙이는 것은

    ISR(SIG_OVERFLOW0, 옵션)과 같다.

     

    그럼 각 기능에 대해 살펴 보자. ( disassembler창을 통해 확인 해봤다. )

    ISR_BLOCK은 안 붙인것과 동일한 일을 수행한다.

      동일한 일이란

      PUSH    R1 // R1 스택에 저장
      PUSH    R0 // R0 스택에 저장
      IN      R0,0x3F // R0에 SREG 읽음
      PUSH    R0 // R0 스택에 저장 ( SREG 스택에 저장 )
      CLR     R1 // R1 지움 ( R1은 0을 유지하는것을 권장한다. AVR에서 )

      // 여기에 사용되는 레지스터 들을 PUSH 한다.
      // 실제 구문

      // 실제 구문 끝

      // 사용이 끝난 레지스터 들을 다시 POP 한다. (원래 프로그램에 영향이 없도록 PUSH와 POP을 수행함)
      POP     R0 // R0 스택에서 꺼냄 ( SREG 스택에서 꺼냄 )
      OUT     0x3F,R0 // SREG에 R0 저장
      POP     R0 // R0 스택에서 꺼냄
      POP     R1 // R1 스택에서 꺼냄

      RETI // 인터럽트 복귀

      이런 일을 하게 된다. 많다. ㅠㅠ

    그럼 ISR_NOBLOCK은

      ISR_BLOCK의 처음에 SEI가 더 붙는다.

    ISR_NAKED는

      PUSH

      POP

      RETI

      전혀 없는

      실제 구문만 수행한다. 그래서 ISR_NAKED를 사용하면 끝에 RETI를 꼭 붙여야 된다.

      예)

      ISR(SIG_OVERFLOW0, ISR_NAKED)

      {

        PORTD = ~PORTD;

        reti();

      }

      이것의 장점은 코드를 최소화 할 수 있다는 점이다.

    마지막으로 ISR_ALIASOF(target interrupt)은

      target interrupt와 같은 일을 한다고 알려주고 끝난다.

      예)

      ISR(SIG_OVERFLOW0)

      {

        PORTD = ~PORTD;

      }

      ISR(SIG_OVERFLOW1, ISR_ALIASOF(SIG_OVERFLOW0));

      이렇게 하면 타이머1 오버플로어가 타이머0 오버플로어와 같은 구동을 한다.

      좋은 점은 프로그램 공간이 절약된다는 점이다.


    '[C-04] ATmega2560' 카테고리의 다른 글

    ATmega2560 Bootloader  (0) 2009.10.22
    ATmega2560 TWI(I2C) Implementatioin  (0) 2009.10.22
    WinAVR에서 printf 함수의 사용 방법  (0) 2009.10.18
    ATmega2560 SPI Implementation  (0) 2009.10.17
    ATmega2560 UART0 implementation  (0) 2009.10.17
    Posted by eoseontaek

    Attitude and Heading Reference Systems

    From Wikipedia, the free encyclopedia

    Jump to: navigation, search

    Attitude and Heading Reference Systems or better known as Attitude Heading Reference System (AHRS) are 3-axis sensors that provide heading, attitude and yaw information for aircraft. are designed to replace traditional mechanical gyroscopic flight instruments and provide superior reliability and accuracy.

    AHRS consist of either solid-state or MEMS gyroscopes, accelerometers and magnetometers on all three axes. Some AHRS use GPS receivers to improve long-term stability of the gyroscopes. A Kalman filter is typically used to compute the solution from these multiple sources. AHRS differ from traditional inertial navigation systems by attempting to estimate only attitude (e.g. pitch, roll) states, rather than attitude, position and velocity as is the case with an INS.

    AHRS have proven themselves to be highly reliable and are in common use in commercial and business aircraft. Recent advances in MEMS manufacturing have brought the price of FAA certified AHRS down to below $15,000. AHRS are typically integrated with Electronic Flight Information Systems (EFIS) (which are the central part of so-called glass cockpits) to form the Primary Flight Display (PFD.) AHRS can be combined with air data computers to form an "air data, attitude and heading reference systems" (ADAHRS), which provide additional information such as airspeed, altitude and outside air temperature.

    [edit] AHRS manufacturers


    Link : http://en.wikipedia.org/wiki/Attitude_and_Heading_Reference_Systems

    Posted by eoseontaek

    가속도 센서와 자이로 센서는 완전히 다른것입니다.

     

     

    가속도라는것은 특정 방향 직선운동에 대한 속도의 증감비를 말합니다.

    여기서 중요한것은 직선 방향이라는것이 중요합니다.

    따라서 가속도센서는 직선방향으로의 단위시간에 속도 증감비를 수치로 알려주는 센서입니다.

    한가지 더 중력도 가속도의 하나이기 때문에 가속도 센서는 기본적으로 

    항상 Z축 방향으로 -g(중력가속도)값을 가지고 시작합니다.

    만약 센서가 정지해 있는 상태에서 X축에서도 가속도값이 나온다면 X축으로 기울어져 있다는 것도 알수 있겠지요

     

     

     

    자이로센서는 각속도를 측정합니다.

    한축을 기준으로 단위시간에 물체가 회전한 각도의 값을 수치로 알려주는 센서입니다.

     

    정리하자면 속도와 각도의 차이입니다.

    두 센서는 서로 상호 보완관계로 활용하여야 활용도가 극대화 된다고 합니다.

     

    출처 : http://pepsiman.tistory.com/89


    Posted by eoseontaek
    2009. 10. 6. 09:15

    추력(推力)은 뉴턴제2운동법칙과 3운동법칙으로 설명되는 반작용의 힘이다. (界;system)에서 물질(질량;mass)을 움직이거나 가속할 때 물질은 그 반대 방향으로 같은 힘을 작용하는데 이 힘이 물체에 작용할 때 이 힘을 추력이라 한다. 프로펠러 항공기가 날아다닐 수 있는 것은 프로펠러가 비행기 비행 반대 방향으로 물질(공기)를 밀어내는데 이 때 공기는 비행기의 비행 방향으로 추력을 발생시키고 이 힘으로 비행체는 비행하게 되는 것이다.

    수학적 표현 [편집]

    Forces on an aircraft

    회전하는 프로펠러가 공기를 밀어내거나 제트 엔진이 연소된 공기를 분사할 때 비행체는 이 반대 방향으로 추력을 얻는다. 이 때 기관이 발생시킨 공기의 운동량은 공기의 질량속도의 곱으로 표현되고 이 힘은 비행체를 움직이는 힘(충격량)과 같고 방향만 다르다.

    추력은 수학적으로 다음과 같이 나타낼 수 있다.:

    T =\frac{M}{t} v

    여기서:

    T = 추력(thrust)

    M/t = 연료 연소율 (Mass/time)

    v = 속도(배기 혹운 분사 물질의 평균 속도)

    추력의 힘 비교 [편집]

    • 우주왕복선

    우주왕복선의 주 엔진은 1.8MN의 추력을 내며(3개) 우주왕복선 발사체는 14.7MN의 추력을 낸다(2개). 모두 합해 34.8MN의 추력을 내며 왕복선과 발사체가 2,040톤이므로 우주왕복선은 20MN의 추력으로 우주로 쏘아 올려지는 것이다.

    Link : http://ko.wikipedia.org/wiki/%EC%B6%94%EB%A0%A5

    Posted by eoseontaek

    분당 회전수(Revolutions per minute, rpm, RPM, r/min, or r·min-1)는 주파수단위이다. 보통 자동차의 엔진 회전수 또는 컴퓨터의 하드디스크 속도를 나타내는 단위로 많이 쓰지만, 실제로는 모든 회전체의 회전수를 나타낼 때 쓰는 단위이다. 예를 들어, 골프나 야구에서도 볼이 날아갈 때는 일정한 속도로 회전하면서 날아가는데, 이때도 볼이 1분당 몇 번 회전하는가를 나타내고자 할 경우, RPM을 단위로 쓴다. 이처럼 회전하는 모든 물체의 1분당 회전수를 나타내는 단위가 RPM이다.

    자동차·오토바이 따위의 경우에는 회전속도계를 통하여 표시되는데, 자동차는 일반적으로 계기판에 설치된 엔진 회전계를 가리킨다. 이 회전계에 보면 0에서부터 9까지의 숫자가 표시되어 있다. 여기서 1은 1,000rpm을, 2는 2,000rpm을 의미한다. 1,000rpm은 엔진의 주축인 크랭크축이 1분에 1,000바퀴를 돈다는 뜻이다. 다시 말하면 엔진이 1분당 1,000번을 돌면 1,000rpm, 1,500번 돌면 1,500rpm이다.

    RPM이 높아지는 것은 곧 엔진의 회전수가 많아진다는 뜻이고, 회전수가 많아진다는 것은 그만큼 자동차의 출력과 속도에도 영향을 준다는 뜻이다. 다시 말해 토크가 일정하다면, RPM이 높아질수록 속도가 높아진다. 그러나 RPM과 자동차의 속도가 꼭 비례하는 것은 아니다. 왜냐하면 자동차의 출력(마력)은 엔진의 회전력인 토크와 RPM을 곱한 값이기 때문에, 토크의 영향도 받는다.

    컴퓨터에서는 하드디스크의 플래터(platter)가 1분당 회전하는 속도를 일컫는다. 플래터는 하드디스크 드라이브(HDD) 안에 있는 디스크를 다른 종류의 디스크와 구별하기 위해 부르는 용어로, 하드디스크의 데이터를 기록하는 둥근 원판을 가리킨다. 플래터가 하드디스크의 자료를 읽기 위해서는 회전을 해야 하는데, 회전속도가 빠를수록 저장용량이 많고, 읽는 속도도 빨라진다. 반면 고속으로 회전하기 때문에 발열량이 많아지고 소음이 커지는 단점이 있다. 일반적으로 RPM이 높을수록 고급 제품이고, 가격도 비싸다.

    플로피 디스크의 속도는 보통 300rpm 정도인 데 비해, 하드디스크의 회전속도는 3,600rpm 이상이다. 최근에는 5,400·7,200rpm 제품도 생산되고, SCSI 하드디스크는 10,000rpm 이상도 출시되고 있다.

    Posted by eoseontaek
    전자 변속기는  ESC(Electric-Speed-Controller)라고 부르기도 한다. 모터를 PWM(Pulse Width Modulation) 방식으로 제어하는 전동비행기의 핵심 부품이다. 가장 기본적인 구조는 다음과 같다.


    안전스위치 :
    있는 모델도 있고 없는 모델도 있지만. 대개의 경우 없다. 이 스위치의 역할은 처음에 ON/OFF 스위치를 켜더라도 안전스위치를 눌러주지 않으면 모터로 전원이 공급되지 않계 하여 예기치 못한 사고를 막고자 하는 것이다.

    수신기 연결 커넥터 :  
    수신기로부터 모터 제어 신호를 받는다. 또한 BEC 회로가 있는 전자변속기의 경우 이 연결 커넥터를 통하여 수신기와 서보 동작용 전원을 보낸다.

    ON/OFF 스위치 :
    전자 변속기 동작을 결정한다.

    배터리 연결케이블 :
    전자 변속기를 사면 이렇게 커넥터 없이 나오게 되지만 실제 사용할 경우 커넥터를 연결하여 사용한다.

    모터연결 케이블 :
    모터를 연결할 경우 대개 납땜으로 연결한다. 간혹 커넥터를 쓰기도 한다. 당연히 전자변속기 ( +) 케이블을 모터의 (+) 연결단자에 , (-) 케이블을 모터의 (-)단자에 연결한다.





    Model :
    모델명

    Price(원) :
    국내 소비자가

    Operation :
    운전 모드, Forward(전진 전용), Brake(브래이크 기능),

    Brake :
    Prop - 전자변속기 가동중에  throttle을 내리게 되면 관성으로 프로펠러가 약하게 계속 돌아가게 된다. 폴딩 플롭일 경우 접히지 않는 경우도 발생한다. 이때 Brake 기능이 있으면 관성을 이기도록 프로펠러를 정지시켜주어 플롭을 접어 저항을 줄여 준다.

    Frequency :
    주파수

    Continous Current :
    연속 허용 전류. 연속 사용가능한 전류를 뜻한다. 전류는 대개 모터, 팰러사이즈 배터리에 의해서 좌우된다.  높을 수록 많은 전류를 흘릴 수 있기 때문에 큰 모터를 사용할 수 있다.

    Peak Current :
    순간 허용 전류. 순간적으로 높은 전류가 흘렀을 때 변속기를 보호해 줄 수 있는 전류.

    R.D.S :
    내부 저항, 작을 수록 열발생이 적음.

    B.E.C :
    Battery Eliminator Circuitry로 주 동력용 배터리의 전원(7.2V, 8.4V, 9.6V 등)을 서보나 수신기가 동작할 수 있는 4.8V 내외의 전압으로 변경해 주는 회로로 BEC가 내장되어 있을 경우 별도의 수신기 배터리가 필요 없음.

    Input Voltage :
    허용 입력 전압. 즉 전자 변속기에 몇 셀의 배터리 팩을 쓸 것인가를 결정. 5~10셀이라 함은 니켈카드뮴 배터리 기준으로 5셀~10셀 직렬로 연결된 배터리 팩을 쓸 수 있음. 즉 6V ~ 12V까지 사용 가능.

    Motor Turn :
    모터의 회전자에 감겨있는 코일의 회전수를 이야기 하는 것으로 감은 횟수가 많으면 토크는 커지나 스피드가 느려지고 전류가 내려간다. 반대로 횟수가 작으면 스피드는 올라가고 토크는 작아지고 전류는 많이 소모되며 배터리의 소모또한 커진다.
    25턴이라 함은 25턴의 모터를 쓸 수 있다는 말이다. 대개 스톡모터라 함은 23턴 이상의 회전수를 갖는 모터를 말한다. 이때 턴수는 540모터 기준일 것 같다. 대개 자동차용 (스탠다드 540 모터 사용) 변속기를 선택할 때는 턴수가 아주 중요하다 그러나 전동비행기와같이 모터가 다양할 경우 연속허용전유(continous current)가 중요하다.

    Dimmension(mm) :
    대개 mm

    Weight :
    무게

    Temp cut-off :
    변속기를 연속 사용할 경우 변속기의 온도가 올라가는 경우가 있다. 이때 모터로 가는 출력을 중단하여 내부 회로를 보호하는 기능을 말한다. 단 이때도 BEC 동작은 계속하여 서보의 동작에는 문제가 없다.

    Link : http://www.openrc.com
    Posted by eoseontaek