sw_engineer-의 등록된 링크

키자드에 등록된 총 34개의 포스트를 확인하실 수 있습니다.

Naver Blog

2025 임베디드 개발자를 위한 교육과정 준비

안녕하세요 제어쟁이입니다. 벌써 2024년의 마지막 날이네요. 남은 기간 마무리 잘 하시길 바랍니다. 한 해를 정리하며, 앞으로의 저의 계획과 진행 과정등을 공유하려고 합니다. 저는 현재 임베디드 개발자를 위한 ooooo 개발 강의를 준비하고 있습니다. ooooo은 추후에 공개 해드리도록 하겠습니다. 하지만 끝까지 글을 읽어보시면 어느정도는 예측 가능하실 수도 있을거같네요. 현재 시중에 임베디드 개발자를 양성하기 위한 좋은 강의들도 몇몇 존재하지만, 웹이나 앱 개발과 같은 교육에 비하면 양과 질이 현저히 떨어지는 것이 사실입니다. 그리고 대부분 Atmega/STM32 등의 키트 사용법 정도가 전부인거 같습니다. 그래서 저는 회로설계/펌웨어/PCB 제작까지 전부 경험해볼 수 있는 교육 과정을 만들고 있고 책도 집필하고 있습니다. 저의 생각에는 진짜 실력을 키울 수 있는 최고의 방법은 프로젝트를 하나 해보는 것이라 장담합니다. 다만, 처음부터 혼자 하기 힘들 수 있으니 제가 그 첫 길을

Naver Blog

모터제어(PMSM) Matlab 시뮬레이션_Dead time -5탄- ※자료첨부

지난 시간에 이어서 Dead time에 대해서 설명드리도록 하겠습니다. ※ 꼭 지난 포스팅을 보고 오셔야지 이해가 됩니다. 모터제어(PMSM) Matlab 시뮬레이션_PWM,Dead time -4탄- 이번 시간에는 지난 시간의 극전압 지령을 이용해서 PWM 신호를 만들어보겠습니다. ※ 지난 포스팅과 내... blog.naver.com 우선 지난 시간에는 데드 타임을 왜 주어야하는지에 대해서 알아보았습니다. 하지만 데드 타임은 Top과 Bottom이 OFF가 되어 있는 구간에서 문제가 발생하게 됩니다. 이를 이해하기 위해선 먼저 부하 전류의 방향에 따른 회로 동작을 이해해야합니다. 그림1의 상 하나를 기준으로 설명드리겠습니다. 이때 두개의 스위치는 OFF상태로 가정합니다. 먼저 전류가 0보다 작은 경우는 부하에서 전류가 들어오는 방향을 뜻합니다. 전류는 하이 사이드 스위치의 다이오드로 흐르게 되고 이는 Vdc/2의 출력 전압을 만들어내게 됩니다. 다음으로 전류가 0보다 큰 경우는 부하

Naver Blog

모터제어(PMSM) Matlab 시뮬레이션_SVPWM -3탄-

2탄에 이어서 바로 3탄을 시작하도록 하겠습니다. ※이 글을 처음 보신 분들은 꼭 1탄부터 따라와주셔야지 이해가 되실겁니다. 모터제어(PMSM) Matlab 시뮬레이션 -1탄- 지금부터 본격적으로 PMSM 벡터제어 시뮬레이션을 진행하겠습니다. Matlab function 위주로 설계하여 ... blog.naver.com 지난 시간 저희는 상전압 지령까지 만들어봤습니다. 이제 상전압 지령에 옵셋 전압을 더해서 극전압 지령을 만들어줘야겠죠? 이게 무슨말인지 이해가 되지 않으시면 SVPWM의 개념이 부족하신겁니다. SVPWM vs SPWM 완벽 정리 (모터제어 필수 이론) -1탄- SPWM이란? PMSM을 회전시키기 위해서는 a,b,c상을 120도 위상 차이가 나는 정현파 전류를 인가해줘... blog.naver.com 아래 그림1은 SVPWM을 변조하기 위한 Min-Max 블록입니다. 입력으로는 3상 상전압 지령이 들어오고 출력으로는 극전압 지령이 나오게됩니다. 그림1 SVPWM을 위한

Naver Blog

SVPWM vs SPWM 완벽 정리 (모터제어 필수 이론) -2탄-

이전 포스팅에서 전압 지령이 주어지면 인접한 공간 전압 벡터를 적절한 시간동안 인가하는 방식을 알아보았습니다. ※ 1탄을 보지 않으신 분은 먼저 아래의 포스팅을 보고 오시길 바랍니다. SVPWM vs SPWM 완벽 정리 -1탄- SPWM이란? PMSM을 회전시키기 위해서는 a,b,c상을 120도 위상 차이가 나는 정현파 전류를 인가해줘... blog.naver.com 지난 시간에 설명드렸지만 전압 벡터 인가 시간을 직접 계산하여 SVPWM을 구현하는 방식은 연산량이 많아 효율적이지 못합니다. 그래서 옵셋 전압을 이용하여SVPWM을 구현하는 방식에 대해서 설명드리겠습니다. 실제 산업현장에서 이 방식을 무조건 사용하므로 매우 중요한 개념입니다. 그림1은 3상 인버터의 극전압, 상전압, 옵셋 전압을 나타낸 그림입니다. 그림1 3상 인버터의 극전압, 상전압, 옵셋 전압 그림2는 옵셋 전압(Vsn)을 이용한 전압 변조 방식을 보여줍니다. 상전압 지령이 옵셋 전압에 더하면 극전압이 되고 이를

