Skip to content

Instantly share code, notes, and snippets.

@t-nissie
Last active April 25, 2024 23:15
Show Gist options
  • Save t-nissie/fbd639bcd427e46c7fdfc1529023d521 to your computer and use it in GitHub Desktop.
Save t-nissie/fbd639bcd427e46c7fdfc1529023d521 to your computer and use it in GitHub Desktop.
ミシン糸ワインダーの作り方

ミシン糸ワインダーの作り方

ロックミシン用にミシン糸を小分けにするなど 糸巻き(ボビン、スプール)に糸を均等に巻きつけたくなることがあります。 この文章はそんなときに便利なミシン糸ワインダーの作り方を解説しています。

この文章は https://gist.github.com/t-nissie/fbd639bcd427e46c7fdfc1529023d521 に置いてあります。

topview

ライセンス

GPLv3

部品リスト

ダイソーで買えるモノ

  • プチ電車シリーズ モーター車 1個
  • MDF材 100mm×100mm×6mm 1枚
  • 工作材料 P-10 直方体木材 90mm×30mm×15mm 1個(テンショナー支柱)
  • ローソク 少量(テンショナーの潤滑用)
  • 木工用ボンド

3Dプリンターで印刷するモノ

ダミー電池は 横倒しにして側面をビルディングプレートにつけて、 -6%細くして、 両側の電極部分にはサーポートブロッカーを配置して、 胴体中央の配線を固定する突起にだけサポートをつけて 3Dプリンターで印刷すると吉。 横倒しにせず印刷すると印刷層の劈開により電極部分が折れやすいです。 また、スズメッキ銅線をダミー電池に取り付けてからハンダ付けをすると 熱でダミー電池が変形してしまいます。 リード線をハンダ付け済みのスズメッキ銅線をダミー電池の電極部に巻きつけるとよいです。

その他

  • クギ #15番手(φ1.83mm) 長さ32mm以上 2本(テンショナーのガイドとして使用)
  • M8ナット 2個(テンショナーの錘として使用)
  • フジックス シャッペスパン#60番手200mの空の糸巻き
  • Arduino NANO
  • Miuzei MS18 マイクロサーボモーター 1個
  • Miuzei MS18 マイクロサーボモーターに付属のネジ類
  • Pチャネル CMOS FET 2SJ182 1個
  • 抵抗 4.7 kΩ 1本
  • 抵抗 22 kΩ 1本
  • 2.54mmピッチ ピンヘッダ 2行3列 = 6pin 2個
  • 2.54mmピッチ ピンヘッダジャンパー 最大3個
  • 10mm×10mm ヒートシンク(放熱版) 1個
  • リード線 各色少量
  • スズメッキ銅線 少量
  • M6×55mm 寸切(ずんぎり)ネジ 1本
  • M6ナット 1個
  • 皿木ネジ M2.1x10 5本
  • タッピングビス M3x8mm 2本 ギアボックス固定用
  • 丸木ネジ M2.1x6.3 4本 for Arduino NANO Mounter

空中配線

USBから給電します。 6pinピンヘッダはICSPとA0,A1,A2の2ケ所に配置します。 A0,A1,A2をジャンパピンでGNDとショートさせることでモーターを8段階に変速できます。 To plug an Miuzei MS18 micro servomotor to 6-4-2 pins of the ICSP connector on an Arduino board, the order of wires from the servomotor should be changed from GND(brown)-5V(red)-PWM(orange) to GND(brown)-PWM(orange)-5V(red). 2SJ182と抵抗2本は空中配線します。 モーターは2SJ182でPWM駆動します。 pチャネル MOS FETの2SJ182を使ったのはたまたま手持ちにあったからです。 他のpチャネル電力スイッチングFETでもそのままの回路とプログラムで使えると思います。 nチャネルの場合は回路とプログラムを適宜変更してください。 プチ電車のギアボックスへはダミー単三電池を介して給電するとよいでしょう。

circuit

Arduino sketch

