', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); '분류 전체보기' 카테고리의 글 목록 (17 Page) :: MakerLee's Workspace
728x90

가끔 물체 표면의 온도를 봐야 할 필요가 있습니다. 



현재 위와 같은 온도계를 갖고 있습니다. 

편하고 쓰기 좋습니다만 가끔 아주 좁은 포인트의 온도를 재야 하거나 

좁은 면적 안에서 작은 부품 한두개의 온도를 측정하기엔 무리가 있죠.







괜히 이런 장비를 쇼핑몰에서 뒤적여 봅니다.

갖고는 싶지만 가격도 가격이고 제가 쓸일이 많지도 않습니다. 

특정 포인트 두어군데의 온도만 확인하면 됩니다. 

그래서 그냥 만들기로 합니다. 





온도측정 센서로는 흔하게 쓰는 3D 프린터의 100K 써미스터가 있습니다. 

하지만 약간 원형이고 유리로 쌓여있어 실제로 쓰면 측정시에 약간 딜레이가 있습니다. 





같은 물건이지만 박막형으로 된 100K 써미스터가 있습니다.

표면이 필름만으로 둘러쌓여있어 온도센싱이 빠릅니다.

테이프로 그냥 표면에 붙이면 온도를 빠르고 정확하게 측정할 수 있습니다.







알리에서 주문했습니다. 







온도 디스플레이만 하면 됩니다.

OLED 디스플레이와 8*2 character LCD 사이에서 고민하다

LCD은 이럴 때 안쓰면 쓸일이 없을 것 같아 LCD를 쓰기로 합니다.







아날로그 입력과 LCD 출력용 I2C 통신만 하면 되기에

Attiny85 보드를 사용하기로 결정합니다. 

이런 단순한 프로젝트에 쓰기 딱이지요

(... 라고 생각했었습니다)






배터리를 내장해서 완전 휴대용으로 만들지

USB 입력을 전원으로 쓸지 고민을 했습니다.

일단은 USB 전원으로 진행하고 마지막에 결정해야겠습니다.




부품함에서 케이스로 쓸 깡통을 골라봅니다.







대충 맞는것을 확인합니다.







I2C LCD 테스트입니다.






본격적으로 스케치를 합니다.

100K 써미스터를 아두이노에서 사용하는 방법를 검색해보면 자료가 많이 나옵니다.

저는 Adafruit(링크) 의 자료를 참조했습니다.




몇번 수정하고 업로드하며 테스트하다가 2개의 Attiny보드가 날아갔습니다.

특별한 일이 없는데도 불구하고 갑자기 작동이 안됩니다.

이렇게 쌓인 보드가 4개가 되었습니다.




새다리님의 블로그(링크)를 참조하여 펌웨어를 다시 구워봅니다.


안되는군요.






이리저리 다시 체크해 보지만 안됩니다. 

결국 다른 새 Attiny85로 진행해 보다가 황당한 결과가 나왔습니다.

2개의 아날로그 입력을 동시에 진행하면 옆의 센서에 영향을 받아서 값이 오르락 내리락 합니다.

여러가지로 수정해 봤지만 역부족이라 포기하고 Arduino Pro Mini로 보드를 바꿔 다시 진행하려 합니다.




** 추가기록 : ATtiny 펌웨어 구울때 바로 연결하면 안되고 85_boot.bat 실행직후 잽싸게 연결하면 될 확률이 높다.

728x90
728x90

얼굴에 고글을 뒤집어쓰면 안면부에 땀이 꽤 납니다. 

고글에 통기구가 있긴 하지만 통풍이 원활치 않아서 소형 팬을 달았습니다. 






어디서 분해해놨는지 모르겠는 소형 블로워 5V 팬.

5V 라 리튬건전지 하나로 돌릴 수 있어서 좋습니다.

얇고 빳빳한 종이 찾다가 재활용쓰레기통에서 애들 장난감 박스 추출.






막상 잘라보니 제대로 되지 않아서 팜플렛 종이로 교체했습니다. 







모양 잘라서 맞추고 순간접착제로 팬과 결합 후.

기기에 고정하는건 3M 양면접착제로 해서 나중에 깨끗하게 뗄 수 있습니다. 







내부에 먼지거름용 스폰지가 두껍게 있는데 공기순환에 너무 방해되는 듯 하여 

떼어서 옆으로 붙여놨습니다. 혹시나 필요없게 되면 다시 쓸수 있게요.

스폰지가 없으면 위에서 빛이 들어오는 것이 바로 보이기 때문에 VR 사용시 방해가 됩니다. 

팬만 장착하면 틈새로 약간 빛이 들어오긴 하는데

얼굴에 썼을 때는 빛이 전혀 보이지 않습니다. 









배터리는 18650 하나를 전면에 양면테잎으로 붙였습니다. 

완성사진은 없네요. 

사용해 보니 특히 눈에 땀 맺히는게 없어져서 좋습니다. 

728x90
728x90



숫자를 입력할 때마다 한자리씩 늘어나므로 

LED 디스플레이의 커서 위치는 한자리씩 이동해야 합니다. 


length() 함수를 이용해서 커서 위치를 계산해 표시하도록 했습니다.

그랬더니 일정 자릿수가 넘어가면 자릿수가 엉뚱하게 0이 되더군요.

모니터링을 해 봤더니 string 형식의 범위를 벗어나는 문제였습니다. 

BigNumber 사용하느라 생각을 못 했는데 이것도 어찌보면 당연히 발생되는 문제죠.



추가로 생각을 하다 보니 134123456.134526 같이 소수점 자리수가 늘어나면 그에 대한 처리도 해야 합니다. 

숫자를 제대로 체크하려면 BigNumber 함수에서 소수점 이하 자리수를 정확하게 알아야 합니다. 

BigNumber::setScale(3) 으로 하면 100 이 100.000으로 표시됩니다. 



한참 고민을 하다가 자리수를 계산하는 별도의 함수를 만들면 된다는 생각이 들었습니다. 

12341234 를 10씩 나눠가면서 1보다 크거나 같은지 계산하고

1보다 작아지는 순간 이 과정을 몇번 반복했는지 체크하면 자리수를 알아낼 수 있습니다.

반면 소수점 이하 자리수는 이렇게 체크할 수가 없습니다. 

어찌어찌 하면 될 것 같은데.. 머리속에서 맴돌기만 하고 구체화가 안되네요.

이건 조금 더 고민해 봐야겠습니다. 












Grang Total, MR, +-*/ 등의 일반 계산기에서 보여주는 표시를

LED로 표시하도록 했습니다. 

5개의 핀으로 끝내려 했는데 Low BAT 표시등도 넣어야 해서 

6개의 핀으로 3*3 매트릭스를 만들려고 테스트해봤습니다. 


사칙연산 표시는 그냥 디스플레이에 같이 표기해도 되는지라 LED를 넣을지 뺄지 생각중입니다. 

728x90
728x90


VR 기기를 구매해서 한동안 빠져 살았습니다. 

오랫동안 갖고 싶었던 기계인데 너무 비싸서 구매를 주저하고 있었죠.

블프 세일때 저렴하게 올라와서 구매를 결정했습니다. 










그래도 최근 며칠간은 계산기 스케치를 다시 파고들었습니다. 아주 조금이지만요.

BigNumber 라이브러리와 LedDisplay 라이브러리를 조합해서 쓰려니 자료형과 변수형이 머릿속에서 마구 꼬입니다.






키패드 누르는 대로 첫번째 숫자가 자릿수 올라가며 디스플레이되고 있습니다. 

겨우 한걸음 떼었네요 

728x90
728x90

아두이노에서 10여자리 이상의 큰 수나 소수점 이하의 수를 처리하는 문제는

며칠간의 공부 끝에 내 능력으로는 힘들겠구나 하고 결론을 내렸습니다;


그래서 계속 구글링을 했는데 며칠간의 검색 끝에 결국 괜찮은 라이브러리를 찾았습니다.

https://github.com/nickgammon/BigNumber


BigNumber.zip


원문 도큐먼트가 개발자 개인 블로그 에 있길래 혹시 사라질 지 몰라 카피했습니다. 

일단 예문과 결과값을 보면 제가 원하는 부분을 확실히 해결해 줄 수 있을 듯 합니다. 


우린 답을 찾을 것이다. 늘 그랬듯이. 구글에서.


 

Posted byNick Gammon   Australia  (21,293 posts)  [Biography] bio   Forum Administrator
DateTue 31 Jan 2012 09:00 PM (UTC)

Amended on Sat 23 Aug 2014 03:49 AM (UTC) by Nick Gammon

Message
I love big numbers ... they are so ... big!

So in the spirit of getting your Arduino to handle nice, big, numbers I have ported (with pretty minimal effort on my part) the GNU "bc" library to an Arduino library. This can be downloaded from:

http://www.gammon.com.au/Arduino/BigNumber.zip

Just unzip into your "libraries" folder.

Also now available from GitHub:

https://github.com/nickgammon/BigNumber

Factorials


Example sketch:


// BigNumber test: factorials
#include "BigNumber.h"

// function to display a big number and free it afterwards
void printBignum (BigNumber & n)
{
  char * s = n.toString ();
  Serial.println (s);
  free (s);
}  // end of printBignum

void setup ()
{
  Serial.begin (115200);
  Serial.println ();
  BigNumber::begin ();  // initialize library
 
  //factorials
  BigNumber fact = 1;

  for (int i = 2; i <= 200; i++)
  {
    Serial.print (i);
    Serial.print ("! = ");
    fact *= i;
    printBignum (fact);
  }

}  // end of setup

void loop () { }



Output from above:


2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 6227020800
14! = 87178291200
15! = 1307674368000
16! = 20922789888000
17! = 355687428096000
18! = 6402373705728000
19! = 121645100408832000
20! = 2432902008176640000
21! = 51090942171709440000
22! = 1124000727777607680000
23! = 25852016738884976640000
24! = 620448401733239439360000
25! = 15511210043330985984000000
26! = 403291461126605635584000000
27! = 10888869450418352160768000000
28! = 304888344611713860501504000000
29! = 8841761993739701954543616000000
30! = 265252859812191058636308480000000
31! = 8222838654177922817725562880000000
32! = 263130836933693530167218012160000000
33! = 8683317618811886495518194401280000000
34! = 295232799039604140847618609643520000000
35! = 10333147966386144929666651337523200000000
36! = 371993326789901217467999448150835200000000
37! = 13763753091226345046315979581580902400000000
38! = 523022617466601111760007224100074291200000000
39! = 20397882081197443358640281739902897356800000000
40! = 815915283247897734345611269596115894272000000000
41! = 33452526613163807108170062053440751665152000000000
42! = 1405006117752879898543142606244511569936384000000000
43! = 60415263063373835637355132068513997507264512000000000
44! = 2658271574788448768043625811014615890319638528000000000
45! = 119622220865480194561963161495657715064383733760000000000
46! = 5502622159812088949850305428800254892961651752960000000000
47! = 258623241511168180642964355153611979969197632389120000000000
48! = 12413915592536072670862289047373375038521486354677760000000000
49! = 608281864034267560872252163321295376887552831379210240000000000
50! = 30414093201713378043612608166064768844377641568960512000000000000
51! = 1551118753287382280224243016469303211063259720016986112000000000000
52! = 80658175170943878571660636856403766975289505440883277824000000000000
53! = 4274883284060025564298013753389399649690343788366813724672000000000000
54! = 230843697339241380472092742683027581083278564571807941132288000000000000
55! = 12696403353658275925965100847566516959580321051449436762275840000000000000
56! = 710998587804863451854045647463724949736497978881168458687447040000000000000
57! = 40526919504877216755680601905432322134980384796226602145184481280000000000000
58! = 2350561331282878571829474910515074683828862318181142924420699914240000000000000
59! = 138683118545689835737939019720389406345902876772687432540821294940160000000000000
60! = 8320987112741390144276341183223364380754172606361245952449277696409600000000000000
61! = 507580213877224798800856812176625227226004528988036003099405939480985600000000000000
62! = 31469973260387937525653122354950764088012280797258232192163168247821107200000000000000
63! = 1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000
64! = 126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000
65! = 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
66! = 544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000
67! = 36471110918188685288249859096605464427167635314049524593701628500267962436943872000000000000000
68! = 2480035542436830599600990418569171581047399201355367672371710738018221445712183296000000000000000
69! = 171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000
70! = 11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000
71! = 850478588567862317521167644239926010288584608120796235886430763388588680378079017697280000000000000000
72! = 61234458376886086861524070385274672740778091784697328983823014963978384987221689274204160000000000000000
73! = 4470115461512684340891257138125051110076800700282905015819080092370422104067183317016903680000000000000000
74! = 330788544151938641225953028221253782145683251820934971170611926835411235700971565459250872320000000000000000
75! = 24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424000000000000000000
76! = 1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224000000000000000000
77! = 145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248000000000000000000
78! = 11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344000000000000000000
79! = 894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000
80! = 71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000
...



Powers



// BigNumber test: powers
#include "BigNumber.h"

// function to display a big number and free it afterwards
void printBignum (BigNumber & n)
{
  char * s = n.toString ();
  Serial.println (s);
  free (s);
}  // end of printBignum


void setup ()
{
  Serial.begin (115200);
  Serial.println ();
  BigNumber::begin ();  // initialize library

  Serial.println ("--- powers of 2 ---");
  
  BigNumber a = 2;

  for (int i = 1; i <= 300; i++)
  {
    Serial.print ("2^");
    Serial.print (i);
    Serial.print (" = ");
    BigNumber p = a.pow (i);
    printBignum (p);
  }  // end of for loop

  Serial.println ("--- powers of 3 ---");
  
  a = 3;

  for (int i = 1; i <= 300; i++)
  {
    Serial.print ("3^");
    Serial.print (i);
    Serial.print (" = ");
    BigNumber p = a.pow (i);
    printBignum (p);
  }  // end of for loop

}  // end of setup

void loop () { }


Output from above:


--- powers of 2 ---
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024
2^11 = 2048
2^12 = 4096
2^13 = 8192
2^14 = 16384
2^15 = 32768
2^16 = 65536
2^17 = 131072
2^18 = 262144
2^19 = 524288
2^20 = 1048576
2^21 = 2097152
2^22 = 4194304
2^23 = 8388608
2^24 = 16777216
2^25 = 33554432
2^26 = 67108864
2^27 = 134217728
2^28 = 268435456
2^29 = 536870912
2^30 = 1073741824
2^31 = 2147483648
2^32 = 4294967296
2^33 = 8589934592
2^34 = 17179869184
2^35 = 34359738368
2^36 = 68719476736
2^37 = 137438953472
2^38 = 274877906944
2^39 = 549755813888
2^40 = 1099511627776
2^41 = 2199023255552
2^42 = 4398046511104
2^43 = 8796093022208
2^44 = 17592186044416
2^45 = 35184372088832
2^46 = 70368744177664
2^47 = 140737488355328
2^48 = 281474976710656
2^49 = 562949953421312
2^50 = 1125899906842624
2^51 = 2251799813685248
2^52 = 4503599627370496
2^53 = 9007199254740992
2^54 = 18014398509481984
2^55 = 36028797018963968
2^56 = 72057594037927936
2^57 = 144115188075855872
2^58 = 288230376151711744
2^59 = 576460752303423488
2^60 = 1152921504606846976
2^61 = 2305843009213693952
2^62 = 4611686018427387904
2^63 = 9223372036854775808
2^64 = 18446744073709551616
2^65 = 36893488147419103232
2^66 = 73786976294838206464
2^67 = 147573952589676412928
2^68 = 295147905179352825856
2^69 = 590295810358705651712
2^70 = 1180591620717411303424
2^71 = 2361183241434822606848
2^72 = 4722366482869645213696
2^73 = 9444732965739290427392
2^74 = 18889465931478580854784
2^75 = 37778931862957161709568
2^76 = 75557863725914323419136
2^77 = 151115727451828646838272
2^78 = 302231454903657293676544
2^79 = 604462909807314587353088
2^80 = 1208925819614629174706176
2^81 = 2417851639229258349412352
2^82 = 4835703278458516698824704
2^83 = 9671406556917033397649408
2^84 = 19342813113834066795298816
2^85 = 38685626227668133590597632
2^86 = 77371252455336267181195264
2^87 = 154742504910672534362390528
2^88 = 309485009821345068724781056
2^89 = 618970019642690137449562112
2^90 = 1237940039285380274899124224
2^91 = 2475880078570760549798248448
2^92 = 4951760157141521099596496896
2^93 = 9903520314283042199192993792
2^94 = 19807040628566084398385987584
2^95 = 39614081257132168796771975168
2^96 = 79228162514264337593543950336
2^97 = 158456325028528675187087900672
2^98 = 316912650057057350374175801344
2^99 = 633825300114114700748351602688
2^100 = 1267650600228229401496703205376
2^101 = 2535301200456458802993406410752
2^102 = 5070602400912917605986812821504
2^103 = 10141204801825835211973625643008
2^104 = 20282409603651670423947251286016
2^105 = 40564819207303340847894502572032
2^106 = 81129638414606681695789005144064
2^107 = 162259276829213363391578010288128
2^108 = 324518553658426726783156020576256
2^109 = 649037107316853453566312041152512
2^110 = 1298074214633706907132624082305024
2^111 = 2596148429267413814265248164610048
2^112 = 5192296858534827628530496329220096
2^113 = 10384593717069655257060992658440192
2^114 = 20769187434139310514121985316880384
2^115 = 41538374868278621028243970633760768
2^116 = 83076749736557242056487941267521536
2^117 = 166153499473114484112975882535043072
2^118 = 332306998946228968225951765070086144
2^119 = 664613997892457936451903530140172288
2^120 = 1329227995784915872903807060280344576
2^121 = 2658455991569831745807614120560689152
2^122 = 5316911983139663491615228241121378304
2^123 = 10633823966279326983230456482242756608
2^124 = 21267647932558653966460912964485513216
2^125 = 42535295865117307932921825928971026432
2^126 = 85070591730234615865843651857942052864
2^127 = 170141183460469231731687303715884105728
2^128 = 340282366920938463463374607431768211456
2^129 = 680564733841876926926749214863536422912
2^130 = 1361129467683753853853498429727072845824
2^131 = 2722258935367507707706996859454145691648
2^132 = 5444517870735015415413993718908291383296
2^133 = 10889035741470030830827987437816582766592
2^134 = 21778071482940061661655974875633165533184
2^135 = 43556142965880123323311949751266331066368
2^136 = 87112285931760246646623899502532662132736
2^137 = 174224571863520493293247799005065324265472
2^138 = 348449143727040986586495598010130648530944
2^139 = 696898287454081973172991196020261297061888
2^140 = 1393796574908163946345982392040522594123776
2^141 = 2787593149816327892691964784081045188247552
2^142 = 5575186299632655785383929568162090376495104
2^143 = 11150372599265311570767859136324180752990208
2^144 = 22300745198530623141535718272648361505980416
2^145 = 44601490397061246283071436545296723011960832
2^146 = 89202980794122492566142873090593446023921664
2^147 = 178405961588244985132285746181186892047843328
2^148 = 356811923176489970264571492362373784095686656
2^149 = 713623846352979940529142984724747568191373312
2^150 = 1427247692705959881058285969449495136382746624
2^151 = 2854495385411919762116571938898990272765493248
2^152 = 5708990770823839524233143877797980545530986496
2^153 = 11417981541647679048466287755595961091061972992
2^154 = 22835963083295358096932575511191922182123945984
2^155 = 45671926166590716193865151022383844364247891968
2^156 = 91343852333181432387730302044767688728495783936
2^157 = 182687704666362864775460604089535377456991567872
2^158 = 365375409332725729550921208179070754913983135744
2^159 = 730750818665451459101842416358141509827966271488
2^160 = 1461501637330902918203684832716283019655932542976
2^161 = 2923003274661805836407369665432566039311865085952
2^162 = 5846006549323611672814739330865132078623730171904
2^163 = 11692013098647223345629478661730264157247460343808
2^164 = 23384026197294446691258957323460528314494920687616
2^165 = 46768052394588893382517914646921056628989841375232
2^166 = 93536104789177786765035829293842113257979682750464
2^167 = 187072209578355573530071658587684226515959365500928
2^168 = 374144419156711147060143317175368453031918731001856
2^169 = 748288838313422294120286634350736906063837462003712
2^170 = 1496577676626844588240573268701473812127674924007424
2^171 = 2993155353253689176481146537402947624255349848014848
2^172 = 5986310706507378352962293074805895248510699696029696
2^173 = 11972621413014756705924586149611790497021399392059392
2^174 = 23945242826029513411849172299223580994042798784118784
2^175 = 47890485652059026823698344598447161988085597568237568
2^176 = 95780971304118053647396689196894323976171195136475136
2^177 = 191561942608236107294793378393788647952342390272950272
2^178 = 383123885216472214589586756787577295904684780545900544
2^179 = 766247770432944429179173513575154591809369561091801088
2^180 = 1532495540865888858358347027150309183618739122183602176
2^181 = 3064991081731777716716694054300618367237478244367204352
2^182 = 6129982163463555433433388108601236734474956488734408704
2^183 = 12259964326927110866866776217202473468949912977468817408
2^184 = 24519928653854221733733552434404946937899825954937634816
2^185 = 49039857307708443467467104868809893875799651909875269632
2^186 = 98079714615416886934934209737619787751599303819750539264
2^187 = 196159429230833773869868419475239575503198607639501078528
2^188 = 392318858461667547739736838950479151006397215279002157056
2^189 = 784637716923335095479473677900958302012794430558004314112
2^190 = 1569275433846670190958947355801916604025588861116008628224
2^191 = 3138550867693340381917894711603833208051177722232017256448
2^192 = 6277101735386680763835789423207666416102355444464034512896
2^193 = 12554203470773361527671578846415332832204710888928069025792
2^194 = 25108406941546723055343157692830665664409421777856138051584
2^195 = 50216813883093446110686315385661331328818843555712276103168
2^196 = 100433627766186892221372630771322662657637687111424552206336
2^197 = 200867255532373784442745261542645325315275374222849104412672
2^198 = 401734511064747568885490523085290650630550748445698208825344
2^199 = 803469022129495137770981046170581301261101496891396417650688
2^200 = 1606938044258990275541962092341162602522202993782792835301376
...
--- powers of 3 ---
3^1 = 3
3^2 = 9
3^3 = 27
3^4 = 81
3^5 = 243
3^6 = 729
3^7 = 2187
3^8 = 6561
3^9 = 19683
3^10 = 59049
3^11 = 177147
3^12 = 531441
3^13 = 1594323
3^14 = 4782969
3^15 = 14348907
3^16 = 43046721
3^17 = 129140163
3^18 = 387420489
3^19 = 1162261467
3^20 = 3486784401
3^21 = 10460353203
3^22 = 31381059609
3^23 = 94143178827
3^24 = 282429536481
3^25 = 847288609443
3^26 = 2541865828329
3^27 = 7625597484987
3^28 = 22876792454961
3^29 = 68630377364883
3^30 = 205891132094649
3^31 = 617673396283947
3^32 = 1853020188851841
3^33 = 5559060566555523
3^34 = 16677181699666569
3^35 = 50031545098999707
3^36 = 150094635296999121
3^37 = 450283905890997363
3^38 = 1350851717672992089
3^39 = 4052555153018976267
3^40 = 12157665459056928801
3^41 = 36472996377170786403
3^42 = 109418989131512359209
3^43 = 328256967394537077627
3^44 = 984770902183611232881
3^45 = 2954312706550833698643
3^46 = 8862938119652501095929
3^47 = 26588814358957503287787
3^48 = 79766443076872509863361
3^49 = 239299329230617529590083
3^50 = 717897987691852588770249
3^51 = 2153693963075557766310747
3^52 = 6461081889226673298932241
3^53 = 19383245667680019896796723
3^54 = 58149737003040059690390169
3^55 = 174449211009120179071170507
3^56 = 523347633027360537213511521
3^57 = 1570042899082081611640534563
3^58 = 4710128697246244834921603689
3^59 = 14130386091738734504764811067
3^60 = 42391158275216203514294433201
3^61 = 127173474825648610542883299603
3^62 = 381520424476945831628649898809
3^63 = 1144561273430837494885949696427
3^64 = 3433683820292512484657849089281
3^65 = 10301051460877537453973547267843
3^66 = 30903154382632612361920641803529
3^67 = 92709463147897837085761925410587
3^68 = 278128389443693511257285776231761
3^69 = 834385168331080533771857328695283
3^70 = 2503155504993241601315571986085849
3^71 = 7509466514979724803946715958257547
3^72 = 22528399544939174411840147874772641
3^73 = 67585198634817523235520443624317923
3^74 = 202755595904452569706561330872953769
3^75 = 608266787713357709119683992618861307
3^76 = 1824800363140073127359051977856583921
3^77 = 5474401089420219382077155933569751763
3^78 = 16423203268260658146231467800709255289
3^79 = 49269609804781974438694403402127765867
3^80 = 147808829414345923316083210206383297601
3^81 = 443426488243037769948249630619149892803
3^82 = 1330279464729113309844748891857449678409
3^83 = 3990838394187339929534246675572349035227
3^84 = 11972515182562019788602740026717047105681
3^85 = 35917545547686059365808220080151141317043
3^86 = 107752636643058178097424660240453423951129
3^87 = 323257909929174534292273980721360271853387
3^88 = 969773729787523602876821942164080815560161
3^89 = 2909321189362570808630465826492242446680483
3^90 = 8727963568087712425891397479476727340041449
3^91 = 26183890704263137277674192438430182020124347
3^92 = 78551672112789411833022577315290546060373041
3^93 = 235655016338368235499067731945871638181119123
3^94 = 706965049015104706497203195837614914543357369
3^95 = 2120895147045314119491609587512844743630072107
3^96 = 6362685441135942358474828762538534230890216321
3^97 = 19088056323407827075424486287615602692670648963
3^98 = 57264168970223481226273458862846808078011946889
3^99 = 171792506910670443678820376588540424234035840667
3^100 = 515377520732011331036461129765621272702107522001
3^101 = 1546132562196033993109383389296863818106322566003
3^102 = 4638397686588101979328150167890591454318967698009
3^103 = 13915193059764305937984450503671774362956903094027
3^104 = 41745579179292917813953351511015323088870709282081
3^105 = 125236737537878753441860054533045969266612127846243
3^106 = 375710212613636260325580163599137907799836383538729
3^107 = 1127130637840908780976740490797413723399509150616187
3^108 = 3381391913522726342930221472392241170198527451848561
3^109 = 10144175740568179028790664417176723510595582355545683
3^110 = 30432527221704537086371993251530170531786747066637049
3^111 = 91297581665113611259115979754590511595360241199911147
3^112 = 273892744995340833777347939263771534786080723599733441
3^113 = 821678234986022501332043817791314604358242170799200323
3^114 = 2465034704958067503996131453373943813074726512397600969
3^115 = 7395104114874202511988394360121831439224179537192802907
3^116 = 22185312344622607535965183080365494317672538611578408721
3^117 = 66555937033867822607895549241096482953017615834735226163
3^118 = 199667811101603467823686647723289448859052847504205678489
3^119 = 599003433304810403471059943169868346577158542512617035467
3^120 = 1797010299914431210413179829509605039731475627537851106401
3^121 = 5391030899743293631239539488528815119194426882613553319203
3^122 = 16173092699229880893718618465586445357583280647840659957609
3^123 = 48519278097689642681155855396759336072749841943521979872827
3^124 = 145557834293068928043467566190278008218249525830565939618481
3^125 = 436673502879206784130402698570834024654748577491697818855443
3^126 = 1310020508637620352391208095712502073964245732475093456566329
3^127 = 3930061525912861057173624287137506221892737197425280369698987
3^128 = 11790184577738583171520872861412518665678211592275841109096961
3^129 = 35370553733215749514562618584237555997034634776827523327290883
3^130 = 106111661199647248543687855752712667991103904330482569981872649
3^131 = 318334983598941745631063567258138003973311712991447709945617947
3^132 = 955004950796825236893190701774414011919935138974343129836853841
3^133 = 2865014852390475710679572105323242035759805416923029389510561523
3^134 = 8595044557171427132038716315969726107279416250769088168531684569
3^135 = 25785133671514281396116148947909178321838248752307264505595053707
3^136 = 77355401014542844188348446843727534965514746256921793516785161121
3^137 = 232066203043628532565045340531182604896544238770765380550355483363
3^138 = 696198609130885597695136021593547814689632716312296141651066450089
3^139 = 2088595827392656793085408064780643444068898148936888424953199350267
3^140 = 6265787482177970379256224194341930332206694446810665274859598050801
3^141 = 18797362446533911137768672583025790996620083340431995824578794152403
3^142 = 56392087339601733413306017749077372989860250021295987473736382457209
3^143 = 169176262018805200239918053247232118969580750063887962421209147371627
3^144 = 507528786056415600719754159741696356908742250191663887263627442114881
3^145 = 1522586358169246802159262479225089070726226750574991661790882326344643
3^146 = 4567759074507740406477787437675267212178680251724974985372646979033929
3^147 = 13703277223523221219433362313025801636536040755174924956117940937101787
3^148 = 41109831670569663658300086939077404909608122265524774868353822811305361
3^149 = 123329495011708990974900260817232214728824366796574324605061468433916083
3^150 = 369988485035126972924700782451696644186473100389722973815184405301748249
3^151 = 1109965455105380918774102347355089932559419301169168921445553215905244747
3^152 = 3329896365316142756322307042065269797678257903507506764336659647715734241
3^153 = 9989689095948428268966921126195809393034773710522520293009978943147202723
3^154 = 29969067287845284806900763378587428179104321131567560879029936829441608169
3^155 = 89907201863535854420702290135762284537312963394702682637089810488324824507
3^156 = 269721605590607563262106870407286853611938890184108047911269431464974473521
3^157 = 809164816771822689786320611221860560835816670552324143733808294394923420563
3^158 = 2427494450315468069358961833665581682507450011656972431201424883184770261689
3^159 = 7282483350946404208076885500996745047522350034970917293604274649554310785067
3^160 = 21847450052839212624230656502990235142567050104912751880812823948662932355201
...


