무료로 사용할 수 있는 캡쳐 프로그램 중에 모노스냅(monosnap)이라는 프로그램이 있는데 블로깅이나 자료를 만드는데 무척이나 유용하다. 화면 영역을 캡쳐하는 가장 기본적인 단축키는 다음과 같다.

  • [Ctrl]+[Alt]+[5] : 화면 영역 선택 캡쳐



특히 캡쳐된 화면에 각종 도형이나 문구를 깔끔하게 넣을 수 있는데 하단에 보면 화살표, 사각형, 선, 원, 펜, 텍스트, 화살표+텍스트, 등이 있다.



그리고 캡처된 이미지의 특정 영역을 흐리게(블러링) 만들어 주는 도구도 있다.



그림 객체의 색과 두께도 선택할 수 있으며 이미지를 잘라내거나 사이즈를 조절할 수도 있다. 그림 객체가 캡쳐 화면을 벗어나면 이미지를 자동으로 확장시켜 준다.



설정창에서의 단축키는 다음과 같다.


위 그림을 보면 초기에는 frozen area 키가 설정되어 있지 않은데 이것은 특정 윈도의 영역만 선택해서 캡쳐하는 기능이므로 단축키를 지정하여 사용하면 편하다. 예를 들어서 [ctrl]+[alt]+[3]으로 지정해 놓으면 이 단축키를 이용하여 프로그램창을 깔끔하게 캡쳐할 수 있다. 자주 사용하는 단축키는 두 개 정도이다.


  • [Ctrl]+[Alt]+[5] : 화면 영역 선택 캡쳐

  • [Ctrl]+[Alt]+[0] : 편집화면 열기 (가장 최근 캡쳐 이미지)


많이 사용되지는 않지만 화면 동영상이나 웹캠 영상도 이것으로 녹화할 수 있다. 이것은 단축키가 지정되어 있지 않고 다음과 같이 메뉴를 찾아들어가야 된다.


하지만 화면을 녹화할 경우에는 이 프로그램보다는 오캠(Ocam)같은 전용 유틸을 사용하는 것이 좋다.


 네이버캡쳐와 비교하면 그림 객체가 더 깔끔하게 들어간 다는 점과 블러링(blurring) 기능이 있다는 장점이 있지만 선택 영역 캡쳐와 윈도 캡쳐 단축키가 나눠져 있다는 점이 좀 불편하다. 네이버캡쳐는 [print screen]키만 누르면 자동으로 선택영역이나 윈도를 인식하여 캡쳐해 준다.



Posted by 살레시오
,

 KiCad를 맨 처음 실행시켜서 schematic을 열고 부품을 선택하려고 ([A]키를 눌러) 부품창을 열면 power 밖에 없어서 당황할 수 있다. 참고로 KiCad는 일반 부품과 전원 요소를 선택하는 창이 따로 분리되어 있다.


  • [A]키 : 일반 부품창 (전원 요소 포함)

  • [P]키 : 전원 요소 선택창


만약 부품창에 라이브러리가 텅 비어 있다면 그렇다면 부품 라이브러리를 추가해야 된다. 다음 그림과 같이 Preference>Component Libraries 를 선택한다.



여기서 [추가] 버튼을 누른다.



그러면 c:\Program Files\KiCad\share\kicad\library 폴더가 열리고 그 안의 .lib 파일들이 보이는데 이것을 모두 선택한 후 [열기] 버튼을 누른다.


그러면 위와 같이 부품 라이브러리들이 추가된다. 이제 [확인]버튼을 누르고 나간 다음 편집모든에서 [A]키를 눌러 부품창을 띄워보면 라이브러리들이 들어온 것을 확인할 수 있다.



'PCB설계' 카테고리의 다른 글

barebone arduino 예제  (0) 2018.04.10
layout 예제 01  (0) 2018.04.03
DipTrace Schematic 동영상 강의 1  (0) 2018.03.29
예제 #8, #9, #10  (0) 2018.03.20
무료 오픈소스 PCB 설계 프로그램의 종류  (1) 2015.06.19
Posted by 살레시오
,

 인벤터로 블럭을 다시 설계하였다. 이번에 홀을 모두 육각 모양으로 바꾸었다. (나머지는 동일함) 홀의 중심은 모두 10mm간격이고 너트의 변과 변의 폭은 6mm, 볼트홀은 3.5mm이다. 전체 사이즈는 60x100x4mm 이다.



