2024년 10월 27일 일요일

구글 스프레드 함수를 활용한 내 입맛대로 자산(주식) 통합 관리하기!(자산분배)-(1)

흩어진 주식계좌! 내 입맛대로 실시간 통합관리하기



1.  2% 아쉬운 MY데이터 활용한 자산 통합관리

지인에게서 퀀트투자라는 생소한 투자법을 들은 후 매력을 느껴 더욱 깊이 알아보고자 강형국의 퀀트투자라는 책을 읽게 되었다.

이 책은 나의 투자 가치관을 바꾸게 하는 결정적인 역할은 했다고 봐도 무방하다.
책의 핵심은 '과거 데이터 기반으로 재무재표의 데이터를 조합하여 큰 시간 들이지 않고 자동으로 주식을 리스트업 하여 이 주식을 사고 분기마다 같은 방식으로 리스트업하여 기존과 새로운 리스트업에 차이가 있는 주식들을 사고 팔아 리밸런싱하는' 투자 법을 소개하는? 책이다.

나는 이책의 본론도 물론 도움이 되었지만 투자 가치관이 변경된 계기는 이 책의 서론이었다. 

'자산분배'

자산분배를 통해 손실을 최소화하며 투자하는 것이다. 여기서 말한 자산분배는 미국주식, 한국주식, 채권, 골드 등이다.

자산분배를 절대적인 비중을 고수하여 위 항목들을 관리하는 것이다.

다행히 여러 증권회사에는 분산되어 있는 여러 주식들을 통합관리해주는 서비스를 해주고 있다.
다만,  골드나, 채권, 현금까지 관리해주는 아직 없었다. 또한, 설정한 비중이 있을 때 비중 조절을 위해서 어떻게 자산을 분배해야하는지 알려주는 어플도 없었다.

따라서 나만의 자산분배를 실시간으로 통합관리해주는 것을 직접 만들기로 하였다.

그 방법은 '구글의 스프레드 시트'를 활용하는 것이다.

2. 구글 스프레드 시트를 활용하여 실시간 주식 정보 얻기

바로 시작하겠다. 결국 핵심은 실시간 주식 데이터를 얻고 그 데이터를 활용하는 것이다.
실시간 주식은 구글 스프레드 시트를 통해 얻을 수 있다.

구글 스프레드 시작하기


구글에 로그인하여 스프레드 시트를 연다. 어떻게 들어가는지 모른다면 구글 검색에 
구글 스프레드 시트 검색하여 상위에 있는 공식사이트 들어가면 된다.

그리고 빈 스프레트를 누른다. 

그러면 아래와 같이 우리가 다 아는 엑셀같이 셀들이 보인다.(엑셀과 거의 기능이 유사하다)




이제 내가 요즘 관심있어하는 미주, 한국주식 한 종목씩 실시간 데이터를 가지고 와보겠다.

엔비디아와 인도 니프티 50 ETF 다. 

실시간 데이터를 가지고 오는 방법은 구글 스프레드에 내장된 주식 관련 함수를 쓰는 것이다.
함수 뼈대는  =GOOGLEFINANCE("티커","불러올 데이터") 이다. 

티커는 주식의 고유 코드로 주식명이 아닌 주식이 가지고 있는 고유코드(번호)를 입력하면 된다.

티커는 네이버 증권에서 대부분 주식명을 검색하면 엔비디아 이름 상단 NVDA 가 있는데,
이 문자가 티커이다. (인도 니프티 50 한국주식은 453870)

참고로 미국은 보통 영어문자를 티커로 사용하고 한국은 숫자를 사용한다.

엔비디아


혹시 네이버에 없는 주식도 있을 수 있는데, 이 부분은 구글에 인베스트닷컴에서 찾을 수도 있다.

티커를 찾았다면, 이제 이 주식의 어떤 정보를 불러올 것인지를 정해야 한다.

