2017年4月29日 星期六

3DP復活之垃圾桶修理

家裡有個垃圾桶的hinge斷了,之前都是用AB膠勉強處理,但補了幾次一直沒辦法完全解決,趁5/1連假,好好把它處理一下。

自從搬到台南,3D印表機幾乎塵封起來,也沒什麼時間搞這台難搞的Delta。首先要解決3DP在停用一陣子,一些零件都已經碎裂的問題,開始試印印表機自己的零件,突然皮帶也斷了,費了一番功夫總算解決了,Delta調平太麻煩了,這次印小面積,就不再調整了,用raft來解決,雖然說的簡單,但這也讓我煩得差點上淘寶想買新的3DP,不過想到最近的萬萬稅要繳,還是打住了念頭。

首先來看舊垃圾桶

CAD畫出替代品


再用slicer切片轉成印表機吃的Gcode


列印中


完成品


看起來螺絲距離都抓得不錯,hinge的孔徑也很完美
組合起來,垃圾桶又可以再繼續用了


2016年12月22日 星期四

利用Arduino實作機器人控制

利用Arduino Due作爲HerkuleX Servo 伺服馬達的控制器,並使用arduino Esplora 透過Zigbee (XBee)無線控制機器人,後來還利用Processing寫了一個PC端的動作編輯器





參加第四屆RBL Robot Boxing League 機器人格鬥賽

父子組機器人,媽媽陪伴一起參加第四屆RBL Robot Boxing League 機器人格鬥賽






使用force sensing resistor 來測定3DP 列印件的強度

使用force sensing resistor 來測定3DP 列印件的強度

2015年1月14日 星期三

3DP 歲修 之一

用了近一年的印表機開始進行歲修
首先換掉已經變形的步進馬達腳座
這次都是用0.1mm層厚,每一件都印了17個小時左右,強度很好。
上下腳座共六個都要換,幾乎重組了
下一步就是要把Arduino Mega 2560換成smoothie board
 

2014年7月21日 星期一

Optical Heart rate and PPG monitor

當初是為了有高血壓的老爸做運動時可以了解自己的運動強度,不至於太逞強運動,或是運動量不足,想弄一個可以隨身攜帶,方便量測脈搏的工具,所以才會有這個產品的產生。

利用綠光LED與light sensor偵測血液流量的變化,來判斷心跳,與利用OLED螢幕顯示脈波。


這種反射式的光學sensor其實不大適合運動時使用,因為會因為晃動造成light sensor 的讀值變異,還有環境光的漏光問題。

不過還是簡單分享一下整個產品從無到有的一個過程:
(因為準備下一個機器人的專案,所以就簡略分享.....)



相關資訊:

Relate data
 https://github.com/alextien/Heartrate-and-PPG-waveform-monitor

Slide:









2014年6月23日 星期一

[3DP]Dual thermocoupler sensor support with Marlin and RAMPS 1.4 在Marlin 與 RAMPS 1.4 使用雙熱電偶

好久沒更新部落格了,從大概2月開始玩3D printer,一開始就從Delta玩起,有點難度,不過一一克服中。

這邊介紹一下如何在RAMPS1.4 上使用Marlin firmware來用雙sensor來做溫度偵測與保護。

3DP因為持續地對塑膠加熱,然後常常需要長時間工作,10幾20個小時都很常見,這時候如果單靠一顆thermo sensor來做加熱的偵測回饋,有點風險。

雖然Marlin對於單sensor也有一些保護,如maximum temperature, minimum temperature的設定,因為通常溫度sensor失效時,偵測到的溫度不是極高或是極低,靠這兩個保護,也可以解決掉大多數的sensor 故障的問題。

但當sensor不是故障而是脫離,所以只偵測到室溫而已呢? 或是故障時停留在某個溫度時呢? 這時候軟體會以為溫度一直達不到預定目標,所以會對加熱棒一直加溫,結果輕則加熱棒燒毀,擠出頭座融化,重責引發火災。

其實我覺得韌體還有一些機制來做防止失誤,如:加熱幾分鐘內還無法達到目標溫度時停止加熱與列印。 不過個人功力有限,這邊就看有沒有能人來幫忙修改了。

那為什麼採用熱電偶(thermocouple) 而不用更常用的熱敏電阻(NTC)呢?

原因有兩個:
1. 熱電偶較耐高溫
2. 熱電偶有較佳的溫度曲線,不需要做查表補償

不過熱電偶的輸出只有很微弱的電壓,所以需要再sensor後面接一個放大器與零點補償的電路,現在有廠商有整合好的IC,所以使用上其實很簡單。

===================================================

Marlin 支持兩種熱電偶的IC,一種是數位,採用SPI介面的MAX6675,另外一種是類比的IC,AD595/AD597。

接法這邊兩種都會介紹,不過數位的MAX6675有幾個問題,而不能採用:

介紹目前使用的AD597接法:

一般買到的module板子只需要接3個pin,+5V, GND, S(訊號) 我買到的板子實際用會有一些問題:

1. 溫度offset: 這邊後來查出是因為這塊板子在+5V輸入有串一顆diode作保護,這樣子會讓IC的5V會有一些drop,造成板子的輸出會跟Arduino參考的5V有偏差,把這顆diode拿掉直接改用0 ohm電阻,或是把它short就好。

2. 打印時,溫度sensor因為noise關係,輸出不是很穩定,常會有10幾度的跳動,這樣容易造成PID控制也會跟著不穩定: 這邊我的作法是在5V跟GND加一顆10uF/16V的電容,與在熱電偶線的輸入端並一顆0.1uF的電容,這樣子就蠻穩定了。

這邊我用的pin腳是thermo0 A3, thermo1是A4,RAMPS 1.4這兩pin剛好跟5V與GND一起,用一個4 pin的排珍就可以接出來了。

在Marlin的修改:

 configuration.h
#define TEMP_SENSOR_0 -1
#define TEMP_SENSOR_1 -1

//開啟雙sensor保護 #define 
#define TEMP_SENSOR_1_AS_REDUNDANT
//當兩顆sensor溫度差達20度時,marlin會停止列印 
MAX_REDUNDANT_TEMP_SENSOR_DIFF 20


pins.h

 //在相對應的motherboard ID(一般單擠出頭,有熱床的MEGA都是選33)下面,把thermo0/1的 pin位置做修改


#define TEMP_0_PIN 3 #define TEMP_1_PIN 4

======================================================

MAX6675的接法(不過目前有問題,無法使用)

1. 只支持在thermo sensor0使用,所以只能用一顆sensor
2. Marlin firmware有bug,目前使用會跟smart controller LCD pin衝突,就算改pin重新定義還是無法使用,所以就放棄了

這邊簡單寫一下接法:













congiguration.h

#define TEMP_SENSOR_0 -2 //


temperature.cpp

long max6675_previous_millis = -MAX6675_HEAT_INTERVAL;

pin.h

// SPI for Max6675 Thermocouple
#ifndef SDSUPPORT // these pins are defined in the SD library if building with SD support #define MAX_SCK_PIN 52
#define MAX_MISO_PIN 50
#define MAX_MOSI_PIN 51
#define MAX6675_SS 53
#else #define MAX6675_SS 49
#endif
=====================================================