Pc-Trace

<< 2025年12月 >>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31






Pc-Trace
PC-Trace

< next 最新の記事 prev >

「EggBot」タマゴの中身抜き 後編(3分程度の実践)

タマゴの抜き出し実践編写真。

容器名が不明のカップ

(その後ペットボトル用のコップである事が判明)
出典:
https://macaro-ni.jp/41919



タマゴを乗せる


ホームセンターで購入した画鋲をゆっくりと刺す














取り出したタマゴは冷蔵庫に入れず、すぐに調理して食べる!



中身を抜いた殻の洗浄後は充分に水を切って乾燥させる。
経験上、乾燥には丸一日かかる。


「EggBot」タマゴの中身抜き 前篇(準備)

EggBotに描画したあとのタマゴの中身抜き。
友人からの質問も多いので、個人的な抜き出し方法を少し。

穴あけ用の押しピンと、穴を広げるために2mm程度のドリルを用意。
(穴の拡張時に綺麗な円形を保てる。)

少し大きめのペットボトルの蓋に5ミリ程度の穴を開け、水道用などのOパッキンをグルーガンなどで貼り付け、空気押し出し用と洗浄用の2つを用意しておく。(近くのホームセンターなどで手に入る)

揃えるツール


現在使用中のペットボトル


グルーガンで接着した水道用パッキン。
ある程度の気密が保てれば何でも良い。


中身の抜けた殻は息を吹きかけるだけで転がるほど軽い!




実際にタマゴの中身の抜き出す作業へとつづく・・


「EggOBot」 完成!

実に改良すべき点の多いマシンだったがやっと完成!

コンパクトで精度も申し分ない出来栄え。
今回より外部電源は電圧可変タイプ(30W)のAC/DCアダプターに変更。

完成写真横


使い慣れたCNC SHIELD


上面から


配線類は束にして結束


テストプリントは初回から狂い無し!


順調!



自信を持って完成したはずのマシンがスイッチオンでまさかのバイブレーターに!
過去に破壊したドライバーをそのまま在庫と混ぜてしまっていたのをすっかり忘れていた。

製作記録は後日(別館かな?)
添付ファイル 添付ファイル


「EggBot」 経過記録

オリジナルのままでは色々な問題が発生するため随所を改造。
あとでまとめるとして製作の途中経過写真のみ。
目標は高精度高速プリントが可能なマシン!(意気込みだけ)

背面。 ボート類以外のフレームはほぼ完成!


フロントの切り抜き。
Oリングによるタマゴのキャッチ具合も摩擦係数を大きくとれて良好。


改造ペンアームを上げた状態。 遊びなしでスムーズ。


EggBot上部
右側Egg受け軸アジャスターはスパンいっぱいに広げたダブルベアリング。


一日で完成させる予定が本体改造と調整に思いのほか手こずった!
性能的にプリントできるサイズに制限はあるものの、たまごSサイズから
Lサイズまでカバーできれば良い。

ボート編につづく・・


「EggBot」 パーツ拾い出し

フレーム本体に合わせて在庫パーツから使えそうなものを拾い集める。

どれが何処に必要なパーツなのか未確認。
なのでとりあえず全パーツをプリント。
FANが止まって見えるが、100%のフル回転!



主な電子パーツ。
在庫処分なので規格も揃っていない。(サイズのみ同規格)
NEMA17ステッピングモーターは、左側が0.4A右側1.7A
A4988ドライバの、それぞれの規格に応じた調整が必要になる。
ボードは、ARDUINO UNOCNC SHIELDを利用


NAMA17用の接続ケーブル。
Amazonで注文したが、ありがちな注文ミス!
平行配置(対)のケーブルが送られたきた。
片側端子が「赤、青、緑、黒」だともう片方の端子は「赤、黒、青、緑」にならないとSHIELDに接続したバイポーラ型ステッパーモーターは正確な振る舞いにならない。
PINを外して再配置するか、途中切断してハンダを付け直すか・・・。


おなじみ「SG90 Servo」と、CNC SHIELDのステッパー分解能「LOW」と「HI」を決定するショートPIN
SHIELDだけを注文してもPINが付属していなかったので別途注文した。