아쉽지만 모든 정보를 불러오는 것은 한계가 있다. 불러올 수 있는 정보는 아래와 같다.

  • 실시간 데이터의 경우 다음 중 하나를 속성으로 사용할 수 있습니다.

    • "price" - 실시간 가격 정보로 최대 20분까지 지연됩니다.

    • "priceopen" - 개장 시점의 가격입니다.

    • "high" - 현재 날짜의 최고가입니다.

    • "low" - 현재 날짜의 최저가입니다.

    • "volume" - 현재 날짜의 거래량입니다.

    • "marketcap" - 주식의 시가 총액입니다.

    • "tradetime" - 마지막 거래 시간입니다.

    • "datadelay" - 실시간 데이터의 지연 정도입니다.

    • "volumeavg" - 일일 평균 거래량입니다.

    • "pe" - 가격 대 수익률입니다.

    • "eps" - 주당 순이익입니다.

    • "high52" - 52주 최고가입니다.

    • "low52" - 52주 최저가입니다.

    • "change" - 전 거래일 마감 이후의 가격 변동입니다.

    • "beta" - 베타 값입니다.

    • "changepct" - 전 거래일 마감 이후 주식 가격의 백분율 변동입니다.

    • "closeyest" - 전일 종가입니다.

    • "shares" - 발행 주식 수입니다.

    • "통화" - 유가증권이 거래되는 통화입니다. 통화에는 거래 기간이 없으므로 이 인수에 대해 openlowhigh 또는 volume을 사용하면 결과가 반환되지 않습니다.


여기서 자신이 불러올 데이터를 확인후 입력하면 된다. 이전 데이터나 더 필요한 정보가 있다면,
아래 주소를 참고하면 된다.


나는, 현재 가격이 궁금하여 price 불러올 것이다.

=GOOGLEFINANCE("NVDA","price")

아래와 같이 현재가가 반영된 실시간 가격을 볼 수 있다. 실시간이긴 하지만 최대 20분 지연이된다고 한다.





사실 이제 다 배웠다.  이제 이후부터는 자신이 원하는 방식으로 속성값들을 불러와 가공하며
자신이 입 맛대로 작성하면 된다.

다음 글에서는 주어진 속성들을 활용하여 자산분배를 어떻게 했는지를 설명할 것이다.
그 과정에서 함수들이 어떻게 사용되고 어떻게 보여지는지를 알 수 있을 것이다.







2020년 3월 2일 월요일

크롬 검색 꿀팁!

크롬 검색 꿀팁 소개! 


안녕하세요. 구글 크롬의 숨겨진 편리한 기능을 발견해서 소개하려고 합니다.
크롬 주소창에서 다양한 사이트 검색을 할 수 있는 기능인데요.
즉, 즐겨찾기를 통해 직접 사이트 들어가서 검색하는 번거로움을 줄일 수 있는 매우 효과적인 기능입니다!
특정 사이트가 아닌 여러 사이트 검색 결과를 주소창 하나로 검색할 수 있는 것이 큰 장점입니다.
백문이 불여일견이라고 바로 아래 동영상을 보시죠!

'대한민국' 검색 해보기





영상을 보시면,
크롬 주소창으로 '대한민국’을 검색할 때마다 각각의 사이트 검색결과를 바로 볼 수 있습니다.

그래서 어떻게 하는 건데?


방법은 쉽습니다. 아래 단계만 따라하면 신세계를 바로 경험하실 수 있습니다!

1. 크롬 옵션 들어가기 - 검색엔진 선택


1. 주소창 맨 오른쪽에 점이 '세로로 배열된 버튼’을 클릭합니다.
2. 리스트가 뜨면 하단 부분에 '설정’을 클릭합니다.
3. 좌측을 보면 '검색엔진’이 보이는데 클릭합니다.


'검색엔진 관리’를 클릭합니다.


2. 기타검색엔진 설정하기


창을 보시면, 기본검색엔진과 기타검색엔진이 있습니다.



기타 검색엔진이 저희가 공략할 부분입니다.

1. 기타 검색 엔진 옆에 ‘추가’ 버튼을 클릭합니다.
2. 창이 나오는데, 검색엔진은 사이트 이름을 적습니다. ex) 네이버, 구글, 유튭 (자유입니다)


