안녕하세요, 제어쟁이입니다.
대기업에서 전동화(모터·인버터) 시스템을 개발하고 있는 현업 엔지니어입니다.
양산 프로젝트에서 회로·PCB·펌웨어·제어 알고리즘까지 직접 다뤄온 경험을 바탕으로, 유튜브/네이버 블로그 "인사이드 임베디드" 를 운영하면서 임베디드 개발자분들을 위한 교육 콘텐츠를 만들고 있습니다.
책이나 강의실에서는 잘 다루지 않는, 현장에서 진짜로 쓰이는 부분을 풀어내려고 합니다 :)
글로벌 자동차 OEM 협업
3상 인버터 하드웨어 개발 (회로 / PCB)
BLDC · PMSM · WFSM(권선형 계자 동기전동기) 제어 알고리즘 개발
전동화 시스템 개발 / 검증 프로세스 전반
실차 · 벤치 기반 평가 경험
카페 : https://cafe.naver.com/insideembedded?iframe_url=/MyCafeIntro.nhn%3Fclubid=31273003
블로그 : https://blog.naver.com/sw_engineer-
강의
로드맵
전체 1수강평
- PMSM 벡터제어 완전정복 - 이론, Matlab, STM32 실습까지!
- MATLAB/Simulink 자동차 MBD 실무 입문: 모델링부터 검증과 코드 생성까지
- MATLAB/Simulink 자동차 MBD 실무 입문: 모델링부터 검증과 코드 생성까지
게시글
질문&답변
소형모터 구동
안녕하세요 제어쟁이입니다. 네 최종 업로드된 코드에서 motor.h 부분을 a키트 or b키트로 수정하시면 실습 가능합니다. 혹시 잘 안 되시면 댓글 부탁드립니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 14
질문&답변
풀업 저항 크기와 커패시터 용량 선정 방법
안녕하세요, 제어쟁이입니다.먼저 빨간 박스의 1.5kΩ + 1nF는 홀센서 신호의 풀업 및 노이즈 필터 역할이고, 오른쪽 100nF는 IC 전원 노이즈를 줄이는 바이패스 커패시터입니다.1. 풀업 저항 홀센서가 오픈컬렉터/오픈드레인 출력이라면 High 신호를 만들기 위해 풀업 저항이 필요합니다.저항이 너무 작으면 센서가 Low로 당길 때 전류가 많이 흐르고, 너무 크면 신호가 High로 올라가는 속도가 느려지고 노이즈에 취약해질 수 있습니다.예를 들어 5V에 1.5kΩ이면 Low 상태에서 약 3.3mA가 흐르므로, 이정도 전류는 홀센서에서 충분히 Sink할 수 있는 전류 크기입니다.2. 1nF 커패시터 신호선에 들어오는 순간적인 노이즈를 줄이기 위한 용도입니다.이때 풀업 저항과 커패시터가 RC 필터를 만들기 때문에 커패시터를 너무 크게 하면 정상적인 홀신호까지 느려질 수 있습니다.현재 값은RC = 1.5kΩ × 1nF = 1.5µs정도이므로, 노이즈를 줄이면서도 홀신호 속도에 영향을 크게 주지 않도록 선정한 값이라고 보시면 됩니다.정리하면,풀업 저항은 센서가 감당할 수 있는 전류와 신호 상승속도를 보고,신호 커패시터는 노이즈와 허용 가능한 지연시간을 확인합니다.그리고 실제 실무에서는 처음부터 부품값을 완벽하게 확정하진 않습니다. 데이터시트와 계산을 바탕으로 초기값을 정한 뒤 하드웨어 제작 후 실제 파형을 측정하면서 값을 튜닝하는 경우가 많습니다.특히 모터 주변처럼 노이즈가 많은 환경에서는 오실로스코프로 홀신호의 노이즈, 상승/하강 시간 등을 확인하면서 풀업 저항이나 필터 커패시터 값을 조정해 최종값을 결정합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 43
질문&답변
쓰로틀 V 변하지 않음
안녕하세요 제어쟁이입니다.보드에서의 커넥터와 쓰로틀 커넥터의 연결부분 사진을 볼 수 있을까요?
- 좋아요수
- 0
- 댓글수
- 3
- 조회수
- 43
질문&답변
P6KE47CA 이 부품에 대해서 궁금합니다.
안녕하세요. 답변이 많이 늦어져 죄송합니다. 알림을 확인하지 못하고 지나갔습니다.강의자료에 표시된 P6KE47CA는 입력 전원에서 순간적으로 발생할 수 있는 과도전압을 억제하기 위해 초기 설계 단계에서 넣어두었던 TVS 다이오드입니다.다만 최종 키트 PCB에서는 교육용 실습 환경에서 사용되는 전원 조건과 회로 구성을 다시 검토하면서, 필수 부품은 아니라고 판단하여 제외했습니다. 따라서 강의자료는 초기 설계안이 일부 남아 있고, 실제 키트 PCB가 최종 버전이라고 보시면 됩니다. 혼란을 드려 죄송합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 57
질문&답변
dc모터 회전원리
안녕하세요. 이 부분은 각도의 기준을 구분해서 보시면 됩니다.강의에서 말씀드린 0°와 90°는 ‘회전축과 힘의 각도’가 아니라, 자기장(자속)의 방향과 도체에 흐르는 전류 방향 사이의 각도입니다. 두 방향이 서로 평행한 0°이면 도체에 작용하는 전자기력이 발생하지 않고, 서로 수직인 90°일 때 힘이 가장 크게 발생합니다.따라서 질문에서 말씀하신 “힘은 생기는데 축과 각도가 0°라서 토크가 발생하지 않는다”는 해석은 이 부분에는 해당하지 않습니다. 토크를 판단할 때는 힘과 회전축의 각도를 직접 보는 것이 아니라, 회전축에서 도체가 위치한 방향과 실제로 발생한 힘의 방향을 봐야 합니다.일반적인 DC 모터를 생각하면 도체의 전류는 회전축 방향으로 흐르고, 자기장은 반경 방향으로 형성됩니다. 이 둘이 서로 수직이기 때문에 도체에는 회전 방향, 즉 접선 방향의 힘이 발생합니다. 그리고 이 접선 방향의 힘이 회전축에서 떨어진 위치에 작용하기 때문에 토크가 발생합니다.반대로 자기장과 전류가 같은 방향인 0°라면 이번 경우에는 “힘은 있는데 토크만 0”인 것이 아니라, 애초에 전자기력이 발생하지 않습니다.다만 힘이 존재하더라도 그 힘이 회전축을 향하는 반경 방향으로 작용한다면 회전시키는 효과가 없어 토크가 0이 되는 경우는 별도로 생각할 수 있습니다. 정리하면 강의에서 설명한 핵심은 ‘자기장과 전류가 90°일 때 회전 방향의 힘이 가장 크게 발생하고, 0°일 때는 힘이 발생하지 않는다’는 내용으로 이해하시면 됩니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 48
질문&답변
uart, tera term 실습이 잘 안됩니다.
네 혹시 하시다가 추가로 안되는 부분 발생하면 질문주세요. 감사합니다.
- 좋아요수
- 0
- 댓글수
- 3
- 조회수
- 57
질문&답변
86, data bit순서가 바뀌어야 할것 같습니다.
안녕하세요. 질문 주신 내용에서 몇 가지를 구분해서 보시면 좋을 것 같습니다.먼저 UART는 일반적으로 1Byte 전송 시 LSB부터 전송합니다. 따라서 10:24의 그림이 시간 순서상 MSB부터 전송되는 형태로 표현되어 있다면 Data bit 순서는 반대로 보시면 되고, 해당 부분은 확인해서 수정하겠습니다.그리고 USART1, USART2는 STM32 내부에 존재하는 통신 주변장치 모듈의 이름입니다. 이 USART 모듈을 설정에 따라 동기식 USART 또는 비동기식 UART 방식으로 사용할 수 있습니다. 강의에서는 USART2 모듈을 비동기 방식으로 사용하고 있기 때문에 통신 방식은 UART이고, 레지스터 접근은 하드웨어 모듈 이름을 따라 USART2->BRR, USART2->CR1처럼 사용하는 것입니다.RS-232는 여기서 조금 다른 개념입니다. UART와 RS-232를 같은 것으로 보면 안 됩니다. UART는 Start bit, Data bit, Stop bit 등의 프레임을 만들고 송수신하는 통신 방식/주변장치이고, RS-232는 전압 레벨과 신호 특성 등을 규정한 물리 계층 규격입니다. STM32의 UART 핀은 MCU의 3.3V 논리레벨을 사용하므로 실제 RS-232 장비와 연결하려면 별도의 RS-232 트랜시버를 사용해야 합니다. 따라서 “RS-232 통신이 곧 UART 통신이다”라고 이해하기보다는 UART 데이터를 RS-232 물리 규격을 통해 전송할 수도 있다고 이해하는 것이 정확합니다.오버샘플링은 이해하신 방향이 맞습니다. UART는 별도의 Clock 선을 공유하지 않기 때문에 수신기가 Start bit를 검출한 뒤 자신의 내부 Clock을 이용하여 데이터 비트의 적절한 위치를 샘플링합니다. 이때 8배 또는 16배 오버샘플링을 사용하여 안정적으로 데이터를 판별합니다.추가로 최근에 UART 통신의 동작 원리를 처음 접하시는 분들도 이해하기 쉽도록 별도로 정리한 영상을 올렸습니다. 강의 내용과 함께 보시면 전체 흐름을 이해하는 데 도움이 될 것 같습니다.https://youtu.be/iuOtFfm9cPk
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 43
질문&답변
85. pwm사용에 기본구조 이해가 같이 요구되네요
안녕하세요. 말씀하신 부분이 STM32를 처음 접할 때 난이도가 높게 느껴지는 대표적인 이유입니다.ATmega128보다 STM32는 버스 구조(APB1/APB2), 주변장치별 클럭, Prescaler, GPIO Alternate Function, Timer Channel, NVIC까지 설정해야 해서 처음에는 구조를 함께 이해해야 합니다. 다만 한 번 전체 흐름을 익히면 다른 주변장치도 비슷한 방식으로 확장할 수 있습니다.소프트웨어 구조는 말씀하신 것처럼 “무엇을 while문에서 처리하고, 무엇을 Interrupt에서 처리할 것인가”가 중요합니다. 일반적으로 정확한 실행주기가 필요한 PWM/ADC 샘플링, 모터제어 같은 기능은 Timer Interrupt에서 처리하고, 통신·상태 확인·모니터링처럼 상대적으로 느린 기능은 main loop에서 주기적으로 실행합니다.결국 기능의 중요도, 실행주기, 응답속도를 기준으로 Interrupt와 main loop를 적절히 나누는 것이 기본적인 설계 방법이라고 보시면 됩니다.
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 45
질문&답변
81. 소프트웨어 작성 방법론에 조언 부탁 드립니다.
안녕하세요. 질문에서 말하는 “소프트웨어 구조”는 기능을 어떤 단위로 나누고, 각각을 언제 어떤 순서로 실행할지 설계하는 방법이라고 생각하시면 됩니다.전동 킥보드를 예로 들면 먼저 운용조건을 정하고, 필요한 토크·속도·전압·전류를 기준으로 모터, 배터리, 인버터, MCU, 센서 등의 하드웨어를 선정합니다. 여기까지 작성하신 방향은 좋습니다.그다음 소프트웨어는 크게MCU/Clock, GPIO, ADC, PWM, Timer, UART/CAN 등의 초기화Hall Sensor, 전류·전압 등의 센서값 취득모터 구동 및 속도제어과전류·과전압 등의 보호 로직통신 및 모니터링처럼 기능별로 나누어 구성하면 됩니다.그리고 중요한 것이 실행 주기입니다. 예를 들어 모터 구동처럼 빠르고 일정한 주기가 필요한 연산은 Timer Interrupt에서 실행하고, 통신이나 모니터링처럼 상대적으로 느린 기능은 느린 loop에서 일정 주기마다 실행할 수 있습니다. 지금 강의 코드도 이러한 방식으로 구성되어 있습니다.따라서 면접에서는“요구사항을 먼저 정의하고 하드웨어를 선정한 뒤, 소프트웨어는 초기화, 센서 입력, 모터제어, 보호, 통신 등의 기능으로 모듈화합니다. 각 기능이 요구하는 실행 주기를 정하고, 빠른 제어는 Timer Interrupt, 상대적으로 느린 기능은 Main Loop에서 주기적으로 처리하는 구조로 설계하겠습니다.”정도로 답변하시면 충분히 좋은 답변입니다.서로 다른 동작속도를 가진 기능도 같은 방식입니다. 모든 기능을 동일한 속도로 실행시키는 것이 아니라 필요한 제어주기에 따라 100us, 1ms, 10ms, 100ms 등으로 실행주기를 나누어서 관리합니다.ROS2는 현재 강의에서 다루는 MCU 내부의 저수준 모터제어 구조와는 범위가 조금 다르기 때문에, 해당 면접에서 ROS2를 직접 물어본 것이 아니라면 굳이 연결해서 답변하지 않으셔도 될 것 같습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 64
질문&답변
82. 16:50초 설명에 대한 오해 및 adc mode비교 자료
안녕하세요. 해당 부분은 인터럽트를 설명한 것이 아니라, STM32F767 ADC의 Regular / Injected 채널 간 우선순위를 먼저 직관적으로 설명한 내용입니다.피드백 주셔서 감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 63