Who would have thought your humble Arduino could calculate 100 factorial! Or 2 to the power 300! It runs pretty fast too. 

Calculate e



// BigNumber test: calculate e
#include "BigNumber.h"

// function to display a big number and free it afterwards
void printBignum (BigNumber & n)
{
  char * s = n.toString ();
  Serial.println (s);
  free (s);
}  // end of printBignum

void setup ()
{
  Serial.begin (115200);
  Serial.println ();

  BigNumber::begin (50);  // max around 160 on the Uno

  // some big numbers
  BigNumber n = 1, e = 1, one = 1;

  int i = 1;
  BigNumber E;  // previous result

  unsigned long start = millis ();
  do
  { 
    E = e;
    n *= i++;  // n is i factorial
    e += one / n;
  }  while (e != E);
  unsigned long time = millis () - start;

  printBignum (e);
  Serial.print (time);
  Serial.println (" mS");
} // end of setup

void loop () { }


Output:


2.71828182845904523536028747135266249775724709369978
629 mS


Theory:

http://en.wikipedia.org/wiki/E_%28mathematical_constant%29

E can be calculated as:


1 + (1/1!) + (1/2!) + (1/3!) ...


That's why the code above is calculating running factorials, and adding the inverse of the factorial to the running total. The code breaks out of the loop when, for the desired number of decimal places, the calculated value doesn't change. That is, at this level of precision, the new amount added does not change the result.

BigNumber class


The C++ BigNumber class handles allocation and deallocation in the constructor and destructor.

For example, factorials can be produced like this:

Code:


  BigNumber::begin ();  // initialize library
 
  //factorials
  BigNumber fact = 1;

  for (int i = 2; i <= 200; i++)
  {
    Serial.print (i);
    Serial.print ("! = ");
    fact *= i;
    printBignum (fact);
  }


The normal arithmetic operations are supported (eg. assignment, add, subtract, divide, multiply, modulus). Also things like a++ or a--.

Also comparisons can be done in the natural way.

The only memory allocation you have to worry about is when you get a number to print. Since the library may have to return any size number, it does a malloc to store the number (plus a sign, and decimal point if required). It is up to you to free that string. eg.


// function to display a big number and free it afterwards
void printBignum (BigNumber n)
{
  char * s = n.toString ();
  Serial.println (s);
  free (s);
}  // end of printBignum


An important parameter is the "scale" of the number, which you can set with setScale (n). The scale is effectively the number of decimal places.

For example:


  BigNumber::begin ();  // initialize library

  BigNumber a, b = 2, c;
 
  BigNumber::setScale (0);
  a = BigNumber (1) / BigNumber (3);
  c = b.sqrt ();
  Serial.print ("1/3 = ");
  printBignum (a);
  Serial.print ("sqrt(2) = ");
  printBignum (c);


Output:


1/3 = 0
sqrt(2) = 1


Change the scale to setScale (20) and we get:


1/3 = 0.33333333333333333333
sqrt(2) = 1.41421356237309504880


Change the scale to setScale (100) and we get:


1/3 = 0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
sqrt(2) = 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727



So clearly the scale is affecting the results. Note that, of course, the larger the scale the slower the calculation and the more memory it will require.

Some caveats



  • Working with large numbers is necessarily slow - the larger the number, or the more decimal places, the slower.

  • Each digit requires a byte of memory, plus some overhead (eg. where the decimal point is) - large numbers will soon gobble up the available memory.

  • Doing a toString also requires memory - a byte per digit, plus the sign, decimal point, and trailing 0x00 byte.

  • An "error" condition inside the library (eg. running out of memory) calls exit(), effectively sending the library into a tight loop.

  • You may need to cast some numbers to avoid "ambiguous" warnings from the compiler.

  • If you only have 2048 bytes of RAM, you clearly need to use a library like this with caution. Running out of memory will be quite likely unless you closely manage the size of your numbers, and how many you have.

  • Memory fragmentation will quite possibly be a problem, particularly if you calculate numbers of different sizes (eg. factorials).


The supplied library has some example code (eg. powers, factorials, sine calculations, e^x, and ln(x) ).

Note that cosine and tangent can effectively be calculated from the sine.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted byNick Gammon   Australia  (21,293 posts)  [Biography] bio   Forum Administrator
DateReply #1 on Tue 22 Jan 2013 05:28 AM (UTC)

Amended on Tue 22 Jan 2013 06:16 AM (UTC) by Nick Gammon

Message
Improvements to printing


Thanks to suggestions from Paul Stoffregen, the library has now been modified to allow you to directly print big numbers.

For example, the Factorials example now looks like this:


// BigNumber test: factorials
#include "BigNumber.h"

void setup ()
{
  Serial.begin (115200);
  while (!Serial) ;
  delay(500);
  Serial.println ();
  BigNumber::begin ();  // initialize library
 
  //factorials
  BigNumber fact = 1;

  for (int i = 2; i <= 200; i++)
  {
    Serial.print(i);
    Serial.print("! = ");
    fact *= i;
    Serial.println (fact);
  }

}  // end of setup

void loop () { }


Modified line in bold. This was done by deriving the BigNumber class from the Printable class. This means that you can now print big numbers from any class derived from Stream (eg. Serial, Serial1, etc.).

Also changed slightly to support chips which did not have an exit() function defined in their library.

- Nick Gammon

www.gammon.com.au, www.mushclient.com






728x90
728x90

정수만 갖고 코딩하는것도 초보 수준인데 개념만 살짝 갖고 있는 float 변수형의 16자리수 계산에 대해 개념을 잡으려니 안개처럼 몽실몽실하게 흩어지는군요.





출처: http://elenoa.tistory.com/241

일단 부동소수점이 정확하기 힘들다는 것은 알았습니다.

이진수로 십진수를 계산하기 때문에 어쩔 수 없는 문제지요. 

예전에 인텔도 CPU에서 부동소수점 처리에 결함이 생긴 펜티업 칩 때문에 큰 손실을 본 적이 있습니다(링크)

그리고 저는 고작 10여자리의 부동소수점 때문에 골머리를 썩고 있네요.





아두이노의 레퍼런스를 읽어봅니다





6-7자리의 정확도를 갖고 있다는군요. 

거기다 저는 연산을 해야 하기 때문에 곱셈/덧셈을 할때마다 정확한 자리수가 줄어들겠죠?

생각해보니 이것도 큰 문제네요. 소숫점 이하 50자리까지 정확하다고 해도 그 숫자끼리 몇번 곱하면 곱할때마다 자릿수의 절반씩은 믿을 수 없게 될텐데요





double 을 사용한다고 해도 모자랍니다. 




비슷한 문제를 저만 겪는 건 아닐 것 같아 검색을 해보니 포럼에 비슷한 토론이 많이 있는데 딱히 이거다 하는 해결책은 안보이는군요.





하드웨어의 한계도 있어서 이런 물건도 나오는 듯 합니다. 




그 와중에 GitHub에서 SoftFloat 이라는 아두이노 라이브러리를 찾았는데

description이 하나도 없어서 이해를 못하겠네요;; 헤더파일 보고 해석할 역량은 안되는데 말이죠

https://github.com/mmoller2k/Float64



728x90
728x90

큰 청소기를 들고 왔다갔다 하는게 힘들어 창고에서 쓸 적당한 청소기가 있었으면 좋겠다 싶었습니다. 

딱히 급하지도 않고 꼭 필요한것도 아니라 

중고로 하나 살까 생각하고 중고나라도 살짝 기웃거리던 중이었죠

그러다가 밤중에 누가 버린 청소기 2대를 발견합니다.

하나는 충전식, 하나는 일반형.


하나만 건져도 다행이겠다 싶어 일단 2개 다 들고왔습니다. 







일반형 청소기는 전선이 끊어져 있더군요

일단 연결해서 켜보니 모터는 쌩쌩하게 잘 돌아가길래 전선을 사왔습니다. 






고장난것도 아닌데 왜 전선이 끊어져 있는지는 의문이네요






끊어진 부분에서 그냥 납땜으로 연결하려고 했는데 외피가 이미 찢어져 있습니다.

불안하니 그냥 교체해주기로 합니다. 






태옆을 풀어야 하는 문제가 있군요.

잘 풀어서 케이블 타이로 묶어놓으면 그냥 그대로 다시 쉽게 끼울 수 있지 않을까 합니다.






실패했습니다.








내부에는 이렇게 슬립링이 있습니다. 

열어본 김에 좀 닦아줬습니다. 






전선 외피가 가늘어서 고정이 잘 되지 않습니다. 






케이블 타이로 묶어서 걸리도록 해 줬습니다. 







태엽을 원래대로 감아줍니다. 이거 꽤 힘들더군요.






욕나옵니다. 






힘들게 다시 끼워놓고 끝단에 플러그를 연결합니다.

몇번 테스트해보니 당기는 힘에 전선이 내부에서 끊어져 버렸습니다. 






며칠전에 쓰고 남은 자전거용 핸들바 그립을 감아줬습니다. 






다 했나 싶었는데 이번에는 뚜껑만 씌우면 전선이 무조건 감기는 증상이 생겼습니다. 

오늘은 욕을 좀 많이 했습니다. 

뚜껑 부분에 전선감개 스위치가 있는데 그걸 갈아내서 높이를 낮춰도 마찬가지길래

내부 브레이크 부품을 빼냈습니다. 






라이타로 지져서 위쪽으로 살짝 휘었습니다. 






이제는 잘 됩니다. 





그리고 전원을 켜보니 모터 소리는 쌩쌩한데 흡입력이 개판입니다. 



내부에 헤파필터를 꺼냈습니다. 전 사용자가 한번도 청소를 안한 모양입니다.

이제는 욕나올 기력도 없습니다. 






에어로 불다가 덩어리가 안 빠져서 아예 철사로 긁어냈습니다. 

몇년동안이나 필터청소를 안하면 이렇게 되는지 모르겠습니다.





 


물청소해도 되는 필터라 나머지는 물청소하고 이제 건조중입니다. 

땟물이 한 드럼은 나온 것 같습니다. 