Naver Blog

모터제어(PMSM) Matlab 시뮬레이션_PI제어기 -2탄-

1탄에 이어서 바로 2탄 이어서 진행하겠습니다. ※1탄부터 봐야지 수월하게 따라오실 수 있습니다. 안보신 분들은 아래 포스팅 먼저 보셔야합니다. https://blog.naver.com/sw_engineer-/223567648789 모터제어(PMSM) Matlab 시뮬레이션 -1탄- 지금부터 본격적으로 PMSM 벡터제어 시뮬레이션을 진행하겠습니다. Matlab function 위주로 설계하여 ... blog.naver.com 오늘은 전류제어기를 알아보려고합니다. 그전에 먼저 트리거에 대해서 설명드리겠습니다. 모터제어를 수행할 때 스위칭 주파수는 매우 중요합니다. 지금 시뮬레이션에서는 10khz로 설정하였습니다. 실제 환경에서의 스위칭 주파수는 IGBT,MOSFET의 스위칭 손실, 그에 따른 열발생, 레졸버 주파수, 모터 속도 등을 고려하여 신중하게 선정해야합니다. 어쨋든 시뮬레이션에서는 10kHz로 제어기를 동작시키기 위해서 Controller 내부에 Trigger라는 블록을 이용해

Naver Blog

임베디드 교육용 인휠 모터 테스트 완료 -5탄-

안녕하세요 제어쟁이입니다. 우선 지난 포스팅에서 소형 모터로 6-step, FOC 모터제어까지 완료한 것을 공유드렸습니다. BLDC/PMSM 6 step 제어&FOC, 속도제어 완료 -4탄- 안녕하세요 제어쟁이입니다. 현재 임베디드 개발자를 위한 교육과정 개발 현황을 공유 드리고자 합니다. 지... blog.naver.com 동일한 알고리즘을 이용해 교육용 모터로 사용할 인휠 모터 구동까지 완료하였습니다. 소형 모터로 검증을 끝낸 코드를 사용하여 큰 문제없이 금방 구동할 수 있었습니다. 앞으로의 계획 앞으로의 계획은 이제 정말 교육으로 사용할 보드를 제작할 예정입니다. 사용할 mcu는 stm32를 사용할 예정이고 아무래도 교육용이니 전체적인 사이즈는 너무 작지 않도록 설계하려 합니다. 그리고 준비하고 있는 교육 과정이 단순히 모터를 돌리는 것이 아닌 ooooo를 만드는 것이 목표이므로 보드를 탑재할 적절한 인클로저 박스도 고민하고 있습니다. 우선 이번 주말에는 회로 설계에 몰두하고

Naver Blog

FOC제어를 위한 PMSM V/F,I/F에 대한 이해

안녕하세요 제어쟁이입니다. 오늘은 PMSM을 FOC 제어를 하기전 과정들에 대한 노하우를 소개시켜 드리려합니다. 순서는 V/F, I/F 제어로 이것저것 테스트를 한 뒤 FOC 제어로 넘어가게 됩니다. 하나씩 설명드리겠습니다. V/F 스칼라 제어 먼저 V/F 제어에 대해서 설명드리자면 피드백이 없는 방식인(전기각, 전류센서) Open-Loop 제어 방법입니다. 아래의 식1은 PMSM의 d-q 전압 방정식입니다. 식1 PMSM d-q 전압방정식 정상상태라고 가정하고 고정자 저항값은 상대적으로 낮은 값이므로 이를 무시하면 아래의 식으로 표현할 수 있습니다. 식2 정상상태에서의 d-q 전압방정식 그리고 전기각속도를 주파수로 변환하여 식을 정리하면 식3으로 다시 쓸 수 있습니다. 이때 전압의 크기와 주파수를 제어하기 때문에 V/F 제어라고 부르고 회전자 위치에 관한 정보가 없으므로 스칼라 제어입니다. 식3 V/F 제어 전압 방정식 우리의 최종 목표는 FOC 제어 입니다. 그런데 V/F제어를

Naver Blog

요즘 근황과 책 출판 준비

요즘 너무 바빠서 글을 못올리고있네요..ㅠ 갑자기 프로젝트도 많이 들어오고 저녁에는 과외도하고 정신없는 나날들을 보내고있습니다. 오늘은 하루종일 다이나모실에서 실험하다가 하루가 끝나버렸네요. 그래도 결과적으로는 원하는 퍼포먼스가 나와서 만족스러운 하루였습니다. 내일은 쫌 일찍 퇴근해서 밀린 글도 작성하고 스터디도 해야겠습니다. ^.^ 그리고 현재 틈틈히 Matlab을 이용한 모터제어에 대한 책을 준비하고있습니다. Mathworks사에서 라이센스를 제공해주셔서 집에서 시뮬레이션 해가며 책준비도 하고있습니다. 시뮬링크 블록 위주가 아닌 코딩 기반으로 작성하고있어서 c언어로 옮기는데 매우 수월하도록 구성하고있습니다. 목표는 내년 3월까지 출판 준비를 마치는건데 대학원생때로 돌아가서 논문쓰는 느낌이라 재미도 있네요.ㅎㅎ 전자책으로 출판할지 자가출판으로 해야할지 고민이 되지만 우선 원고부터 작성해야겠습니다. 혹시 관련 경험이 있으신분들 팁좀 부탁드립니다. 어쨋든 이번 주말에 도움이 되는 내용