다음 그림은 이것을 세 장 출력하여 볼트-너트롤 체결한 것이다.



이렇게 세 장을 붙여서 단위 블럭을 만든 다음 이것을 다시 여러 개 연결해 붙여서 기타 몸체를 구성할 계획이다. 여기에 부착되는 PCB나 장식 부품도 이 치수를 가지는 홀들을 내어서 체결하기 쉽게 만들면 될 것 같다. 일단 코드를 조합하는 터치 패드 부분부터 만들어야 한다.



Posted by 살레시오
,

 Scilab에서도 tuple을 사용하여 한 번에 여러 변수를 묶는 것이 가능하다. tuple 은 괄호 (...) 를 사용하는데 각각의 요소는 반드시 comma (,)로 구분해야 한다. 이 기능을 사용하면 변수들을 서로 swap하는 데도 간결하게 사용할 수 있다.


 아래에서 첫 번째 예가 변수 a와 b 를 동시에 생성하는 것이다. 좌변에는 행렬을 생성할 때 사용하는 대괄호 [ ... ] 를, 우변에서 tuple을 지정할 때는 ( ... ) 를 사용했음에 유의해야 한다, 두 번째 예는 이 두 변수의 값을 서로 맞바꾸는 것이다.


[그림 1] Scilab에서 tuple의 사용 예


 이 tuple 은 독립적인 자료구조가 아니므로 이것 자체를 변수에 저장한다든가 하는 것은 불가능하며 변수를 지정할 때에만 사용된다. 또한 tuple안의 요소 개수와 좌변의 [...] 안에 있는 변수의 개수는 반드시 같아야 한다.





Posted by 살레시오
,

구조체는 개별적인 데이터를 하나로 묶는 자료형이며 Scilab에서도 이것을 지원한다. 예를 들어서 어떤 사람의 이름, 나이, 시력을 각각 name, age, sight 라는 이름으로 저장하고 싶다면 다음과 같이 struct()함수를 사용한다.


[그림 1] 구조체의 생성


구조체의 각각의 데이터를 필드(field)라고 칭한다. 이 예에서 person1 구조체의 필드는 name, age, sight 이다. 함수 struct() 은 반드시 짝수 개(0도 가능함)의 입력 인수를 가져야 하고 홀수 번째의 인수는 구조체의 필드 이름으로서 반드시 문자열이어야 한다. 짝수 번째 입력 인수는 진전에 입력된 필드명을 가지는 값으로서 Scilab 객체(행렬, 문자열, 등등)가 온다.


 위와 같은 구조체를 정의하는데 있어서 또 다른 방법은 개별적인 요소를 하나하나 직접 생성/입력하는 방법이 있다. 두 가지 문법이 있는데 다음과 같다.


structName(‘fieldName’)
structName.fieldName

    

두 가지 방법에는 큰 차이점이 있다. 전자의 경우는 필드명에 임의의 문자열을 사용할 수 있으나 후자의 경우는 일반적인 식별자 규칙을 따라야 한다는 것이다.


[그림 2] 구조체의 생성 (다른 방법)


구조체의 필드를 접근한다던가 아니면 추가하는데 있어서도 위에서 설명한 바와 같이 두 가지 방법이 있다. 예를 들어서 age필드를 접근하려면


a = person1.age // 읽기
person1.age = 43 // 변경
a = person1(‘age’) // 읽기
person1(‘age’) = 43 // 변경


새로운 필드도 자유롭게 추가할 수 있다.


person1.height = 170  // height라는 새로운 필드 추가
person1(‘height’)=170 //위와 동일함


 만약 두 개 이상의 구조체가 서로 같은 필드 이름들을 가지고 있다면 이것들을 하나의 행렬로 묶을 수 도 있다.


[그림 3] 구조체를 요소로 가지는 행렬


이 예제에서 구조체 sA와 sB는 똑같은 필드명을 가지고 있으므로 하나의 행렬로 묶을 수 있다. 필드의 값은 데이터형이 서로 달라도 상관없으며 중요한 것은 필드명이다. 필드명이 다른 두 구조체를 하나의 행렬로 묶으려고 한다면 에러를 발생한다.


 한 가지 알아야 할 것은 한 구조체에서 다른 구조체로 대입을 할 때 Scilab에서는 구조체의 내용물이 복사되는 것이지 참조가 되는 것은 아니라는 것이다. 위의 예에서