충전식 청소기는 니켈수소 배터리라 수명 다 되서 버린 것 같은데 

이것도 리튬으로 교체하고 사용할 예정입니다. 

728x90
728x90


키보드 매트릭스를 테스트하는 중인데 이상하게 2열의 1,2,3 등의 숫자만 입력이 안되더군요






핀에 문제가 있나 하고 핀아웃도 다시 확인하고






배선설정과 실제 스케치간에 연결이 다른부분이 있나 다시 확인해봤습니다. 

문제는 그냥 제가 시리얼로 결과를 확인하고 있다는 것이었지요

Tx 핀으로 입력을 하는데 그걸 시리얼 출력으로 쓰고있으니 당연히 안되는 것이었습니다. 




수정해서 키패드 입력을 LED 디스플레이로 하는건 금방 되었는데

본격적으로 계획을 짜보니 이게 생각보다 난이도가 상당히 높네요.

스케치를 짜려고 보니 생각해야 할 부분이 많습니다.


1. 키패드 매트릭스는 사칙연산 부호 등 때문에 char 형태로 데이터를 주고받음 -> '0' 문자를 숫자로 변경하는건 쉬움. 

2. 25개의 매트릭스 입력에 따라 숫자, 문자 등으로 분류하여 각각 다른 계산을 해야함 -> 역시 어렵진 않을듯. 

3. 계산기의 자리수는 16자리이므로 최대 9999999999999999 까지 표시할 수 있다. 

소수점을 사용해야 하므로 float 변수를 사용하는데 소수점 이하를 표시하려면

앞에 표시될 '0.' 글자를 빼면 소수점 14자리까지 쓸 수 있어야 한다. 

기본적으로 디스플레이에서 float 함수를 쓰면 소수점 2번째 자리까지만 표시되며

"%f" 형을 사용해 float 형을 출력하면 이하 숫자의 오류가 생긴다. 

dtostrf() 함수를 사용하면 3번째이하 자리수를 처리할 수 있지만 

소수점 이하 자리수를 정확히 알고 있는 경우가 아니면 역시 오류가 생긴다 ->갑자기 최종보스 출현한 난이도..;


검색해보니 부동소수점 문제는 원래 어렵더군요.. 

아두이노 계산기 예제라고 나와있는것도 죄다 정수처리만 가능한 간단형 버전이고요.



913425.45 를 출력하면 저렇게 나옵니다.

일단 정확하게 출력하는것도 문제지만 그걸 또 연산처리해야한다는 점이 엄청 골치아프네요

728x90
728x90

이렇게 하면 좋겠다 하고 생각만 하고 있었는데

마침 다이소에 자전거용 그립 테이프가 있길래 사와서 작업했습니다. 




보통 로드에 많이 쓰이는 드롭바에 감는 손잡이용 테이프입니다. 

말은 테이프지만 끈끈하거나 하지는 않고 푹신하고 늘어나는 충격흡수 고무 같은 재질입니다. 




마감용으로 전용 테이프가 있기도 하지만 전기 절연 테이프도 많이 씁니다. 

저는 이렇게 손이 자주 닿을 부분에는 일반 절연 테이프를 쓰지 않고 3M 제품을 따로 씁니다. 

일반 제품은 수명이 짧아서 금방 끈끈이가 녹아서 지저분해지고 떨어집니다. 




언제부터 썼는지 기억이 안나는 펜치입니다.

손잡이 고무가 다 늘어나서 결국 벗겨지고

절연테이프나 전선 수축튜브 등으로 손잡이를 만들어 썼는데

별로 오래 가질 못하더군요





원래는 한쪽만 테이프로 마감하고 반대쪽은 자전거 핸들 파이프 속으로 들어가서 마감하게 되어 있습니다. 





잠깐 테스트를 해보니 절연테이프 마감보다 

순간 접착제가 더 잘 고정될 것 같습니다. 




 

순간접착제로 아주 잘 붙습니다. 






최대한 당겨 붙였는데 두께가 있다보니 원래 손잡이보다는 약간 굵어졌습니다.

그래도 그립감은 나쁘지 않네요





조심해서 썼는데도 접착제와 함께 테이프가 손에 묻었군요


728x90

'D.I.Y.' 카테고리의 다른 글

Lenovo Mixed Reality 기기에 팬 달기.  (0) 2017.12.25
줏어온 청소기 수리.  (5) 2017.10.31
중국산 파워 서플라이 수리  (0) 2017.10.26
FT232/FTDI 보드 케이스에 넣기  (2) 2017.10.13
자전거 헬멧 내피 제작.  (0) 2017.09.30
728x90

아예 AVR 정품 AVR ISP 를 사고싶은 마음도 있지만 

이건 그냥 장비병인 것 같습니다.  쇼핑몰만 둘러보다 포기.




Aliexpress에서 호환 AVRISP MKii 를 샀는데 도착하고 보니 Vcc 에 전원이 안 들어오는 불량품이네요..

일단 Dispute 넣고 그냥 아두이노에 ArduinoISP 넣고 Atmega128에 부트로더를 구웠습니다. 



사실 지난번 ISP 드라이버 안 잡혔을때 이렇게 할까 했지만 미루다 보니 이렇게 됐네요

그냥 아두이노 보드 하나 잡아서 ISP를 따로 만들어 두어야 하나 생각중입니다. 






마찬가지로 지난번에 케이스에 넣었던 FTDI 보드로 업로드했더니 잘 됩니다. 

Blink로 빨간색 LED를 껐다 켰다 해 보았습니다. 






처음에 Atmega128을 쓰려고 했던 이유가 아두이노 핀이 모자랄 것 같아서였습니다

마침 Atmega128 칩도 많이 있는 이유도 있었죠.

그런데 아두이노 보드를 하나하나 체크해 보니 핀이 모자르진 않다는 걸 알게 되었습니다. 

오히려 딱 맞게 쓰고 한두개는 여유있을 정도네요


덕분에 좀 쉽게 갈 수 있을 것 같습니다. 





항상 CNC로 보드를 깎아 버리는걸 선호하지만

이번에는 추가로 주변회로가 어떻게 변할 지 몰라서 

전용 테스트 보드를 만들기에는 문제가 있습니다. 

일반 단면 만능기판에 테스트 보드를 구성하기로 했습니다. 




LED 디스플레이 선을 연결하고 테스트해봤습니다. 

이번 작업은 여기까지입니다.




728x90
728x90

e홈 카페에서 공구했던 중국산 파워 서플라이를 쓰고 있습니다. 


최대 30V 10A 까지 출력되는 물건인데


최근에는 12V 이상으로 올라가질 않더군요.


카페에서 고장관련 검색하다 보니 저항을 교체해보라는 얘기가 있어 뜯어봤습니다. 




내부의 조절 저항은 1KOhm 저항이고 2가지 종류로 되어 있습니다. 











새로 산 저항은 정상적으로 1KOhm이 나옵니다. 








파워 서플라이에서 뜯어낸 저항은 3KOhm이 넘게 나오는군요.









기판에서 가변저항을 교체하고 끼워보니 나사산이 튀어나오질 않습니다. 








비교해 보니 손잡이 길이가 차이가 나네요









안쪽의 턱을 잘라내고 다시 끼워보니 약간이나마 튀어나옵니다. 











볼트로 조여 고정합니다. 










노브 사이즈도 미묘하게 달라서 원래 노브는 헐거워 빠져버리더군요.


다른 노브로 교체했습니다. 









원래대로 30V 까지 잘 올라갑니다. 









조절도 잘 되는군요. 






처음엔 저항이 문제일거라 생각도 못하고 나름 비싸게 산거 버려야 하나 하고 걱정했는데


다행히 저렴하게 수리가 가능했네요






------------------------------------------------------------------------------------------------


그리고 수리한지 일주일만에 청소기 모터에 전원넣다가 폭발했다는 소식입니다. 어흑..

728x90
728x90


입구 맨앞에 있던 부스. 


병뚜껑을 손으로 튕겨 멀리 갈수록 점수가 높게 나옵니다. 









올해도 어김없이 참가하신 김용승님의 로봇 자판기. 


아예 바퀴가 달려 자판기 자체가 움직이더군요









페어 구석에서는 이런 모습이 한창입니다. 










오로카 팀의 부스입니다. 





라즈베리 파이를 이용한 로봇과 다른 여러가지 프로젝트들을 많이 하시는 곳이죠




 


회로와 배터리, 모터 구성으로 볼 때 무게가 약간은 있을 듯 합니다.


그런데 저만한 사이즈의 헬륨 풍선으로 충분히 떠오르더군요











아이와 같이 참가한 부스도 있고 중학생, 고등학생 부스도 꽤 있습니다. 










자작중인 DLP 프린터를 들고나오셨는데 저도 만들다 만 경험이 있어서 반갑더군요


얘기를 좀 해보니 저랑 비슷한 트러블이 있었습니다. 


하향식의 경우 출력 크기를 확보하기 어렵고 


기구물이 레진 속으로 들어가는 만큼 레진 수면이 올라오는 데 맞춰 촛점이 안맞는 문제가 있고


책상이 흔들리거나 할 경우 레진 수면이 흔들리는 만큼 매끈한 표면을 얻기 힘들고 등등..


저는 이제 중지한 프로젝트지만 잘 되시길 바랍니다. 







참여형 프로젝트들은 항상 인기가 많습니다. 











요즘은 메이커 열풍에 힘입어 학습용 키트도 많이 나오죠.











4$ 저금통. 동전을 4개 넣을때까지 4딸라! 외쳐대는 드라마의 한 장면이 나옵니다. 


단순히 금속성 물체를 체크하는 게 아니고 10원짜리 100원짜리 구별해가며 총액이 표시됩니다. 


궁금해서 물어봤는데 입력부의 동전 체크기가 동전을 구별해서 시리얼로 데이터를 보내준다네요







개성적인 자작 자동차들도 많이 나옵니다. 








행사에 가면 사진보다는 관람에 흥미가 많아서 


꼭 끝나고 나면 사진이 별로 없네요



올해까진 정말 개인적으로 불가능했는데


내년에는 진지하게 참가해볼까 생각을 다시한번 해봅니다. 


728x90
728x90