Naver Blog

PMSM V/F제어 시뮬레이션

안녕하세요 제어쟁이입니다. 이번 시간에는 지난번 설명드린 V/F, I/F 제어에서 V/F제어를 시뮬레이션을 통해 구현해보도록 하겠습니다. ※ 아래의 글을 보고 오시면 이해하는데 큰 도움이 됩니다. FOC제어를 위한 PMSM V/F,I/F에 대한 이해 안녕하세요 제어쟁이입니다. 오늘은 PMSM을 FOC 제어를 하기전 과정들에 대한 노하우를 소개시켜 드... blog.naver.com V/F 제어 시뮬레이션 V/F 제어는 전기각, 전류센서를 피드백하여 제어하는 방식이 아닌 Open-Loop 제어입니다. V/F 제어를 이용해서 우리는 미리 구현해놓은 SVPWM이 잘 나가는지를 확인할 수 있고 모터를 돌려볼 수 있습니다. 다만 전류제어를 하지 않는 Open-Loop 방식이므로 전압 지령을 너무 크게 주면 PWM의 듀티가 너무 커지므로 큰 전류가 흐를 수 있습니다. 그러므로 전압을 작은값에서부터 천천히 인가해주어야합니다. 또한 주파수 F도 천천히 올려줘야합니다. 만일 빠르게 주파수를 올려버리

Naver Blog

PMSM I/F 제어

안녕하세요. 제어쟁이입니다. 이번 시간에는 지난번 I/F 제어 시뮬레이션을 진행해보도록 하겠습니다. I/F제어를 왜하는지에 대한 포스팅 글을 꼭 보고 오시길 바랍니다. FOC제어를 위한 PMSM V/F,I/F에 대한 이해 안녕하세요 제어쟁이입니다. 오늘은 PMSM을 FOC 제어를 하기전 과정들에 대한 노하우를 소개시켜 드... blog.naver.com ※I/F 제어를 진행하며 PI전류제어기 튜닝을하므로 아래의 글도 읽고 오시는걸 추천드립니다. 모터제어(PMSM) Matlab 시뮬레이션_PI제어기 -2탄- 1탄에 이어서 바로 2탄 이어서 진행하겠습니다. ※1탄부터 봐야지 수월하게 따라오실 수 있습니다. 안보신 ... blog.naver.com I/F 제어란? I/F 제어는 V/F제어와 달리 전류를 피드백받아 제어하는 Closed-Loop 컨트롤입니다. 하지만 아직 모터의 위치 신호는 받지 않고 V/F제어와 동일하게 주파수 지령을 생성하여 모터에 인가하게 됩니다. I/F제어는 FOC제

Naver Blog

제대로된 임베디드 개발자 되는 방법! 전기/전작 공학도 필독

안녕하세요 제어쟁이입니다. 오늘은 임베디드 개발자에게 왜 하드웨어와 펌웨어, 이 두 가지 역량이 모두 중요한지에 대해 좀 더 깊게 얘기해보려고 합니다. 저 같은 경우, 전력전자 분야로 석사과정을 마치고, 이후 10년 넘게 자동차 회사에서 인버터 설계와 모터제어를 주 업무로 삼아왔습니다. 그동안 수많은 프로젝트를 진행하면서 느낀 점들이 있어, 이번 기회를 빌어 정리해보려 합니다. ※ 임베디드 개발자 로드맵에 관한 내용도 꼭 읽어보시길 추천드립니다. 대기업 엔지니어가 분석한 임베디드 개발자 로드맵 (전자/전기공학과 필독) 안녕하세요 제어쟁이입니다. 오늘은 제가 인터넷 서칭중에 발견한 임베디드 개발자 로드맵에 대해서 얘기를... blog.naver.com 임베디드 분야에 처음 발을 들이는 분들 중에는 이런 생각을 할 수 있어요. “하드웨어(HW)나 펌웨어(FW) 중 한 가지만 잘하면 되지 않을까?” 혹은 “난 프로그래밍은 잘하니까 FW만 잘해도 되겠지” 아니면 “난 하드웨어 전공자니까 P

Naver Blog

자동차 개발 프로세스 정리! 자동차 엔지니어 필독!

안녕하세요 제어쟁이입니다. 오늘은 자동차 부품회사가 어떤 식으로 일을 진행하는지, 즉 자동차 제조사(OEM)와 부품사(티어1, 티어2 등의 공급업체) 사이에 이루어지는 협업 프로세스를 간략히 정리해보려고 합니다. 많은 분들이 “부품회사는 완성차 업체가 시키는 대로 부품만 만들어주면 되는 것 아닌가?”라고 생각할 수도 있지만, 실제로는 매우 긴밀하고 체계적인 소통 과정을 거치며, 여러 단계별 검증을 통해 최종 양산(대량생산)에 이르기까지 많은 노력이 들어갑니다. 특히 초기 단계에서부터 RFI(Request For Information), RFQ(Request For Quotation)를 거쳐 DV(Design Validation), PV(Process Validation) 그리고 최종 양산까지 가는 전 과정은 단순한 ‘주문과 납품’ 이상의 가치와 전략을 담고 있습니다. 1. RFI 단계: 정보 수집 및 1차 검토 먼저, 자동차 제조사(OEM)는 신차 프로젝트나 특정 부품 변경 계획이

Naver Blog

교육과정 프로젝트 진행! PCB 설계완료 -1탄-