sC = sA


라고 하면 sC 변수에는 sA의 모든 구조체 필드들이 “복사된” 새로운 구조체가 생성되는 것이다. 따라서 이후에


sA.c = [1 0]


이라고 sA에 새로운 필드를 추가한다고 해서 sC에 영향을 미치지는 않는다. 이것은 구조체를 함수에 넘길 때도 마찬가지로 적용되는데 함수 내부에서 넘겨받은 구조체를 변형시킨다고 해도 원래의 구조체와는 아무런 상관이 없다는 것을 알아두어야 한다.


 구조체와 관련된 함수들은 다음과 같다.


[표 1] 구조체와 관련된 함수들

함수명

기능

struct(...)

구조체 생성

isstruct(s)

s가 구조체인지 테스트

isfield(s,f)

f가 s의 필드인지 테스트

length(s)

사용자 필드 수 + 2

fieldnames(s)

getfield(n, s)

구조체 s의 필드명을 문자열 행렬로 반환

구조체 s의 n번째 필드값을 반환

setfield

(사용 빈도가 매우 낮을 것 같음)

s = null()

구조체 s 삭제


여기서 getfiled() 함수는 구조체의 필드명을 문자열벡터로 반환하는데 3번째 요소부터 사용자 필드라는 것에 유의해야 한다. 아래 예를 보자.


[그림 4] getfiled()함수의 반환 객체


이 예에서 getfield()함수의 첫 번째 인자는 s1의 자료형이 구조체임을  나타내는 문자열이고 (내부적으로 구조체는 mlist 임.) 두 번째 인자인 dim은 Scilab에서 자동으로 생성하는 필드이다. 따라서 사용자 필드는 세 번째부터 마지막까지이다. 사용자 필드명만 뽑아내려면 다음과 같이 하면 될 것이다.


>> fields = getfield(1, s1)
>> fields = fields(3:$)


또는 간단하게 fieldnames()함수를 사용하면 된다.


>> fields = fieldnames(s1)


만약 사용자의 첫 번째 필드인 s1.A 의 값을 읽어내려면 다음과 같이 하면된다.

    

[그림 5] getfield()함수


이 내용은 혼동하기 쉬운데 이렇게 이해하면 될 것 같다. getfield(n, s) 함수는 구조체 s의 내부적인 필드”값”를 반환하는데 내부적으로 s구조체의 첫 번째 필드는 모든 필드명의 문자열벡터, 두 번째 필드는 dims, 세 번째 필드부터가 사용자 필드이다. 따라서 해당되는 것을 반환하는 것이다. 만약 위에서 예를 든 s1의 경우에는 다음 표와 같이 내부적인 데이터를 가진다.


[표 2] getfiled() 함수 반환 객체의 내부 인덱스

내부 인덱스

필드명

필드값

(getfield 함수의 반환값)

1


[ ‘st’ , ‘dims’, ‘A’, ‘b’ ]

2

‘dims’

[1 1]

3

‘A’

[1 2; 3 4]

4

‘b’

[0 1]


따라서 getfield(3, s1) 이라고 하면 s1구조체의 3번째 필드의 필드값이 반환된다고 이해하면 된다.


 하지만 구조체의 필드를 접근하는 데에는 getfield()함수나 setfield()함수를 이용하는 것 보다는 dot(.) 연산자나 문자열키로 읽거나 쓰는 방식이 더 일반적이다.


Posted by 살레시오
,

 지금까지는 명령창에 명령어들을 직접 한두 개씩 입력해서 결과를 확인하는 식으로 사용하였는데 많은 경우에 명령어들을 묶어서 파일로 저장하여 한꺼번에 실행시키는 방법을 사용한다. 명령창에 명령을 직접 입력하면 Scilab 종료시 그것들이 사라지지만 파일에 저장하여 놓으면 이후에 언제라도 불러서 사용할 수 있다.

 이러한 명령어들의 집합(프로그램)을 편집하고 저장하는데 사용하는 도구가 SciNote 이다. 메뉴에서 Applications > SciNotes 항목을 실행시키면 SciNote가 실행된다. 이제 다음과 같이 간단한 프로그램을 작성한 후 적당한 폴더에 저장시키자. 필자는 test02.sce 라는 화일명으로 저장시켰다.(캡션바에 전체 경로가 표시된다.)