변환보드를 하나 살까 했는데 변환보드 하나에 6000원이라 


에라 하고 이글캐드를 실행해서 보드를 만들고 CNC로 깎았습니다. 


역시나 패턴이 좁아서 실패를 두어번 했네요










USBASP로 부트로더를 심으려고 하는데 안됩니다. 


에러 메세지를 보니 USBASP가 안 잡힌답니다.  


분명 드라이버를 설치했는데 말이죠.


부트로더를 쓸 때마다 최신 운영체제에 대응이 늦어 골때리는 경우가 자주 생기는군요


단순히 시키는 대로 해볼 뿐이라 이런 경우 어떻게 대응해야 하는지 잘 모르고 그대로 스톱됩니다. 






원래 계획대로 쉬프트 레지스터를 쓸지 말지 생각중입니다. 

728x90
728x90

기계식 키보드의 키를 심어서 계산기를 만들면

타격감과 오타율이 적은 계산기를 만들 수 있지 않을까 하던 중에

단순히 기존 계산기를 모딩하지 않고 아예 아두이노로 제작할까 하는 생각이 들었습니다. 






그리고 디스플레이를 전에 구해놓은 HCMS-2912 디스플레이를 이용해서 만들면 

참 이쁜 물건이 될 것 같더군요.







계산기의 키패드는 보통 5열 5행이기 때문에

5*5 키패드 매트릭스가 필요합니다. 








5*5 매트릭스는 10개의 입력핀이 필요하기 때문에

아두이노에서 직접 입력을 받는건 힘들고

74HC165 같은 쉬프트 레지스터를 이용하게 됩니다. 









그래서 74HC165 를 일단 몇개 구매했습니다. 

그리고 아두이노 보드를 계산기 기판에 그대로 심으면 높이 차이가 많이 생겨 케이스를 씌우는 데 무리가 따를 것 같아

아예 계산기 보드에 아두이노를 포함시키려 했습니다. 







그런데 부품박스를 열어보니 ATMEGA168 옆에 ATMEGA128 칩이 보입니다. 






검색해보니(링크) 아두이노로 사용 가능합니다. 







핀 수가 훨씬 많기 때문에 쉬프트 레지스터 없이 바로 사용이 가능하겠네요


결국 ATMEGA168(아두이노)+쉬프트 레지스터 로 가느냐

아니면 ATMEGA128 을 아두이노로 만들어서 쓰느냐 하는 문제인데

ATMEGA128이 쓸데없이 재고가 많은 관계로 이걸 쓰기로 했습니다. 






728x90
728x90


아두이노 프로 미니 버전을 쓰려면 FTDI 보드를 연결해야 합니다. 


그냥 쓰기엔 좀 불편한 부분이 있어 아예 케이스에 집어넣자 생각했습니다 


깡통을 고르다가 보니 민트 케이스가 적당해 보입니다. 











드릴로 뚫고 줄질을 합니다.











하다보니 귀찮아져서 전동조각기로 뚫어냈습니다. 


그리고 다시 줄로 세세한 마무리를 합니다.














에폭시 퍼티로 살짝 붙여놨습니다. 


어차피 얇은 철판에는 오랫동안 튼튼하게 붙어있기 힘듭니다. 


배선완료후 윗면을 다시 퍼티로 덮어서 고정할 생각입니다. 











3.3V / 5V 전원 선택 점퍼를 스위치로 교체하고, RX / TX LED를 외부로 연결했습니다.












이쁘긴 하지만 뭔가 다른 부품들과 위화감이 좀 있군요.







728x90
728x90


자전거 헬멧 내피가 이젠 도저히 사용할 수 없을 지경으로 삭았습니다. 


헬멧 자체는 손상이 전혀 없고, 제 두상에도 잘 맞는 헬멧이라 새로 살 생각은 들지 않네요


인터넷을 뒤져봐도 같은 제품의 내피는 나오지 않았습니다. 












일단은 더 삭아서 끊어지기 전에 A4용지에 대고 본을 그렸습니다. 






 






다이소에서 산 땀수건을 3겹이 되도로 접으면 적당한 크기가 되네요


시침을 하기는 영 귀찮고 해서 종이본을 딱풀로 붙여버렸습니다. 






어머니가 쓰시는 재봉틀을 빌렸습니다. 


저는 재봉틀 사용법은 아는데 잘 쓸줄 아는 건 아닌 뭐 그런 수준입니다. 












시침을 재봉틀로 해놓고 선을 따라 잘랐습니다. 


재봉가위의 날카롭기는 엄청나더군요







딱풀로 붙인 종이본을 물에 불려 떼어냅니다. 


이 과정에서 땀수건의 올이 많이 풀리더군요. 


애초에 딱풀은 쓰지 말고 바느질로만 고정할 걸 그랬습니다. 









어느 패턴이 올이 잘 안 풀릴지 이것저것 테스트해보는중










재봉은 초보자라 그리 깔끔하진 않습니다. 


그래도 뭐 헬멧 내피로 들어갈거라 보일 일도 없고 해서 그냥 이대로 마무리했습니다. 









잘된 곳은 잘됐는데 안된 곳은 걸레 꿰메놓은 것 같네요.












헬멧과의 접착은 벨크로로 하게 되어 있습니다. 



역시 다이소에서 구매한 벨크로 테잎을 사용합니다. 










모양은 좀 거시기 하지만 머리에 잘 맞고 좋네요

728x90
728x90

예전에 포스팅(링크) 한 적이 있듯이


저가형 다이모 라벨기에도 수축튜브 라벨을 사용 가능합니다. 


알리익스프레스에서 주문한 수축튜브 라벨이 도착해서 테스트 해봤습니다. 



3가지 사이즈 세트로 주문했습니다. 









그런데 주문실수로 안맞는 사이즈 1개가 포함되어 왔네요..





사이즈는 총 5종류이고 제가 갖고있는 라벨프린터에는 왼쪽 3개를 시켰어야 하는데


셀러에게 주문시 말한다는걸 잊고 그냥 주문해 버렸습니다. 


쓰지도 못할 3/4" 사이즈가 들어간 세트가 도착했군요.









수축전의 튜브는 보통 쓰는 수축튜브보다는 얇은 느낌입니다. 






일단 있는것만 출력해 봅니다 .









폰트가 너무 가늘면 잘 정착되지 않는 것 같습니다. 


저렇게 나오긴 해도 긁어서 떨어지거나 하진 않습니다. 










7파이(수축전) 인 수축튜브입니다.


수축후 대략 4파이 정도 됩니다. 









글자도 같이 수축되고 가시성도 좋네요. 









5파이 짜리를 테스트해 보는데 잘 나오지 않는 듯 했습니다. 


첫 부분을 손으로 좀 뽑아보니 그때부턴 잘 나옵니다. 










수축전 5파이, 수축후 3파이 입니다. 












마음에 듭니다. 


평균적으로 제가 쓰는 전선들은 가는 것들이라 


제일 작은 사이즈를 주문했어야 하는데 못한 게 아쉽네요.

728x90
728x90


만들던거는 몇가지 있긴 한데 별 의욕이 안생겨서 그냥 책이나 읽으면서 놀고 있습니다. 







그래도 프린터 문제는 해결해야 겠기에.. 


익스트루터가 자꾸 드득거리며 압출이 잘 안되는 문제는 한참 원인을 찾고 보니


제가 구입한 중국산 PLA 필라멘트가 무려 230도에서 녹는 괴랄한 물건이었기 때문인데요. 


왠지모르게 이참에 익스트루더를 좋은거로 바꾸고 싶은 욕망이 솟아올라


Titan Aero 익스트루더를 구매했습니다. 











요런 구조입니다. 기어로 감속하기 때문에 스탭모터를 아주 작은걸 써도 되고, 그만큼 무게를 가볍게 할 수 있습니다. 


Titan 'Aero' 버전은 전면에 CNC 가공 플레이트를 달아 아래쪽 길이를 짧게 할 수 있습니다. 


제가 자작한 CoreXY 구조상 Aero 버전으로 하지 않으면 Z축 높이에서 손해를 많이 보기 때문에


약간 더 비싼 Aero 버전으로 장착했습니다. 










타이밍 풀리 고정하는 M3 볼트가 은근히 휘어져서 보강부품 출력중. 


이후엔 Bltouch 장착 예정입니다. 출력배드가 살짝 휘어져서 전체 배드를 동시에 사용하는게 힘드네요.


Marlin 펌웨어 도큐를 보면 bltouch 장착하고 레벨링을 해서 휘어진 배드에서도 출력이 가능한 듯 한데


일단 펌웨어 수정해가며 직접 부딪혀봐야할듯. 





추가로 각종 센서들이 자꾸 문제가 있어 확인해 보았습니다. 


Ramps 보드가 너무 오래되어 핀들이 죄다 꺼멓게 부식된게 원인인듯; 


몇번 꽂았다 뺐다 반복하니 해결은 됐습니다만 조만간 또 그럴게 확실하여 새 보드로 교체해야 겠습니다. 


중국산이 싸고 좋기는 한데 도금이 개판이라 전자부품 수명이 너무 짧네요. 





728x90
728x90

저같은 사람들이 항상 그렇듯 각종 상자에 부품들이 쌓여 있다가 


점점 뭐가 어디에 있는지 알 수 없는 상황이 되기 전에


가끔씩 정리를 해야만 하는 상황이 오죠.






그러다가 운 좋게도 몇년 전에 사놓고는 뚜껑을 분실해서 쓰지도 못하고 있었던 열전사 프린터의 뚜껑을 찾아냈습니다. 










adafruit 에서 라이브러리와 소스를 제공(링크) 하고 있어 연결후 긴 텍스트만 출력하도록 수정해서 업로드해봤더니 잘 되는군요.


 









이런 종류의 프린터에는 감열지라는 특수 종이를 사용하죠. 


열을 가하면 검게 변색되는 코팅처리가 되어 있어 프린터에서 잉크를 찍는 게 아니라 열을 가해서 글자를 인쇄합니다. 


잉크 리필이나 청소 등 유지보수가 거의 필요 없는 장점이 있는 대신


용지 자체의 내구성이 떨어져 장기 보관시 잉크가 흐려져 지워지는 단점이 있습니다. 