키워드가 중요한데, 일종의 주소역할입니다. 
저는 네이버를 ‘ㄴㅇㅂ’ 로 설정해서 빠르게 검색할 수 있도록 하였습니다. 
더 편하게 하고 싶으신 분들은 'ㄴ’로 하셔도 됩니다. 
그러나, 나중에 'ㄴ’자로 시작하는 단어 입력 시 원하는 방향으로 검색이 되지 않을 수 있어 
확실한 차별화를 만드는 것이 중요합니다.

3. URL 설정하기


여기서부터 헷갈릴 수도 있어서 따로 파트를 나누었습니다.
마지막 항목이 핵심인데요, URL 주소를 얻는 방법은 아래와 같습니다.


각자 원하는 사이트에 들어가셔서 아무런 단어를 검색합니다.
저는 네이버를 기준으로 해보겠습니다.
검색하고 주소창을 보면 


위와 같은 주소가 나오는데, 여기서 &query= 이후는 지워 주고, 뒤에 %s를 입력합니다.


이것을 복사해서 마지막 항목인 URL에 붙여 넣고 저장을 눌러주면 끝입니다!

4. 확인해보기


이제 각자 설정한 사이트를 크롬 주소창에 입력해 보겠습니다.
검색 방법은 각자 설정한 키워드를 입력하고 스페이스바를 누르면 검색엔진 파란색 글이 나옵니다.

그리고 원하는 검색 단어를 입력하고 엔터를 치면 끝!!



저는 ㄴㅇㅂ를 키워드로 네이버 사이트를 검색하였습니다.


++ 추가로 저는 똑같은 컨셉으로 sdq를 키워드로 더 추가하였는데요. 
키보드가 한/영 설정 관계없이 편하게 이용하려고 추가하였습니다. 
참고로 키워드는 하나밖에 안되고, 태그 처럼 콤마로 구분이 안되니 하나씩 추가해야 합니다.

대표적인 url


하나 하나 주소 찾아 설정하는 것이 번거로울 것 같아 대표적인 URL 공유합니다.

네이버 

유튜브

파파고

구글번역


감사합니다!

2019년 8월 24일 토요일

윈도우 배경화면 사진 다운로드 방법

서론 없이 바로 시작하겠습니다.

폴더창에서 주소 입력란에 


%LocalAppData%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets


를 붙여넣기 합니다.

아래와 같은 이상한 이름의 파일들이 나오게 됩니다. 

이 파일들을 모두 복사한 후 바탕화면에 새로운 폴더를 만든 후 그 폴더 안에 붙여넣기 합니다.
(웬만하면 이름을 영어로 만드세요)

그리고 바탕화면에 새로만든 폴더를  shift 키를 누른채로 오른쪽 마우스를 클릭합니다.

메뉴 중에 '여기서 명령창 열기' 항목을 클릭합니다. 

명령창이 나오면 


노란색 부분처럼 ren * *.jpg 를 입력하고 엔터를 누릅니다 (ren뛰어쓰기*띄어쓰기*.jpg)
(노란색 위에 항목은 무시하세요)

그러면 파일들이 jpg 확장자로 변한 것을 볼 수 있는데요. 



파일정렬에서 파일크기가 큰 순으로 정렬하면
 지금까지 보았던 사진들을 보실 수 있습니다. 

2019년 8월 5일 월요일

[LABVIEW] 간단한 코딩으로 엔코더 측정하기 (Encoder measurement with CRIO, NI-9401)



CRIO와 NI-9401을 이용, 간단한 코딩으로 엔코더 신호측정


엔코더 스펙 : 360CPR (1회전당 360개의 펄스 출력), A, B 출력, Z(index) 없음, Encremental

장치 : CRIO-9035, NI-9401

모드환경: Real-time (No FPGA)

랩뷰 : 2018

 본 글은 real-time 환경에서 crio와 ni-9401의 프로퍼티를 이용하여 복잡한 코딩없이 초보자도 쉽게 엔코더신호를 측정할 수 있는 글입니다. 엔코더측정에 관한 자세한 내용은 http://www.ni.com/tutorial/7109/ko/ 참조하세요.