[그림 1] SciNote


프로그램은 3x3 난수 행렬 두 개를 생성시킨 후 그 결과를 disp()함수로 화면에 표시하도록 하는 간단한 것이다. 첫 두 줄의 끝은 세미콜론(;)을 넣어놓았다.


 이제 이것을 실행시키기 위해서 Execute 메뉴를 보면 다음 그림과 같이 여러가지 옵션이 있다.


[그림 2] sce파일 실행 옵션

그 중  ..file with echo (ctrl-L) 을 선택하거나 단축키를 누르면 다음과 같이 명령창에 표시된다. 이것은 명령창에 한 줄씩 수동으로 입력하는 것과 완전히 동일하게 작동하며 각 프로그램의 줄이 화면에 표시된다. 또한 세미콜론(;)으로 끝나면 그 결과를 표시하지 않고 그렇지 않으면 표시한다.

[그림 3] [ctrl]+[L] 단축키로 스크립트 파일을 실행한 결과

이에 반해서 Save and execute (단축키 F5) 를 실행하면 먼저 저장하고 실행한다. 이것은 명령이 화면에 표시되지도 않으며 세미콜론(;)의 유무와 상관없이 그 결과도 화면에 표시되지 않는다. 다만 이 예제의 경우 disp()함수가 사용되었으므로 이 함수의 실행결과만이 화면에 표시된다.

[그림 4] [F5] 단축키로 실행한 결과


이때 사용되는 명령어가 exec()함수이다. 이 함수는 sce파일(그리고 나중에 나올 sci파일)을 실행시키는 기능을 수행하며 다양한 실행 옵션을 줄 수 있다. SciNote에서는 -1옵션이 지정되었음을 알 수 있다. 이것에 대해서는 다른 포스트에서 더 자세히 설명하도록하고 일단 여기에서는 SciNote에서 실행시키는데 [Ctrl]+[L] 단축키나 [F5] 단축키가 사용된다는 것을 알아두도록 하자.

특수한 기능들

 명령창과 SciNote가 분리되어 있다면 프로그램 작업 시에 몇 가지 번거로운 점들이 있다. 매번 창들 사이를 클릭해서 왔다 갔다 해야된다던가, 아니면 실행 결과나 프로그램이 다른 창에 가려서 보이지 않는다던가 하는 점들이다. 이러한 불편함을 해소하기 위해서 SciNote와 콘솔창을 하나로 결합할 수 있는 기능이 있다.

[그림 5] SciNote의 위치 조절

위 그림에 표시된 막대 부분을 마우스로 드래그 하여 콘솔창에 놓으면 해당 위치에 결합이 된다. 그래프 창도 마찬가지로 도킹시킬 수 있으며 반대로 SciNote 창에 콘솔창을 도킹시킬 수도 있으므로 자유롭게 작업 환경을 설정할 수 있다.



Posted by 살레시오
,

 전기/전자 계열의 공대생들(혹은 관련 전공의 공고생들)은 전자 회로를 설계한 후에 이것을 직접 기판으로 제작하여 납땜하고 그 동작을 실험해 보는 교육 과정이 있다. 모든 전자 제품 안에 들어가 있는 인쇄 회로 기판(printed circuit board,  줄여서 PCB) 은 그 위에 각종 전기·전자·반도체 소자나 IC를 납땜하여 원하는 동작을 수행하도록 한다.

[그림 1] PCB의 예

 이 PCB를 설계하는데에도 CAD프로그램이 사용되며 널리 사용되는 대표적인 상용 프로그램은 다음의 두 가지 정도이다.

  • OrCAD

  • PADs