daiso.ino を下に用意しました。 ダウンロードしてご利用ください。

作り方

配置はgistに置いてあるlayout.pdfを等倍100%で印刷して下穴の位置などの参考にするとよいでしょう。

layout

だいたいの配置図。

  • ダミー電池に配線します。スズメッキ銅線をダミー電池に取り付けてからハンダ付けをすると熱でダミー電池が変形してしまいます。リード線をハンダ付け済みのスズメッキ銅線をダミー電池の電極部に巻きつけるとよいです。
  • Arduino NANO に部品を空中配線します。
  • FETにヒートシンクを付けます。
  • マイクロサーボモーターのコネクタの線の順番を GND(brown)-PWM(orange)-5V(red) に変更します。
  • マイクロサーボモーターを付属ネジでマウンタに取り付け、MDF版に皿木ネジで取り付けます。
  • ギアボックスにカプラでM6寸切ネジを取り付けます。
  • ギアボックスをタッピングビスでステーに固定し、MDF版に皿木ネジで取り付けます。
  • Arduino NANO をマウンタでMDF版に取り付ける。
  • Arduino NANO をプログラミングします。
  • 配線を接続します。
  • 動作を確認します。
  • シャッペスパン空の糸巻きをM6円錐形化粧ナットで取り付けます。
  • ホーンをマイクロサーボモーターに取り付けます。
  • クギ2本, M8ナット2個, 直方体木材でテンショナーを組み立てます。木口に潤滑剤としてローソクの蝋を塗っておくとよいでしょう。
  • 木工用ボンドでテンショナーをMDF版に接着します。接着剤が乾くまで一晩放置します。
  • 動作を確認します。

使い方

ギアボックスの黄色のスイッチで糸巻きの回転をオン・オフしてください。 A0,A1,A2をジャンパピンでGNDとショートさせることでモーターを8段階PWMで変速できます。 巻きはじめは糸を溝に糸を止めておき、少し巻いて、溝から糸を外して端を切るとよいでしょう。 あとは気の済むまで糸を巻いてください。

