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

마무리만 하면 되는 상황에서 고민을 많이 했습니다만

중단하기로 했습니다. 

캐패시터 스폿 자체에는 전혀 문제가 없습니다. 

문제는 제가 계획중인 프로젝트 중에

스텐레스 박판이나 강철 와이어의 스폿용접이 필요할 수도 있다는거죠. 

캐패시터 스폿은 순간적으로 빠른 전압 강하가 일어나기 때문인지

다른 용도의 스폿에는 사용하기가 힘들더군요.

2번이나 제작한 캐패시터 PCB 뭉치를 포기하려니 아까운 마음에 고민을 했습니다만

과감하게 중단하고 다시 AC 스폿기로 돌아가야 할 것 같습니다. 

 


#include <EEPROM.h>
#include <Encoder.h> // https://github.com/PaulStoffregen/Encoder
#include <U8glib.h>


U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);


//이하 핀 선언
#define encoderA 2			//엔코더 A상 - interrupt of arduino nano
#define encoderB 3			//엔코더 B상 - interrupt of arduino nano
#define encoderSW 4			//엔코더스위치
#define spotSignal 5		//스폿 출력	
#define piezo 6 			//피에조 출력
#define spotSW 7			//스폿 트리거 스위치 
#define FanControl 13		//팬 출력. pwm체크할것. 
#define VoltagePin A0		//전압체크 입력
#define tempPin A1			//온도센서 입력
#define autoSpotCheckPin A2	//오토스폿 체크 입력

//이하 음계 주파수 선언
#define B7  3951
#define C8  4186 

//이하 변수 선언
float voltage;					//전압
boolean manualMode = true;		// 수동/자동 모드 선택
boolean dualMode = false;		//듀얼모드 선택
float spotTime= 0.1;			// 스폿 시간
boolean spotFlag = false;		//스폿이 실행됐는지 아닌지 저장하는 플래그. 
double intervalTime = 1.5;		//오토모드시 인터벌 타임 
float dualTime = 0.5;			//듀얼모드시 듀얼 타임
unsigned long currentTime;		//인터벌 시간을 측정하기 위해 millis()를 저장하는 변수 
unsigned long previousTime;		//인터벌 시간을 측정하기 위해 millis()를 저장하는 변수 
char voltageChar[4];				
char temperatureChar[4];
char spotTimeChar[4];
char intervalTimeChar[4];
char dualTimeChar[4];

//EEPROM 관련 변수 선언
int spotTimeAddress = 0;
int autoTimeAddress = 10;


int menuSelect = 0;				//화면에서 선택된 메뉴를 구분하는 변수. 0=수폿시간, 1=자동/수동 선택 2=인터벌, 3=듀얼모드, 4=듀얼시간, 


//온도관련 변수 선언
#define thermistorR 10000				//써미스터 저항값
#define Coefficient 3950		//써미스터 계수
#define tempNorm 25			//보통 실온의 온도 
#define resistorR 10000			//병렬저항의 저항값
#define numSamples 3			//평균을 몇 번 낼 것인가
uint16_t samples[numSamples];
float temperature, average;	//온도, 평균온도

//엔코더 관련 플래그 변수 선언
boolean encoderFlagUp;          //엔코더에서 들어온 UP 신호 플래그(UP 행동후 false 전환)
boolean encoderFlagDown;        //엔코더에서 들어온 DOWN 신호 플래그(DOWN 행동후 false전환)
boolean SWpressedFlag = false;        //스위치가 눌렸는지 저장하는 플래그 변수 
int oldPosition  = 0;

Encoder myEncoder(encoderA, encoderB);