그런데 이들 프로그램의 문제는 역시 수백 만원 이상의 고가의 제품이라는 것이다. 이건 웬만한 대학교에서도 학과 단위로는 선뜻 구입하기가 어려운 가격대이다.


 이들 제품만한 성능을 갖추지는 않았지만 회로도를 작성하고 그것를 기반으로 PCB를 설계할 수 있는 프리웨어들이 몇가지 있기는 하다. 이들 중 잘 알려져 있는 것들을 나열하면 다음과 같다.


  • Eagle ( 상용이며 무료 버젼은 기능 제한이 있음 )

  • DipTrace ( 상용이며 무료 버젼은 기능 제한이 있음 )

  • Designspark PCB (무료, 기능 제한 없음)

  • KiCad (무료이며 오픈소스, 기능 제한 없음)

  • easyEDA (클라우드기반, 무료, 기능 제한 없음)


이것들 중 처음 두 개는 (Eagle, DipTracee) 상용 프로그램의 성능 제한판이 무료이고, 나머지 세 개는 모두 완전 무료인 프로그램들이다. 구글링을 해서 게시판의 글들을 쭉 보면 많은 사용자가 이것들 중 하나를 사용하고 있은 것을 알 수 있고 이 중에서 Eagle의 사용자가 가장 많은 것 같다. 아두이노 보드가 이 eagle을 사용해서 설계한 것으로 알려져 있다.

 

 이 중 Diptrace의 사용 편의성이 가장 좋으며 OrCad의 Layout만 예전에 잠깐 써 본 경험이 있었는데 이것과 비교하면 사용의 편의성면에서는 비교가 안되는 것 같다. 회로도를 작성하고 이를 기반으로 PCB를 설계하는 프로세스가 굉장히 간단하며 사용자 라이브러리를 작성하는 툴의 사용도 매우 직관적이다. 또한 가장 큰 장점인 무료버젼만 사용해도 300핀/2층 기판을 설계하는데 제한이 없다. 하지만 이것도 무료 버젼은 양면 PCB만 가능하다든지 핀 수에 제한이 있는 등 기능에 제약이 있다.

[그림 2] DipTrace 의 외형


 구글링을 해보면 Designspark PCB 가 가장 높은 점수를 받고 있는 것 같다. 그 이유는 다음과 같다.


  • 기능 제한이 없는 완전한 무료 프로그램.

  • 그러면서도 상용 제품 못지 않은 기능을 제공.

  • 대기업에 의해서 개발되므로 앞으로 지속적으로 유지, 업그레이드될 가능성이 크다.

         

좀 더 자세한 설명은 이 포스트에 소개되어 있다.


 개인적으로 Designspark PCB는 인터페이스가 별로 마음에 들지 않았다. 차라리 KiCad가 더 낫다는 생각이다.



'PCB설계' 카테고리의 다른 글

barebone arduino 예제  (0) 2018.04.10
layout 예제 01  (0) 2018.04.03
DipTrace Schematic 동영상 강의 1  (0) 2018.03.29
예제 #8, #9, #10  (0) 2018.03.20
KiCad에서 부품 라이브러리 추가하기  (0) 2015.06.19
Posted by 살레시오
,

  라즈베리파이(RPi)에서 수치 해석툴을 적용하려고 scilab 과 octave의 장점을 검색해 보았더니 둘 다 장점이 비슷한 것 같다. 어떤 논문에서는 octave를 최고로 언급하기도 한다.


"요약하면, Octave가 가장 지속 가능한 Matlab의 대안이라고 결론을 내렸다. 그 이유는 테스트 결과 (문법적인 측면에서) Matlab과 완전히 호환되며 성능 또한 상당히 좋기 때문이다"


"In summary, we conclude that Octave is the best viable alternative to Matlab because it was not only fully compatible (in terms of syntax) with Matlab in our tests, but it also performed very well."



 그런데 수치해석 툭들을 검색 하는 중에 의외의 대안이 눈에 띄었다. 바로


  • python + numpi / scipy + matplotlib


이다. 어떤 교수가 이렇게 언급해 놓았다.


Francesca Mazzia · Università degli Studi di Bari Aldo Moro


"내 수업(이탈리아 Bari 대학교)에서  Octave, Scilab, R 을 모두 사용해 보았다지만 지금은 파이썬의 넘파이(numpy)와 사이파이(scipy)를 사용한다. 과학 계산에서 pythonxy(윈도우)와 spyder(리눅스)는 훌륭한 통합개발환경이다. 나는 내 포트란 90 코드와의 인터페이스를 개바랬는데 Matlab보다 훨씬 더 쉬었다. 아직도 연구를 위해서 Matlab을 사용하기는 하지만 파이썬은 훌륭한 대안이다. 내 학생들도 좋아한다..." 2013년 1월 31일