3Dプリンターを製作する際、6mmのトレイに混入していた5mmの定尺ボルトをそのまま誤って購入。
一本買いするときの落とし穴にまんまと落ちた。
指定のパーツは3mmだが、今回はこれを使用。


一体型のフレームはパーツ数と調整ヶ所が少なくて済むので常々製作したかったのだが、躊躇する原因になっていたのがこの部分。
タマゴの不均衡な楕円に図形を描くと出る"ゆがみ"の軽減には絶対必要なZ高調整機能。


つづく・・。


「GrblGru」 日本語化ファイル作成・備忘録

「GrblGru」の日本語化。

以下、自己責任に於いて!
※暴走など、もしものときは添付したファイルを削除するだけ。

ここに添付したzipファイルを解凍し、アプリをインストールしたフォルダに投げ入れる。(3ファイル)

インストール・パス例:
C:\Program Files (x86)\toe\GrblGru
など。

平行して
C:\ProgramData\GrblGru
などとしたパスにデータフォルダが作成されるので、同じ3つのファイルを投げ入れておく。

日本語化はこれで終わり。

添付した「Language_jp.txt」は「Unicode」タイプで編集可能だが、翻訳してはいけないワードが存在するので予めコピーを作成するなど、細心の注意が必要。

専門的に解説する事ができないので「Wiki」などを参照する事をおすすめ。

起動後に「エキストラ」メニューの「Language」の項目を選択。


日本語化ファイルを入れたあとは「Japanese」の項目が追加されるのでチェックを入れて日本語化する。



英語表示の場合



日本語化されると「Google翻訳」とは言え理解しやすい。


2Dデータ作成作業画面


その他のパラメータダイアログ


マシンの設定


その他、操作に関するコントローラなどはヘルプなどを利用し、時間をかけて理解する必要がある。

オリジナルシステム
https://www.grblgru.com/
添付ファイル 添付ファイル


「EggBot」 結局・・

結局、高機能なアプリを諦めきれず日本語化完了。
これだと使える。



実際にボードを繋ぐと動作する。
添付動画はデータの作成に慣れるまでのシミュレーション!
添付ファイル 添付ファイル


「Coffee Break」 すべてクリアで作業終了!

EggBotからCNCマシン全般をカバー。
範囲が広く、自作のマシンまでカスタマイズ出来る高機能アプリ。
作業効率目的で、日本語化してみた。

作業途中のオープニング画面


翻訳半ばのテスト画面



動画は作業途中のテスト動画
添付ファイル 添付ファイル


「GrblGru」EggBot Simulation



FreeSoft・Downloadページ
https://www.grblgru.com/


「Blender」メモ

Unityの「NavMesh」に似た機能? 既出かもしれないがとりあえずメモ。



「Inkscape」 DXFプラグインについて

Inkscapeの「ファイル」メニューから、「開く」または「インポート」で読み込めるDFXファイルは「AutoCAD R13」以上。


できれば日本語を文字化け無しで読み込みたいが何故か文字エンコーディングが「Latin 1」でしかうまく読めない。
そこは割り切る他ないので素直に。


ヘルプメッセージ


A4サイズ自動スケーリングで読んだ場合。 文字化けは容赦!


DXF(日本語)インポートプラグインは、0.92.4の最新版でテスト
Inkscapeをインストールしたプラグインフォルダに解凍して投げ込む。
例:
C:\Program Files\Inkscape\share\extensions
(自己責任で)

「開く」場合は新規の画面に、
「インポート」した場合は現在開いている画面に読み込まれる。

CADソフトでも無いのに図面を読める事のメリットとは?
個人的な見解として「Inkscape」はDTP色の濃いソフトに思えてしまうが、高度な編集機能を備えたCNCデータの作成ソフトでもあるため、正確な図面を読めることにより正確な加工(または描画)が可能になる工作には欠かせない必須ソフト。
EggBot、CNCルーター、Laser加工、プロッター、3Dプリンター・・他、これ一本でカバーできる。
添付ファイル 添付ファイル


「EggBot」 再調整

EggBot再燃を否定したばかりだったが、反省!
円筒形にシームレスな幾何学図形を描いた場合、ステッパーの計算だけでは納得いかない繋がりになるのをそのまま見過ごしてきた。
計算通りにステッパーを回転させても重複する最後の線が僅かに太くなる問題!