안녕하세요 제어쟁이입니다. 3상 500W급 모터 드라이버 개인적인 프로젝트를 진행하기 위해서 EasyEDA라는 툴을 사용해봤습니다. 무료 툴에 부품들 라이브러리 연동도 잘 되어있어서 사용하기 편하네요. 필요한 대부분의 모든 부품들의 3D모델링과 풋프린트가 제공되네요. 회사에서는 회로설계한 뒤 PCB는 거의 외주 맡기고 수정 작업만 주로 했는데, 오랜만에 직접 설계하니 재미있는거 같습니다. 매번 4층~6층 기판 설계하다가 양면으로 하려니 이리저리 공간 찾으려 노력했네요..ㅎ 설계한 보드는 500W급 3상 모터드라이버입니다. 우선 STM32 뉴클레오 보드와 함께 테스트 해보고 추후에 통합하여 설계할 예정입니다. 추후 업데이트 되면 공유드리도록 하겠습니다. 다들 행복한 연말 잘 보내시길 바랍니다.

Naver Blog

STM32 + BLDC 모터 드라이버 기능 테스트! -2탄-

안녕하세요 제어쟁이입니다. 오늘 제작한 PCB가 도착하여 간단하게 테스트를 진행하였습니다. 참고로 회로설계와 PCB 설계는 EasyEDA라는 툴을 사용하였고, JLCPCB와 연동이 매우 잘되어있어서 사용하기 좋았습니다. 무료 툴에 이정도 성능이면 매우 쓸만하다고 생각합니다. 배송도 꼼꼼하게 포장되서 잘 도착했습니다. PCB 배송 완료 우선 모터 드라이버에서 30V를 입력받아서 5V,3.3V가 잘 만들어지는지 확인하였습니다. 그리고 STM32에서 PWM 신호를 모터 드라이버에 인가하여 게이팅 신호까지 잘 나오는 것을 확인하였습니다. 내일은 ADC를 테스트하고 모터가 도착하기 전까지 MCU 셋팅을 마무리하려 합니다. 그리고 모터 제어 로직도 미리 탑재하여 간단하게라도 테스트를 진행하려 합니다. Stm32+모터 드라이버 테스트 기존 계획은 현재 모터 드라이버를 테스트 하고, 추후에 MCU와 모터드라이버를 하나로 통합해서 설계하고자 하였습니다. 그런데 요즘 드는 생각은 그냥 뉴클레오 보드

Naver Blog

BLDC/PMSM 드라이버 기능 테스트! 6Step 구현&정역 구동 -3탄-

안녕하세요 제어쟁이입니다. 본업과 번갈아가며 하려니 시간이 빡빡하지만 그래도 시간 나는데로 로직 구현하고 테스트해서 6-step제어, 정역 구동까지 알고리즘 개발 완료하였습니다. 이제 전류제어, 홀센서로 전기각 변환 + FOC제어, 센서리스까지 알고리즘 개발 및 검증하면 될거같습니다. 현재는 당장 인휠모터가 아닌 정격이 낮은 BLDC모터로 안전하게 알고리즘 구현하고 있습니다. 6-step 구현완료 현재 인휠 모터와 전용 드라이버도 도착해서 우선 잠시 한쪽에 보관해놨습니다. 드라이버를 따로 구매한 이유는 얘네들은 어떤 제어방식을 심어놨는지, 그리고 하드웨어는 어떻게 설계하였는지 확인하려 구매해봤습니다. 시간되면 구매한 드라이버에 대해서 따로 포스팅하여 내용 공유하도록 하겠습니다. 짧게 짧게라도 진행 상황 말씀드리겠습니다. 혹시 궁금한 점 있으시면 언제든지 댓글로 질문해주시면 감사하겠습니다.

Naver Blog

BLDC/PMSM 6 step 제어&FOC, 속도제어 완료 -4탄-

안녕하세요 제어쟁이입니다. 현재 임베디드 개발자를 위한 교육과정 개발 현황을 공유 드리고자 합니다. 지난 과정에 대한 내용을 아직 못보신 분들은 아래 링크를 통해 확인하실 수 있습니다. 교육과정 프로젝트 진행! PCB 설계완료 -1탄- 안녕하세요 제어쟁이입니다. 개인적인 프로젝트를 진행하기 위해서 EasyEDA라는 툴을 사용해봤습니다. ... blog.naver.com https://blog.naver.com/sw_engineer-/223716755161 BLDC 드라이버 기능 테스트! 6Step 구현&정역 구동 -2탄- 안녕하세요 제어쟁이입니다. 본업과 번갈아가며 하려니 시간이 빡빡하지만 그래도 시간 나는데로 로직 구현... blog.naver.com 우선 현재는 교육과정에 사용될 인휠 모터가 아닌 40W급 소형 BLDC모터를 이용하여 알고리즘을 개발하고있습니다. 작은 모터로 부담없이 알고리즘을 개발해놓으면, 상대적으로 큰 용량의 인휠 모터를 구동할 때 편하기 때문입니다. 알고리즘

Naver Blog

Atmega328p 강의 시작 (준비물) -1탄-