// daiso.ino
// Author: Takeshi Nishimatsu License: GPL-3.0-only
// Description: Swing SG90. Drive a motor through PWM and FET.
// Wiring: To plug an SG90 servomotor to 6-4-2 pins of the ICSP connector on an
// Arduino board, the order of wires from the servomotor should be changed
// from GND(brown)-5V(red)-PWM(orange) to GND(brown)-PWM(orange)-5V(red).
// SG90 micro servomotor: http://akizukidenshi.com/download/ds/towerpro/SG90_a.pdf
// 3D printing: Servo mount bracket https://www.thingiverse.com/thing:1310167
// Arduino Nano mounter https://www.youmagine.com/designs/arduino-nano-mount-holder-yet-another
// Conic finger nut https://www.youmagine.com/designs/knurled-conic-finger-nut-m6
// Arduino Nano and SG90 Servo Holder https://www.thingiverse.com/thing:3925535
////
#define A2 16
#define A1 15
#define A0 14
#define LED 13 //On board LED
#define SVO 11 //4th pin of the ICSP connector
#define PWM 3 //D3
const int MAX=1850;
const int MIN=1170;
const int STEP=10;
void period20ms(int pin, int duty)
{
digitalWrite(pin, HIGH);
delayMicroseconds(duty);
digitalWrite(pin, LOW);
delayMicroseconds(16000-duty); // The argument should
delayMicroseconds( 4000); // be less than 16384.
}
void setup()
{
//Serial.begin(9800);
//Serial.println("Let's start");
pinMode(A2,INPUT_PULLUP);
pinMode(A1,INPUT_PULLUP);
pinMode(A0,INPUT_PULLUP);
pinMode(SVO,OUTPUT); digitalWrite(SVO,LOW);
pinMode(LED,OUTPUT); digitalWrite(LED,LOW);
pinMode(PWM,OUTPUT);
}
void loop()
{
int value = 0;
if (digitalRead(A2)==HIGH) value += 100; //The pin is open -> Slow it down.
if (digitalRead(A1)==HIGH) value += 50;
if (digitalRead(A0)==HIGH) value += 25;
analogWrite(PWM, value);
digitalWrite(LED,HIGH);
for (int i=MAX; i>MIN; i-=STEP) period20ms(SVO, i);
digitalWrite(LED,LOW);
for (int i=MIN; i<MAX; i+=STEP) period20ms(SVO, i);
}
%TGIF 4.2.5
state(0,37,100.000,0,0,0,16,1,9,1,1,0,0,3,0,1,2,'Helvetica',0,230400,0,0,1,5,0,0,1,1,0,16,0,0,1,1,1,1,1050,1485,1,0,2880,0).
%
% @(#)$Header$
% %W%
%
unit("1 pixel/pixel").
color_info(11,65535,0,[
"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
"red", 65535, 0, 0, 65535, 0, 0, 1,
"green", 0, 65535, 0, 0, 65535, 0, 1,
"blue", 0, 0, 65535, 0, 0, 65535, 1,
"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
"black", 0, 0, 0, 0, 0, 0, 1,
"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1
]).
script_frac("0.6").
fg_bg_colors('black','white').
dont_reencode("FFDingbests:ZapfDingbats").
objshadow_info('#c0c0c0',2,2).
rotate_pivot(0,0,0,0).
spline_tightness(1).
page(1,"",1,'').
box('blue','',505,470,675,695,3,2,1,5,0,0,0,0,0,'2',0,[
]).
oval('blue','',585,675,595,685,0,3,1,11,0,0,0,0,0,'3',0,[
]).
oval('blue','',520,515,525,520,0,3,1,13,0,0,0,0,0,'3',0,[
]).
oval('blue','',655,515,660,520,0,3,1,14,0,0,0,0,0,'3',0,[
]).
box('black','',500,500,1000,1000,0,3,1,0,0,0,0,0,0,'3',0,[
]).
text('blue',590,564,1,1,1,128,38,46,31,7,0,0,0,0,-65534,128,38,0,0,"",0,0,0,0,595,'',[
minilines(128,38,0,0,1,0,0,[
mini_line(128,31,7,0,0,0,[
str_block(0,128,31,7,0,-1,0,0,0,[
str_seg('blue','Helvetica',0,184320,128,31,7,0,-1,0,0,0,0,0,
"Gear box")])
])
])]).
box('red','',510,700,615,1000,0,3,1,69,0,0,0,0,0,'3',0,[
]).
text('blue',565,778,5,1,1,104,165,73,27,6,0,0,0,0,-65534,99,165,0,0,"",0,1,0,0,805,'',[
565,778,516,778,615,943,1050.51,0,0,1000,-3,0,515,777,616,944],[
minilines(99,165,0,0,1,0,0,[
mini_line(99,27,6,0,0,0,[
str_block(0,99,27,6,0,-2,0,0,0,[
str_seg('red','Helvetica',0,161280,99,27,6,0,-2,0,0,0,0,0,
"Arduino")])
]),
mini_line(66,27,6,0,0,0,[
str_block(0,66,27,6,0,-2,0,0,0,[
str_seg('red','Helvetica',0,161280,66,27,6,0,-2,0,0,0,0,0,
"Nano")])
]),
mini_line(51,27,6,0,0,0,[
str_block(0,51,27,6,0,-2,0,0,0,[
str_seg('red','Helvetica',0,161280,51,27,6,0,-2,0,0,0,0,0,
"with")])
]),
mini_line(78,27,6,0,0,0,[
str_block(0,78,27,6,0,-1,0,0,0,[
str_seg('red','Helvetica',0,161280,78,27,6,0,-1,0,0,0,0,0,
"mount")])
]),
mini_line(78,27,6,0,0,0,[
str_block(0,78,27,6,0,-1,0,0,0,[
str_seg('red','Helvetica',0,161280,78,27,6,0,-1,0,0,0,0,0,
"holder")])
])
])]).
oval('red','',525,980,535,990,0,3,1,86,0,0,0,0,0,'3',0,[
]).
oval('red','',590,980,600,990,0,3,1,87,0,0,0,0,0,'3',0,[
]).
oval('DarkSlateGray','',715,630,725,640,0,3,1,92,0,0,0,0,0,'3',0,[
]).
oval('DarkSlateGray','',925,630,935,640,0,3,1,93,0,0,0,0,0,'3',0,[
]).
box('DarkSlateGray','',700,610,950,660,0,3,1,100,0,0,0,0,0,'3',0,[
]).
text('blue',825,619,1,1,1,181,38,110,31,7,0,0,0,0,-65534,181,38,0,0,"",0,0,0,0,650,'',[
minilines(181,38,0,0,1,0,0,[
mini_line(181,31,7,0,0,0,[
str_block(0,181,31,7,0,-1,0,0,0,[
str_seg('DarkSlateGray','Helvetica',0,184320,181,31,7,0,-1,0,0,0,0,0,
"Servo mount")])
])
])]).
box('magenta','',720,925,870,1000,0,3,1,120,0,0,0,0,0,'3',0,[
]).
text('blue',795,889,1,1,1,240,38,122,31,7,0,0,0,0,-65534,240,38,0,0,"",0,0,0,0,920,'',[
minilines(240,38,0,0,1,0,0,[
mini_line(240,31,7,0,0,0,[
str_block(0,240,31,7,0,-2,0,0,0,[
str_seg('magenta','Helvetica',0,184320,240,31,7,0,-2,0,0,0,0,0,
"Tensioner pillar")])
])
])]).
oval('magenta','',780,960,785,965,0,3,1,132,0,0,0,0,0,'3',0,[
]).
oval('magenta','',805,960,810,965,0,3,1,133,0,0,0,0,0,'3',0,[
]).
poly('black','',2,[
500,1030,1000,1030],3,1,1,149,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('blue',750,1031,1,1,1,85,29,152,24,5,0,0,0,0,-65534,85,29,0,0,"",0,0,0,0,1055,'',[
minilines(85,29,0,0,1,0,0,[
mini_line(85,24,5,0,0,0,[
str_block(0,85,24,5,0,-2,0,0,0,[
str_seg('DarkSlateGray','Helvetica',0,138240,85,24,5,0,-2,0,0,0,0,0,
"100 mm")])
])
])]).
poly('black','',2,[
470,1000,470,500],3,1,1,157,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('blue',594,792,1,1,1,29,85,158,24,5,0,0,0,0,-65534,85,29,0,0,"",0,1,0,0,816,'',[
594,792,552,792,637,821,-5.23869e-13,-1000,1000,-5.23869e-13,-151,-41,551,791,638,822],[
minilines(85,29,0,0,1,0,0,[
mini_line(85,24,5,0,0,0,[
str_block(0,85,24,5,0,-2,0,0,0,[
str_seg('DarkSlateGray','Helvetica',0,138240,85,24,5,0,-2,0,0,0,0,0,
"100 mm")])
])
])]).
oval('red','',525,710,535,720,0,3,1,159,0,0,0,0,0,'3',0,[
]).
oval('red','',590,710,600,720,0,3,1,160,0,0,0,0,0,'3',0,[
]).
text('blue',995,503,1,2,1,86,46,161,37,9,0,0,0,0,-65534,86,46,0,0,"",0,0,0,0,540,'',[
minilines(86,46,0,0,2,0,0,[
mini_line(86,37,9,0,0,0,[
str_block(0,86,37,9,0,-1,0,0,0,[
str_seg('black','Helvetica',0,230400,86,37,9,0,-1,0,0,0,0,0,
"MDF")])
])
])]).
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@t-nissie
Copy link
Author

t-nissie commented Feb 4, 2023

circuit

@t-nissie
Copy link
Author

layout

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment