본문 바로가기
  • 경제적 자유를 얻는 그날까지
728x90
반응형

엔지니어링126

728x90
반응형
[TensorFlow] 텐서 플로우 참고자료 텐서 플로우를 공부하는데 도움이 되는 참고자료 1. Standord University AI 그룹 교수의 강의 https://www.coursera.org/instructor/andrewng Andrew Ng 교수의 강의를 듣고 정리한 자료 http://holehouse.org/mlclass/ 2. Visual Recognition http://cs231n.stanford.edu/ 번역노트 http://aikorea.org/cs231n/ 3. Tensorflowhttps://www.tensorflow.org/http://hunkim.github.io/ml/https://github.com/aymericdamien/tensorflow-examples/ 2019. 3. 8.
[STM32] 스테핑 모터의 가감속 제어 지난번 STM32의 타이머 인터럽트를 이용하여 PWM의 주기를 펄스마다 변경하는 로직을 만들었다. 결론은 STM32F103RCT6를 사용하면 최대 50KHz의 안정적인 인터럽트를 발생시킬 수 있고 모토가 탈조를 일으키지 않고 최대로 구동할 수 있는 주파수는 5.8KHz까지 였다. 그러나 오늘은 스텝모터에 가감속 테이블을 이용하여 제어하여 보다 높은 주파수까지 제어해보았다. 스텝모터는 스루영역에서 가감속테이블을 사용하면 훨씬 더 높은 주파수까지 구동이 가능하다. 가감속테이블은 시간의 sqrt 함수에 대한 응답을 테이블로 만들어서 간략하게 적용해보았다. 스텝수는 512개 사용하였고, 테이블의 값의 의미는 가변주기 펄스를 만들기위한 Prescaler의 값이다. 펄스가 끝나는 타이머인터럽트에서 펄스의 개수를 카.. 2018. 11. 15.
[STM32] 가변주기 PWM 생성 가변주기 펄스는 AVR이나 80C196등으로 제어하는 것은 많이 봤지만 STM으로 가변주기 PWM을 만든 것은 자료를 많이 찾아볼 수가 없었다. 그래서 직접 만들어보았다. 사용한 모델은 STM32F103RCT6 모델이다. 접근한 방법은 PWM 을 생성하고 업데이트 인터럽트가 발생하면 다음 Prescaler에 다음 주기의 값을 넣어서 주기를 변경시키는 방법으로 접근했다. 먼저 인터럽트가 발생할 수 있는 최소 시간을 확인해보았다. 타이머로 System Clock인 72MHz 클럭을 사용하고 CCR = 200으로 하고 Prescaler를 0으로 설정하면 PWM의 주기는 2.7us(370KHz)이다. 아래 사진처럼 PWM주기마다 인터럽트가 발생하지 않는 것을 확인할 수 있다. 파란색은 PWM이고 노란색은 업데이.. 2018. 11. 10.
[STM32] ZedGraph를 이용한 C# 그래프 프로그래밍 설치프로그램1. Visual Studio 2017https://visualstudio.microsoft.com/ko/downloads/ 2. ZedGraph.dllhttps://sourceforge.net/projects/zedgraph/ Visual Studio 2017을 설치합니다. 상용 프로그램이니 링크로 다운받아서 사용하시면 됩니다. 다만 계정을 생성하셔야 제한없이 사용하실 수 있습니다. WinForm으로 프로젝트를 생성합니다. 오른쪽보면 솔루션탐색기가 있습니다. 솔루션 아래 참조에서 오른쪽 버튼을 눌러 '참조추가'를 클릭합니다. 찾아보기에서 'ZedGraph.dll' 파일이 있는 경로를 추가해줍니다. 아래와 같이 참조추가에 ZedGraph가 나타납니다. ZedGraph를 편리하게 사용하기 위해 .. 2018. 10. 27.
[STM32] CubeMX로 생성한 HAL 드라이버의 디버깅 오류 CubeMX를 이용하여 HAL 드라이버를 생성하고 디버깅할 경우 아래와 같이 디버깅이 멈추는 경우가 발생한다. 멈추는 부분은 HAL_Init() 함수 내부에서 발생한다. 따라가 보니 이부분이다. __HAL_AFIO_REMAP_SWJ_DISABLE(); 이 부분의 의미는 JTAG와 SWD를 DISABLE하라는 것이다. 그 원인은 아래와 같다. 그 이유는 GPIO PIN의 일부를 JTAG나 SWD와 공유하므로 해당 GPIO핀을 사용할 경우 JTAG이나 SWD를 비활성화시키는 것이다. 따라서 코드는 아래와 같이 GPIO핀의 사용여부를 확인한 후 JTAG과 SWD의 모두를 정해주면 된다. if ((pin == PA_13) || (pin == PA_14)) { __HAL_AFIO_REMAP_SWJ_DISABLE(.. 2018. 10. 2.
[STM32] HAL 라이브러리 vs STD 라이브러리 2018. 9. 30.