안녕하세요? 제어쟁입니다. 많은 학생들, 관련 업계에 종사하시는 분들이 MCU를 배울때 가장 많이 접하는 Atmega 시리즈로 강의를 진행하고자 합니다. 사용할 MCU는 Atmega328p입니다. 왜 8 bit MCU로 강의를 하나요? 요즘 32 bit MCU도 많고 특히 많이 사용하시는 STM 시리즈도 있는데 왜 굳이 Atmega328p라는 옛날 부품을 사용하는지 의문이 드실수도 있습니다. 그럼에도 불구하고, Atmega328p를 선택한 이유는 그만큼 기본에 충실하고 MCU의 동작 원리를 이해하기에 가장 적합한 플랫폼이기 때문입니다. 그림1 Atmega328p 모습 Atmega328p는 8비트 아키텍처로, 구조가 단순하고 직관적이어서 초보자도 쉽게 접근할 수 있습니다. 복잡한 32비트 MCU에 비해 기본적인 레지스터 접근 방식, 인터럽트 처리, 타이머 설정 등의 개념을 보다 명확하게 배울 수 있습니다. 따라서 최신 MCU가 아닌 Atmega328p를 선택함으로써 기본부터 탄탄하게

Naver Blog

Atmega328p 개발환경 구축 -2탄-

안녕하세요, 제어쟁이입니다. 이번 시간에는 Atmega328p를 이용한 강의를 진행하기 위해 필요한 개발환경 구축에 대해 알아보겠습니다. Atmel Studio를 사용하여 Atmega328p MCU의 프로그래밍을 진행할 예정입니다. ※ Atmega328를 다루기 위한 필수 준비물을 아래 글에 포스팅 해놨으니 꼭 확인해주시길 바랍니다. Atmega328p 강의 시작 (준비물) -1탄- 안녕하세요? 제어쟁입니다. 많은 학생들, 관련 업계에 종사하시는 분들이 MCU를 배울때 가장 많이 접하... blog.naver.com Microchip Studio 설치 가장 먼저, Atmel Studio를 설치해야 합니다. 아래의 과정을 따라 설치를 진행하시면 됩니다. https://www.microchip.com/en-us/tools-resources/develop/microchip-studio#Downloads 에서 Atmel Studio 설치 파일을 다운로드 그림1 AVR 설치 저는 Web In

Naver Blog

Atmega328p 내부 구조 -3탄-

안녕하세요 제어쟁이입니다. 이번 시간에는 Atmega328p의 내부 구조에 대해서 설명드리겠습니다. 아래의 그림1은 Atmega328p의 내부 블록 다이어그램입니다. 주요 블록들을 하나씩 설명드리겠습니다. 지금 당장 이해가 안되더라도 전혀 이상한게 아니니 그냥 이런게 있나보구나 하는 마음으로 편하게 읽어주시면 감사하겠습니다. 그림1 Atmega328p 내부 블록 다이어그램 1. CPU (중앙 처리 장치) AVR CPU는 Atmega328p의 핵심으로, 명령어를 처리하고 각종 작업을 수행하는 역할을 합니다. 데이터 버스를 통해 다양한 장치와 통신하며, 프로그램 메모리(FLASH)에서 명령을 읽어 처리합니다. 2. 메모리 구성 FLASH: 프로그램이 저장되는 메모리입니다. Atmega328p는 32KB의 플래시 메모리를 가지고 있으며, 주로 코드를 저장하는 데 사용됩니다. SRAM: CPU가 데이터를 처리할 때 임시로 사용하는 휘발성 메모리입니다. EEPROM: 비휘발성 메모리로, 전원

Naver Blog

모터제어(PMSM) Matlab 시뮬레이션_전향 보상 -6탄-

안녕하세요 제어쟁이입니다. 이번시간에는 제어 성능을 크게 향상 시켜주는 방법 중 하나인 전향 보상 방법에 대해서 알아보겠습니다. 특히 PMSM(Permanent Magnet Synchronous Motor) 제어에서 이 방법이 어떻게 상호간섭 성분과 역기전력을 보상하고, 제어 성능을 높이는지 중점적으로 다룰 것입니다. PMSM 전향 보상 PMSM의 d-q축 전압방정식은 아래와 같이 쓸 수 있습니다. 이 수식에서 볼 수 있듯 d-q축 전압 방정식에는 상호간섭 성분이 포함되어있고 q축 전압에는 역기전력 성분이 포함된 것을 확인할 수 있습니다. 상호간섭 성분이란 d축 전압에 q축 성분들이 나타나고 q축 전압에 d축 성분들이 나타나는 것을 말합니다. 식(1) PMSM 수식 아래 그림1은 d축에는 0A지령을 주었고, q축에만 100A 전류를 인가한 시뮬레이션 결과입니다. 첫번째 파형은 d축 지령 전류와 피드백 전류이고, 두번째 파형은 q축 지령 전류와 피드백 전류입니다. q축 전류를 인가하는

Naver Blog

Atmega328p LED ON/OFF 실습 -4탄-

안녕하세요 제어쟁이입니다. 이번 시간에는 GPIO (General Purpose Input/Output)에 대해 알아보겠습니다. 어떤 MCU를 배우던 가장 처음으로는 GPIO를 통해 LED를 ON/OFF하는 실습을 하곤합니다. 마치 C언어를 배울때 Hello World를 찍는 것과 마찬가지죠. GPIO란 무엇인가요? GPIO는 말 그대로 "범용 입출력" 핀으로, 특정한 기능을 미리 정의하지 않고 사용자가 직접 설정하여 다양한 용도로 사용할 수 있는 핀입니다. MCU의 GPIO 핀을 통해 데이터를 입력받거나 출력할 수 있으며, 이를 통해 외부의 센서, 스위치, LED, 모터 등 다양한 장치를 제어하거나, 데이터를 읽어들일 수 있습니다. 아래 그림1은 Atmega328p의 GPIO 핀의 내부 동작을 설명하는 블록도입니다. 이제부터 하나씩 설명드릴건데 모든 기능들을 처음부터 억지로 외우려고 하지마시고 한번 훑어보는 식으로 보셔도 무방합니다. 그림1 GPIO 블록도 ※ 모든 병렬 I/O 포

