2016年6月29日 星期三

簡易可靠的參考電壓源 (A sample and reliable reference voltage) TL431



因為使用Arduion 做為電池容量測試的工具並以電腦做為長期資料收集的後端。因為Arduino 吃電腦USB的電,所以Arduino無法使用內部的參考電位做為ADC的參考電壓。必須要額外使用一個穩定和足夠精準的參考電壓,來做為ADC 的校正。這樣才能保證ADC計算出來的電池電壓值的精確度在一定的範圍內。便宜方便的做法是使用一顆TL431,它的2.5V的電壓輸出,做為ADC自我校正的參考電位。其電路如下圖所示:

這個參考電壓電路只要一顆TL431與一顆電阻的組成,就可以得到一個穩定的2.5V的參考電壓。input 接Arduino的VCC, Vka就接到ADC的輸入做為校正電壓。


The circuit on Figure 1 is used to get a reliable and stable reference voltage. Usually the ADC will not be accurate when Arduino connected to PC via USB. If we want a accurate ADC to voltage mapping, we will need a reference voltage to calibrate it. The figure 1 is a sample way to solve this question. The VKA will be a stable  2.5 voltage. MCU can used to calibrate the mapping relation.




2016年4月24日 星期日

按鈕或開關彈跳的問題 (Button Debounce)


今天找到一個更好的解決方法,網址如下:

https://electrosome.com/switch-debouncing/


I think the best solution is "Hardware" solution, if there is no limitation of dimension.  I use a sample RC circuit (shows as below) which can be found on Internet easily. The resister and capacitor values which I used are 250K ohm and 0.1 uF. The basic rule to choose the value of R and C are, small C can be discharged quickly when switch closed, and high value of R will charge slowly. I think the limitation of this debounce circuit is that this circuit can not handle the high frequency switch action. Regarding the values of RC, it will take about 0.125 second to charge capacitor from 0 V to 5 V. The RC value can be calculated in fact. 5 * R * C is time of C charge to 5V, and discharge time will be 5 * C (assumed the resistor in switch is 1 ohm). and the rule is discharged time is sorter than bounce cycle time, and charge time much longer than bounce cycle time. Regarding measurement, the bounce cycle time of the switch is about 50 us.

如果沒有硬體空間限制的問題的話,我想採用硬體的對策是最好的消除彈跳的方法。我這次使用的數值是250K歐姆的電阻,以及0.1uF的電容器。電路如下圖所示。我想這個電路的限制是,無法使用在高速切換的開關電路上,因為充電的時間比較長。依照電容充放電的特性,與所選的數值。在開關打開後約須0.125秒的時間,電容器才能充電到5伏特。電阻電容值事實上可以通過計算決定。5 *R*C為充電時間,5*C為放電的時間(假設開關電路阻抗為1歐姆)。充電的時間必須要比跳跳訊號的週期長,而放電的時間則是要比彈跳的週期短。依據視波器的量測,彈跳週期約為50 us。






Bounce signal when R C values are not good enough.



2015年7月7日 星期二

Emgu 把二個影像合成一個影像

第一步 首先建立一個夠大的 image 底圖. 這行程式碼是依照OCR的ROI大小建立的。

 Image combine_image = new Image(new Size(roi_window.getWidth(), roi_window.getHeight())); 

第二步 然後在這個底圖上建立一個ROI的區域,這個目是要讓需要組合的畫面能放在正確的位置上。

 combine_image.ROI = new Rectangle(0+x_shift, 0, _processDigit_array[i].Width, _processDigit_array[i].Height); 


 第三步,將要組合的畫面放在底圖上
 _processDigit_array[i].CopyTo(combine_image); 

 第四步,移動ROI的位置,再將第二張畫面放在底圖上

 x_shift = x_shift + _processDigit_array[i].Width;


 第五步,將ROI的大小設為零,這個步驟等於是取消底圖上的ROI,
這檥才能讓底圖正常顯示在 imagebox 上。
 combine_image.ROI = new Rectangle(0, 0, 0, 0);


 程式碼片段

 Image< Gray, Byte> combine_image = new Image< Gray, byte>( new Size(roi_window.getWidth(), roi_window.getHeight()));
int x_shift = 0;
for ( int i = 0; i < _processDigit_array.Count; i++)
{
    combine_image.ROI = new Rectangle(0+x_shift, 0, _processDigit_array[i].Width, _processDigit_array[i].Height);
    _processDigit_array[i].CopyTo(combine_image);
    x_shift = x_shift + _processDigit_array[i].Width;
}
combine_image.ROI = new Rectangle(0, 0, 0, 0);

imageBox_after_threshold.Image = combine_image;

2012年6月27日 星期三

起跑點