重複して描画すれば当たり前の結果かもしれないが、動画で見る限りオリジナルメーカーのものは滑らかで重複線が太くなっていない。

0.005度のステッパーのズレを調整してこの問題は解決した。
論より証拠で動画をUP。

動画は最後のつなぎの部分。


ペン先が多少擦れて太くはなったが、日本製の三菱PIN 0.1ミリ
動画は等速録画のものをUP。





ペン先をタマゴの表面に軟着陸させるのが一苦労。




添付ファイル 添付ファイル


「SketchUp」 Cuviloftの備忘録

ふと「Cuviloft」で思い出した事があったのでやってみた。
当時にSketchUpとこの機能があればセルラホーンの設計も楽だった!

以下はエッジがどう処理されたか?についての個人的な備忘録。

添付ファイル 添付ファイル


「Coffee Break」 EggBot:Servoに関する備忘録

極細ペン用に
Arduino・Servo遅延時間(PWM)の調整中

ペン上昇を早く
ペン下降は遅く

前にこのペンを利用して(0.2ミリの細)タマゴの殻を割った経験あり!
様子見なのでペン固定(少しグラグラ!)と芯出しはやってないがうまくいってる。

中程度の迷路だが、フィードレートの調整次第では0.1ミリの極細ペンで巨大迷路までいけそうだ。

ペン先の太さからこの密度が限界。 
添付したzipファイル(SVG)は実際にプリントに使った迷路。

おそらくだが、今夜の料理で無慈悲に割られる予感。

ソース備忘
config.h 内の定義

#define SERVO_PIN_1 11
#define SERVO_DELAY 75 // (ms) delay between position changes



// Optional output
#define ALT_PIN 2



SoftwareServo.h

#ifndef SoftwareServo_h
#define SoftwareServo_h

#include "Arduino.h"
#include

class SoftwareServo
{
private:
uint8_t pin;
uint8_t angle; // in degrees
uint16_t pulse0; // pulse width in TCNT0 counts
uint8_t min16; // minimum pulse, 16uS units (default is 34)
uint8_t max16; // maximum pulse, 16uS units, 0-4ms range (default is 150)
class SoftwareServo *next;
static SoftwareServo* first;

public:
SoftwareServo();
uint8_t attach(int); // attach to a pin, sets pinMode, returns 0 on failure, won't
// position the servo until a subsequent write() happens
void detach();
void write(int); // specify the angle in degrees, 0 to 180
uint8_t read();
uint8_t attached();
void setMinimumPulse(uint16_t); // pulse length for 0 degrees in microseconds, 540uS default
void setMaximumPulse(uint16_t); // pulse length for 180 degrees in microseconds, 2400uS default
static void refresh(); // must be called at least every 50ms or so to keep servo alive
// you can call more often, it won't happen more than once every 20ms
};

#endif

SoftwareServo.cpp
#include "SoftwareServo.h"

SoftwareServo *SoftwareServo::first;

#define NO_ANGLE (0xff)

SoftwareServo::SoftwareServo() : pin(0), angle(NO_ANGLE), pulse0(0), min16(34), max16(150), next(0)
{}

void SoftwareServo::setMinimumPulse(uint16_t t)
{
min16 = t/16;
}

void SoftwareServo::setMaximumPulse(uint16_t t)
{
max16 = t/16;
}

uint8_t SoftwareServo::attach(int pinArg)
{
pin = pinArg;
angle = NO_ANGLE;
pulse0 = 0;
next = first;
first = this;
digitalWrite(pin, 0);
pinMode(pin, OUTPUT);
return 1;
}

void SoftwareServo::detach()
{
for (SoftwareServo **p=&first; *p!=0; p=&((*p)->next) ) {
if (*p == this) {
*p = this->next;
this->next = 0;
return;
}
}
}

void SoftwareServo::write(int angleArg)
{
if (angleArg < 0) angleArg = 0;
if (angleArg > 180) angleArg = 180;
angle = angleArg;
// bleh, have to use longs to prevent overflow, could be tricky if always a 16MHz clock, but not true
// That 64L on the end is the TCNT0 prescaler, it will need to change if the clock's prescaler changes,
// but then there will likely be an overflow problem, so it will have to be handled by a human.
pulse0 = (min16*16L*clockCyclesPerMicrosecond() + (max16-min16)*(16L*clockCyclesPerMicrosecond())*angle/180L)/64L;
}

