본문 바로가기

분류 전체보기

(32)
[STM32] External Interrupt(외부인터럽트) 인터럽트란? https://how-to-make-a-quadcopter.tistory.com/13 인터럽트(Interrupt) 방식 폴링 방식은 CPU의 효율이 떨어지는 것과 동시에 여러 작업이 진행될 때 하나의 작업이 실행이 지연되거나 실행할 수 없는 단점이 있다고 했다. 이러한 문제점을 해결할 수 있는 방식 중 하나가 � how-to-make-a-quadcopter.tistory.com 쿼드콥터의 항공등을 개발하기 위해 외부 인터럽트를 사용할 것이다. 항공등은 주로 기체의 앞뒤방향이나 어두운 곳에서의 위치을 표시하기위해 사용한다. 드론에 장착한 스위치를 이용하여 항공등의 점멸 속도를 조절하거나 On/Off하려한다. 이 스위치는 주기적으로 계산해야하는 값들(PID계산, 라즈베리파이와 통신)들과는 좀 다..
2019 SW융합인재양성사업 결과보고서
PWM Update rate와 PID Update rate의 관계 PWM Update Rate는 말그대로 PWM의 펄스가 출력되는 주기를 뜻한다. 만약 400Hz의 PWM펄스를 출력하고 있다면 1초에 400번, 즉 2.5ms마다 펄스를 출력한다는 것이다. PID Update rate는 PID계산을 하는 주기를 뜻한다. 그래서 이게 뭐? 내가 하고싶은 말은 PWM Update rate를 PID Update rate의 속도보다 같거나 빠르게 해야한다는 것이다. 즉, PWM Update rate >= PID Update rate 왜? PID계산을 아무리 빠르게 해봤자 모터출력에 그만큼 반영하지 못하면 의미가 없다는 것이다. 예를 들어 모터출력 반영을 1초에 200밖에 못한다면 PID계산을 1초에 400번, 1000번 아무리 빠르게한다해도 1초에 PID계산을 200번하는 것과..
[STM32]PWM을 이용하여 BLDC 모터 구동하기 BLCD모터는 FC에서 작동시키는게 아니라 FC에서 PWM신호를 받은 ESC가 작동시킨다. 그렇다면 어떻게 ESC에게 PWM신호를 줄 수 있을까? Timer를 이용하면 된다. Cube Mx 설정부터 알아보자. 일단 Timer는 PWM신호를 발생시킬 수 있는 타이머로 설정해야된다. TIM6, TIM7은 Basic Timer이므로 PWM을 발생시킬 수 없다. 나는 고급 타이머인 TIM1번을 선택했다. Slave mode와 Trigger Source는 Disable해두자. 사실 나도 자세히 어떤건지 몰라서 나중에 쓸일이 있으면 설명해보겠다. Clock source는 APB 버스를 통한 내부 클럭을 사용할 것이므로 Internal Clock으로 설정해준다. 외부클럭으로 설정하면 실제 외부핀에서 클럭을 받아 AP..
PID 튜닝 프로그램 https://how-to-make-a-quadcopter.tistory.com/5 Ziegler-Nichols Method(지글러-니콜스 방법) PID를 튜닝을 많이 해봤지만 도무지 감이 안온다. 노가다식으로 하는거말고 뭐 별다른 방법이 있나? 싶어서 찾아봤더니 있었다. 바로 지글러 니콜스 방법이다. 방법은 간단했다. I gain과 D gain을 0으로 설정한.. how-to-make-a-quadcopter.tistory.com 지글러-니콜스 방법을 사용하기 위해 내가 사용하는 Mti-7 자세 제어 센서를 만든 회사에서 제공하는 Mt manager를 통해 임계 이득과 임계 주기를 구하려했다. 그런데 치명적인 문제가 있었다. 바로 MCU에서 Mti-7 값을 읽어들이는 동안 Mt manager에서 Mti-..
교내 수첩 작성 강의 창체 시간에 강사님이 오셔서 플래너 작성법에 관한 강의를 하셨다. 처음에는 특별하게 수첩쓰는 방법이 있을까? 그냥 대충 쓰면 되지 하고, 그 시간이 아깝다고 생각했다. 하지만 강의를 다 듣고나니 정말 잘 들었다는 생각이 들었다. 강의 내용 1. 1년을 세분화해서 정리해두자. 예를 들어 시험기간, 시험기간 2주전, 공휴일이 많은 날 등으로 나누었다면 달력을 볼 때 정리가 잘 되어서 언제 시험을 보는지, 앞으로 언제 무엇을 준비해야 하는지 알기 쉽고 준비를 더 잘할 수 있다. 공휴일이 많은 날은 그냥 시간을 보내기보다는 미리 무엇을 하고 뜻 깊게 놀지 정해두는게 좋다. 정말 미친듯이 놀지 못 할거면 그냥 공부하라는 말이 마음에 와닿았다. 예를 들어 쉬는 날이 4일 연속으로 있을 때, 목표없이 그냥 시간을 흘..
제6회 대한민국 SW융합 해커톤 해커톤은 나갈 때 마다 나에게 많은 도움이 되는 것 같다. 경험도 쌓고 다양한 사람들의 노하우나 실력들을 확인해보고 싶어서 참가하게 되었다. 이번 대회는 3일동안 진행되었는데, 나는 학교 친구들과 함께 SICKO MODE라는 이름으로 스마트시티 분야에 참가하게 되었다. 우리의 작품이름은 HomeDoctor인데 바쁜 현대인들에게 집에서 의사와 영상통화를 하며 진료를 받아 시간과 돈을 절약하는 서비스이다. 처음에는 매우 좋은 아이디어라고 생각했지만 심사평을 듣고 많은 것을 깨달았다. 첫째, 우리는 시장조사를 하지 않았다. 진료가 어떻게 이루어지는지 실제 사용하고 있는지에 대한 아무런 정보가 없었다. 우리는 시중에 나와있는 온라인 진료들과 거의 차이점이 없었다. 둘째, 사업의 조건은 기술, 경영, 자금, 그리..
Junction X Seoul 해커톤 밤새가면서 개발하는라 힘들기도 했지만 정말 재밌었다. 진짜 진짜로 다양한 사람들도 만나보고 좋은 경험이였다. 대회에 참가한 대부분이 대학생이였다. 거의 다 카이스트 등 명문대들, 외국인은 절반 이상? 영어는 무조건 사용할 줄 알아야 대회에 참여가 가능했다. 대회 공지, 설명, 발표 등 모든 것을 영어로 했다. 다행히도 우리팀엔 미국에 유학갔다 온 영한이가 있어서 다행이였다. 영어 실력을 키워야겠다는 생각이 많이 들었다. 우리의 과제는 HIAB이라는 회사에서 VR을 통해 나무 등의 짐을 운전석에서 옮길 수 있는 제품을 판매하고 있는데, 멀미, VR과 현실의 거리차이 등의 문제가 있다고 했다. 우리는 그 문제를 해결해야 했다. 그래서 인공지능과 초음파 센서를 이용하여 물체를 스캔하고 사용자는 직접 조작하는 ..
스마트 금고 포스터 느낀 점 친구와 협업하면서 프로젝트를 진행해보니 서로 의지도 많이 되고 소스 코드 관리나 협업의 중요성, 어떻게 진행해야 하는지를 알게되었다. 직접 완제품처럼 프레임까지 다 만들어보니 완성도가 높아져서 좋았다. 다음에는 진짜 금고처럼 단단한 재질로 만들고 MCU까지 내가 필요한 부분만 넣어서 보드를 제작해보고 싶다. 그러면 크기도 줄고 효율적이며 대량 생산할 수 있을 것 같다. 발표할 때 조금 떨리기도 했지만 저번에 전공 선생님께 보고서쓰는 방법을 배워서 목차에 잘 맞춰서 잘한 것 같다. 앞으로 프로젝트를 진행할 때 계획서나 보고서도 꼭 써야겠다. 그리고 예전에 파이썬을 조금 공부하다가 지루해서 안했었는데 이번 프로젝트를 하면서 그 때 동안 공부한 것 보다 몇배는 더 빠르게 습득한 것 같다. 라이..
이중 PID제어 이전에 사용한 PID제어는 단순히 각도를 PID제어한 것이었다. 그 결과 자세를 안정화하는데 시간이 걸려서 자세제어가 잘 되지않았다. 그럼 어떻게해야할까 고민하며 구글링을 해보았는데, 원래 PID제어로는 자세 제어가 잘 안되고 이중 PID제어를 해야한다는 것이다. 이중 PID제어도 어떻게 하냐에 따라 다른 것같았다. PI-PI제어를 하기도 하던데 내가 찾은 것 중 가장 괜찮다고 생각한 것은 외부 루프로 각도를 P제어한 후, 그 결과를 Set point로 하여 내부 루프로 각속도를 PID제어를 하는 것이다. 단순히 각도만으로 제어하는 것보다 각도로 제어한 값을 각속도로 융합해서 제어하므로 효율이 더 좋을 거라 생각했다. errorAngle = targetAngle - currentAngle; //각도 오차..