요약


REAL-TIME 환경에서 NI9401 property에서 측정모드를 quadrature를 택하고 각각의 항목을 엔코더 스펙에 맞게 설정, 아래 그림과 같이 코딩하면 바로 엔코더를 측정할 수 있습니다. (4체배 기준, 감속기 1:51)

NI9401 코딩

  1. 기본세팅
    
전반적인 세팅 작업입니다. Crio설치와 모드설정, 9401설치 관련사항은 Getting started문서를 참조하거나, 구글검색하시면 쉽게 하실 수 있습니다.

참고로, REAL-TIME을 이용하기 때문에 FPGA TARGET에서 빈 VI를 생성하여 실행버튼을 한번 눌러줍니다.


   2. NI-0401 셋팅


기본적인 셋팅이 되셨으면(PC와 CRIO 연결, SCAN MODE 등) Chassis 항목아래 real- time scan Resources 가 있습니다. 해당 항목을 오른쪽마우스 – 새로만들기 – C series module 를 클릭합니다. 아래 그림과 같은 창이 뜹니다. 

디바이스 추가 창
Dicover를 눌러 ni-9401을 찾아 선택하여 확인을 누릅니다. 프로젝트로 돌아가면
(9401)가 생성된 것을 확인할 수 있습니다.


이후, MODE 오른쪽 – PROPERTY를 선택합니다.

캡션 추가

위와 같은 창이 나옵니다. 참고로 FPGA MODE에서는 specialty digital configuration
category가 안나올 수 있습니다.

Module configuration에서는 9401이 엔코더 신호를 읽어야 하기 때문에 모두 inputmode를 선택합니다. 만약 두 개의 엔코더를 쓰신다면 모든 DIO를 INPUT으로 설정합니다. 

 각 항목에대한 설명은 help를 보면 자세하게 나왔습니다.
specialty digital configuration에서는 specialty mode를 quadrature로 사용합니다.

 Quadrature란

 A, B 펄스 위상차가 90도차이가 나는 신호를 일컫고, 이로인해 최대 4대의 출력타입을 뽑을 수 있습니다. 즉, 엔코더 자체 분해능보다 4배의 분해능 성능을 뽑을 수 있어 좀 더 정밀한 위치측정을 할 수 있습니다. 대부분의 엔코더가 이 형식을 따릅니다.
 input filter란

 말 그대로 ‘noise를 없앤다’ 입니다. 이 부분은 직접 오실로스코프를 통해 측정해서, 가장 큰 noise의 펄스시간을 확인하여 항목을 선택합니다. 예를들어, 16us선택하면 ‘그 시간 이하의 펄스는 다 무시한다’ 라고 보시면 됩니다. 오실로스코프가 없어 측정이 불가능하면 disabled를 선택합니다. 

 Velocity time base란

 counter가 특정시간(항목)동안 일어난 counts의 개수를 리턴한다는 의미이며, time base가 작을수록 낮은 해상도를 제공하지만 리턴되는 counts 값은 많아집니다. 반대로 큰 time base는 고분해능을 제공하지만 속도에서 miss되는 부분이 있고, 뒤쳐질 수 있습니다. 즉, 모터속도가 크면 엔코더의 분해능이 떨어져 정확한 위치측정이 힘들다고 볼 수 있습니다. (자세한 사항은 해당창 help를 보시면 쉽게 알 수 있습니다.) 

Index mode는 0으로 reset을 한다는 것인데, Z(INDEX) 채널을 사용할 때 설정하시면 됩니다. 예를들어 b1, a1을 선택하면 Z가 1이고, A, B가 1 state 있을 때, 포지션이 0으로 reset 된다는 의미입니다.

확인을 누르면 아래와 같이 바뀌게 됩니다.