하여간, 이 감열지를 꽤 많이 갖고는 있습니다. 










문제는 제가 갖고있는건 79mm 용지라는거죠. 


저 프린터는 57mm 용지를 사용하고요. 









용지 가격이 비싸진 않습니다만 50롤씩 판매하거나 하는 경우가 많고 


5롤 이하 소량으로 판매하는 곳은 찾기 힘듭니다. 


79mm 용지만 많이 갖고있어도 어차피 향후 10년간은 쓸데가 없을 것 같아 


잘라서 사용하기로 마음을 먹었습니다. 












포맥스를 적당히 잘라 구조를 만들어 봤습니다. 


종이가 들어가는 곳의 폭을 정확히 79mm 로 만들었고요











57mm 거리에 정확하게 칼날을 박습니다. 












그리고 종이를 끼워 당기면 이렇게 잘라집니다. 











은근히 재밌습니다. 








신나게 자릅니다. 










어디에 쓸지 고민좀 해봐야겠습니다. 

728x90
728x90

한참 고민하다가 그냥 본명 사용했습니다. 


이제는 어차피 얼굴책 때문에 실명이랑 온라인명 구분하기도 애매하고.. 

728x90
728x90

1부



100K 서미스터와 히터를 구리 테이프로 감았습니다. 


구리 테이프가 없다면 철물점에서 파는 알루미늄 테이프도 괜찮습니다. 








히터의 저항은 5.6옴이니


옴의 법칙 I = V / R 에 의해


리튬이온 배터리로 구동시 3.7V / 5.6Ohm = 0.66A 정도가 흐르게 됩니다. 











IRF510 MOSFET으로 간단하게 스위칭 회로를 만들었습니다. 








서미스터 온도체크 스케치는 adafruit의 것을 참조해서 스케치에서 10K 로 된 부분을 100K 로 수정해서 사용했습니다. 


https://learn.adafruit.com/thermistor/using-a-thermistor


 AREF 에 연결하여 레퍼런스 전압을 이용하면 더 정확하게 온도를 구할 수 있더군요








단순 ON/OFF 입니다. 50도 이하 ON, 50도 이상 OFF...








그냥 켜두면 위와 같은 온도편차 그래프를 보입니다. 








손을 접촉시키면 그래프에 변동이 심해집니다. 


PID 컨트롤까진 필요 없을 듯도 합니다. 


728x90

'[완료]Arduino Projects > DIY Bite Away' 카테고리의 다른 글

전기 버물리 #4  (3) 2018.06.25
전기 버물리 #3  (0) 2018.06.10
전기 버물리 #1  (0) 2017.09.01
728x90

 

올해는 어찌된게 흰줄숲모기가 집에서 극성이네요.

 

낮에도 잠시만 방심하면 콕 찌르고 도망가

 

온몸이 안 가려운 곳이 없습니다.

 

 

 

 

 

 

그런데 모기에 물렸을 때 쉽게 가려움과 부기를 가라앉힐 수 있는 방법이 있습니다.

 

 

 

 

 

 

실제로 저도 가끔 사용하는 방법인데요.

 

저는 숟가락 손잡이나 젓가락 넓은 쪽을 라이타로 살짝 가열 후

 

화상을 입지 않을 정도로 적당히 식혀 지지는 쪽을 선호하죠.

 

 

 

이거 잘못하면 화상 입지 않느냐? 하는 분이 계시는데

 

50도 정도의 온도로는 화상이 잘 생기지 않습니다.

 

 

 

 

 

 

 

세로축(온도) / 가로축(시간)

 

 

 

요건 광주시원외과 화상센터 블로그에서 가져온 자료인데

 

온도와 화상과의 관계는 시간과의 관계도 있고

 

60도에서 5초 이상 있어야 화상이 생긴다는 그래프입니다.

 

50~55도에서는 어느정도 장시간 노출하지 않으면 화상은 생기지 않겠죠

 

 

 

 

하여간 50~55도 정도의 열을 모기 물린 곳에 가해주면

 

모기침의 단백질 변성으로 가려운 것이 바로 해소된다는 것을 알 수 있습니다.

 

하지만 티스푼이나 젓가락 등은 온도를 정확하게 맞추기가 아무래도 많이 번거롭습니다.

 

 

 

 

 

 

그래서 그런지 이 원리를 이용한 전자제품이 있습니다.

 

 

 

 

 

찾아보니 국내산도 있네요

 

 

 

 

외산은 비싸고 국내산은 제어회로가 너무 단순할 듯 한데

 

마침 제게도 여기에 쓸 수 있는 부품이 있더군요.

 

 

3D 프린터용 히터와 서미스터, 아두이노를 조합하면 될 것 같습니다.

 

일단 18650 하나를 히터에 연결해서 온도를 확인하니 50도 이상은 충분히 올려주네요

 

센서와 아두이노를 결합해서 제어를 확실하게 하면 될 것 같습니다.

 

 

 

 

 

아주 오래전에 PC 온도제어용 박막 서미스터를 사놓은게 있어 이걸 온도센서로 사용하려 했는데

 

모델명을 찾기 힘드네요

 

 

 

 

 

10K 서미스터 온도테이블에 대입해 봤는데 영 맞지가 않습니다.

 

데이터쉬트가 없으니 쓰기가 힘드네요. 그냥 버리고 프린터용 서미스터를 사용하던지 해야할듯.

 

 

 

 

 

 

 

 

다 완성할때 쯤이면 이미 모기철은 지나가겠죠...?

728x90

'[완료]Arduino Projects > DIY Bite Away' 카테고리의 다른 글

전기 버물리 #4  (3) 2018.06.25
전기 버물리 #3  (0) 2018.06.10
전기 버물리 #2  (1) 2017.09.01
728x90

프린터 잘 완성했다고 자화자찬하면서 쭉 프린팅을 해오다가..

 

갑자기 프린팅이 안되기 시작했는데 수리에 한참 걸렸습니다.

 

문제

1. 익스트루더가 필라멘트를 잘 밀어내지 못함

 

2. 탈조가 잘 일어남

 

 

전장부를 다 들어엎어서 간신히 수리완료했습니다.

 

문제가 생기는 원인이 하나뿐이면 수리가 쉬운데 여러 문제가 복합적으로 생기니

 

골머리를 쌓게 되더군요.

 

 

 

 

 

일단 익스트루더 압출 불량은 온도센서 배선이 산화돼서 끊어질락 말락 했던 것과

 

타오바오산 직구 필라멘트의 불량이 합쳐진 게 원인이었습니다.

 

 

 

 

 

 

 

예비 부품도 마찬가지...

 

 

 

 

 

 

 

배드용 NTC 서미스터를 넣어볼까 했는데 굵기가 안맞아 안들어가네요

 

결국 새로 주문했습니다.

 

 

 

 

 

 

 

 

탈조의 원인.

 

 

 

 

 

 

 

 

배선문제는 문제가 발생했다가도 금방 어느샌가 제대로 되기도 하고 오락가락해서

 

더욱 수리가 힘드네요.

 

거기다가 타오바오산 필라멘트는 초기엔 잘 나오다가 롤 다 쓸때쯤 끄트머리는 이상하게 출력이 잘 안되는 희한한 문제가 있었습니다.

 

다음에는 그냥 내써팝제 써야할 것 같네요.

 

 

집에선 잘 되는 3D 프린터가 일하는 곳에만 갖다놓으면 노이즈 때문에 컨트롤러 엔코더 스위치 작동이 잘 안되는 문제도 있는데

 

이건 외부 문제라 어떻게 해야 할지 모르겠네요..

728x90

'Completed > 3D Printer - CoreXY' 카테고리의 다른 글

MKS GEN 1.4 보드 및 기타 부품 구입.  (0) 2018.04.02
3d 프린터 전체정비 및 롤백.  (0) 2018.03.14
후기.  (0) 2017.08.05
마치며.  (0) 2017.07.31
1차 조립 완료 및 테스트 출력.  (0) 2017.07.29
728x90


출력은 뭐... 그냥 잘 됩니다. 


애초에 유지보수 편하고 튼튼하게 잘 나오는 프린터가 목표였는데


3~4개월 이상 써 보기 전에는 결과를 알수는 없겠지만


일단은 성공한 것으로 보고 있습니다. 


LED 조명도 달았더니 출력시에 자세히 보느라 플레쉬 비출 필요도 없고 좋네요









베드 수평은 raft를 쓸 때 육안으로 보고 나사 약간씩 돌려주는 것으로 충분합니다만


그래도 정말 완벽한 출력편의성을 위해 주문했습니다. 


이걸로 베드 레벨링하면 그때부턴 정말 손댈일이 없기를 기대해 봅니다. 








출력엔 문제가 없는데 기존에 쓰던 LCD는 엔코더가 맛이 갔는지


메뉴 설정시에 엔코더를 아무리 돌려도 한칸 내려갔다가 도로 올라오는게 다일뿐


전체 메뉴를 왔다갔다 할수가 없습니다. 


LCD 메뉴를 잘 안 쓰는 편이긴 한데 SD Card 등을 사용하려면 필요해서 이것도 타오바오에서 같이 주문했습니다. 






일단은 출력이 잘 되고 앞으로도 잘 될 것 같기는 한데


타이밍 풀리가 고정된 축이 M3 나사인 부분이 좀 아쉽습니다. 


벨트를 강하게 당기면 풀리가 살짝 안으로 휘어서 장기적으로는 벨트 수명에 영향이 있을 것 같습니다. 


업그레이드 계획만 세워놓고 문제가 생기면 그때 적용할 예정입니다. 



728x90

'Completed > 3D Printer - CoreXY' 카테고리의 다른 글

3d 프린터 전체정비 및 롤백.  (0) 2018.03.14
3D 프린터 전체정비.  (1) 2017.09.01
마치며.  (0) 2017.07.31
1차 조립 완료 및 테스트 출력.  (0) 2017.07.29
CoreXY - 조립중 8  (0) 2017.07.26
728x90


아직 자잘한 부품들은 계속 출력하며 추가할 계획이지만


나머지 부분까지 포스팅을 다 할 필요는 없을 것 같군요.









