지금 하고있는 졸작 프로젝트에 맞춘것임. 용도불명인 내용이 많을 수 있음.

Bluetooth.zip


헤더부터 살펴보면

1.

#define GPIO_Bluetooth  GPIOA

#define GPIO_Bluetooth_Rx_Pin GPIO_Pin_3

#define GPIO_Bluetooth_Tx_Pin GPIO_Pin_2


PortA의 2번과 3번핀을 사용하였다. Cortex회로도를 보면 알겠지만 각각 USART2의 TX와 RX이다.


//-----------------Buffer Size-------------------------

#define U2_BUFFER_SIZE 100

//----------------------------------------------------

void Blutooth_RCC_Configuration(void);

void Blutooth_NVIC_Configuration(void);

void Blutooth_GPIO_Configuration(void);

void Blutooth_UART2_Configuration(void);

void Blutooth_Setting(void);    //위의 RCC~UART2까지를 함수하나로 부르려고 한것이다.


//void USART2_IRQHandler(void);

void PutChar_blue(uint8_t c);        //블루투스에 한문자를 전송

void PutString_blue(uint8_t *s);    //문자단위로 문자열을 전송

void Send_Command_test(uint16_t Command);    //전송테스트용. 패킷을 위루어 전송

void Transmit_data(uint8_t *s);    //실질적으로 문자단위로 전송하는 부분

//********************Status Test**************************

bool input_check(void);

bool Connection_Check(void);

//********************Send Speed***************************

void Send_EncoderState(uint16_t Speed);



그냥보면은 용도를 알 수 없는 함수가 꽤 있다. 실제 내가 복습하려고 만들어 놓은 내용이니..

몇곳만 짚어 적어둔다.


1.NVIC : 실제로는 부르지 않게 해놓았다. 이걸 부르면 어쩐지 시리얼 통신부분에서 진행하질 못한다. 딱히 할 필요성은 못느낌

2.USART_ITConfig     수신에 대한 인터럽트를 가능하게 해준단다.

3.USART_SendData(USART2,c);    데이터 보낼 때

4.

intData=0;

  Command_Data[4]=(0x00ff)&intData;

  Command_Data[3]=((0xff00)&intData)>>8;


intData에 저장한 값을 PC가 받게 하려고 할 때, 다음과 같이 넣어서 보내면 의도한 값을 컴퓨터에서 받을 수 있다.

'중도연재종료 > CORTEX M3' 카테고리의 다른 글

엔코더값 읽기.  (0) 2013.09.02
Bluetooth 사용기(팁 포함)  (0) 2013.09.02
스텝모터 돌리기  (0) 2013.09.02
진행방식을 바꾼다...  (0) 2013.06.23
함수표 참조 설명  (0) 2013.06.23
Posted by 십자성군

나같이 아무것도 모르는 채로 맨땅에 헤딩하는 사람들을 위한 블루투스 사용기...

대상은 펌테크의 FB155BC_SMD



메뉴얼을 보면 어떠한 명령이 있다던가 다 나와있지만, '정말 아무것도 모르는 사람'들을 위한 개략적인 설명.


인터페이스 보드가 없다. 하지만 설정은 하고싶다. 이때 AT명령어를 이용한 설정을 하면 된다고 한다.

AT명령어 관련은 관련 메뉴얼을 보면 되지만 'AT명령어를 어떻게 사용하지?'라는 것에 대한 언급은 없다...


디바이스마트에서 판매하는 단가 6000원? 정도의 RS232 통신모듈을 사용하면 된다. 또는 소자 몇개 가지고 스스로 만들면 된다.(본인의 경우 원치않게 만들어 사용했음) 모듈의 TX, RX를 블루투스의 RX, TX에 각각 연결해준다. 물론 블루투스와 RS232모듈 둘다 전원이 들어가 있어야 겠지... 테라텀으로는 자신이 전송하는 내용을 보는 방법을 모르겠으니,  ComportMaster 또는 하이퍼터미널로 신호를 보낸다. 하이퍼 터미널에서 자신이 보내는 내용을 보는 방법은 네이버에서 쉽게 찾을 수 있다(Property로 들어가면 된다) ComportMaster사용을 추천.

나머지는 메뉴얼대로 신호를 주고 받으면 된다.


팁1.

후배에게서 받은 팁.

공장에서 막 생산된 상태의 공장초기화를 하려면?

3번 Status에서 핀을 뽑아서, GND에 잠시 연결한 후 뗀다. 그러면 모든 설정이 초기화 된다.


팁2.

이 역시 후배에게서 받은 팁.

인터페이스 보드에서 나오는 메뉴를 사용하는 설정을 하고 싶은 경우.

3번 Status와 GND를 잠시 연결한 후 뗀다.


위에꺼랑 뭐가 다르냐면...

팁1도 팁2도 물론 전원이 들어간 상태에서 하는건데. 팁2의경우, Serial통신 창을 열어놓은 상태라면 알겠지만 GND에 데었다 떼면 인터페이스보드를 사용할때와 같은 메뉴가 나온다(이미 공장초기화 된 상태). 그상태에서 전원의 재인가 없이 설정을 진행한 후 종료했다 켜면 설정이 적용된 상태로 사용 가능한것. 팁1의 경우 전원을 재인가 해서 설정없이 말그대로 공장초기화 된것