바뀐 MOD2의 DATA SOURCE
     
 
위치, 속도에 대한 0,1이 각각 있는데, 이는 엔코더를 최대 2개를 쓸 수 있다는 것입니다. 제경우 1개를 이용하여 0을 선택하였습니다.

     3. 선연결


캡션 추가
NI자료를 보면 9401에 대한 핀아웃이 있습니다. A, B만 사용할 것이기 때문에 CTR 0 A, CTR 0 B만 사용합니다. 엔코더를 2개 사용하거나 Z를 사용하면 위 표를 보고 더 연결하시면 됩니다. 제 경우, 위 표대로 B채널을 17PIN에 연결해보니 데이터를 정확히 측정을 못했습니다. 나중에 HELP를 보니, B채널은 PFI 1 채널에 연결하라고 되어 있어 16PIN에 연결해보니 데이터가 측정이 됬습니다.

      4. 코딩

코딩


각도로 표시하기 위해선 위 식을 사용합니다. POSITION의 RAW data는 edge_count 입니다.
  • X=엔코더 자체의 CPR
  • N=체배수
입니다. 제 경우, X=360, 4체배수를 사용하므로 결국엔 POSITION을 4로 나누면 되지만 모터에 1:51의 감속비가 결합되어 있어 204로 나누었습니다.



참조사이트

http://www.ni.com/tutorial/7109/ko/

2019년 7월 23일 화요일

[매우 간단] 부트캠프없이 맥북에서 window 사용하기 [remote control] (feat. chrome)

예전에 비해 요즘은 컴퓨터간 원격조종을 많이 하지 않는데요, 
큰 이유중 하나는 사람들의 컴퓨터 다루는 기술과 지식수준이 향상되어 혼자 해결할 수 있고, 
 간단히 검색만 해도 쉽게 문제를 해결할 수 있어 굳이 원격으로 특정 프로그램 다운받아 
복잡한 과정을 거칠 필요가 없기 때문이라 생각합니다.
또한 남에게 자신의 컴퓨터를 맡기게 되면 해킹우려도 있어 많이 사용하지 않는 것 같습니다. 

근데, 오늘 소개드릴 내용이 원격입니다!

하지만 쓰임새가 다릅니다. 
남에게 자신의 컴퓨터를 공유하는 것이 아닌, 
급하게 맥북으로 윈도우를 사용해야 할 경우 유용한 팁입니다.

물론, 이 프로그램으로 남과 공유도 가능합니다.
아래 단계를 따르면 남과의 공유도 쉽게 할 수 있습니다.
하지만 이번 글의 취지는 '맥북으로 윈도우 사용'이기 때문에 따로 
작성은 하지 않겠습니다.

저의 경우 카페에서 맥북으로 작업을 할 때, 
학교에서 사용하는 컴퓨터와 원격 조종을 통해
윈도우로 작동되는 프로그램을 사용하여 매우 만족하며 사용하였습니다.

그리고 무엇보다 매우 간단하여 손 쉽게 사용이 가능합니다!

그럼 가독성을 위해 딱딱하게 작성하겠습니다

필요한 것

구글아이디, 크롬, 구글 데스크탑 앱


주의

 조종컴퓨터(mac)가 아닌 원격받을 컴퓨터(window)로 먼저 아래과정을 다 따라하신 후
맥으로 원격데스크톱 앱까지만 설치해주시는 게 헷갈리지 않으실 겁니다.
또한, 같은 구글 계정으로 로그인한 상태여야 합니다.

원격하는 법

https://remotedesktop.google.com/   링크에 접속 

우측 상단에 원격 액세스를 클릭


위 그림에서 아래방향 화살표를 클릭
chrome remote desktop을 chrome에 추가 합니다.
이후 동의 및 설치를 눌러줍니다.
조종받을 컴(window)은 아래과정 계속 진행하시고 
조종할 컴(mac)은 설치까지만 진행해 주세요


그러면 이름선택란이 나오는데
이름을 적어주시고 다음을 눌러줍니다.


이후 PIN 번호를 6자리이상 적어줍니다.
그 아래 개선참여는 원하시는 대로 하셔도 무방합니다.


 완료가 되면 위와 같은 이미지가 뜹니다.