洪蘭教授長期在進行人類大腦方面的研究(因為我是門外漢,無法用更精準的描述。),在教育這個部份,洪教授都有很多特別的看法,而且這些觀點都是具備科學驗證的基礎。 洪蘭:誰的小孩輸在起跑點? 2001-03 康健雜誌28期 作者:洪蘭 在捷運上,看到一輛娃娃車中躺著一個可愛的新生嬰兒,她的雙手戴著那種避免指甲抓傷自己粉嫩小臉的薄棉手套,但是手套上的花樣不是一般的嬰兒圖案而是射擊用的箭靶,大紅色的圓心,外面一圈圈紅色的環,十分的引人注目。 年輕的母親見我在注視箭靶,驕傲的說:「專門幫助眼手協調的手套,一個要二千元呢!」,她頓了一下說:「我不要讓我的孩子輸在起跑點上!」。我聽了默然,這個廣告詞不知騙去多少父母的血汗錢,卻沒有人去檢討一下什麼叫做輸在起跑點上。 嬰兒一出生時,視力並沒有發展完全,是個近視眼,他所能看清楚的只有從母親抱他哺乳時臂彎到母親的臉那個20公分的距離。他的視力隨著視神經外面包的髓鞘完成,而逐漸可以調整水晶體使焦距落在中央小窩上。所以一歲半以前的孩子看電視都坐得很前面,因為坐遠了看不見。太早訓練孩子去調整焦距,其實沒有必要,當他眼睛成熟時,他自然會眼手協調得很好,就好像太早叫小孩子去寫字是沒有必要的一樣。幼稚園的小孩子手臂的小肌肉還沒有發展完成,寫字時,手要用力地握著筆,因為如果不這麼用力,控制不好,線條會抖、不直,不好看(老人寫字也常抖,也是因為肌肉不聽使喚了)。 在發展上,很多事情是水到渠成,太早去訓練是徒勞無功,不但孩子受苦,也跟自己的荷包過不去。 其實,一個孩子只要在正常的環境中快樂的長大,他就不會輸在起跑點上。孩子要的不是物質上的享受,而是心靈上的安全感。一個昂貴的進口玩具絕對抵不上一個同年齡的玩伴,鄉下的孩子在田間玩泥巴,比城裡的孩子對著牆壁玩遙控車還要更興趣盎然。因為人是活的,可以出點子,玩出很多花樣,而車是死的,只會碰到牆壁轉彎。 發展是一件需要耐心的事,只要你肯伴著他,大手牽小手地一路走過成長,他就會有健全的心智、活潑的思緒、能夠適應新環境,他就不可能輸在起跑點上,因為在新環境中適應新情境的能力正是我們對智慧的新定義。所以沒有輸在起跑點上這回事,只有揠苗助長的傷害。 父母們,請善用你的智慧,許你孩子一個快樂的童年。

2012年6月23日 星期六

有種站在長城下仰望的感覺

http://tw.myblog.yahoo.com/venus791129/article?mid=9600&prev=9604&next=9583 如題

關於執行力(一)

最近在找相關的資料,希望能增加自己的執行力。因為不論唸書或是在工作上,都沒有很有效執行的狀況。以下是整理在網路上找的資料,希望能達到知行合一的境界,把收集到的資料進行實現。 一般來說,執行力和"紀律"一詞有著密切的相關性。因為我自己的執行力不佳,大多是因為無法依照計畫去執行工作或事情。但另一個方向的論述是,因為計畫的不合理性太高,使得計畫無法執行,反而會形成負面循環。在執行事務的過程中,正向循環的力量非常重要。只要能進入正向循環的狀態,我相信事情只會越做越好。 要形成正向循環,所謂的"獎勵"機制同樣是十分重要的,正確的獎賞可以激勵自己的動能。獎賞有無過多的問題呢?!對於個人來說,應該是沒有的,因為在決定獎賞時,多少目己應會量力而為。但若是在組織的執行上,獎賞的技巧卻是十分重要,這個部份不在本文的討論範圍內。 目前我應該要專注在"計畫"的部份,如何妥善規劃自己的時間,會是最重要的一步。如果沒法改善自己執行力的問題,那麻煩就大了。

2012年6月20日 星期三

沒什麼特別的題目,就拿今天看的幾篇文章來說吧!

最近涉獵了一些管理的書籍,發現大多數書中提及的狀況最近都碰到了。比如說早上看到的。天下雜誌出版的這本;工作不是變魔術:掌握關鍵規劃的7 步驟。的書摘。書摘內容如下: 這幾句話,你是否也耳熟能詳? ●我們的工作,本來就時常需要扮演「救火隊」。 ●你彈性不夠!我們不欣賞不願意臨時調整的態度! ●我們沒有時間規劃了!先做再說。 ●做就對了。我不喜歡聽到任何人說「不」這個字! 如果你常常聽到這樣的話,小心,你可能在用最沒有效率的方式工作,你的組織可能是個超浪費組織 再配上,Mr. 6 今天出的電子報 人人都想變高薪者,但很少人真的很認真去看,高薪者之中,雖有62%的人工作50小時以上,卻竟然還有38%的人,縱然享有高薪,卻不必工作50小時!? 這才是最有趣的,我們思考,到底我們還可以「增加」什麼,讓自己變成那38%的「幸運兒」。事實上,那是美國的數字,在亞洲,恐怕是90%的高薪族都是工作50小時以上,但,那就表示有10%的人是可以不必這樣的,我們必須更認真的思考,要怎樣才能變成那10%的「幸運兒」? 我覺得正向思考要像Mr. 6那樣,要就要向那些少數的高效率工作者那樣。不過我猜想,那38﹪的人雖然在“工作”上的時間花費比較少,但在“個人能力成長”的部份所花費的心力可能要比那62﹪的人所花的時間還要多。