'중도연재종료 > CORTEX M3' 카테고리의 다른 글

엔코더값 읽기.  (0) 2013.09.02
Cortex M3 블루투스 설정  (0) 2013.09.02
스텝모터 돌리기  (0) 2013.09.02
진행방식을 바꾼다...  (0) 2013.06.23
함수표 참조 설명  (0) 2013.06.23
Posted by 십자성군

스텝모터 돌리기 전에... 회로에 대한 기초 이론이 부족했기에.. 조금 조사해둔 내용


2상 여자라던가 이런부분은 알고있으니, 다른 내용 정리


D-CUT SHAFT : 모터 단독 제품. 그렇지 않을 경우 감속기 부착용


모터드라이버를 이용하여 모터에 전압과 전류를 공급한다.


그런데 공급하는 전압과 전류가 규정치를 넘어서 걱정이 된다. 이에 대한 내용


모터 스펙에 나와있는 전압은 정격전류를 흘리기 위한 최소전압이라 한다.

보통 표시된 전압의 4배정도의 전압을 공급한다.

표시된 전압만큼만 공급해도 규정 토크는 나오지만 최고 회전속도를 약간 더 올려주기 위해서,

그리고 높은 회전속도에서 토크저하를 줄이기 위해서 표시된 전압보다 4~8배 정도 높은 전압을 주는것이 유리하다.


모터드라이버 회로에서 모터의 규정전압을 넘는 전압을 인가하여도 토크는 동일하다.

예를들어 2V 1A모터에 16V를 인가한다 하더라도 전류가 1A를 넘는 순간 전압을 끊고, 조금 기다렸다가 다시 전원을 인가하는 동작(Chopping에 의한 전류제한)을 하기 때문에 항상 모터에는 1A의 평균/실효 전류가 흐른다.

모터의 자속은 전류X권선 회수에 직접 비례한다. 전압의 요소가 없다는 점을 상기하자

다만 고전압을 인가햇을 때 1A까지 전류가 상승하는 시간이 저전압보다 짧기 때문에 상대적으로 약간 더 토크가 크게 느껴지고 고속 회전에 유리해진다.


스텝모터는 정전류 구동형이다. 코일전압은 큰 의미가 없다.

전압이 높으면 홀딩토크는 커질것이나 일반적으로 크기 필요하지는 않다.

전압이 낮은쪽이 역기전력이 작다. 따라서 낮은 전압의 고 전류급 모터를 추천한다고 한다.(3V이상 되지 않도록)


파워서플라이 등으로 스텝모터를 구동할때.. 이런 질문이 있었다고 한다.

5V 20A를 회로에 공급하면 과전류로 인해서 회로에 열이 과다하게 발생하거나 혹은 손상이 가지 않는지요?

그리고 스텝모터 구동드라이버에도 12V, 17A면 전류 과다로 모터나 회로에 이상이 발생하지 않는가요?

모터 구동하는데 전류가 중요한데 보통 3A면 되는데 17A까지 공급되어도 되나요?


:전류는 필요한 만큼만 사용됩니다. 공급하는 측에서 남아돈다고 해서 무조건 다 흘러 들어가는 것이 아닙니다.

전류가 모자라면 문제가 됩니다만 남는 것은 사용되지 않습니다.

----------------------

스테핑 모터 스펙이 5V라도 정격으로 주어지는 전압을 사용하는게 좋다. 모터 컨트롤러의 정격을 알아보고 거기에 맞는 전압을 넣어주자.  적거나 무부하시 10 또는 12V라도 잘 돌아가는 이유는 스텝모터 구동부 내부에서 24V를 생성해 주기 때문이지만, 이런 전압변환에서는 전압이 낮아지는 대신 내부에 흐르는 전류가 높아지기 때문에 과열이 날 수 있다. 따라서 24V를 공급하는 것이 좋다. W=IV인데 I를 맞추고 V가 낮으면 돌아갈수는 있어도 내부전류가 높아져서 과열발생, 전류가 충분히 공급되지 않으면 전압이 불안정해지면서 구동부에 열 발생. 방열판 추가 장착이 필요할 수 있음.

모터 구동부로 가는 선이 너무 얇으면 충분한 전류가 전달될 수 없어서 모터 구동부에서 열이 발생


결론:

주어진 전류값은 지켜준다.

전압값은 4~8배가 될 수 있도록.

정격전압 24V정도로 맞춰주자.

모터 구동부로 가기 위한 선은 굵게 해주자


'중도연재종료 > CORTEX M3' 카테고리의 다른 글

Cortex M3 블루투스 설정  (0) 2013.09.02
Bluetooth 사용기(팁 포함)  (0) 2013.09.02
진행방식을 바꾼다...  (0) 2013.06.23
함수표 참조 설명  (0) 2013.06.23
함수표  (0) 2013.06.23
Posted by 십자성군