이제 원격조종할 컴퓨터(mac)로 돌아가면 기기가 뜨게 되는데, 
그 기기(window)를 클릭합니다.

    

전에 입력한 pin번호를 입력합니다.


그럼 위와같이 mac에서 window os를 컨트롤 하는 것을 
직접 경험할 수 있습니다!

+ 추가 (윈도우 파일을 맥에서 다운받기)


추가적으로 윈도우에 있는 파일을 우측 중간에 있는 화살표를 눌러
파일 다운로드를 누르면 


위와 같은 대화상자가 나오는데 원하는 파일을 클릭하시면 맥에서 다운이 됩니다.

물론, 업로드도 가능합니다!


+ 단점

제가 생각하는 단점은 체감상 반응이 살짝 느려 
오랫동안 맥북으로 윈도우를 작업하기에는 힘들다는 점 입니다.

두 컴퓨터 모두 켜져 있고 구글계정이 로그인된 상태에서 할 수 있으므로,
생각날 때, 바로 하기에는 갖추어야 할 조건이 많습니다.





2019년 7월 22일 월요일

[Labview] crio에 ni-9881 모듈 연결하여 MAX에서 연결상태 확인하기.

0. 참고사항

    Labview 2018과 crio-9035, ni-9881을 이용하여 real-time으로 진행하는 내용입니다.


1. 하드웨어 소프트웨어 구성하기


    1-1 소프트웨어 준비사항

  1. LabVIEW, LabVIEW Real-Time Module, and LabVIEW FPGA Module
  2. NI CompactRIO Device Drivers
  3. NI-Industrial Communications for CANopen

여기서 C 단계는 


에서 자신의 랩뷰버전과 맞는 버전을 선택하여 다운, 설치한다.

     1-2 하드웨어 준비사항

  • You have connected all targets and devices to a CANopen network.
  • You have inserted the NI 9881 module into the chassis slot 2.
  • You have powered on the chassis.

NI-9881과 CANopen 통신모듈을 연결한다. 이 때 CAN-H, CAN-L 선을 120옴 저항으로 양단
(NI-9881과 CANopen 부분)에 연결한다. (위 사진 참조)

또한, NI-9881은 반드시 샤시의 슬롯2에 장착시킨다.

                      

NI-9881 포트에는 추가적인 전원공급이 필요하다. 
9번핀과 COM(6핀)에 9~30V 의 전압을 인가한다.

2.  Specifying the Controller and FPGA Settings to Locate the NI 9881 Module


If you are using cRIO-903x/904x/905x/906x, go to step 3. Otherwise, navigate to the labview\examples\NI-Industrial Communications for CANopen\Utility\Module Firmware Tool\subVIs directory and launch the CANopen cRIO FPGA Compile Instructions.vi file. Follow the instructions on the front panel.

cRIO-903x/904x/905x/906x 사용자는 2번 단계를 생략한다. 필자도 9035를 사용하므로 생략한다.



3. 펌웨어 업데이트 하기


   3-1 랩뷰 메뉴바에서, 도움말-예제찾기를 클릭하여 CANopen을 검색 한 후 CANopen Module Firmware Update.lvproj 파일을 열어준다.


  3-2 여러가지 crio 가 나오는데 4개 중 1개를 선택하여 오른쪽 마우스 클릭-프로퍼티에서 자신의
crio 주소를 입력하여 연결시킨다. (필자는 fpga모드가 아닌 리얼타임으로 쓸 것이기 때문에 scan모드로 설정하였다.)

  3-3 샷시-리얼타임 스캔 리소스에 들어가 ni-9881을 연결, 배포한다.

  3-4 FPGA 타켓-샷시I/o에서 오른쪽 마우스 클릭 후 VI를 생성후, 바로 실행버튼을 누른다.
      - 이 단계를 진행하는 이유는 리얼타임에서도 FPGA를 쓰기위해서다. 
      - 이 단계는 리얼타임 즉, 스캔모드로 진행하는 분이 진행하길 바란다. 자세한 사항은 랩뷰참조.
      - window10 OS를 사용하므로, xilix로 컴파일을 합니다.

  3-5 모듈 펌웨어 업데이트.VI를 클릭하여 실행 후 업데이트를 눌러 진행한다.