Naver Blog

대기업 엔지니어가 분석한 임베디드 개발자 로드맵 (전자/전기공학과 필독)

안녕하세요 제어쟁이입니다. 오늘은 제가 인터넷 서칭중에 발견한 임베디드 개발자 로드맵에 대해서 얘기를 해보려합니다. 저는 전력전자 석사학위를 따고 자동차 회사에서 인버터 설계, 모터제어를 주업무로 하는 엔지니어입니다. 저의 관점에서 임베디드 개발자가 꿈인 취준생들이나 사회초년생들이 어떻게 실력을 키워나가면 좋을지 저의 생각을 말씀드리겠습니다. 먼저 노란색 바탕으로 되어있는 부분부터 하나씩 살펴보겠습니다. 임베디드 개발자 로드맵 그림1 임베디드 개발자 로드맵 먼저 Microcontrollers 영역부터 보면 GPIO, ADC, 타이머 등 정말 실무에서 무조건 사용되는 기술들이기 때문에 필수적으로 알아야하는게 당연히 맞습니다. 그래서 전자/전기공학과에서 2학년이나 3학년때 다들 배우는 것으로 알고 있습니다. 저도 졸업한지가 꽤 지났는데 당시 실습으로 DC모터를 돌렸을 때 정말 재밋었던 기억이 있네요. 그리고 RTOS 같은 경우는 기본 개념과 간단한 실습정도는 취준생들이나 초보개발자들이

Naver Blog

Atmega328p 인터럽트 -5탄-

안녕하세요 제어쟁이입니다. 이번 시간에는 Atmega328p의 인터럽트 기능에 대해 알아보겠습니다. 인터럽트 기능은 MCU를 다루는데 있어 매우 중요한 기능이므로 잘 알아두어야 하고 이를 제대로 응용할 수 있는 능력을 길러야합니다. 우선 인터럽트란 무엇인지에 대한 기본 개념부터 설명드리고 시작하겠습니다. 인터럽트란 무엇인가요? 인터럽트란 쉽게 말하자면 내가 A라는 일을 하고 있는데 갑자기 사장님이 B라는 일을 시켜서 하던 일을 잠시 멈추고 B를 끝내고 다시 A를 처리하는 것과 같습니다. 이러한 인터럽트를 이용하면 주변장치로부터 요청 받은 발생 시기를 예측하기 어려운 어려운 일을 CPU가 빠르게 처리할 수 있습니다. 그림1 인터럽트 처리 개념도 예를 들면 외부에 스위치를 연결했다고 가정해보겠습니다. 이러한 스위치를 On/Off했을때 그 신호를 입력받아 인터럽트 처리를 할 수 있습니다. 또는 추후 다룰 타이머에서 지정된 시간이 경과되었을 때 또는 통신이 왔을 때 등이 존재합니다. 그리고

Naver Blog

해외 OEM들과의 업무...그리고 일본 출장

요즘 여러 프로젝트들이 한번에 몰려와서 매우 바쁜 나날들을 보내고있습니다. 최근까지 BMW와 GM과의 프로젝트 덕분에 해외출장도 많고 회의도 많았습니다. 그래도 어느정도 프로젝트도 마무리 되고 있고 이제 쫌 여유로워지려나 했더니만 바로 새로운 프로젝트가 시작되어버렸습니다.ㅎㅎ 그림1 BMW, GM 혼다와 프로젝트를 논의하고있어서 이번주에 일본 출장을 다녀왔습니다. 거진 3년만에 기술연구소에 방문하였는데 그대로이더군요. 아래 사진은 기술연구소 홈페이지에서 가져온 사진입니다. 보안이 철저하여 저의 모든 카메라는 봉인당했습니다ㅋㅋㅋ 그림2 혼다 기술연구소 그리고 마지막 날에는 동료들과 여기저기 놀러다니다가 한국으로 돌아왔네요. 맛있는 것도 많이 먹고 좋았습니다ㅎㅎ Previous image Next image 그림3 일본 기록 혼다와의 이번 미팅과 과거 프로젝트를 하며 느낀점은 여전히 빡세다 입니다. 뭐 모든 OEM들의 요구사항이 다 빡세긴 하지만 일본 기업들은 더 빡빡한거 같습니다. 실

Naver Blog

모터 시험평가에 다이나모를 사용하는 이유?

안녕하세요 제어쟁이입니다. 오늘은 모터의 정밀 시험 및 평가에 필수적인 장비인 모터 다이나모에 대해서 말씀드리려합니다. 이는 전세계적으로 모터를 시험할 때 필수적으로 사용하는 장비이므로 꼭 알고계셔야 하는 장비입니다. 아래 그림1은 일반적으로 많이 사용되는 다이나모미터와 시험모터의 구성입니다. 샤프트를 통해 시험모터와 다이나모미터가 연결되어있는 것을 확인할 수 있습니다. 이제 왜 이런식으로 모터의 성능을 평가하는지 설명드리겠습니다. 다이나모미터를 사용하는 이유? 그림1 Dynamometer 구성 먼저 모터는 전기적인 입력을 주어 기계적 회전으로 변환하는 기기입니다. 그런데 만일 모터의 축에 아무것도 물려있지 않는 상황, 즉 무부하 상황에서 모터에 전류를를 인가하면 어떻게 될까요? 굉장히 작은 전류에도 모터는 빠르게 회전하게 될것입니다. 잡아주는 힘이 없기 때문이죠. 이렇게 되면 정상적인 테스트가 불가능하게 됩니다. 왜그런지에 대해 설명하기 위해 아래와 같은 사양의 모터를 시험 평가