const uint8_t PROGMEM boot[]  = {
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x78,0x03,0xfe,0x00,
	0x00,0x7f,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0x80,0x7c,0x03,0xff,0x00,
	0x00,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0x80,0xfc,0x03,0xff,0x80,
	0x00,0xf0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x81,0x80,0xfc,0x03,0xc3,0x80,
	0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0xfe,0x03,0xc3,0xc0,
	0x00,0xe0,0x03,0x83,0x87,0x7c,0x01,0xf0,0x3b,0x9e,0x00,0x01,0xee,0x03,0xc3,0xc0,
	0x00,0xf0,0x03,0x83,0x87,0xfe,0x07,0xf8,0x3f,0x9c,0x00,0x01,0xcf,0x03,0xc3,0xc0,
	0x00,0x7c,0x03,0x83,0x87,0xff,0x0f,0xfc,0x3f,0x9c,0x00,0x03,0xcf,0x03,0xc7,0x80,
	0x00,0x3e,0x03,0x83,0x87,0x8f,0x0f,0x1c,0x3c,0x3c,0x00,0x03,0xc7,0x03,0xff,0x80,
	0x00,0x1f,0x83,0x83,0x87,0x87,0x9e,0x1e,0x3c,0x3c,0x00,0x07,0x87,0x83,0xff,0x00,
	0x00,0x07,0xc3,0x83,0x87,0x07,0x9f,0xfe,0x38,0x1c,0x00,0x07,0x83,0x83,0xfc,0x00,
	0x00,0x03,0xc3,0x83,0x87,0x03,0x9f,0xfe,0x38,0x1c,0x00,0x07,0xff,0xc3,0xc0,0x00,
	0x00,0x01,0xe3,0x83,0x87,0x03,0x9f,0xfe,0x38,0x1e,0x00,0x0f,0xff,0xc3,0xc0,0x00,
	0x00,0x01,0xe3,0x83,0x87,0x07,0x9e,0x00,0x38,0x0f,0x00,0x0f,0xff,0xe3,0xc0,0x00,
	0x00,0x83,0xc3,0xc7,0x87,0x07,0x8f,0x0c,0x38,0x0f,0xc1,0x1e,0x01,0xe3,0xc0,0x00,
	0x00,0xff,0xc3,0xff,0x87,0x8f,0x0f,0xfc,0x38,0x07,0xff,0x9e,0x00,0xe3,0xc0,0x00,
	0x00,0xff,0x81,0xff,0x87,0xff,0x07,0xfc,0x38,0x03,0xff,0xbc,0x00,0xf3,0xc0,0x00,
	0x00,0x7e,0x00,0xfb,0x87,0xfe,0x01,0xf8,0x38,0x00,0x7e,0x3c,0x00,0x73,0xc0,0x00,
	0x00,0x00,0x00,0x00,0x07,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x0f,0xf0,0x00,0x00,0x07,0x80,0x00,0x07,0x80,
	0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x7f,0xfc,0x01,0xff,0x87,0x80,0x00,0x07,0x80,
	0x00,0x03,0x80,0x00,0xff,0xff,0x00,0xff,0xfe,0x01,0xff,0x87,0x83,0xff,0xc7,0x80,
	0x00,0x03,0x80,0x00,0x3c,0x38,0x00,0xf0,0x1f,0x01,0xff,0x87,0x83,0xff,0xc7,0x80,
	0x00,0x07,0x80,0x00,0x3c,0x38,0x00,0xe0,0x0f,0x00,0x07,0x87,0x81,0xff,0xc7,0x80,
	0x00,0x07,0xc0,0x00,0x3c,0x38,0x00,0xf0,0x1f,0x00,0x0f,0x7f,0x80,0x03,0xc7,0x80,
	0x00,0x0f,0xe0,0x01,0xff,0xff,0x00,0xff,0xfe,0x00,0x1f,0x7f,0x80,0x03,0xc7,0x80,
	0x00,0x0f,0xe0,0x01,0xff,0xff,0x00,0x7f,0xfc,0x00,0x1e,0x7f,0x80,0x03,0x87,0x80,
	0x00,0x1e,0xf0,0x01,0xff,0xff,0x00,0x3f,0xf8,0x00,0x7f,0x07,0x80,0x03,0x87,0x80,
	0x00,0x7e,0x7c,0x00,0x03,0x80,0x00,0x38,0x38,0x00,0xff,0xc7,0x80,0x07,0x87,0x80,
	0x01,0xfc,0x3f,0x00,0x03,0x80,0x00,0x38,0x38,0x01,0xfb,0xf7,0x80,0x0f,0x07,0x80,
	0x03,0xf0,0x1f,0x8f,0xff,0xff,0xef,0xff,0xff,0xe7,0xe1,0xe7,0x80,0x0f,0x07,0x80,
	0x03,0xe0,0x0f,0x8f,0xff,0xff,0xef,0xff,0xff,0xe3,0xc0,0x47,0x80,0x1e,0x07,0x80,
	0x01,0x80,0x03,0x0f,0xff,0xff,0xef,0xff,0xff,0xe3,0x00,0x00,0x00,0x3c,0x07,0x80,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x07,0x80,0xf8,0x07,0x80,
	0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x0f,0xf0,0x00,0x38,0x07,0x81,0xf0,0x07,0x80,
	0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x7f,0xfc,0x00,0x3f,0xff,0x87,0xe0,0x07,0x80,
	0x0f,0xff,0xff,0xe0,0x07,0xc0,0x00,0xff,0xfe,0x00,0x3f,0xff,0x83,0xc0,0x07,0x80,
	0x0f,0xff,0xff,0xe0,0x07,0xc0,0x00,0xf0,0x1f,0x00,0x3f,0xff,0x81,0x80,0x07,0x80,
	0x0f,0xff,0xff,0xe0,0x1f,0xf0,0x00,0xe0,0x0f,0x00,0x38,0x07,0x80,0x00,0x07,0x80,
	0x00,0x00,0x00,0x00,0x7e,0x7e,0x00,0xf0,0x1f,0x00,0x38,0x07,0x80,0x00,0x07,0x80,
	0x00,0x00,0x00,0x03,0xf8,0x3f,0x80,0xff,0xfe,0x00,0x3f,0xff,0x80,0x00,0x07,0x80,
	0x00,0x00,0x00,0x01,0xf0,0x1f,0x80,0x7f,0xfc,0x00,0x3f,0xff,0x80,0x00,0x07,0x80,
	0x00,0x00,0x00,0x01,0x80,0x03,0x00,0x0f,0xf0,0x00,0x3f,0xff,0x00,0x00,0x07,0x80,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

//수동 
const unsigned char PROGMEM manual[] = {
	0x00,0x00,0x00,
	0x00,0x0e,0x00,
	0x00,0x0e,0x00,
	0x00,0x0e,0x00,
	0x00,0x1e,0x00,
	0x00,0x3f,0x80,
	0x00,0xf3,0xe0,
	0x07,0xe0,0xf0,
	0x07,0x80,0x30,
	0x00,0x00,0x00,
	0x00,0x00,0x00,
	0x1f,0xff,0xfc,
	0x1f,0xff,0xfc,
	0x00,0x0c,0x00,
	0x00,0x0c,0x00,
	0x00,0x0c,0x00,
	0x00,0x0c,0x00,
	0x00,0x0c,0x00,
	0x00,0x0c,0x00,
	0x00,0x0c,0x00,
	0x00,0x00,0x00,
	0x00,0x00,0x00,
	0x03,0xff,0xe0,
	0x03,0xff,0xe0,
	0x01,0x80,0x00,
	0x01,0x80,0x00,
	0x01,0xff,0xe0,
	0x01,0xff,0xe0,
	0x00,0x0c,0x00,
	0x00,0x0c,0x00,
	0x1f,0xff,0xfc,
	0x1f,0xff,0xfc,
	0x00,0x00,0x00,
	0x00,0x00,0x00,
	0x00,0x7f,0x80,
	0x00,0xff,0xc0,
	0x01,0xc0,0xe0,
	0x01,0x80,0x60,
	0x01,0xc0,0xe0,
	0x00,0xff,0xc0,
	0x00,0x7f,0x80
}; 

//자동
const unsigned char PROGMEM	automatic[] = {
	0x00,0x00,0xe0,
	0x00,0x00,0xe0,
	0x00,0x00,0x60,
	0x0f,0xfc,0x60,
	0x0f,0xfc,0x60,
	0x00,0x18,0x60,
	0x00,0x38,0x60,
	0x00,0x30,0x60,
	0x00,0x70,0x60,
	0x00,0xf0,0x7e,
	0x01,0xf8,0x7e,
	0x03,0x9c,0x60,
	0x07,0x0e,0x60,
	0x1e,0x07,0x60,
	0x1c,0x03,0x60,
	0x00,0x00,0x60,
	0x00,0x00,0x60,
	0x00,0x00,0x60,
	0x00,0x00,0x60,
	0x00,0x00,0x60,
	0x00,0x00,0x00,
	0x00,0x00,0x00,
	0x03,0xff,0xe0,
	0x03,0xff,0xe0,
	0x01,0x80,0x00,
	0x01,0x80,0x00,
	0x01,0xff,0xe0,
	0x01,0xff,0xe0,
	0x00,0x0c,0x00,
	0x00,0x0c,0x00,
	0x1f,0xff,0xfc,
	0x1f,0xff,0xfc,
	0x00,0x00,0x00,
	0x00,0x00,0x00,
	0x00,0x7f,0x80,
	0x00,0xff,0xc0,
	0x01,0xc0,0xe0,
	0x01,0x80,0x60,
	0x01,0xc0,0xe0,
	0x00,0xff,0xc0,
	0x00,0x7f,0x80
};



void u8g_prepare() {
  u8g.setFont(u8g_font_7x13B);		//
  u8g.setFontRefHeightExtendedText();
  u8g.setDefaultForegroundColor();
  u8g.setFontPosTop();
}


void setup() {
	pinMode(encoderSW, INPUT);
	pinMode(encoderA, INPUT);
	pinMode(encoderB, INPUT);
	pinMode(spotSignal, OUTPUT);
	pinMode(piezo, OUTPUT);
	pinMode(spotSW, INPUT_PULLUP);
	pinMode(autoSpotCheckPin, INPUT);
	pinMode(FanControl, OUTPUT);
	pinMode(VoltagePin, INPUT);
	pinMode(tempPin, INPUT);

	u8g_prepare();


    u8g.firstPage();  //두번째 로고를 그린다.
      do {
      	// drawBitmapP(X,Y,Count,H) 에서 count는 비트맵의 가로픽셀수/8, H는 세로픽셀수 이다. 
        u8g.drawBitmapP( 0, 0, 16, 64, boot);	
      }
      while(  u8g.nextPage() ) ;  
	delay(100);

	previousTime = millis();

	beepbeep();
	//Serial.begin(9600);


	//spotTime = EEPROM.read(spotTimeAddress);
	//autoTime = EEPROM.read(autoTimeAddress);
}

void loop() {

	//전압 체크
	voltage = analogRead(VoltagePin);
	voltage = voltage *(5.0/1024.0)*5.3;  //입력 아날로그값(1024)를 5V 수치로 변환시킨 후 전압분배 저항값만큼(5.3)곱한다

	//온도 체크
	for (int i = 0; i<numSamples; i++){
		samples[i] = analogRead(tempPin);
	}

	average = 0;

	for (int i = 0; i<numSamples; i++){
		average += samples[i];
	}

	average /= numSamples;
	average = 1023 / average - 1;
	average = resistorR / average;

	temperature = average / thermistorR;  // (R/Ro)
	temperature = log(temperature);					//ln(R/Ro)
	temperature /= Coefficient;				//1/B * ln(R/Ro)
	temperature += 1.0 / (tempNorm + 273.15);	// + (1/To)
	temperature = 1.0 / temperature;				// Invert
	temperature -= 273.15;					// convert to C

	//소수점 이하 자리를 2 단위로 끊기 위한 계산처리
	temperature *= 5;
	temperature = round(temperature);
	temperature /= 5; 		

	//이하 엔코더 입력 처리
	    if(digitalRead(encoderSW)==HIGH){       //스위치가 눌리면 일단 기억한다. 
	    	SWpressedFlag = true;
	    }

	    if(digitalRead(encoderSW)==LOW && SWpressedFlag==true){  //스위치가 안 눌리면, 눌렸는지 확인하고 그렇다면 아래 구문을 실행
			menuSelect++;								//스위치가 눌리면 스폿시간, 자동/수동 선택, 인터벌 시간 등을 돌아가며 선택한다
			if((menuSelect==4)&&(dualMode==false)){
				menuSelect = 0;
			}
			if(menuSelect>4){
				menuSelect = 0;
			}
			beep();
			SWpressedFlag = false;
	    }

    readEncoder();
    if(encoderFlagUp==true){ 		//상승 트리거 선택시
    	switch (menuSelect) {
    	    case 0:		//0=스폿시간, 3=듀얼모드, 4=듀얼시간, 
    	    	if(spotTime<10){
    	    		spotTime= spotTime+0.5;
    	    	}
    	    	else{
    	    		spotTime++;
    	    	}
    	    break;

    	    case 1:		//1=자동/수동 선택
    	    	manualMode =! manualMode;
    	    break;

    	    case 2:		//2=인터벌 시간 조정
    	    	intervalTime = intervalTime+0.1;
    	    	if(intervalTime>5){		//인터벌 시간이 5초를 넘지 않도록 설정. 
    	    		intervalTime = 5;
    	    	}
    	    break;

    	    case 3:		//3=듀얼/싱글모드 선택
    	    	dualMode =! dualMode;
    	    break;

    	    case 4:		//4=듀얼일 경우 시간 조정
    	    	if(dualMode==true){
		    		dualTime = dualTime + 0.5;
		    	}
    	}
    	beep();
    	encoderFlagUp = false;
    }

    if(encoderFlagDown==true){		//하강 트리거 선택시
    	switch (menuSelect) {
		    case 0:		//0=스폿시간
		    	if(spotTime<10){
		    		spotTime= spotTime - 0.5;
		    	}
		    	else{
		    		spotTime--;
		    	}
		    break;

		    case 1:		//1=자동/수동 선택
		    	manualMode =! manualMode;
		    break;

		    case 2:		//2=인터벌 시간 조정
		    	intervalTime = intervalTime - 0.1;
		    	if(intervalTime<0.5){		//인터벌 시간이 0.5초 이하가 되지 않도록 설정. 
		    		intervalTime = 0.5;
		    	}
		    break;

		    case 3:		//3=듀얼/싱글모드 선택
		    	dualMode =! dualMode;
		    break;

		    case 4:		//듀얼일 경우 듀얼 시간 조정
		    	if(dualMode==true){
		    		dualTime = dualTime - 0.5;
		    	}
			}
		encoderFlagDown = false;
    	beep();
    }

    if(spotTime<0.5){			//스폿 시간이 0이 되지 않도록 처리
    	beepbeep();
    	spotTime = 0.5;
    }
    if(manualMode == true){		//수동 모드일 때
	    if((digitalRead(spotSW)==LOW) && (spotFlag==false)){		//스폿 스위치가 눌리면 스폿한다.
	    	currentTime = millis();
	    	if(currentTime > (previousTime + (intervalTime*1000))){
	    		spot();
	    	}
	    }
	    if(digitalRead(spotSW)==HIGH){
	    	spotFlag = false;
	    }
	}
	else if((analogRead(autoSpotCheckPin)>400) && (spotFlag==false)){	//자동 모드일 때 A2핀에 2/5 이상의 전압이 걸리면
		delay(intervalTime*1000);   									//인터벌 시간 후 스폿 
		currentTime = millis();
	    	if(currentTime > (previousTime + (intervalTime*1000))){
	    		spot();
	    	}
	    }
	    if(digitalRead(spotSW)==HIGH){
	    	spotFlag = false;
	    }
	

    draw();  //OLED 그리는 함수 호출 

}






void readEncoder(){   //엔코더를 오른쪽으로 돌리는 것을 UP으로 설정한다. 
  int newPosition = myEncoder.read();

  if ((newPosition+1) < oldPosition) {      //값의 변화가 생기면 오른 값인지 내린 값인지 비교하여 Flag 설정. 
    encoderFlagUp = true;                   // +1 과 -1을 해주는 이유는 분해능 때문에 3번씩 반복되는것을 막기 위함  
  }
  if ((newPosition-1) > oldPosition) {
    encoderFlagDown = true;   
  }
	oldPosition = newPosition;
  	if(oldPosition > 32760 || oldPosition < -32760){
   	oldPosition = 0;        //int 변수의 범위를 벗어나지 않도록 고정. 
  }
}

void draw(){

	u8g.firstPage();  //화면에 기본 정보 표시 
	do {

		//수동/자동 글자 표시
		if(manualMode == true){		//수동일 경우-수동 선택 표시 
		u8g.drawBitmapP( 0, 20, 3, 41, manual);
		}
		else{							//자동일 경우	
		u8g.drawBitmapP( 0, 20, 3, 41, automatic);
		}

    	//구분선 표시
		u8g.drawLine(0, 0, 128, 0);
		u8g.drawLine(0, 14, 128, 14);
		
		//전압표시
		dtostrf(voltage,2,1,voltageChar);	
		u8g.drawStr(5,2,voltageChar);
		if(voltage<10){
			u8g.drawStr(30,2,"V");
		}
		else{
			u8g.drawStr(38,2,"V");
		}		

		//온도표시
		dtostrf(temperature,2,1,temperatureChar);	
		u8g.drawStr(73,2,temperatureChar);
		u8g.drawStr(103,2,"'C");

		//스폿시간 표시 
		u8g.setScale2x2();			
		if(spotTime<10){			//스폿시간이 10보다 작으면 위치를 조정
			dtostrf(spotTime,2,1,spotTimeChar);
			u8g.drawStr(23, 19, spotTimeChar);
			u8g.drawStr(45, 19, "ms");
		}
		else{						//10보다 크면 위치를 조정. 
			dtostrf(spotTime,2,0,spotTimeChar);
			u8g.drawStr(27, 19, spotTimeChar);
			u8g.drawStr(43, 19, "ms");
		}
		u8g.undoScale();

		//인터벌 시간 표시
		u8g.drawStr(32, 21, "I");
		dtostrf(intervalTime, 2, 1, intervalTimeChar);
		u8g.drawStr(43, 21, intervalTimeChar);
		u8g.drawStr(65, 21, "s");

		//듀얼시간 표시 
		if(dualMode == true){
			u8g.drawStr(80, 21, "D");
		}
		else{
			u8g.drawStr(80, 21, "S");
		}
		dtostrf(dualTime, 2, 1, dualTimeChar);
		u8g.drawStr(91,21, dualTimeChar);
		u8g.drawStr(113, 21, "ms");

		//선택된 부분에 사각형 표시
		switch (menuSelect) {		//0=스폿시간, //1=자동/수동 선택 2=인터벌, 3=듀얼모드, 4=듀얼시간, 
		    case 0:
		    	u8g.drawRFrame(35, 35, 92, 29, 4);		//스폿시간
		    break;

		    case 1:
		    	u8g.drawRFrame(0, 18, 25, 46, 3);		//수동/자동
		    break;
		    
		    case 2:
		    	u8g.drawRFrame(28, 18, 47, 17, 3);		//인터벌
		    break;
		    
		    case 3:
		    	u8g.drawRFrame(76, 18, 13, 17, 2);		//듀얼모드/싱글모드
		    break;
		    
		    case 4:
		    	u8g.drawRFrame(88, 18, 40, 17, 3);		//듀얼일 경우 듀얼 시간 
		    break;
		}

		//u8g.drawRFrame(20, 40, 20, 20, 3);  //시작점(왼쪽 위)의 X좌표, Y좌표, 박스의 폭, 박스의 높이, R값
	}
	while(  u8g.nextPage() ) ;   
}

void spot(){
	spotFlag = true;
	digitalWrite(spotSignal, HIGH);
	delayMicroseconds(spotTime*1000);
	digitalWrite(spotSignal, LOW);
	if(dualMode==true){
		delayMicroseconds(dualTime*1000);
		digitalWrite(spotSignal, HIGH);
		delayMicroseconds(spotTime*1000);
		digitalWrite(spotSignal, LOW);		
		beep();
	}
	beep();
	previousTime = currentTime;
}

void beepbeep(){
  tone(piezo, B7, 50);
  delay(100);
  tone(piezo, B7, 50);
  delay(100);
}

void beep(){
  tone(piezo, C8, 30);
  delay(40);
}

728x90
728x90

이케아의 skarsta 모델입니다. 물론 나중에 모터를 달아줄 생각이고요

 

 

 

 

 

 

 

 

여기에 추가로 피봇기능이 있는 모니터 암을 달았습니다. 

모니터 암을 구하는 과정이 꽤나 힘들었습니다. 

제가 쓰는 모니터는 38인치인데다 오픈프레임 모델이라 전부 철판으로 만들어져 있어 무게가 16킬로나 됩니다. 

 

 

 

 

 

 

 

이걸 버틸만한 모니터 암은 애초에 많지 않은데 여러 가지로 고민하다가(주로 금전적으로)

아마존에서 vivo 사의 heavy duty 모델을 골랐습니다. 

다행히 모니터를 충분히 버텨주더군요.

다만 vesa 마운트 크기가 맞지 않아서 국내에서 어댑터를 구해 끼웠습니다. 

여기에도 모터를 달고 싶

 

 

 

 

책상을 올리고 모니터를 돌리면 거의 천장까지 닿는군요. 

 

 

 

 

 

 

책상 하단에는 다이소 철망을 사서 구부리고 3D프린터로 출력한 브라켓으로 달아줬습니다. 

원래 전선 정리용 거치대를 사서 붙이려고 보니 하나같이 매우 비싸더군요

 

 

 

 

책상에서 모니터를 보거나 할땐 허리를 펴고 앞을 보고

납땜하거나 뭔가 제작할 때에는 책상 바닥을 봐야 하죠.

이 두 포지션의 높이가 참 서로 안 맞습니다. 

그래서 스탠딩 데스크를 한참 노리다가 이사하면서 중고나라에서 쿨매물을 발견해서 업어왔습니다. 

 

모니터는 커서 좋지만 반면에 책상 끄트머리에 놓아야 할 수밖에 없었습니다. 

그래서 뭘 자세히 보려면 책상으로 목을 거북이처럼 뻗어야 하는게 영 불편하더군요. 

 

이번에 이 두가지 결합으로 마음대로 위치를 바꿀 수 있어 참 편해졌습니다. 

728x90
728x90

가끔 소형화된 물건을 만들기 위해 Atmega328이나 Attiny85 칩을 PCB에 직접 올려 온보드된 아두이노 제작을 할 때가 있습니다. 

그런데 그때마다 별도의 브라켓을 사용하거나 선을 따거나 해야 해서 매우 불편하더군요. 

USBASP나 AVRISP 짭 등 여러가지를 시도해 봤지만 마지막엔 Arduino ISP가 제일 편했고요. 

 

그래서 제가 주로 쓰는 칩만 모아서 편하게 프로그램할 수 있는 ISP를 만들기로 했습니다. 

 

회로는 단순합니다만 ZIP 소켓과 TQFP32 소켓 주문이 매우 오래 걸려 배송됐는데 그나마도 실수로 잘못 주문하는 바람에 제작에는 거의 반년이 걸려 버렸습니다.

 

 

 

Attiny85 의 DIP 형과 SOIP, Atmega328의 DIP과 TQFP 패키지를 올릴 수 있습니다. 

 

 

 

 

 

간단하게 Attiny85에 Blink 소스를 수정해서 올리고 테스트해봤습니다. 

 

 

728x90

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

STM32 보드를 아두이노로 사용하기.  (0) 2020.05.09
중고 배터리와 배터리 테스터  (0) 2020.04.05
공기 청정기 필터 어댑터.  (1) 2020.01.30
디지털 멀티미터 프로브 단자 교체.  (0) 2019.12.03
CNC 정비.  (0) 2019.11.19
728x90

 

PCB를 조립하고 테스트 스폿을 했을 때 니켈판이 전혀 붙지가 않더군요

 

 

 

 

 

 

 

전압을 높이고 별짓을 다해도 붙질 않았습니다. 

커터칼 없이 니켈판만 대고 해보면 구멍을 뻥뻥 뚫을 정도로 강력한데 이상하더군요.

 

 

 

 

 

 

 

 

 

전부 분해해서 접점을 깨끗하게 연마했습니다. 

 

 

 

 

 

반짝반짝 광나게 닦았습니다. 

스폿 용접기는 저전압 고전류를 사용하는지라 작은 저항의 차이도 큰 변화를 가져옵니다. 

 

 

 

 

 

 

 

동 부스바는 표면산화가 빨라서 금방 원래대로 될 것 같더군요.

프로젝트 원저자가 사용하던 Noalox라는 접점용 산화 차단제를 발라봤습니다. 

근데 이 용액 자체는 전도도가 0이던데 접점에 사용해도 전기 전도에 영향이 없는지 모르겠네요

 

 

 

 

 

 

잘 연마하고 잘 조립했더니 체감상 성능이 좋아졌습니다만 결과는 마찬가지로 잘 안붙더군요.

니켈도금판이 아닌 순수 니켈판으로 해봤더니 아주 잘됩니다. 

검색해보니 커터칼에는 워낙 잘 안붙는 경우가 있답니다.

니켈도금판과 커터칼 조합은 잘 안되는것 같습니다. 

 

 

 

 

 

 

 

어쨋건 성능문제는 해결했습니다.

길쭉한 부스바를 잘라내고 용접봉이 전면을 향하게 90도 절곡을 하기로 했습니다. 

 

 

 

 

 

 

생각보다 꺾는게 굉장히 힘들더군요.

일반 펜치 정도로는 절대 불가능합니다. 

바이스와 바이스 클램프를 사용해서 간신히 45도 정도 꺾고 바이스에 물린채로 망치질해서 90도 만들어줬습니다. 

표면이 울퉁불퉁해져서 다시 사포질로 매끈하게 정리했습니다. 

 

 

 

 

 

 

테스트해보니 수정하고 싶은 부분이 좀 생겼습니다. 

아두이노의 전원을 따로 만들어 2원화 하거나 전원보강을 해 줘야 할 것 같습니다. 

스폿후 캐패시터 충전하느라 전류가 딸려 OLED 화면이 깜박깜박 합니다. 

캐패시터 충전시 순간 요구하는 전류랑이 상당해 어댑터가 리셋될 가능성이 높습니다. 

CC-CV 모듈을 사용해 전류를 제한해야 하지 않을까 싶네요. 

오토스팟 기능도 확인해 봐야 할 것 같습니다. 

이제 슬슬 외형 설계를 들어갈 차례네요. 

728x90
728x90

 

화단 가꾸기는 참 느긋한 취미인듯 합니다. 

작년의 실수를 올해에 수정하고 있네요. 

올해는 날씨를 봐 가며 영하권을 벗어나는 걸 확인하고 바로 모종을 정식했습니다. 

 

 

 

아직 식물을 구별하는 눈은 키우지 못해서 뭔질 모르겠네요. 

작년에 심었던 꽃씨가 저절로 발아해서 자랐습니다.

일단 여기저기 흩어져 있는 모종을 한쪽으로 모아두기만 했습니다. 

 

 

 

 

 

 

나머지는 삽으로 땅을 고르고 퇴비를 섞고 조금씩 집단별로 심었습니다. 

꽃의 높낮이로 조화를 이루는 걸 하고 싶긴 하지만 아직까진 뭐가 얼마나 자랄지, 어떻게 심어야 예쁠지 모릅니다. 

작년 가을에는 처음으로 무스카리 구근을 거둬서 따로 심었다가 정식했습니다.(가운데 하단)

무스카리는 잡초처럼 잘 자라긴 하는데 관리가 안돼서 잡초처럼 보인다는게 문제네요.

 

 

 

 

 

 

튤립 구근 뒤로 수레국화

 

 

 

 

 

 

오른쪽에는 로벨리아. 

로벨리아는 꽃도 오래가고 자잘하게 많이 피어서 화단 앞쪽에 왕창 심기 괜찮더군요. 

가운데는 금어초. 좀 더 자란다음 나눠서 심었어야 하나 싶네요. 

 

왼쪽의 쪽파줄기같은건 이름을 모릅니다. 어느정도 자란다음에 인터넷 검색해볼 예정. 

728x90

'Gardening' 카테고리의 다른 글

올해의 모종.  (0) 2020.01.26
겨울모종.  (0) 2019.12.15
가드닝 일기.  (0) 2019.04.17
포트에 심었던 모종들 일부 정식.  (0) 2019.04.06
새 식물 LED 투입, 2단으로 변경  (0) 2019.03.30
728x90

지난 포스트(링크) 에서도 얘기했지만 프린터 사용량이 참 많습니다. 

그래서 참 불편한 것 중 하나가 있습니다.

프린터 출력이 끝난 뒤 베드에서 출력물을 제거하기 전에는 새 프린팅을 할 수 없다는거죠. 

 

 

당연한 것이지만 집에 있을 때 출력이 완료됐다는 텔레그램 봇의 메세지를 보면 다시 달려나가서 새 출력을 걸고 싶을때가 많습니다. 

 

 

 

 

 

 

 

 

[이미지 출처 : https://blackbelt-3d.com/ ]

이 프린터가 처음 나왔을때는 저렴한 카피가 나오지 않을까 좀 기대를 했습니다만

몇년이 지난 지금도 딱히 소식이 없네요.

 

 

 

 

 

 

 

최근에 유튜브를 보다가 비슷한 물건을 발견했습니다. 

white knight 라는 제품명이 붙은 물건입니다. 

특이한 것은 오픈 소스입니다. 설계 파일과 모든 도면이 공개되어 있습니다. 

https://github.com/NAK3DDesigns/White-Knight

 

NAK3DDesigns/White-Knight

White Knight Belt Printer. Contribute to NAK3DDesigns/White-Knight development by creating an account on GitHub.

github.com

 

 

 

 

 

 

하지만 부품 비용들이 상당한 문제가 있습니다. 

다른 부품들은 갖고 있는 것으로 대체하거나 직접 설계해서 출력하거나 할 수 있습니다.

하지만 벨트 부품은 대체가 불가능할 뿐더러 가격이 저가형 프린터 1개를 넘기 때문에 예산을 많이 초과합니다. 

또한 제가 필요한 것은 '다른 출력물을 연속해서 출력하는 것'이지

'프린터 베드 넓이를 벗어나는 대형 출력을 하는 것'은 아닙니다. 

 

 

 

 

 

 

 

그러니까 제가 원하는 것은 이런 형태의 베드가 되겠네요

 

 

 

 

 

 

벨트 대신 스텐레스 박판을 사용해 보려 합니다.

내열 테이프 등으로 잘 붙이거나 스폿 용접 등으로 연결할 수 있지 않을까 합니다. 

 

 

 

 

 

 

 

 

 

 

 

 

CR-10S 베드에 장착할 생각으로 설계중입니다. 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

요즘 쉴새없이 프린팅을 했더니 베드 센서선에 단선이 일어났습니다. 

고치고 며칠 쓰니 노즐이 자주 막히는 현상이 일어나서 확인해 보니 옆으로 새기도 하고 실리콘 삭스는 찢어져 있네요

요즘 PETG를 실험해 보느라고 230도 이상의 고온에서 열심히 돌린 탓인 듯 합니다. 

정비를 끝내고 필라멘트를 얼마나 사용해 왔는지 궁금해서 구매기록을 찾아봤습니다. 

 

 

 

 

필라멘트를 대량으로 사용하다 보니 비용 부담에 타오바오 직구를 애용합니다. 

 

 

 

 

 

 

 

생각보다 구매기록이 많군요.. 

내친김에 국내에서 구매했던 쇼핑몰 기록도 뒤져서 쭉 적어봤습니다. 

 

--------------->14년 12월 첫 3D 프린터 - 델타 K800 구입. 

<이후 중간기록 찾을 수 없음>

16년 11월 2롤 - 국내구입
17년 3월 4롤

---------------->17년 8월 자작 CoreXY 완성 
17년 9월 3롤 - 국내구입

18년 5월 5롤

18년 7월 10롤

18년 8월 4롤

---------------->18년 늦여름쯤 CR-10S 구입. 
18년 10월 7롤
18년 11월 5롤
18년 12월 10롤 + 1롤 (PETG)
18년 11월 5롤

---------------->19년 3월 - Prusa MK3 구입
19년 4월 6롤
19년 6월 10롤
19년 10월 5롤
19년 11월 3롤
19년 12월 2롤 + 8롤(PETG)

 

구매이력이 확실히 있는 3년 1개월간 총 90롤을 구매했네요. 

지금 쌓여있는 롤들을 제외하고 대충 계산하면 1달에 2.4롤 가량 되는군요. 

 

인터넷을 찾아보니 PLA의 밀도는 1.24g / cm^3 라 하는군요. 

1kg 의 PLA의 부피는 1000/1.24 = 806.45cm^3 이겠고요.

 

1.75mm 필라멘트의 단면적은 

(0.175 / 2)^2 * 3.1415 = 0.024cm^2 이고

0.024 * X = 806.45 가 되는 X의 길이는 336미터 정도 되는군요. 

 

 

 

 

 

슬라이서 돌려보면 1시간에 필라멘트 2.2미터 가량 소비하는 듯 합니다. 

336 / 2.2 = 152.72 시간이고

30으로 다시 나누면 매일 5시간 가량 돌려야 하는군요. 

월 소비량이 2.4롤이니 5*2.4 = 12시간 입니다. 

프린터를 2대 운용하는 기간도 꽤 있었지만 3년내내 쉬지않고 프린터가 매일 12시간 넘게 돌아갔단 얘기가 되네요.

 

참 많이도 썼군요

728x90
728x90

 

이미 시중에 많은 공기 청정기가 나와있죠.

 

 

 

 

처음에는 자동차용 에어컨 필터를 이용해서 DIY를 하는 분들이 계셨죠. 

한두군데 업체에서 대량생산 납품을 하기 때문에 가격은 저렴하고 성능은 공기청정기 필터에 뒤떨어지지 않습니다. 

다만 가정용 공기청정기 필터와 달리 등급분류가 써 있지 않기 때문에 성능 좋은 필터를 찾으려면 구글링을 많이 해야 합니다. 

 

저도 작년 초에 한번 만들어 보려고 필터만 사 뒀는데 영 안 하게 되더라고요

 

 

 

 

집에서 사용하는 삼성제 공기정화기는 필터가 다소 비싼 편이지만 호환필터는 딱히 부담될 정도는 아닙니다. 

장점이라면 완제품이기에 팬소음도 조용하고 먼지 상태에 따라 자동으로 조절도 되고요. 

 

 

 

 

그래서 DIY하기에 애매한 상태로 한참 지났습니다.

그러다 최근에 공기청정기 필터 상태를 보려고 열었다가 아이디어가 떠올랐습니다

삼성 필터의 면적은 305*277이고 제가 구입한 차량용 에어컨 필터의 면적은 262*226 입니다. 

면적은 70%고 5~6천원선에 구매했으니 결국 공기청정기 필터와 가격차이가 그리 심한것도 아니네요.

 

일단 차량용 필터의 크기가 작으니 어댑터를 만들면 되지 않을까? 하는 생각이 들었습니다. 

 

 

 

 

 

퓨전에서 설계하고 출력이 가능하도록 4분할 했습니다. 

에어컨 필터는 4면중 양쪽 2면이 단단하게 벽이 세워져 있고 2면은 흐늘하게 늘어집니다. 

안쪽에 고정이 되도록 2면만 턱을 만들어서 걸리도록 했습니다. 

 

 

 

 

출력된 부품을 가조립해 봤습니다. 수정 한두번은 각오했는데 그럭저럭 괜찮게 맞는 것 같네요

 

 

 

 

 

 

 

본드로 결합하고 문풍지 테이프를 준비합니다. 

 

 

 

 

 

 

 

약간 잘라서 폭을 맞췄습니다. 

 

 

 

 

 

 

 

필터를 끼워보니 얼추 맞습니다. 

가운데는 받쳐주는 부분이 없어 살짝 떠 보이는데 반대쪽에서 문풍지 스폰지가 밀어주고 있습니다. 

 

 

 

 

 

 

 

 

 

소음없이 조용하고 잘 되네요

728x90

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

중고 배터리와 배터리 테스터  (0) 2020.04.05
아두이노 ISP 용 범용보드 제작.  (3) 2020.03.03
디지털 멀티미터 프로브 단자 교체.  (0) 2019.12.03
CNC 정비.  (0) 2019.11.19
PLA 재생용 세절기 연구.  (0) 2019.10.31
728x90

작년에 키운 꽃들은 성과가 그리 좋진 않았습니다. 

발아단계에서 잘못된 조명으로 성장하지 못한 씨앗들이 많았고 파종시기도 한참 늦었죠. 

이번에는 화단에서 겨울전에 미리 무스카리 구근들을 파내어 정리했습니다. 

따로 구매한 튤립 구근들도 이번에 심었더니 잎이 쑥쑥 올라오더군요. 

여러 씨앗들도 파종해서 싹이 올라오는 것들은 따로 정리하고 

아예 발아되지 않는 것들은 폐기하고 있습니다. 

 

로즈마리는 씨앗으로 키우는걸 2년 연속 실패해서;

모종을 하나 사서 키우며 꺾꽂이로 조금씩 늘리려고 합니다. 

 

 

 

 

 

 

추가로 버섯재배를 하고 있습니다. 

커피가루를 버리려다가 커피가루에 버섯 포자를 키우는 키트 생각이 났습니다.

커피가루 100%는 아닌거 같고 뭔가 섞어 쓰는 것 같아 찾아봤습니다. 

면실피는 목화씨의 껍질을 모은 것, 면실박은 목화씨에서 기름을 짜낸 후의 찌꺼기,

비트펄프는 사탕무에서 즙을 짜낸 후의 찌꺼기라네요. 

 

 

외국의 예를 검색해 보니 살균된 지푸라기나 톱밥 등을 10~20% 정도 추가하는걸 권장하는군요. 

 

저는 그런게 없어서 일단 그냥 커피 찌꺼기 100%에 팽이버섯 뿌리를 섞어 두었습니다. 

며칠 지나니 이렇게 포자가 자라는 모습이 보이네요. 

온도도 맞지 않는데 그래도 열심히 자라는 것 같아 신기하군요. 

 

728x90

'Gardening' 카테고리의 다른 글

모종 정식.  (0) 2020.02.25
겨울모종.  (0) 2019.12.15
가드닝 일기.  (0) 2019.04.17
포트에 심었던 모종들 일부 정식.  (0) 2019.04.06
새 식물 LED 투입, 2단으로 변경  (0) 2019.03.30
728x90

Fusion360에서 New Electronics Design 을 통해 스키메틱을 만들 수 있습니다. 

 

 

 

 

 

개인적으로는 퓨전의 화면 구성은 좀 마음에 들지 않습니다. 

아이콘이 너무 크고 화면을 효율적으로 보여 주지 못하는 느낌이 있습니다. 

지금 스크린샷에서도 보이듯 기본 화면에서 작업공간이 차지하는 면적이 50% 정도 밖에 안됩니다. 

아이콘 크기 조절도 불가능하고 창을 이리저리 옮겨도 봤는데 일단 상단 메뉴가 움직이질 않아서 소용없더군요. 

 

 

 

 

 

 

이글캐드에 있던 간단한 회로를 한번 따라 그려보겠습니다. 

왜 이 회로를 골랐냐 하면 Fusion360에 포함된 이글캐드는 라이브러리가 엄청 빈약하기 때문입니다. 

 

 

 

 

 

물론 좋은 점도 있는데 EagleCad의 라이브러리는 솔직히 말해 중구난방인 느낌입니다.

각기 다른 사람이 만든 라이브러리들을 적당히 모아놓은 듯 하죠.

Fusion360의 라이브러리는 일괄적으로 잘 정리되어 있고 3D package까지 100% 구현되어 있습니다.

 

 

 

 

 

하지만 아무리 그래도 현재로선 라이브러리가 너무 빈약하네요. 

 

 

 

 

 

 

 

전반적으로 큰 차이는 없습니다. 

아쉬운 점이라면 view 명령하고 net 선택시 선이 하이라이트 되질 않습니다. 

제가 옵션을 잘 못봤을 수도 있겠지만요. 

 

 

 

 

 

 

보드 파일 작업하다가 에러가 났네요. 

여기까지만 하겠습니다. 

 

 

결론은 나쁘진 않은데 라이브러리도 없고 좀 더 업데이트를 기다려 봐야겠다는 생각입니다. 

728x90
728x90

모종에 스프레이를 줄 때 미용실 분무기를 사용하다 보면 손이 아픕니다.

물을 자주 채워야 하는데다가 스프레이가 자주 고장나서 불편하더군요. 

소형 전동 스프레이가 없나 하고 찾다 보니 알리에 있었습니다. 

몇가지 모델이 있긴 한데 3리터짜리는 너무 큰 듯 하고

2리터급에 호스가 휘어지는 점이 맘에 들어 이걸로 골랐습니다. 

 

 

 

 

 

 

충전기와 케이블이 들어 있습니다. 충전기는 버려야겠군요. 

 

 

 

 

 

 

 

충전시 빨간색으로 불이 들어오고, 완충되면 꺼집니다. 

 

 

겉 마감은 그럭저럭 보통이고, 속 마감은 안좋습니다. 

분해가 가능하면 좋겠는데 상하부 플라스틱을 접착해 놓아서 불가능하네요. 

 

 

 

 

 

 

 

 

상부 뚜껑을 열어서 급수할 수 있지만 하부 물통도 분리해 보았습니다. 

그런데 하부 물통은 시계 방향으로 돌려 여는게 아니고 반시계 방향으로 돌려야 열리네요. 

사자마자 부술 뻔 했습니다. 

 

 

 

 

 

다른 형태의 분무기 중에서 이걸로 고른 이유는 분무호스가 휘어지기 때문인 것도 있습니다. 

 

 

 

 

 

 

 

상부 캡을 열고 바로 물을 부을 수 있습니다. 

스위치를 1번 누르면 약하게 분무되고 한번 더 누르면 강하게 분사됩니다. 

3번째 누르면 꺼집니다. 

 

 

 

물 많이 담을 수 있고 분무도 굉장히 잘 됩니다.

강하게 분무할 때는 살짝 물 연막을 만들 수 있을 정도네요. 

마감은 조금 아쉬운 부분이 있긴 한데 신경쓰일 정도는 아니고요. 

내부 실리콘 호스가 잘 고정되진 않는데 처음 한번 말고는 아직 빠진 적은 없네요. 

맘에 드는 물건입니다. 

 

 

 

728x90
728x90

왜 보통 흔히 그런 말 하지 않나요?

물건을 찾다 찾다 못찾아서 새로 사면 그때 나온다고.

 

 

 

 

 

 

 

 

 

 

 

저는 찾다 찾다 못찾아서 새로 만들었더니 다음날 나왔습니다.  

어처구니가 없네요

 

 

 

 

 

 

 

전부 떼서 새 PCB로 옮겼습니다. 

납을 하도 먹여서 떼는것도 힘드네요.

 

 

 

 

 

 

이글캐드에서 Fusion360으로 바로 3D 모델링을 작성하는 기능이 있습니다. 

물론 부품 라이브러리에 3D Package가 같이 있어야 합니다. 

일단 캐패시터 3D Package만 작성해서 임포트 해봤더니 저렇게 나오는군요. 

FET가 허공에 떠있긴 하지만 나름 괜찮은 것 같습니다. 

나중에 케이스 만들 때 유용할 것 같네요.

 

 

 

 

 

 

핀 간격을 조절해서 앵글 핀헤더끼리 바로 끼워지도록 만들어 봤습니다. 

728x90
728x90

 

스팟용접기 PCB가 새로 왔습니다. 

이번엔 블루로 해봤는데 생각보다 진해서 별로 안이쁘군요. 청색이 아니라 남색에 가깝습니다. 

PCB 복붙할때 Part Number가 살아있어서 다른 PCB로 간주되니 추가금 내라는 메일이 왔습니다.

수정해서 다시 보낼까 하다가 주말 직전이라 며칠 까먹게 되는게 싫어서 5$ 추가금 줬습니다. 

 

 

 

 

 

스팟 방전시 PAD에 저항이 있는 듯 해서 라이브러리를 널찍하게 수정했습니다. 

Top 면으로 올라가는 PAD에는 via를 잔뜩 넣었습니다. 

 

 

 

 

 

 

 

납땜하려니 실납 한가닥으로는 한참을 땡겨야 충분히 들어가서 불편하더군요

아예 여러가닥을 묶어서 밧줄처럼 만들어 납땜했습니다. 

 

 

 

 

 

 

 

뮤직박스 펀처 PCB를 수정했습니다.

12V->5V 전환을 외부 강압회로를 사용하게 만들고 실수로 좌우반전되었던 SD카드 핀배치를 정상으로 수정했습니다. 

 

 

 

 

 

 

 

보쉬 전동공구를 쓰다보니 당연히 보쉬 배터리가 있습니다. 

배터리 전원을 사용하는 인두기(링크)를 제작한 적이 있는데 쓰다보니 참 편해서 좋습니다. 

다른 프로젝트에도 배터리를 간편하게 탈착해서 만들면 좋겠다 싶어 연결 어댑터를 만들 생각입니다. 

치수를 재서 간단하게 만들었습니다만 가로폭이 20mm 이하면 가공이 힘들다고 9$ 추가금을 요구했습니다.

두번이나 추가금 요구를 받으니 기분이 별로였습니다. 

그래도 개당 가격 환산하면 딱히 비싼건 아니란 생각에 그냥 주문했습니다. 

 

 

요렇게 부러뜨려서 사용합니다.  배터리 연결 핀이 1mm 두께라 1mm PCB로 만들었습니다. 

 

 

 

 

 

 

 

 

요건 부트로더 굽는 용도의 아두이노 ISP입니다. 

스마트 팬 컨트롤러(링크) 처럼 보드를 작게 만들어야 할 때 ISP핀을 빼버리고 싶을때가 많습니다. 

그러려면 납땜전에 미리 부트로딩을 해야 하기 때문에 별도의 보드를 만들었습니다. 

전에 만들어 쓰던게 있긴 한데 ATTINY85와 ATMEGA328을 별도로 만들어 사용하다 보니 거추장스러워 하나로 합쳤습니다.

 

 

 

 

728x90
728x90

메이커 페어가 끝난 이후 11월 초부터 스폿 용접기를 완성하려고 했습니다. 

그런데

저 캐패시터 PCB 덩어리가 보이질 않더군요. 

10개 묶음이라 대체 어디 구석에 짱박혀 보이지 않을 부피가 아닌데 말이죠.

찾다보면 어디선가 나오겠지.. 하면서 생각나면 여기저기 뒤져보길 반복했습니다.

그런데 안나와요. 

설마 이번엔 찾겠지 하면서 뒤엎길 여러번... 

그런데 안나와요.

거진 6개월을 기다렸습니다.

그런데 정말 안나오네요...

 

 

 

 

 

 

결국 같은 부품을 재주문했습니다.

 

 

 

 

 

 

이참에 PCB도 약간 수정했습니다. 

캐패시터 다리의 솔더면을 최대한 넓게 수정해서 저항을 줄이고

PCB끼리 연결되는 점퍼의 간격을 조절해서 앵글 핀헤더 사용시 그냥 옆으로 끼워서 연결되도록 했습니다.

 

별로 의욕이 안 생기는 작업이지만 그래도 이번엔 완성까지 쭉 달려보도록 해야겠습니다. 

728x90
728x90

말씀드렸다시피 기존 소지품이 판매가 되었습니다. 

보내드리기 전에 점검하다가 보니 수정해야 할 부분들이 생겨 많이 수정을 하게 됐네요

기다려주신 구매자분들께 감사드립니다. 

 

 

 

오른쪽같이 통로가 좁으면 가끔 종이가 꽉 끼어서 내려오지 않는 경우가 있습니다. 

왼쪽처럼 넓게 수정했습니다. 

 

 

 

 

 

종이가 통로에 끼면 뚫리긴 하는데 뜯어지질 않아서 그대로 붙어있게 됩니다. 

수정후에는 잘 떨어져서 쓰레기통으로 잘 모입니다. 

 

 

 

 

 

조립하고 작동테스트하다가 5V 레귤레이터가 탔습니다.

원래 발열이 엄청 심하던 상황이라 작동되더라도 수명이 길지는 않을 것 같아 수정에 들어갔습니다. 

확인해 보니 LM1117이 감당해야 하는 전류량이 너무 높더군요. 

 

 

 

 

 

 

센서와 칩 별로 별도의 LM1117을 배당해서 전류를 여유있게 쓰도록 해봤습니다. 

발열은 줄었으나 LCD가 제대로 나오지 않는 문제가 발생. 

이틀에 걸쳐 원인을 찾았으나 모르겠더군요. 

 

 

 

 

 

LM1117 DC Step down converter를 사용해서 12V -> 5V로 별도 전원을 만들어주었습니다. 

잘 되네요

 

 

 

 

 

 

 

며칠동안 고생은 했지만 그래도 기존에 미흡하고 불안했던 부분이 다 수정되어 좋군요. 

 

 

728x90
728x90

뮤직박스 카페와 인스트럭터블스의 제작기 말미에

메이커페어 출품 기기를 처분한다고 써놨는데요.

딱히 팔아서 이득을 남기려는 목적은 없었습니다.

다만 이게 1대분 재료비가 20만원에 육박한 물건이다 보니 3대를 끌어안고 있느니 팔리면 다행이다 싶었죠. 

부품 상태로 보관하면 언젠가 또 쓰긴 하겠지만 보관도 일이고요. 

판매 가격도 거의 재료비+조립공임 정도로 올려놨는데 그래도 한개씩 한개씩 없어지긴 했군요. 

 

2대가 거의 동시에 팔렸는데 1대는 프랑스에서, 1대는 국내에서 연락이 왔습니다. 

출고전 전부 재검수하고 있습니다.

전시회때는 계속 분해조립하다 보니 록타이트 등을 바르지 않고 조립한 볼트가 많아요. 

살짝 높이 변경과 볼트구멍 위치가 변경된 버전이 있는데

그 부품끼리도 섞여있어서 다 뒤집어엎고 록타이트 발랐습니다. 

 

 

 

 

 

하판 부품은 하나 모자라서 출력.

날씨가 추워서 브림은 최대한 넓게 잡고 출력하는 중입니다. 

 

며칠간은 이거 조정하는데 써야겠네요

728x90
728x90

전기에 대해서 잘 아는것은 아니지만 220V 배선을 하다 보면 알아야 하는 지식이 있습니다. 

우리가 쓰는 전기는 단상으로 1개의 전선이 활선이고, 다른 한개의 선이 중성선입니다. 

차이라면 중성선은 맨손으로 만져도 감전이 안됩니다. 

전기적으로 자세히 설명할 능력은 없네요

그리고 여기에 접지선이 추가가 되죠.

가끔 오래된 건물이나 일부 연장된 내부선에서 전선을 연결하다 보면 접지선이 없기도 합니다. 

3선이 다 있고 제대로 선이 연결되어 있으면 일반 테스터로 활선을 찾을 수 있지만 2선만 있는 경우는 힘들죠.

 

전자 제품에 따라 이런 활선/중성선을 반대로 꽂으면 좋지 않은 것도 있고

그렇게 연결했을 때 다른 제품에 누전이 생길 수도 있기 때문에 정석대로 하는 게 좋습니다.

 

하지만 위와 같은 문제로 중성선을 찾기 힘들 수 있는데요.

그럴때 사용하는 것이 이런 검전기입니다.

 

더 싼 제품도 있지만 알리익스프레스에서 Fluke 제품을 괜찮은 가격에 팔고 있더군요. 

아마존보다 더 쌉니다. 

 

 

 

 

정품 맞습니다. 플루크 제품이라 튼튼하게 잘 만들었네요.

사용법도 스위치 한개로 켜고 끄는게 전부라 설명할 거리가 없군요.

 

 

 

 

 

 

왼쪽에 대면 LED와 함께 비프음이 나고, 오른쪽에서는 반응이 없는 것을 볼 수 있습니다. 

왼쪽이 활선입니다. 

 

728x90
728x90

씨앗이 대체 어떻게 섞인건지 모르겠습니다. 

보관해놓은 씨앗을 심어서 나오는 모종을 보면 영판 다른녀석이 자라고 있는 경우가 태반이군요

그냥 되는대로 키워보고 어느정도 자라면 이름을 알아내서 씨앗의 라벨을 수정해야 할 것 같습니다. 

 

 

 

 

올해는 화단에 있던 무스카리를 뽑아서 구근을 다 분리하고 정리해봤습니다. 

이게 모여서 피면 귀엽고 예쁜데 관리를 안해주다보니 한쪽에서 대충 잡초처럼 자라고 있었거든요

LED 광원은 예전에 쓰던게 알고보니 다육용 LED였습니다.

중국에서 직구하다 보니 설명을 잘못보고 옵션을 잘못 누르는 바람에.. 

청색광이 강하게 섞여있어 이걸로 키우면 적색이 진하게 올라옵니다. 

새로 구입한 LED는 괜찮은 것 같습니다. 

 

(광고)(광고)안쓰게된 다육용 LED 팝니다. 성능 좋아요 27와트이고 다육전용으로 스펙트럼이 맞춰져있습니다.
적색+청색 조합해서 만든 기판이 아니라 아예 다육전용으로 제조된 LED를 사용한 제품입니다. 

제가 같은 제품으로 다시 구입할만큼 성능이나 만듦새 괜찮습니다. 
자세한 내용은 https://cafe.naver.com/joonggonara/685554855 참조하세요

 

 

모종 키우기에 딱 적당한 화분 찾다가 못찾겠어서 직접 만들었습니다. 

안쓸때 정리하기 편하게 쌓을 수 있도록 만들었더니 좋네요. 

thingiverse에 stackable flower pot 으로 올렸으니 필요하신 분은 찾아보시길. 

 

 

 

728x90

'Gardening' 카테고리의 다른 글

모종 정식.  (0) 2020.02.25
올해의 모종.  (0) 2020.01.26
가드닝 일기.  (0) 2019.04.17
포트에 심었던 모종들 일부 정식.  (0) 2019.04.06
새 식물 LED 투입, 2단으로 변경  (0) 2019.03.30
728x90

해당 멀티미터에 대한 설명 : https://blog.naver.com/twophase/220946169832

 

VC99의 가성비를 압도하는 6000 카운트 $11 멀티미터

3주 전 알리에서 멀티미터를 뒤지다가 (이건 나의 병...),가격에 비해 너무나 환상적인 스펙의 제품을 발견...

blog.naver.com

성능이나 기능이 아주 좋으면서도 가격이 저렴해 2개나 사서 애용하고 있었던 물건입니다.

하지만 언젠가부터 단자의 접촉이 부실해져 측정에 문제가 생기기 시작했습니다. 

테스터 단자끼리 서로 접촉시켜도 10옴 이상에서 심하게는 몇십옴 까지 나옵니다. 

 

 

 

 

 

 

 

분해하면 내부는 이렇게 되어 있습니다.

단자도 그렇고 테스터 프로브도 그렇고 저렴한 니켈도금이라 이런 문제들이 생깁니다. 

저렴한건 좋은데 이런 디테일에서 가끔 그냥 돈 좀 더 쓰지 하고 아쉬울 때가 있습니다. 

 

 

 

 

 

 

 

 

일단 소켓을 잘라서 분리했습니다. 

 

 

 

 

 

 

비슷한 소켓을 인터넷에서 찾다가 생각해 보니 RC 배터리 다룰 때 바나나잭을 사둔 기억이 났습니다. 

금도금이 잘 되어 있어서 몇년 지나도 여전히 반짝반짝 합니다. 

 

 

 

 

 

 

 

크기가 거의 동일해서 그대로 쓸 수 있을 것 같습니다. 

 

 

 

 

 

 

 

 

 

RC용 바나나잭이 약간 더 커서 드릴로 확장작업을 해 줬습니다. 

 

 

 

 

 

 

 

역시 배터리용 니켈 플레이트를 잘라서 납땜을 했습니다.

단순히 전선으로 연결하면 잭이 아래로 밀려나게 되기 때문에 잡아줄 수 있는 부분이 필요합니다. 

 

 

 

 

 

 

 

 

 

 

원래 단자에 연결합니다. 

 

 

 

 

 

 

 

 

 

반짝반짝하니 멋지군요

 

 

 

 

 

 

 

 

반대쪽 케이스 부품에는 소켓을 눌러주는 핀이 돌출되어 있습니다. 

 

 

 

 

 

 

 

소켓의 높이가 변했기 때문에 케이스가 딱 맞지 않습니다. 

 

 

 

 

 

 

 

 

니퍼로 살짝살짝 잘라가며 높이를 맞춰줍니다. 

 

 

 

 

 

 

 

프로브의 플러그는 임시로 만들어 뒀습니다. 

알리익스프레스에서 주문한 앵글 플러그가 오면 다시 작업할 예정입니다. 

 

 

 

 

 

 

 

단자 끝단도 좀 낡아서, 아주 꽉 누르면 0옴이 나오는데 힘이 빠지면 0.1옴이 나옵니다. 

프로브까지 교체하면 아주 완벽하겠지만 이정도로도 만족입니다.

728x90

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

아두이노 ISP 용 범용보드 제작.  (3) 2020.03.03
공기 청정기 필터 어댑터.  (1) 2020.01.30
CNC 정비.  (0) 2019.11.19
PLA 재생용 세절기 연구.  (0) 2019.10.31
루페 수리와 업그레이드  (0) 2019.10.31
728x90

9월쯤 이렇게 정비를 완료하고 테스트하려고 했더니 CNC운용하는 미니PC가 고장이 나버렸습니다. 

메이커페어니 뭐니 해서 차일피일 미루다가 최근에 PC조립하고 다시 조금씩 조정중입니다. 

 

 

 

 

포맷하고 프로그램 설치하고 기본세팅하고 pcb를 하나 대충 깎아봤는데 괜찮은 것 같습니다. 

CNC를 재정비한 근본 이유가 eagleCad의 PCB gcode를 돌리면 한바퀴 돌때마다 원점이 밀리는 현상이었습니다. 

원인을 찾지 못했는데 어쨋건 전부 다시 세팅하니 제대로 돌아가네요.

 

 

 

추가로 그동안 사용하지 않았던 스핀들 컨트롤이나 원점센서 등을 달아서 사용해볼까 합니다. 

그동안 스핀들 모터는 수동으로 조절하는 구조였습니다. 

 

 

컨트롤러에서 스핀들 신호가 나오긴 하는데 0~10V의 아날로그 출력으로 나옵니다. 

제가 사용하는 허접한 300W 모터 드라이버는 5v pwm 신호를 사용하는데 말이죠. 

 

 

 

 

역대 최고로 짧은 코드입니다. 너무 짧다 보니 구상에서 실행까지 단 한번의 버그도 없었네요

저항분배로 절반이 된 0~5V 의 아날로그 전압을 읽어서 PWM 출력변환해 쏴주는 코드입니다. 

 

 

그래도 혹시모르니 테스트는 해봤습니다. 

 

 

 

 

 

 

아두이노 프로 미니에 업로드해서 사용할 예정입니다. 

728x90

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

공기 청정기 필터 어댑터.  (1) 2020.01.30
디지털 멀티미터 프로브 단자 교체.  (0) 2019.12.03
PLA 재생용 세절기 연구.  (0) 2019.10.31
루페 수리와 업그레이드  (0) 2019.10.31
파스타 건조대, 국수 건조대  (0) 2019.10.26
728x90

https://hackaday.com/2019/11/15/music-box-paper-punching-machine-settles-the-score/

 

Music Box Paper-Punching Machine Settles The Score

As soon as [pashiran] laid eyes on his first hand-cranked music box, he knew he was in love. Then, he started punching the holes for his first ditty. As the repetitive stress of punching heated up …

hackaday.com

기분좋네요

728x90
728x90

https://www.instructables.com/id/Making-Music-Box-Punch-Machine-With-Arduino/

 

Making Music Box Punch Machine With Arduino

Making Music Box Punch Machine With Arduino : Do you ever see DIY Music Box?You can make music by punching holes in paper. But it's really hard.When I first saw this music box, I bought it in love at first sight. But once I punched it, I was exhausted. So

www.instructables.com

외국인들 몇이 관심가지길래 소스 공개하겠다고 기다리라고 했는데 죄다 영어로 쓰려니 힘드네요;

저는 중학교때부터 ABC 배우던 세대라 영어로 글쓰는건 참 쉽지가 않습니다. 

 

 

728x90
728x90

 

출력을 많이 하다 보면 그만큼 출력물 쓰레기도 많이 나옵니다.  

 

사실 PLA 필라멘트 재생기를 갖고싶습니다만 생각만 하고 있습니다. 
둘곳도 없고 가격도 비싸고 쓸일이 많지도 않기 때문이기도 하고요. 

그리고 새 펠렛을 사용하지 않고 폐 출력물을 이용해 PLA 필라멘트를 만들려면 분쇄기가 필요하기 때문입니다. 

 

 

 

 

 

판매하는 물건은 거의 400만원에 가깝군요. 

 

 

 

 

 

 

 

 

문서용 세절기가 그나마 좀 사용 가능성이 있는데 이것도 저가형은 출력이 엄청 약합니다. 

좀 강력해 보이는 놈은 20만원 가까이 하고요. 

그래서 생각만 하고 딱히 실행은 하지 않고 있었습니다. 

 

 

 

 

 

 

 

 

 

그런데 동네에 누가 세절기를 버렸더군요.

이게 왠 행운인가 싶어서 바로 들고왔습니다. 

전원을 켜보니 고장이 나서 돌아가지는 않길래 분해했습니다. 

 

 

 

 

 

 

 

 

안 돌아가는게 당연합니다. 

내부 그리스가 대체 어떤 재질인지 모르겠는데 변형되어 끈끈이처럼 들러붙습니다. 

사방이 끈적끈적거려서 전부 닦아내기 전에는 테스트도 못해볼것 같습니다. 

 

 

 

 

 

 

사실 초음파 세척기 자작중이었던 물건이 있었습니다(링크)

그런데 최종테스트중에 드라이버 보드가 나갔습니다. 

드라이버 보트 또 사서 테스트하자니 애매하여 그냥 새 초음파 세척기를 구매하게 되었네요. 

 

 

 

 

 

 

 

 

하여간 이 초음파 세척기로 청소를 시도해봤습니다. 

물+세제 로 세척 안되고 이소프로필 알콜로도 세척이 안되더군요

 

 

 

 

 

 

 

 

라이터 기름을 사용해 봤더니 잘 닦여 나갑니다 .

하지만 저 부품을 다 담그려면 라이터 기름이 10통은 있어야 하겠더군요. 

 

 

 

 

 

 

 

주유소에서 기름을 넣으면서 4L 통에 따로 휘발유를 담아왔습니다. 

용제로 쓰기엔 라이터기름과 비슷한 느낌입니다만 냄새가 엄청 독합니다.

제대로 환기시설을 갖추지 못한 곳에서는 사용이 불가능합니다. 

 

 

 

 

 

 

 

 

 

달달달달 한참을 세척하고 나니 그럭저럭 깨끗해졌습니다. 

조립하다가 C 링을 하나 분실했는데 없어도 되는 위치라 그냥 조립했습니다. 

기어류는 이상이 없는데 무급유 상태로 오래 써먹었는지 중앙 기어의 축이 좀 닳아 있습니다. 

기어가 흔들거리긴 하는데 사용은 가능할 것 같습니다. 

 

 

 

 

 

 

 

 

모터와 컨트롤 보드도 일부 세척후에 테스트를 해보려고 책상에 올렸습니다. 

모터는 동기 AC 모터인듯 한데 보시다시피 축이 헬리컬 기어로 되어 있습니다. 

같은 제원의 모터를 구하기 매우 힘든 상황이라 모터 고장이면 매우 골치아픈 상황이 됩니다. 

드라이버 고장이면 그나마 수리 가능성이 있지요. 

 

 

 

 

 

 

 

 

임시로 전원을 연결해봤습니다. 

그런데 놀랐습니다. 모터가 정상이더군요. 잘 돌아갑니다. 

 

 

 

 

 

 

 

카본브러시도 아직 남아있는듯 보입니다. 

 

 

 

 

 

 

 

이 프로젝트는 천천히 진행할 생각입니다. 

PLA 필라멘트 제작기까지 만들 것인지 확신이 안서네요

728x90

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

디지털 멀티미터 프로브 단자 교체.  (0) 2019.12.03
CNC 정비.  (0) 2019.11.19
루페 수리와 업그레이드  (0) 2019.10.31
파스타 건조대, 국수 건조대  (0) 2019.10.26
프루사 MK3S 온도센서 수리  (0) 2019.10.25
728x90

서랍에 뒹굴고 있던 부서진 루페입니다.

생각난김에 루페와 돋보기와의 차이점이 뭔가 하고 알아봤습니다. 

돋보기와 달리 손잡이가 없으며 세부적으로 관찰하는 용도의 특수목적 돋보기 를 루페라고 하는 것 같습니다. 

 

 

 

 

 

 

 

 

원래 하단에 아크릴 테두리가 있어서 빛이 들어오도록 되어 있습니다. 

제가 갖고있는것은 그 부분이 깨져서 없습니다. 

사실 제가 산것도 아니고 어디선가 줏었는지 했던걸로 기억합니다. 

 

 

 

 

 

 

눈을 가까이 대고 보면 요렇게 깔끔하게 확대가 됩니다. 

표면상태를 확인하거나 미세한 흠집 찾거나 할때 쓰기에 좋습니다. 

 

 

 

 

 

 

보통은 투명한 아크릴로 들어온 빛을 이용해 관찰합니다.

저는 3D 프린터로 출력할 것이라 별도의 LED를 달기로 했습니다. 

그래서 AAA 배터리 2개를 들어가도록 하고 스위치 2개로 LED 2개씩 나누어 ON/OFF하도록 설계했습니다. 

스위치 하나로 해도 되지만 표면의 흠집을 체크하거나 할 때는 한쪽에서만 빛을 비추는게 더 잘 보이기 때문입니다.

 

 

 

 

 

 

알리에서 구입했던 배터리 스프링판을 사용해 보기로 합니다. 

 

 

 

 

 

 

 

1차 출력해보니 얼추 맞긴 하는데 수정할 부분이 있습니다. 

 

 

 

 

 

 

 

 

일부수치를 바꾸고 전선이 지나갈 길을 만들었습니다

 

 

 

 

 

 

 

 

배터리 스프링을 끼우고 AAA 배터리를 끼워봤습니다. 

잘 맞긴 하는데 홀더 깊이를 생각보다 좀 깊게 잡았네요. 

수정하긴 애매해서 그냥 쓰기로 합니다. 

 

 

 

 

 

 

 

선을 납땜해가면서 본드로 고정했습니다. 

 

 

 

 

 

 

 

스위치 1개가 2개의 LED를 켭니다. 

 

 

 

 

 

 

2개 다 누르면 이렇게 전부 켜지게 되죠.

 

 

 

 

 

 

 

 

종이박스를 찍어봤습니다. LED를 껐을때는 이렇게 거의 보이지 않습니다. 

 

 

 

 

 

 

 

한쪽만 켜면 그림자가 생겨서 표면 굴곡을 보기에 좋고요

 

 

 

 

 

 

양쪽 다 켜면 그림자는 적어지지만 세세하게 보기에 좋습니다. 

 

 

 

 

결과물이 상당히 마음에 드는군요. 

728x90

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

CNC 정비.  (0) 2019.11.19
PLA 재생용 세절기 연구.  (0) 2019.10.31
파스타 건조대, 국수 건조대  (0) 2019.10.26
프루사 MK3S 온도센서 수리  (0) 2019.10.25
SONOFF wifi 스위치로 대문 개폐하기  (15) 2019.07.07
728x90

건면 만들때 쓰는 건조대입니다. 

생면을 가끔 만들어 먹는데 1인분씩만 반죽할수는 없으니 남는 면은 얼려 보관하고 있습니다. 

건면도 한번 만들어 보고 싶어 검색해보니 건조대가 몇만원씩 합니다. 

큼직한 빨래 건조대도 그 가격이 안되는데 좀 너무한다 싶습니다. 

 

 

 

 

 

 

fusion360으로 설계해서 출력했습니다. 
요즘 solidworks에서 fusion으로 조금씩 옮겨가보고 있습니다. 

제가 쓰는 목적에서는 fusion이 더 낫거나 하지는 않지만 클라우드 기반으로 저장해주는 데이터 관리가 편합니다. 

개발 초기의 프로그램이기 때문인지 업데이트도 빨라 성장해가는게 눈에 보이고 있습니다. 

 

 

 

 

 

 

로켓 같군요.

출력높이의 한계로 나눠서 뽑도록 했습니다. 

접착이 필요 없고 그냥 끼워서 세울 수 있습니다. 

하는 김에 출력시 서포트도 필요없게 했습니다. 

 

 

 

 

 

건조발은 아직 몇개 더 출력해야 합니다. 

 

 

 

 

 

 

 

일단 만들어 놓은 면들을 널어놨습니다. 

파일은 thingiverse(링크)에 업로드했습니다. 자유롭게 쓰셔도 됩니다. 

728x90

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

PLA 재생용 세절기 연구.  (0) 2019.10.31
루페 수리와 업그레이드  (0) 2019.10.31
프루사 MK3S 온도센서 수리  (0) 2019.10.25
SONOFF wifi 스위치로 대문 개폐하기  (15) 2019.07.07
실리콘 호스 커터  (0) 2019.06.13
728x90

메이커페어 직전에 메인보드 고장으로 수리보냈던 MK3S가 돌아왔습니다만

뭔가 제대로 써 보기 전에 갑자기 멈춰버렸네요. 

LCD에 MinTemp 에러가 떠서 센서부터 확인해 봤습니다. 

 

 

 

 

선을 살짝 당겨보니 끊어져 있습니다. 

전에 자주 걸려서 당겨지는 것을 케이블 타이로 잘 고정해 놨었습니다. 

그런데 이번에 끊어진 것은 피로파괴 인 것 같더군요. 

워낙 많이 써서 그런것 같습니다. 

 

 

 

 

 

꺼내서 납땜으로 연결하고 집어넣으면 끝입니다. 

 

 

 

 

 

 

이 인두기는 쓸때마다 참 편하다고 느끼면서 잘 만들었다고 자화자찬하고 있습니다.

 

 

 

 

 

 

 

수리완료했습니다. 

 

 

 

 

 

728x90

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

루페 수리와 업그레이드  (0) 2019.10.31
파스타 건조대, 국수 건조대  (0) 2019.10.26
SONOFF wifi 스위치로 대문 개폐하기  (15) 2019.07.07
실리콘 호스 커터  (0) 2019.06.13
CR-10S 수리완료  (0) 2019.06.03
728x90

**전 관람객이 아니라 참가자라서 메이커 페어 전시내용은 별로 없습니다;;

 

 

오픈전 여유있을때 미리 사진을 찍어뒀습니다. 

 

 

 

 

 

다들 분주하게 세팅하고 계시네요

 

 

 

 

 

 

 

오픈전부터 입장 대기줄이 생기고 있습니다. 

 

 

 

 

 

 

오픈후 무한설명중.

 

 

 

 

 

 

이렇게 하루를 두번 보내면 끝납니다. 

허리무릎목 부여잡고 끙끙대며 돌아왔네요. 

 

작년에도 그랬지만 하루종일 거의 쉴틈도 없이 설명하다 보니 너무 힘듭니다. 

다른 메이커의 작품을 찬찬히 구경하거나

메이커 파티에서 교류하거나 할 체력이 남지를 않네요. 

 

그래서 올해는 초등 1학년, 4학년 조카들을 팀원으로 데려갔더니

애들 돌보며 소비된 에너지와

애들이 잠깐 맡아주며 번 에너지를 합하면 그게 그거인 것 같습니다. 

 

어쨋건 전시 자체는 잘 해냈습니다. 

내구성 테스트를 못해서 걱정되었던 뮤직박스 펀처도 끝까지 잘 작동했고요

센서 위치가 조금씩 틀어지는 부분이 있었는데 차후 수정해봐야겠습니다. 

 

728x90
728x90

 

이번주에 메이커페어라 마지막 조정을 하고 있습니다. 

악보 선택과 펀칭, 뮤직박스 연주까지 연속으로 찍어봤습니다. 

 

728x90
728x90

특이한 기계 부스 4번 입니다. 

사진에 화살표로 표시해 놓았습니다. 

728x90

'주인장 잡담' 카테고리의 다른 글

뮤직박스 펀처 instructables에 올렸습니다.  (0) 2019.11.10
2019 서울 메이커페어 전시후기  (0) 2019.10.21
근황.  (1) 2019.09.15
2019 메이커페어 참가  (0) 2019.07.31
지금 기분.  (0) 2019.02.24
728x90

항상 쓰던 솔리드웍스가 아니라 Fusion360에서 설계했습니다. 

그간 업데이트가 많이 되었더군요. 

 

 

 

 

 

 

 

약간 아쉬운 점은 있는데 수정없이 그냥 쓸 생각입니다. 

 

 

 

 

 

 

 

인서트 너트를 6개 넣었습니다.

2개는 PCB를 직접 고정하고 4개가 뚜껑을 고정합니다. 

18650충전회로가 따로 들어있진 않아서 배터리 교체하려면 볼트를 열어야 합니다

나중에 생각나면 충전회로를 넣을 수도 있겠네요. 공간은 충분합니다. 

 

 

 

 

 

728x90

+ Recent posts