프로젝트 일지

프로젝트 일지/Whale Car

[Whale Car] Motor 제어 - H-Bridge & Encoder

지난 시간에 우리는 PWM이라는 것을 배웠다. 모터를 굴릴 준비는 다 되었으니 이제 굴릴 수단이 필요하다. 쉽게 말해 스위치를 껐다 켜는 것을 만들었으니 스위치가 필요한 셈이다. 모터를 제어하기 위해서는 모터 드라이버라는 스위치가 필요하다. 모터 드라이버는 모터 종류에 따라 여러 가지가 있는데 그중에 오늘 우리는 H-Bridge라는 것을 사용할 예정이다. H-Bridge는 총 4개의 스위치를 가지고 모터를 제어할 수 있도록 구성된 회로를 말한다. 아래 그림과 같이 H의 형태로 구성이 되어 있어 H-Bridge라 불리며 이 구조를 통해서 모터의 방향과 속도를 제어할 수 있다. 위 회로가 모터의 회전 방향을 바꿔줄 수 있는 이유는 바로 4개의 트랜지스터 Mosfet 덕이다. 4개의 Mosfet 들은 각..

프로젝트 일지/Whale Car

[Whale Car] Motor 제어 - PWM

이 프로젝트의 시작점이 바로 알리에서 이 모터를 구매하면서 시작됐다. 구매한 모터의 모델명은 JGB-520 Motor로 모터에 내장 엔코더를 포함하고 있다. 2개의 인코더가 있으며 각각 1 바퀴에 11 Pulse를 생성하게 된다. 물론 2개의 인코더를 가지고 있으니 두 위상은 90도 차이가 날 것이고 그것으로 모터 회전의 방향성을 추론할 수 있을 것이다. 일단 그 부분은 나중에 더 디테일하게 다루고 오늘은 PWM에 대해서 이야기해 보자.  PWM은 Pulse Width Modulation의 약자로 말 그대로 Digital 신호로 On/Off를 제어하면서 진폭을 제어하는 것을 의미한다. 그렇다면 여기서 왜 On/Off를 반복하며 신호를 내보낼까? 그 이유는 모터 제어의 방법과도 이어진다. 모터는 쉽게 말해..

프로젝트 일지/Whale Car

[Whale Car] Core간 Communication

우리 프로젝트 내에는 Cortex-M4와 Cortex-M7이 있다. 두 Core는 각각 동작하며, 코드 데이터 영역을 따로 가지고 있다. 그렇다면 두 Core 간 데이터를 주고받기 위해서는 어떻게 해야 할까?  해답은 데이터 시트에 있다.   데이터 시트를 자세히 보면, D3 Domain의 SRAM 4를 Cortex-M4와 Cortex-M7이 공유하고 있다. 이 영역을 두 프로젝트에서 Linker Script를 수정하여 영역을 잡아 주면 해결 가능하다. 나는 해당 영역을 SHARED_RAM으로 이름을 지었다. 해당 영역을 Common Folder에다가 IPC 형태의 소통 창고를 만들 것이다. 바로 아래와 같이.  위와 같이 선언하고 코드를 구현하면 Build Analyzer를 통해서 실제로 할당 된것도 ..

프로젝트 일지/Whale Car

[Whale Car] Schedule 이식 그리고 CPU Load

1ms Timer가 정상 작동 하는 것을 보았으니, Scheduler를 다시 심어보자. 이전에 다루었었던 내용이니 내용적인 부분은 넘어가도록 하겠다. https://enginbear.tistory.com/29 [Whale Car] Scheduler 만들기이번 시간에는 지난 시간 만든 1ms Timer Interrupt를 활용해서 Scheduler를 만들어 봅시다. 임베디드에서는 Scheduler가 심장이라고 해도 과언이 아닙니다. 임베디드 위에서 올라가있는 모든 로직들의 일enginbear.tistory.com  근데 한 가지 문제점이 있다. Dual Core 프로젝트의 경우에 하나의 elf가 만들어질 것이라 생각했는데, 두 개의 elf를 올리는 방식이다. 즉 그 말은 하나의 프로젝트 안에 두 개의 빌드..

프로젝트 일지/Whale Car

[Whale Car] 1ms Timer의 늪

지난 시간 기본적인 Setting을 마치고 '간단하게' 1ms  Timer를 만들어보려 했다. 말 그대로 간단하게 1ms Timer만 만들고 종료하려고 시작을 했는데... 우선 STM32H735은 General Purpose Timer로 10개의 Timer를 가지고 있다고 한다.   나는 여기서 32-bit Timer인 2와 5를 사용할 예정이다. 각 Core에 할당하여 따로 1ms Timer를 돌리는 것이 목적이었다. STM32H7 프로젝트는 특이하게, Peripheral을 선택하면 어느 Core할당할 것인지 설정하는 부분이 있다.   TIM2는 M4 Core에 TIM5는 M7 Core에 할당하였다. TIM2와 TIM5는 Manual을 보면, APB1 Bus에 물려있는 것을 볼 수 있는데 APB1은 이..

우리집공돌이곰돌을좋아해
'프로젝트 일지' 카테고리의 글 목록