Naver Blog

DC모터 속도 제어기 튜닝법 (2)

이전 포스팅에선 전류제어기 튜닝을 하는 실질적인 방법을 보여줬고 이번에는 속도제어기 튜닝을 해보도록 하겠다. https://blog.naver.com/sw_engineer-/222988970638 DC모터 전류 제어기 튜닝 꿀팁 오늘은 모터제어 SW엔지니어로 근무하며 제어기 게인 튜닝에 대한 꿀팁?(노가다)을 남기려한다. 모터의 ... blog.naver.com 이론적인 속도제어기 P게인 I게인은 관성 모멘트 값을 알아야하고 토크상수도 알아야한다. 하지만 역시나 실무에서는 정확한 값을 얻기도 어렵고 이론값과 잘 맞지도 않는다. 그래서 우리가 해야할건 전류제어기 튜닝같은 노가다가 필요하다. 속도제어기 추가 P게인 : 0.2 I게인 : 0.00001 기존 전류제어기에 속도제어기를 추가하였고 적절한 게인 튜닝을 통해 1000RPM지령을 주었을시 추종하게끔 게인을 선정하였다. 실무에서의 꿀팁을 남기자면 전류제어기의 주기보다 약 5배정도 주기를 길게 속도제어기를 코딩하면 좋다. (전류제어기의

Naver Blog

PMSM_회전자계 바로 이해하기

안녕하세요 제어쟁이입니다. 오늘부터 PMSM의 기본 개념부터 Matlab_simulink를 이용해서 제어까지 해볼 예정입니다. 회전자계(회전 자계)란 무엇인가? 회전자계(회전 자계, Rotating Magnetic Field)는 교류 전동기의 핵심 개념 중 하나로, 고정된 자석 없이도 회전하는 자기장을 생성하는 방식입니다. 이는 삼상 교류 전류를 고정자 코일에 공급함으로써 생성됩니다. 회전자계의 원리 삼상 교류 전류는 120도 위상차를 가지는 세 개의 전류로 구성됩니다. 이 전류가 고정자 코일에 흐르면 각 위상에 따라 서로 다른 방향으로 자기장이 생성됩니다. 이러한 자기장들이 상호 작용하여 공간적으로 회전하는 자기장을 만들어내며, 이것이 바로 회전자계입니다. 회전자계는 고정자에 대해 상대적으로 회전하는 자기장을 형성하며, 이 자기장이 회전함에 따라 회전자에 위치한 자석(혹은 영구자석)이나 도체에 전류가 유도되어 회전 운동을 일으킵니다. 이를 통해 모터가 회전하는 힘을 생성하게 됩니다

Naver Blog

PMSM 역기전력 Matlab 시뮬레이션 -0탄-

안녕하세요 제어쟁이입니다. 오늘은 모터의 개념중에서 정말 중요한 역기전력을 알아보고 시뮬레이션까지 진행하려고합니다. 모터의 역기전력(Back EMF)이란? 역기전력(Back EMF)은 모터의 회전 시 발생하는 전압으로, 모터의 성능과 제어에 중요한 역할을 하는 요소입니다. 역기전력의 원리 모터가 회전할 때, 회전자는 고정자의 자기장을 가로지르며 움직이게 됩니다. 이때, 패러데이의 전자기 유도 법칙에 따라 회전자가 자속을 가로지르면서 전압이 유도되는데, 이를 역기전력이라고 합니다. 역기전력은 모터의 회전 속도에 비례하여 발생합니다. 즉, 모터의 속도가 빨라질수록 더 큰 역기전력이 발생하게 됩니다. 시뮬레이션을 통해서 역기전력을 관측해보도록 하겠습니다. 먼저 시뮬레이션에서 사용할 모델은 아래와 같이 Matlab-Simulink에서 제공해주는 IPMSM 모델을 사용하였습니다. 꼭 아래와 동일하게 설정해야 저와 같은 시뮬레이션 결과를 얻을 수 있습니다. Preset model을 설정하면 자

Naver Blog

PMSM 벡터제어를 위한 d-q변환

안녕하세요 제어쟁이입니다. 오늘은 벡터제어와 d-q 변환에 대해 알아보고 본격적인 시뮬레이션 구성까지 진행보도록 하겠습니다. 벡터 제어란? PMSM의 정밀 토크제어(순시 토크제어)를 위해 벡터제어를 수행합니다. 전동기의 발생 토크는 자속의 크기와 자속에 지속에 직각으로 쇄교하는 전류의 크기에 의해 결정됩니다. dc모터는 설계 구조상 항상 자속과 자속에 직각으로 쇄교하는 전류의 각이 90도입니다. 사실 구조적 관점에서 보면 특별한 제어방법없이 인가하는 전류 크기만으로 토크 제어가 되므로 잘만든 모터라고 할 수 있습니다. 다만 브러쉬와 정류자의 내구성 문제가 있죠. 그래도 요즘 개발되는 브러쉬,정류자는 10년 이상까지도 사용할 수 있는 제품들이 있습니다. 이 부분에 대해서는 추후 포스팅하도록 하겠습니다. 어쨋든 PMSM을 벡터 제어하는 이유는 순시 토크 제어를 하기 위함이니다. 이를 위해서는 전류와 자속을 공간적으로 크기, 방향을 제어해야합니다. 따라서 벡터 제어라는 이름을 가지게 된거