uint8_t SoftwareServo::read()
{
return angle;
}

uint8_t SoftwareServo::attached()
{
for (SoftwareServo *p=first; p!=0; p=p->next ) {
if (p == this) return 1;
}
return 0;
}

void SoftwareServo::refresh()
{
uint8_t count = 0, i = 0;
uint16_t base = 0;
SoftwareServo *p;
static unsigned long lastRefresh = 0;
unsigned long m = millis();

// if we haven't wrapped millis, and 20ms have not passed, then don't do anything
if (m >= lastRefresh && m < lastRefresh + 20) return;
lastRefresh = m;

for (p=first; p!=0; p=p->next ) if (p->pulse0) count++;
if (count == 0) return;

// gather all the SoftwareServos in an array
SoftwareServo *s[count];
for (p=first; p !=0; p=p->next ) if (p->pulse0) s[i++] = p;

// bubblesort the SoftwareServos by pulse time, ascending order
for(;;) {
uint8_t moved = 0;
for (i = 1; i < count; i++) {
if (s[i]->pulse0 < s[i-1]->pulse0) {
SoftwareServo *t = s[i];
s[i] = s[i-1];
s[i-1] = t;
moved = 1;
}
}
if (!moved) break;
}

// turn on all the pins
// Note the timing error here... when you have many SoftwareServos going, the
// ones at the front will get a pulse that is a few microseconds too long.
// Figure about 4uS/SoftwareServo after them. This could be compensated, but I feel
// it is within the margin of error of software SoftwareServos that could catch
// an extra interrupt handler at any time.
for (i=0; ipin, 1);

uint8_t start = TCNT0;

uint8_t now = start;
uint8_t last = now;

// Now wait for each pin's time in turn..
for (i=0; i uint16_t go = start + s[i]->pulse0;

// loop until we reach or pass 'go' time
for (;;) {
now = TCNT0;
if (now < last) base += 256;
last = now;
if (base+now > go) {
digitalWrite(s[i]->pin, 0);
break;
}
}
}
}

// ----------Servo遅延調整-------------

void moveServo(double value)
{
const int incrementDelay = SERVO_DELAY;
const int currentAngle = servo.read();

servoEnabled = true;
if (value < 0.) value = 0.;
if (value > 180.) value = 180.;

if (value > currentAngle) //
{
for (int angle=currentAngle; angle {
servo.write(angle);
delay (incrementDelay * 0.6);
SoftwareServo::refresh();
}
}
else if (value < currentAngle) //
if (value < currentAngle) //
{
for (int angle=currentAngle; angle>value; angle--) // 角度デクリメント
{
servo.write(angle);
delay (incrementDelay * 0.5);
SoftwareServo::refresh();
}
}
{
servo.write((int)value);
}
// nothing to be done if value == currentAngle
}
// -------------------------------------------------------




添付ファイル 添付ファイル


「EggBot」のスクリュー・プラグインから

「EggBot」に付属するプラグインの中に、幾何学模様の作成用として使えるものがある。(3/10にSVGとして既出。 スクリュー機能)
なのでInkscape0.92以降用に再編集、日本語化したものを添付する事にした。

ねじりの応用については個人的に勝手にやってみたものだが説明は面倒なので備忘録用の動画を作成して添付。(ただし編集無しのグダグダ!)
動作確認は「Inkscape0.92.4」のみ。

単に2D図形を周期的にねじるだけのプラグインだがアイデア次第。
ただし円や楕円での効果はゼロに近い(当たり前)
ステップ比に負の数値を使う事ができるが、図形は外側に広がる。


zipファイルを解凍したら中にある10個のライブラリを拡張フォルダに直接投げ込むだけで、「Inkscape」の再起動後に使えるようになる。

Inkscapeの拡張プラグインのパスは通常の場合、

C:\Program Files\Inkscape\share\extensions
 ↑
コピペしてエクスプローラーのアドレス欄に!

結果についての責任は一切負えないので自己責任で。
(動作しない場合は入れたファイルを削除するだけ)
添付ファイル 添付ファイル


< next prev >