안녕하세요. 질문 주신 내용에 답변드립니다. 고출력 보드와 소형 키트는 사용 목적과 요구 사양이 다르기 때문에 서로 다른 MOSFET을 선정했습니다. 먼저 고출력 보드에 사용된 SQJQ466E 는 드레인-소스 전압 정격이 60 V, 연속 드레인 전류 정격이 200 A이며, 온저항은 최대 1.9 mΩ입니다. 반면 소형 키트에 사용된 IRF3205PbF 는 드레인-소스 전압 정격 55 V, 연속 드레인 전류 정격 110 A, 온저항은 최대 8 mΩ입니다. 두 소자를 선정할 때 가장 중요하게 고려했던 부분은 충분한 정격 여유와 부품 가격 이었습니다. 실제 두 보드 모두 요구되는 전류에 비해 MOSFET의 전류 정격을 상당히 넉넉하게 선정했습니다. 교육용 보드 특성상 실습 과정에서 제어 설정을 잘못하거나 예상보다 큰 전류가 흐르는 경우가 있기 때문에, 이러한 상황까지 고려하여 전류 정격에 충분한 여유를 두었습니다. 물론 데이터시트에 명시된 전류 정격을 실제 보드에서 그대로 사용할 수 있다는 의미는 아니며, PCB와 방열 조건 등을 함께 고려해야 합니다. 그러한 조건에서 고출력 보드는 낮은 온저항을 가진 SQJQ466E를 선정했고, 소형 키트는 실습에 필요한 정격을 충분히 확보하면서도 가격이 훨씬 저렴한 IRF3205PbF를 선정했습니다. 결론적으 각 보드에 필요한 전압 및 전류 정격을 충분히 확보하면서 가격적인 부분까지 고려하여 선정했다 고 이해하시면 됩니다. 그리고 추가로 남겨주신 UART 실습 관련 질문은 제가 알림을 놓쳐 확인이 늦었습니다. 답변이 너무 늦어져 정말 죄송합니다. 해당 질문은 오늘 오후 중으로 확인하여 별도로 답변드리겠습니다. 감사합니다!
Hello, Thank you for your question. The TPS54360 is designed to operate with the EN pin left floating. According to the official TI datasheet, the EN pin has an internal pull-up current source of approximately 1.2 µA. This allows the EN pin to remain enabled even without an external connection. When the EN pin voltage exceeds approximately 1.2 V, the device is enabled. Pulling the EN pin below this threshold disables the device. The specified EN pin voltage range represents a voltage limit, not a requirement to apply an external voltage. Therefore, leaving the EN pin unconnected is intentional and does not cause any issues with normal operation, provided the input voltage and other operating conditions are satisfied. You can also find this explanation in Section 7.3.7, "Enable and Adjusting Undervoltage Lockout," on page 15 of the TPS54360 datasheet. Thank you!
Hello, Thank you for enrolling in my course. You can manufacture the PCB directly using the provided Ebike_Akit_Bkit design files. The PCB design has already been manufactured and tested with actual hardware. The hardware kits I currently sell are also manufactured using the same design and specifications. Therefore, no modifications to the PCB design are necessary. You can use the provided design files to manufacture the PCB and assemble it with the components specified in the BOM. Once properly assembled, the board will be suitable for testing the firmware provided in the course. However, please make sure to check the component orientations, soldering quality, and overall assembly carefully before applying power. Thank you, and I wish you success with your project!
안녕하세요! 질문 주신 내용에 대해 답변드리겠습니다. 1. VM 폴리곤을 3층(Inner 2)에도 배치한 이유 VM은 DC 입력 전원으로, 모터 구동 시 비교적 큰 전류가 흐를 수 있는 구간입니다. 따라서 Top Layer뿐만 아니라 3층에도 VM 폴리곤을 배치하고 비아로 연결하여 전류가 흐를 수 있는 경로를 추가로 확보했습니다. 이를 통해 전체적인 도통 저항과 전압 강하를 줄이고, 전류에 의한 발열을 분산시키는 효과도 기대할 수 있습니다. 반면 2층(Inner 1)은 GND 전용으로 사용하기 위해 별도의 VM 폴리곤을 배치하지 않았습니다. GND 면을 최대한 연속적으로 확보하면 안정적인 전류 리턴 경로를 형성하고 노이즈를 줄이는 데 유리합니다. 2. 일반 트레이스로 배선해도 괜찮은지 전류가 크지 않은 일반적인 신호선이라면 PCB 제조사에서 지원하는 통상적인 패턴 폭을 사용해도 큰 문제가 없는 경우가 많습니다. 하지만 VM과 같은 전원 라인이나 모터 구동 전류가 흐르는 구간은 다릅니다. 예상되는 최대 전류, 동박 두께, 허용 온도 상승 등을 고려하여 패턴 폭을 결정해야 합니다. 필요에 따라 전압 강하도 검토하는 것이 좋습니다. 특히 모터 제어 회로에서는 전류가 많이 흐르는 구간에 가급적 넓은 패턴이나 폴리곤을 사용하는 것을 권장합니다. 감사합니다!
네, 말씀하신 것처럼 PWM Mode 1을 사용하고 VoltageRef 값이 증가할수록 CCR 값을 증가시키는 형태로 만들면 평균 인가전압 자체는 증가하도록 구현할 수 있습니다. 다만 현재 강의 코드에서는 그렇게 변경하시면 안 됩니다. 현재 PWM Mode 2를 사용해서 듀티 지령을 반전된 형태로 구성한 것은 단순히 코드 작성 방식 때문이 아니라, PWM 주기 중 하단 MOSFET이 ON되어 있는 시점에 상전류를 측정하기 위해서입니다. 현재 코드에서는 TIM1의 Update Interrupt 시점에 ADC를 읽어 3상 전류를 측정하고 있는데, PWM Mode 2와 현재 스위칭 극성을 기준으로 이 측정 시점이 맞춰져 있습니다. 따라서 PWM Mode 1로 단순히 변경하고 VoltageRef 를 CCR에 바로 넣어버리면 스위칭 상태가 반대로 바뀌면서 현재 전류 측정 시점과 맞지 않게 됩니다. 즉, 평균전압만 놓고 보면 말씀하신 방식으로 구현할 수 있지만, 이 코드에서는 전류 측정 타이밍까지 함께 설계되어 있기 때문에 현재 PWM Mode 2와 반전된 듀티 구조를 그대로 사용하시는 것을 권장드립니다.
안녕하세요! 질문 주셔서 감사합니다. C46~C48만 0603 사이즈를 사용한 이유는 해당 커패시터들이 연결되는 위치에서 요구되는 전압 정격이 다른 커패시터보다 높기 때문입니다. MLCC의 경우 동일한 정전용량이라도 전압 정격이 높아지면 일반적으로 더 큰 패키지가 필요합니다. 특히 작은 패키지에서는 정격전압을 높일수록 실제 사용 전압에서 DC Bias 영향으로 유효 정전용량이 많이 감소할 수 있습니다. 따라서 C46~C48은 필요한 전압 정격을 만족하면서도 회로에서 요구하는 정전용량을 충분히 확보하기 위해 0603 사이즈의 커패시터를 선정했습니다. 즉, 특별한 배치상의 이유라기보다는 전압 정격과 실제 유효 정전용량을 고려한 부품 선정이라고 보시면 됩니다!
안녕하세요! 질문 주셔서 감사합니다. C46~C48만 0603 사이즈를 사용한 이유는 해당 커패시터들이 연결되는 위치에서 요구되는 전압 정격이 다른 커패시터보다 높기 때문입니다. MLCC의 경우 동일한 정전용량이라도 전압 정격이 높아지면 일반적으로 더 큰 패키지가 필요합니다. 특히 작은 패키지에서는 정격전압을 높일수록 실제 사용 전압에서 DC Bias 영향으로 유효 정전용량이 많이 감소할 수 있습니다. 따라서 C46~C48은 필요한 전압 정격을 만족하면서도 회로에서 요구하는 정전용량을 충분히 확보하기 위해 0603 사이즈의 커패시터를 선정했습니다. 즉, 특별한 배치상의 이유라기보다는 전압 정격과 실제 유효 정전용량을 고려한 부품 선정이라고 보시면 됩니다!
안녕하세요. 강의에서 배운 내용을 실제 프로젝트에 적용하려고 하시니 이제 이런 고민이 생기시는 것 같습니다. 제어기를 구현하는 방법과, 내 시스템에 필요한 성능을 정하는 것은 서로 다른 문제라서 충분히 어려울 수 있습니다. 이때는 처음부터 “Overshoot는 몇 %, 대역폭은 몇 Hz로 해야 하지?”라고 접근하기보다, “내가 만드는 시스템이 어떤 일을 해야 하는가?”에서 출발하는 탑다운 방식으로 접근하시는 것을 권해드립니다. 먼저 동작 조건과 목표를 정하고, 여기서 필요한 토크·속도와 제어 성능을 도출하는 순서입니다. 실제 모터 선정 절차에서도 이동 거리, 이동 시간, 정지 정확도 등의 장비 요구사항을 먼저 정하도록 안내합니다. 예를 들어 로봇팔이라면 “몇 kg의 물체를, 얼마나 멀리 뻗은 상태에서, 얼마 만에 이동시키고, 어느 정도 정확하게 내려놓을 것인가?”를 먼저 정해보세요. 이 중 물체의 무게와 팔의 길이는 필요한 토크를 계산하는 출발점이고, 이동 시간과 허용 오차는 제어 성능을 정하는 출발점이 됩니다. 간단한 예로, 관절축에서 수평으로 30 cm 떨어진 곳에 있는 1 kg의 물체를 버티는 데만 약 2.94 N·m의 토크가 필요합니다. 토크 = 1 kg × 9.81 m/s² × 0.3 m ≈ 2.94 N·m 그런데 이것은 물체의 무게만 고려한 값입니다. 실제로는 팔과 그리퍼 자체의 무게, 가감속에 필요한 토크, 마찰 등을 추가로 고려해야 합니다. 다관절 로봇팔은 자세에 따라 각 관절에 걸리는 부하도 달라지므로, 부하가 크게 걸리는 자세를 확인해야 하고요. 감속기를 사용한다면 관절에서 필요한 토크를 감속비와 효율을 고려해 모터축 기준으로 환산해야 합니다. 자율주행 차량도 마찬가지입니다. 차량의 총질량, 목표 속도, 가속 시간, 올라가야 하는 경사, 바퀴 크기 등을 먼저 정한 뒤 필요한 구동력과 모터 토크·회전속도를 계산하는 방식으로 접근하시면 됩니다. 다만 학생 프로젝트에서 처음부터 모든 기구 특성과 부하를 정밀하게 모델링하기는 부담스러울 수 있습니다. 그래서 저는 가능한 범위까지 먼저 계산하고, 초기 하드웨어 후보를 고를 때는 계산한 필요 토크에 2~2.5배 정도의 여유를 두는 접근을 권하고 싶습니다. 처음부터 최소 사양에 딱 맞추기보다는, 부하 추정 오차나 설계 변경에 대응할 여지를 확보하자는 의미입니다. 물론 2~2.5배는 모든 시스템에 적용되는 정답이나 안전을 보장하는 수치는 아닙니다. 계산을 생략하고 무조건 큰 모터를 고르라는 뜻도 아니고요. 특히 계속 버텨야 하는 토크는 연속 정격으로, 가감속 때 잠깐 필요한 토크는 피크 토크와 허용 지속시간으로 구분해서 확인해야 합니다. 반복 동작에서는 RMS 토크에 따른 발열도 중요하며, 요구 회전속도에서 해당 토크를 낼 수 있는지까지 확인해야 합니다. 그리고 질문하신 Overshoot와 Settling time은 실제 작업에서 허용할 수 있는 움직임과 시간으로 바꿔 생각해보시면 조금 더 명확해집니다. 가령 설명을 위한 가상의 목표로, “로봇팔의 이동 지령이 끝난 뒤 0.2초 안에 목표 각도 ±1° 범위에 들어와 유지되어야 한다”, “목표 각도를 넘어가는 움직임은 최대 1°까지만 허용한다”처럼 정할 수 있습니다. 그러면 앞의 조건은 정착시간과 허용 오차, 뒤의 조건은 오버슈트 요구사항으로 연결됩니다. 여기서 0.2초와 1°는 권장값이 아니라 예시이고, 실제 값은 다음 작업까지 기다릴 수 있는 시간과 물체를 놓는 데 필요한 정확도에 따라 정하시면 됩니다. 즉, 요구사항은 사용 목적에 맞게 설계자가 먼저 결정해야 하는 값도 있습니다. “물체를 놓고 다음 동작으로 넘어가기까지 얼마나 기다릴 수 있나?”, “이 정도 위치 오차면 작업이 가능한가?”를 먼저 판단하고, 그 목표를 하드웨어와 제어기로 달성할 수 있는지 검토하는 것입니다. 대역폭은 이렇게 정한 응답 목표를 만족하도록 모델과 시뮬레이션을 바탕으로 선정하시면 됩니다. 강의에서 다룬 것처럼 전류·속도의 캐스케이드 제어 구조를 사용한다면, 안쪽 루프가 바깥쪽 루프보다 충분히 빠르게 응답하도록 구성하고 전류 루프부터 순서대로 튜닝하는 것이 기본입니다. 시스템 요구사항은 바깥에서 안쪽으로 내려가며 정하되, 실제 제어기 튜닝은 안쪽부터 진행한다고 생각하시면 됩니다. 처음 프로젝트에서는 우선 “이 하중을 이 시간 안에 움직이고, 이 오차 안에 멈춘다”는 식으로 검증 가능한 목표 몇 가지부터 적어보시는 것을 권합니다. 그 목표를 기준으로 계산하고 하드웨어를 선정한 뒤, 실제 부하를 연결해 응답과 발열을 측정하면서 모델과 튜닝을 보완해보세요. 감사합니다.
안녕하세요! 강의를 잘 수강해 주셔서 감사합니다. 회로도와 코드를 살펴보면서 “이 정도 사양이 꼭 필요한가?”까지 고민해 보신 것은 좋은 접근이라고 생각합니다. 먼저, 이번 강의의 MCU는 현재 구현된 기능에 딱 맞는 최소 사양으로 선정한 것은 아닙니다. 말씀하신 2MB Flash나 100핀을 모두 사용해야 해서 해당 모델을 선택한 것은 아니고요. 선정 배경은 크게 두 가지입니다. 첫 번째는 당시의 부품 수급 상황입니다. 강의를 제작할 때는 반도체 수급 문제가 있었기 때문에, 필요한 기능을 지원하는지뿐 아니라 실제로 재고가 있어 구매할 수 있는지도 중요한 선정 기준이었습니다. 두 번째는 교육용 보드라는 목적입니다. 단순히 인버터를 구동하고 끝내는 것이 아니라, 수강생분들이 강의 이후에도 센서나 통신 기능을 추가하고, 다른 제어 알고리즘을 적용하는 등 여러 실습을 자율적으로 해볼 수 있도록 하고 싶었습니다. 그래서 현재 강의에서 사용하는 기능보다 연산 성능과 메모리, 주변장치에 어느 정도 여유를 두고 STM32F767을 선정했습니다. 일부 핀이나 메모리가 남는 것도 이런 배경에서 이해해 주시면 됩니다. 반면 실제 제품을 개발할 때는 먼저 “이 제품에 어떤 기능이 필요하고, 어느 정도 성능이 나와야 하는가?”를 정리한 뒤 MCU를 선정하는 것이 좋습니다. 모터 구동 제품이라면 필요한 PWM과 ADC 기능, 센서 입력, 통신 종류와 개수 등을 확인하고, 제어 연산을 정해진 시간 안에 처리할 수 있는지, 프로그램과 데이터를 담을 Flash와 RAM은 충분한지 등을 검토해야 합니다. 그다음 제품 단가, 소비전력, 사용 환경, 부품 수급과 향후 기능 추가 가능성까지 함께 고려하는 것이죠. 여기서 중요한 것은 무조건 고성능 MCU를 쓰거나, 반대로 무조건 가장 저렴한 MCU를 고르는 것이 아니라, 필요한 요구사항을 충족하면서 적절한 여유를 확보하는 것입니다. 정리하면, 이번 강의에서는 최소 원가로 현재 기능만 구현하는 것보다, 당시의 수급 상황과 수강 후의 실습 확장성에 더 비중을 두고 선정했다고 보시면 됩니다. 지금처럼 사용하지 않는 자원까지 살펴보며 선정 이유를 고민해 보시는 과정이 실제 설계에서도 큰 도움이 될 것입니다. 좋은 질문 감사합니다!