Naver Blog

모터제어(PMSM) Matlab 시뮬레이션 -1탄-

지금부터 본격적으로 PMSM 벡터제어 시뮬레이션을 진행하겠습니다. Matlab function 위주로 설계하여 C언어로 변환하기 매우 쉽게 구성하였습니다. ※먼저 아래의 게시글에 모터 사양이 있으니 꼭 동일하게 설정해주셔야 합니다. PMSM 역기전력 Matlab 시뮬레이션 안녕하세요 제어쟁이입니다. 오늘은 모터의 개념중에서 정말 중요한 역기전력을 알아보고 시뮬레이션까지 ... blog.naver.com 지금부터 Matlab Simulink를 이용해서 PMSM 제어를 시작하겠습니다. m file과 Simulink 파일은 제일 하단에 첨부해놓았습니다. 그림1 m파일 작성 그림1의 m파일에 모터의 기본 파라미터들과 PI전류제어기의 게인값을 이론적으로 구해서 작성해놓습니다. 그림2 PMSM 시뮬레이션 구성 그림2의 블록들은 Matlab-Simulink를 통해 구현하였고 Controller, PWM generation, 3상 인버터 & PMSM로 구성하였습니다. 인버터의 전압은 560V로 설

Naver Blog

SVPWM vs SPWM 완벽 정리 (모터제어 필수 이론) -1탄-

SPWM이란? PMSM을 회전시키기 위해서는 a,b,c상을 120도 위상 차이가 나는 정현파 전류를 인가해줘야합니다. 이때 전류의 크기를 제어하기 위해서는 PWM 기술이 필수적입니다. PWM을 어떻게 인가하느냐에 따라서 제어 특성이나 효율등이 매우 변하게 됩니다. 실제 업계에서는 SVPWM, OPP, 동기PWM, RPWM등 다양한 PWM패턴을 사용하고있습니다. 이번 시간에는 PWM 생성의 가장 기초가 되는 SPWM방식에 대해 알아보겠습니다. 그림1 3상 인버터 그림2는 삼각파 비교를 하여 PWM을 만드는 파형입니다. Carrier wave보다 지령값이 크면 상단 스위치를 on하여 (+)극전압이 만들어지고 Carrier wave보다 지령값이 낮아지면 하단 스위치를 on하여 (-)극전압을 만듭니다. 결과적으로는 극전압의 on/off 듀티에 의해 만들어지는 평균 전압이 모터에 인가됩니다. 그림2 삼각파 비교 PWM 방식(선형 영역) 그런데 만일 그림3처럼 지령값이 Carrier Wave의

Naver Blog

모터제어(PMSM) Matlab 시뮬레이션_PWM,Dead time -4탄-

이번 시간에는 지난 시간의 극전압 지령을 이용해서 PWM 신호를 만들어보겠습니다. ※ 지난 포스팅과 내용이 이어집니다. 꼭 먼저 보고 와주세요. https://blog.naver.com/sw_engineer-/223578298222 모터제어(PMSM) Matlab 시뮬레이션_SVPWM -3탄- 2탄에 이어서 바로 3탄을 시작하도록 하겠습니다. ※이 글을 처음 보신 분들은 꼭 1탄부터 따라와주셔야지 ... blog.naver.com 우선 지금까지 배웠던 전반적인 흐름을 정리해보겠습니다. dq축 전류 지령을 PI제어기에 인가하였고 이는 상전압 지령으로 만들어지게 됩니다. 여기에 Min-Max방식을 이용한 옵셋 전압을 더해줘서 극전압 지령을 만들게 되었습니다. 그럼 지령 전압을 실제 모터에 인가하기 위해선 3상 인버터의 스위치를 ON/OFF하며 인가해줘야합니다. 아래 그림1은 극전압지령과 Carrier Wave의 모습입니다. 이때 Carrier Wave의 크기는 Vdc/2, -Vdc/2의

Naver Blog

DC모터 전류제어기 튜닝 비법 공개 (1)

오늘은 모터제어 SW엔지니어로 근무하며 제어기 게인 튜닝에 대한 꿀팁?(노가다)을 남기려한다. 모터의 전류 제어기의 게인은 이론적인 값으로 구할 수 있다. 전류제어기의 P게인과 I게인은 모터의 인덕턴스와 저항 값을 이용하여 선정할 수 있다. 하지만 실제 모터의 인덕턴스와 저항은 설계치와 차이가 있을 수 있고, 온도등 여러 가지 외부 변수에 의하여 변화가 생긴다. 또는 제공이 되지 않을수도있다. 즉 이론값으로 선정해도 맞지 않을 확률이 매우 높다. 그래서 현실적으로는 노가다로 맞추는 경우가 대다수이다. 바이폴라 제어방식 위는 Matlab/simulink를 이용한 DC모터 전류제어 블록도와 구동하는 모터의 정격 전압, 전류, 토크이다. 또한 제어 방식은 바이폴라 제어방식을 사용하였고 스위칭 주파수는 10Khz로 하였다. 전류제어기 모델탐색기에서 게인값을 파라미터로 설정하면 m파일의 값을 사용할수 있음 지령대비 피드백 전류의 값 70% (P게인 : 5 / I게인 : 0) 게인을 맞추는 순

1