"I used in my courses (University of Bari, Italy), Octave, Scilab and R, but now I'm using Python, with numpy and scipy. Pythonxy in Windows and spyder for Linux are good ide for scientific computing. I developed some Python interface for my FORTRAN 90 codes and was easier than in matlab. I still use Matlab for research, but I think Python is a good alternative, my students like it ...." Jan 31, 2013


  이후에 관심이 생겨서 더 조사해 보았는데 python이 과학계산 분야에서 의외로 광범위하게 사용되고 있음을 알게 되었다. Matlab은 앞으로는 어떻게 될 지 모르겠지만(뭐 윈도우도 무료가 되느니 마느니 하는 시대인데) 아직은 고가라 학부 수업에서 사용하기에는 부적합하다.


 개인적으로 scilab은 익히는데 상당히 시간이 많이 걸렸다. (한마디로 제대로 사용하려면 어렵다.) 하지만 python은 그 특유의 쉽고 간결한 문법과 많은 리소스들, 다양한 모듈들로 인해서 훨씬 익히기가 용이했다.


  단적인 예를 들어서 아두이노로 시리얼 통신을 하는 프로그램(모터의 지령지를 준다든가 센서값을 읽어들인다든가 하는 일들을 하기 위해서)을 작성하기 위해서는 시리얼통신을 수행하는 모듈이 있어야되는데 scilab은 마땅한게 없다. (matlab도 어렵기는 마찬가지임.) 하지만 파이썬은 잘 동작하는 모듈이 있어서 바로 사용하는데 아무런 문제가 없었다. 이 정도로 막강하다. 더군다나 numpy같은 수치해석 모듈과 scipy 같은 과학계산 모듈을 모두 무료로 아무 제한 없이 사용할 수 있으니 더 이상 큰 장점이 없다.


  만약 수치해석 툴이 필요하다면 파이썬을 공부해 볼 것을 강력히 추천한다.

[#00089]


Posted by 살레시오
,

 컴퓨터는 원래 수치 계산(numerical calcuation)을 빠르고 정확하게 수행할 목적으로 개발되었다. 수치 계산과는 다르게 기호식 계산(symbolic calculation)은 대수 기호가 들어간 수식을 다루는 것으로서 유한수로 정확히 표현되지 못하는 무리수를 기호로 표현하거나 또는 대수 기호가 포함된 방정식 등을 다루는 것이다. 사람이 이러한 개념을 사용하기는 어렵지 않으나 컴퓨터가 이러한 일을 하는 것은 전통적인 수치 계산 알고리듬보다 훨씬 더 어려운 일이다.


 예를 들어서 sin(x)/x의 x에 대한 미분을 구하려고 한다면 다음과 같이 간단하게 구할 수 있다.(다음은 live.sympy.org에서 수행한 것임)


 다른 예로 exp(x)*sin(x)의 정적분을 구하려고 한다면 이것 역시 심파이로 간단하게 수행할 수 있다. (손계산을 하려면 부분적분 공식을 적용해야 한다.) 다음은 winpython 의 ipython쉘에서 수행한 결과이다.



 이것은 기호식 계산의 한 가지 예일 뿐이고 실제로는 이것보다 훨씬 더 복잡한 수식과 문제들을 다룰 수 있다.


 이러한 시스템은 보통 CAS (Computer Algebra System)으로 불리며 심파이도 CAS 중 하나이다. CAS의 잘 알려진 다른 예로 Mathematica (상용 프로그램), Maxima, Sage  등이 있다. 심파이의 가장 큰 장점은 무료로 제한 없이 사용할 수 있는 오픈소스 모듈이라는 점이며 순수한 파이썬으로 만들어져 파이썬에 익숙하다면 배우는데 많은 시간이 걸리지 않는다.


 심파이(sympy)는 기호식 계산을 수행하기 위한 파이썬 모듈이며 현재(2015년 5월) 버전은 0.7.6 으로 활발하게 개발이 진행되고 있으며 많은 사용자들이 있다,




Posted by 살레시오
,