4. MAX에서 확인하기


  이후 MAX에 들어가 자신의 NI-9881이 CRIO에 연결되었는 지 확인한다.




5. 참고자료







2018년 11월 24일 토요일

모터와 엔코더, 간략한 개념

모터와 엔코더, 간략한 개념

모터란 무엇인가?

크게 DC와 BLDC가 있다. 가장 큰 차이점은 브러쉬의 유무이다. 브러쉬는 정류자에 전류를 공급하는 장치로, 모터가 회전함에 있어 마찰이 생겨 모터 효율을 낮추는 단점이 있다.
따라서 브러쉬를 없앤 것이 BLDC이며 3상의 코일로 전자기력을 형성하여 회전하는 것이 BLDC의 특징이다. 또한, 각 코일은 홀센서로 자석의 위치를 알게 되고 이에 따라 코일의 전류가 공급되어 회전하는 것이 특징이다.

엔코더란 무엇인가?

크게 인크리멘탈과 앱솔루트 방식으로 측정이 된다.

인크리멘탈은 엔코더 슬릿이 회전함에 따라 광입자 측정을 a,b상 펄스로 만들어 내어 위치와 속도를 측정합니다. 일정한 방향으로 도는 DC모터에 자주 사용한다.

장점:회전량 제한이 없다. 단점: 절대위치 측정x, 전원이 꺼지면 초기위치 다시 검출

앱솔루트 경우, 각 지점의 절대값을 설정하여 측정 되는 해당 위치에서의 값을 전달하는 방식으로 1바퀴 이상 돌아가지 않는 특정 각도로 미세하게 움직이는 서보모터에 적합한 방식이다. 엔코더 슬릿을 통해 3개의 검출소자가 측정되며 이를 통해 특정위치를 확인한다. 회전수의 경우 구동측에 감속기어를 추가하여 횟수 측정한다.

장점: 전원 상태 무관, 절대 위치 유지. 단점 : 회전량 제한

엔코더 계산

1번 회전당 2000펄스(슬릿구멍 개수) 발생되는 것이 있다. 모터가 3000rpm으로 회전시, 분당 30002000 개의 펄스 발생한다.(어떤 위치를 기준으로 슬릿 구멍이 총 30002000 개 지나간다고 생각하면 된다) RPM 단위는 min 이기 때문에 초당으로 단위 환산할 시 나누기 60 > 초당 10만 펄스 발생하고, 100khz 로 표현하기도 한다.

한 예로, 서보앰프(모터드라이버 비슷한)가 500us 당 50개를 카운트하는 능력의 서보라면 50/500us = 10만counts(pulse)/s (100kHz)이므로 2000개 슬릿을 가진 엔코더와 3000rpm으로 회전이 가능한 모터를 서보앰프가 감당(데이터 샘플링)할 수 있다는 의미로 해석할 수 있다.

분해능

엔코더에서 전송하는 최소 측정 단계로, 회전당 얼마만큼의 펄스를 출력할 수 있는 가의 정도이다. 슬릿의 갯수로 이해하면 편하다. 위치를 매우 작은 단위까지 측정!

정밀도

지금 이 글을 적는 나 자신도 매우 헷갈리는 분해능과 정밀도의 차이… 두 용어를 혼용하여 쓰는 분도 있고, 다르다고 구분짓는 분도 있다. 필자는 구분짓지만 혼용도 가능하다고 생각한다. 따라서 정답을 잘 모르겠다… (아시는 분은 답변 부탁드립니다!)

정밀도는 쉽게 말해 측정한 위치가 실제 값과 얼마나 가까운 가의 정도이다. 엄밀히 말해 분해능과 차이가 있지만, 정밀도가 분해능과 관련이 있다고 생각할 수 있는 것이 분해능이 좋을 수록 정밀도도 좋아지기 때문이다. 필자는 쉽게 정 위치와 얼마나 가까운지로 이해한다.