아크릴로 만들었던 이런 부품이나(접착부분이 부러졌음). 


LED 바 브라켓이나, 


LCD 컨트롤러 브라켓 등은 계속 추가해야 합니다만


일단 출력 잘 되고, 장시간 출력에도 별 문제는 없어 보입니다. 


Kossel 델타 프린터를 장시간 사용하다가 


점점 낮아지는 출력 품질과 출력 트러블로 고생이 심해서


튼튼하고 오래 쓸수 있는 FDM 프린터를 만들어 보자 하고 시작한 프로젝트입니다. 


의도대로 내구성이 좋은지는 앞으로 장시간 사용해 봐야 알겠지만


그래도 왠만큼 설계했던 대로 결과물이 나와서 기분이 좋네요. 




728x90

'Completed > 3D Printer - CoreXY' 카테고리의 다른 글

3D 프린터 전체정비.  (1) 2017.09.01
후기.  (0) 2017.08.05
1차 조립 완료 및 테스트 출력.  (0) 2017.07.29
CoreXY - 조립중 8  (0) 2017.07.26
CoreXY - 조립중 7  (0) 2017.07.20
728x90





일단 출력테스트를 해 보았습니다. 


나무테이블에서 작업을 하느라 테이블 긁히지 말라고 모서리마다 박스를 감아준 상태입니다. 











압출테스트를 해 보니 토크가 너무 약합니다. 


전류조절을 한참 해보았으나 익스트루더셋에 포함되어 있던 모터가 기본적으로 토크가 약한 녀석이었습니다. 


내써팝에서 새로 모터를 구매하여 교환해 보니 괜찮아졌습니다. 








간단하게 영점을 맞추고 테스트 출력을 해봤는데 처음치고는 잘 나옵니다. 


베드 스티커도 꽤나 출력물을 잘 잡아줍니다만 그래도 얇고 가는 파츠는 영점이 칼같이 맞지 않으면 떨어져 나오네요


이제 한참동안 출력물로 다시 자체보수를 해야합니다. 


출력물 냉각팬도 달아야하고 LED 브라켓도 출력해야하고 컨트롤러 스위치도 고정해야 하고 


그러면서 출력 세팅도 세세하게 다시 조정하고 할 일이 많습니다. 


베드 레벨링을 일단 수동으로 하고 있는데 나중에 BLTOUCH를 달고 싶은 마음이 있습니다. 



728x90

'Completed > 3D Printer - CoreXY' 카테고리의 다른 글

후기.  (0) 2017.08.05
마치며.  (0) 2017.07.31
CoreXY - 조립중 8  (0) 2017.07.26
CoreXY - 조립중 7  (0) 2017.07.20
CoreXY - 조립중 6  (0) 2017.07.07
728x90

Home 명령으로 엔드스톱 체크시까지 이동시키는 부분을 설정하는데 며칠이 걸렸네요


계속 뭔가 생각했던 방향하고 맞지 않아서 반대로 설정했다가 정상으로 설정했다가 


그래도 뭔가 또 안맞고 기타등등 이것저것 수정하느라 시간이 오래 걸렸습니다. 





어이없게도 원인은 이 부분이었습니다. default 값이 [INVERT_Y_DIR true] 로 되어 있었습니다. 


저는 위에서부터 하나씩 체크하면서 펌웨어를 수정하고 있었는데


이 부분이 700번대 라인에 있어서 원인을 모르고 다른 곳을 수정하기만 했네요


다시 원본을 다운받아봤는데 기본 github 소스에 이렇게 되어 있었습니다. 










위 문제때문에 COREXY 로 제작했는데도 제대로 움직이려면 COREYX로 설정해야 했고요









HOME_DIR 방향도 바꿔야 했습니다. 


Z축 방향도 반대였는데 펌웨어 문제가 아니고 제 착각이었습니다. 


베드를 움직이게 만들었기에 베드가 내려가는 것이 Z+인데 


기존 델타 쓰던 버릇에 이걸 Z- 로 생각하고 있었습니다. 



지금은 

INVERT_Y_DIR false

#define COREXY  

#define X_HOME_DIR -1

#define Y_HOME_DIR -1  

#define Z_HOME_DIR 1 

이렇게 해서 깔끔하게 모두 해결되었습니다. 



XY 축은 min 방향에 엔드스톱이 있고 Z축은 max 방향에 엔드스톱이 있어서 


#define Z_HOME_DIR 1 입니다. 




이제 익스트루더 스텝 설정과 익스트루더 설정을 수정해야 합니다. 





728x90

'Completed > 3D Printer - CoreXY' 카테고리의 다른 글

마치며.  (0) 2017.07.31
1차 조립 완료 및 테스트 출력.  (0) 2017.07.29
CoreXY - 조립중 7  (0) 2017.07.20
CoreXY - 조립중 6  (0) 2017.07.07
CoreXY - 조립중 5  (0) 2017.06.29
728x90

구매해놓고 이번에 처음 꽂아보니 드라이버가 잡히질 않는다. 


구글링해보니 설치 방법이 나와 있길래 아예 메모용으로 블로그에 기록해 놓는다. 


원본은 여기





처음 usbasp를 꽂으면 위와 같이 드라이버가 잡히지 않는다


windows-8-and-windows-10-usbasp-drivers-libusb_1.2.4.0-x86-and-x64-bit.zip


위의 드라이버를 다운로드 한다. 








쉬프트키를 누른 채로 윈도우즈의 [다시 시작] 버튼을 누른다. 
















위 사진대로 [문제 해결] - [고급 옵션] - [시작 설정] 을 누르고


마지막 화면에서 [다시 시작] 을 누른다. 



















다시 시작된 화면에서 이 화면이 뜨면 F7을 눌러 "드라이버 서명 적용 사용 안 함" 을 선택한다. 















부팅된 후 장치 관리자로 돌아가 USBASP의 드라이버를 아까 다운로드 받은 드라이버로 업데이트 한다. 


경고문이 뜨지만 확인을 눌러 설치하면 USBasp 드라이버가 정상적으로 설치된다. 


728x90
728x90


한동안 진행못한 이유 1. 


새끼고양이 한마리를 구조했습니다.  그냥 두었다고 꼭 죽지는 않았겠지만


일단은 병원 치료가 필요한 것 같아 포획해서 치료후 보호중입니다.  








지금은 건강해졌고 입양 알아보고 있는 중입니다. 


제가 고양이를 좋아해서 키우고 싶긴 하지만 가족중에 고양이알러지가 심한 사람이 있습니다. 












지난번에 라벨링이 잘못되었고 리밋 스위치 제작이 잘못되었다고 했는데 아니었습니다. 


이 부분 원인 찾느라 시간이 더 걸렸네요. 








원인은 회로제작 실수였습니다. 제가 처음 만들었던 회로를 그냥 썼는데


당시에 왜 저항값을 47로 지정해 놓았는지는 모르겠지만 


이번에 저 회로를 사용하면서 그대로 47옴을 납땜하는 바람에 센서에 과전류가 흘렀습니다. 











데이터쉬트를 기반으로 5v 입력시 저항값을 계산해보니 750옴을 사용해야 하네요


센서를 꽂았을 때 잠시 동안은 회로가 정상적으로 동작했고


그러다가 센서가 탔고 그 이후로는 제대로 동작하지 않았는데


저는 그걸 모르고 되다 말다 하니까 계속 펌웨어 설정이랑 핀아웃만 건드리고 있었습니다. 


그러다가 센서가 문제있나 하고 새 센서(47옴)을 연결하면 또 잠시 동작하다가 타버리고.. 












하여간 전부 다시 제작했습니다. 











제대로 되는지 확인.










이제 배선은 거의 끝났습니다. 


리밋센서 작동여부 다시 확인하고 나머지 진행할 계획입니다. 

728x90

'Completed > 3D Printer - CoreXY' 카테고리의 다른 글

1차 조립 완료 및 테스트 출력.  (0) 2017.07.29
CoreXY - 조립중 8  (0) 2017.07.26
CoreXY - 조립중 6  (0) 2017.07.07
CoreXY - 조립중 5  (0) 2017.06.29
Marlin 펌웨어 찾다보니 Document 가 엄청 좋아졌네요  (0) 2017.06.21
728x90


ramps 보드 두개 태워먹고 원인을 찾느라 시간이 걸렸습니다. 


일단 ramps 보드의 리밋 스위치 라벨이 반대로 되어 있더군요. 


Signal, (-), (+) 순이 아니라  (+), (-), Signal 순으로 프린트되어 있어서 리밋 스위치만 꽂으면 보드가 먹통이 되었습니다. 



->알고보니 라벨이 반대로 된 게 아니라 자체제작 리밋센서 문제였네요








두번째 원인으로 자체제작 리밋 스위치중 1개가 납땜실수로 배선끼리 닿아 있었습니다. 


두가지 원인이 복합적으로 얽혀 보드를 두개나 태워먹고도 원인찾느라 시간이 많이 걸렸네요. 


일단 태워먹은 보드 중 한개는 AMS1117 칩만 교체해서 살아났는데, 


한개는 아예 내부까지 태워먹은 듯 하여 폐기처분했습니다. 









Marlin 펌웨어 기능이 많이 업그레이드되었는데 


수정하다가 부팅 로고를 집어넣어 봤습니다. 


나중에 포토샵으로 적당하게 하나 만들어 넣을 생각입니다만 제 디자인 실력이 문제로군요









현재 노즐 히팅, 온도센서, 리밋 센서, 스텝모터 작동까지 테스트 마쳤습니다. 


1/16 마이크로 스텝 설정으로 속도나 토크 최적화는 운용하면서 조정할 생각입니다. 



앞으로 베드 히팅과 Z축, 익스트루더까지 확인되면 출력 테스트가 가능할 것 같습니다. 


728x90

'Completed > 3D Printer - CoreXY' 카테고리의 다른 글

CoreXY - 조립중 8  (0) 2017.07.26
CoreXY - 조립중 7  (0) 2017.07.20
CoreXY - 조립중 5  (0) 2017.06.29
Marlin 펌웨어 찾다보니 Document 가 엄청 좋아졌네요  (0) 2017.06.21
CoreXY - 조립중 4  (0) 2017.06.21

+ Recent posts