[STM32] PWM으로 모터 제어 하기
·
STM32
이전에 비슷한 프로젝트를 했는데, 당시에는 LED를 사용해서 했는데 이번엔 모터로 바꿔서 해봤다.해본 이유는 Timer에 대해 더알아보기위해...?이전 포스트를 같이보면 좋을 듯함https://oragg.tistory.com/45 [STM32] Touch GFX 실습 - 2 : 터치스크린으로 PWM 제어로봇은 이미 분해했기에 이 터치스크린으로 간단하게 뭘해볼 수 있을까 하던중, 눌러진 숫자를 PWM 신호로 바꿔서, LED의 밝기를 조정하는 간단한 실습을 진행해보았다. PWM은 프로젝트의 모터제oragg.tistory.com Timer지난번에도 설명했었지만 다시한번 자세히 해볼려고한다. STM32 IDE에서 Clock Configuaration 메뉴를 통해 위처럼 timer별 clock(주파수)을 설정할 ..
[STM32] Touch GFX 실습 - 3 : FREE RTOS 써보기
·
STM32/Touch GFX
RTOS란? 내가 사용한 STM32H735IG 는 앞서 말했듯 Cortex - M7 시리즈의 싱글코어 프로세서를 사용하는데, RTOS를 테스크를 기반으로 여러 작업을 동시에 수행하는 스케줄링이 가능하게 된다. RTOS로 태스크를 빠르게 전환하여 다중작업이 실행되게 하는 것처럼 보이는 것이다. 여러 코어면 다중 프로세스로 가능할 수 있지만, 싱글코어에서는 이처럼 단일 프로세스에서 태스크 단위로 나눠 사용해야한다.     저번에 말했듯 Touch GFX를 통해 프로젝트를 만들면 RTOS가 포팅된다. 이유는 SCREEN을 유지하는데 Task가 필요하므로, 기본 테스크를 생성해주기때문인 것 같다.  아무튼 위와 같이 RTOS 설정에서 Task를 추가할 수 있는데, 기본 테스크 이외에 하나더 추가해보겠다.  기본..
[STM32] Touch GFX 실습 - 2 : 터치스크린으로 PWM 제어
·
STM32/Touch GFX
로봇은 이미 분해했기에 이 터치스크린으로 간단하게 뭘해볼 수 있을까 하던중, 눌러진 숫자를 PWM 신호로 바꿔서, LED의 밝기를 조정하는 간단한 실습을 진행해보았다. PWM은 프로젝트의 모터제어에서도 사용했는데, 원리는 알지만 STM32 IDE에서의 지식이 부족한거같아 다시한번 정리했다.  먼저 나는 ARD_D9핀을 TIM4_CH2로 이용해, PWM_GERNERATE 핀으로 설정하였다.  1. Timer여기서 말하는 TIM은 타이머로, STM32 마이크로컨트롤러에서는 TIM(Timer)별로 여러 타이머를 내장할 수 있다.STM32 마이크로컨트롤러는 보통 여러 개의 일반 목적 타이머와 고급 타이머를 가지고 있어서, 다양한 타이밍 및 제어 작업을 수행할 수 있다. 각 타이머는 독립적으로 동작하며, 특정한 ..
[STM32] Touch GFX 실습 - 1 : 터치스크린으로 숫자입력 및 확인
·
STM32/Touch GFX
만들어서 실습한 Touch GFX 화면은 위와 같다.Button Label : 0~9, del과 send그리고 왼쪽 빈칸의 text AREA가 존재하는데, LCD 터치 스크린을 통해 숫자를 입력하면 왼쪽 화면에 숫자가 뜬다.그리고 SEND 버튼을 클릭하면 왼쪽 아래의 배달 이미지가 출력된다.  그리고 STM32 IDE에서의 Screen1View.cpp에서 GUI 관련 개발도 가능하다.  한번 살펴보자 . 핵심적인 함수중 하나는 아래와 같다. void updateUnitDisplay 함수는 화면에 입력한 숫자 (여기선 n)을 화면에 업데이트 및 값을 저장해 놓는 함수이다. 입력 받으면 백의 자리 숫자의 경우 unit1에들어간다.3자리 숫자를 입력 받을 수 있는데 첫번째 입력한 숫자가 맨앞에 들어가기 때문이..
[STM32] TOUCH GFX
·
STM32/Touch GFX
Touch GFX는 STM 사가 제공하는 그래픽 소프트웨어 프레임 워크이다. 사용자 UI를 개발하기 위한 도구로 나는 STM32H7... 보드에 자체적으로 부착되어있는 LCD의 화면을  구성하고, 제어하기위해 사용해보고자 한다.  사실 사용하는데에 정보도 조금 부족해서 많이 고생했다.. 특히 STM32 IDE와 Touch GFX를 연결하는게 조금 쉽지않다.  Touch GFX 설치후, 원하는 이미지 삽입 후, 우측 아래 Code Generate를 누르면, C:\TouchGFXProjects\ 에 코드 집합이 생겨난다. 여기내부에 STM32CubeIDE 폴더도 있는데, project 파일이 있는데 이 파일을 실행시키면 STM32IDE로 실행할 수 있다.위와 같이 STM32 IDE에서 확인가능하게 된다. R..
[STM32] STM?
·
STM32
무작정 개발 했었던 지난학기... 이제 관련 지식도 조금 쌓아서 처음부터 정리를 다시 해보는 중이다. STM보드는 무엇일까.. ? 나무위키를 참고하면..  32비트 마이크로컨트롤러 제품라인의 베스트셀러이자 스테디셀러이며 ARM Cortex-M 시리즈에 기반한 마이크로 컨트롤러이다. 관련 업계에서는 ARM 기반 마이크로컨트롤러 모델을 선정할 경우 0순위로 검토를 하게되는 제품 라인업이며 코어텍스 M0~M7 까지 커버하는 넓은 제품군과 다양한 패키징, 광범위한 부가기능 등으로 인해 매우 널리 쓰이고 있다. 여기서 ARM은? MCU 아키텍처 중 하나로 보면된다. 임베디드에 거의 대부분 사용된다고 보면된다. 지금 정리한다가 알게됬는데 Cortex 시리즈는 A/R/M이 있는데 ARM그 자체에서 이름을 따온 거였구..
[STM32] 4. 로봇 팔 / 배달
·
STM32/프로젝트
배달로봇을 만드는 프로젝트를 진행하기에 물건을 전달할 로봇팔이 필요했다. 리니어 액추에이터나 다른 여러가지 방법을 생각했지만 하나의 모터로 두개의 팔을 만들 수 있다는 점에서 랙과 피니언을 사용하는 방법을 선택했다.위와 같은 원리로 모터를 이용해 선형적인 운동을 하는 기구를 만드려고 하였다. 최종적으로 완성한 로봇팔은 아래와 같으며 PULL과 PUSH로 밀고 당기는 동작이 가능하도록 설계하였다.     아래 코드로 동작하게 하였으며, 여러번의 시도로 랙이 맨끝에서 맨끝으로 가는 PWM신호 + 타이밍을 얻어 사용했다. void deliver_push() { //배달 : 팔 피기 HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); //TIM1 CH4 HAL_GPIO_Wri..
[STM32] 3.적외선 센서와 모터로 라인 트레이싱
·
STM32/프로젝트
STM 32 + 모터 드라이버 + 파워 연결 보드 + 배터리+ 모터 를 놓을 몸체가 필요했다...20 * 20아크릴 보드를 쿠팡에서 사서 타공후, 모터와 모터드라이버만 일단 장착한채로 진행했다.몸체는 나중에 더 만들듯... 적외선센서도 두개 필요했기에 ADC  핀하나를 더빼서 썻다.ARD_A0 - PC0: 오른쪽 센서ARD_A1 - PH2: 왼쪽 센서아래는 핸드메이드 자동차 사진.. 센서를 통한 모터제어는 지난번에 했기에... 이제 조합만 하면된다.회전각크기, 속도 조절 등 난감한 상황이 많았다. 아래는 왼쪽, 오른쪽 센서값을 터미널을 통해 확인.. value_right = HAL_GPIO_ReadPin(GPIOC, ARD_A0_Pin);value_left = HAL_GPIO_ReadPin(GPIOH, ..
[STM32] 2.적외선 센서로 센서값 읽기
·
STM32/프로젝트
지난번 모터 드라이버를 연결하여, 각 GPIO OUTPUT과 PWM 신호를 통해, 모터를 제어해보았다.이번엔 센서값을 읽어, 센서값에 따른 모터 제어를 해보려고한다.  센서는 적외선 센서로, 데이터 시트랑 회로도는 구하지 못했다. 쿠팡에서 1000원에 싸게 팔길래 사서 사용했다. 먼저 한것은 센서 값 확인이었다. STM32CUBE IDE에 터미널을 설치해서 값을 확인할 수 있기에, 센서값을 받고HAL_UART_Transmit_IT 함수를 사용해서 값을 확인했다.  이게 센서OUTPUT이 당연히 ANALOG인줄알고 ANALOG INPUT으로 테스트를 해봤다. 아래 코드를 통해... char uart_buf[30]; uint16_t adc1; /* USER CODE END 2 */ /* Infinite..
[STM32] 1.L298N 모터 드라이버로 모터 구동하기
·
STM32/프로젝트
PinOut & Configuration 설정- L298N  모터 드라이버 ENA: A모터 PWM 신호IN1: A모터 신호1IN2: A모터 신호2IN3 : B모터 신호1IN4: B모터 신호2ENB: B모터 신호 - STM32  (핀 -  신호)ARD_D7- IN1(GPIO OUT)ARD_D8 - IN2 (GPIO OUT) ARD_D9  - TIM4_CH2 (ENA) ARD_D2 -IN3 (GPIO OUT) ARD_D4 -IN4 (GPIO OUT) ARD_D5 - TIM1_CH4 (ENB) 해당 핀으로 맵핑해주었다.  TIM1_CH4, TIM4_CH2 에서는 PWM Generation이 일어나며, Internal Clock으로 설정해주었었다.Prescaler : 클럭신호를 분배하는것으로, 설정되있는 클럭신..
다락공방
'STM32' 카테고리의 글 목록