모터 드라이버

모터드라이버란 쉽게 말하여 모터를 제어할 수 있는 장치이다. 여기서 단순히 모터에 +, - 연결하면 한 쪽 방향으로만 회전하여 손으로 +,- 입력단자를 바꾸지 않는 이상 회전 변환은 불가능하다. 따라서 모터드라이버가 H-브릿지회로를 사용하여 입력단자를 바꿔주고 이를 통해 회전방향을 제어하게 된다. 또한 모스펫 채널을 통해 펄스수를 제어하여 전압조절로 모터 속도를 제어하게 된다.

H-브릿지 회로란? - 스위치 제어

아래 그림을 볼 때, S1S_1 스위치와 S4S_4 스위치 가 연결 될 때 +는 모터 왼쪽, - 는 오른쪽에 있어 정방향 회전을 한다. 그러나 만약, S3S_3S2S_2 스위치가 닫히면 모터의 +,- 방향이 반대로 되어, 회전이 역방향으로 변함을 알 수 있다. 이러한 스위치 전환을 통해 입력단자를 전환할 수 있는 회로를 H-브릿지회로라 한다.





PWM 제어

Pulse Width Modulation의 약자로 펄스 폭을 변화시켜 전압을 조절하고, 이를 통해 모터의 속도를 제어하는 것을 의미한다.

모터 속도 공식은 아래와 같다.

N=k(VIaRa) N = k *\frac { (V- I_aR_a)} {\varnothing}

VV는 전압, IaRaI_aR_a는 역기전력, NN은 분당 회전수, \varnothing는 계자이다.

따라서, 회전속도를 결정짓는 중요한 인자 중 하나는 전압이다. 전압 조절은 PWM 즉, 위에서 언급한 스위치를 모스펫 채널로 특정 주기마다 열고 닫고를 하면 전체 평균 전압이 변하여 전압을 조절할 수 있다. 아래 그림을 통해 이해해보자.



10V전압 인가 시, 스위치를 1초마다 on/off 하면 평균 전압이 5V가 됨을 알 수 있다. > 전체 면적(전압*시간)을 시간으로 나누면 된다. 참고로, 시간은 사이클 단위로 계산해야 한다.

마찬가지로 전압을 2초동안 주고 1초 쉬고를 반복하면 6.66V가 나옴을 알 수 있다.

이렇게 구한, 전압을 공식에 대입하고, 나머지 변수는 주어진다면, 속도를 구할 수 있고 이것이 모터드라이버가 속도를 제어하는 것이라 할 수 있다.

  • 모스펫 채널은 간단하게 스위치를 주기별로 on/off 하는 것으로, 성능이 좋을수록 짧은 주기로 열고 닫을 수 있어 미세한 전압조절이 가능하다.

PID 제어

P 비례 : 오차 값의 크기에 비례한 제어작용, kp 크면 빠르게 셋포인트 도달, 그러나 불안정상태 > 진동

I 적분 : 일정한 상태로 유지되는 오차를 없애는 작용, 누적 오차에 따라 출력을 보고 바꿔야 함

오차가 클 경우 시간이 지남에 따라 오차 합이 쌓이며, 출력은 빠르게 변해 오차 제거.
Ki크면 빠르게 응답, 그러나 파형 상승부도 커짐> 그러나 점점 안정

D 미분 : 출력값의 급격한 변화에 제동을 걸어 오버슛을 줄여 안정성 향상

구글 스프레드 함수를 활용한 내 입맛대로 자산(주식) 통합 관리하기!(자산분배)-(1)

흩어진 주식계좌! 내 입맛대로 실시간 통합관리하기 1.  2% 아쉬운 MY데이터 활용한 자산 통합관리 지인에게서 퀀트투자라는 생소한 투자법을 들은 후 매력을 느껴 더욱 깊이 알아보고자 강형국의 퀀트투자라는 책을 읽게 되었다. 이 책은 나의 투자 가치관...