發表文章

目前顯示的是 5月, 2019的文章

文章總列表

VOLVO+開發故事 (6),Sample Back

圖片
在我工作的地方,我們說Sample Back代表IC從晶圓廠製作完畢,封裝好,回到公司進行驗證(我們也即將進行超高強度的工作)。不管多少次,我都會仔細的看看IC,看看上面的絲印,看看他是大顆還是小顆。IC承載著團隊的智慧,眾人的努力 IC要上電才會發燙;但是設計的人,心是火熱的 ---- 我設計的PCB透過 JLCPCB製作 ,我的瑞典同事對這間讚不絕口!生產的步驟還可以及時觀看進度。這片板子到我手上,就是Sample Back 我很快把IC準備好找硬體專家解釋圖面,幫我焊接(順便問一下焊接的技巧) 接著轉念一想,就算我畫錯layout,我也想第一個知道;連板子都做了,為什麼不自己焊?我這輩子不能當外科醫生動手術,但是焊接手藝還是能鍛鍊的 拿了IC和PCB到實驗室施工,很快焊錫就糊成一團。別怕,熱風槍吹下IC,清理後再來,這片板子我練了很多次。隔天再拿一片到實驗室報到,果然又短路了。照著網路文章,沾上松香用烙鐵抖抖抖,還真的是刷過去整排針腳就搞定,一瞬間我的焊接技能晉級了 繼續加工,焊上降壓IC,CAN收發器,電阻電容。檢查電壓和clock,正常;然後接上電腦正確下載程式,MCU運作正常;接上汽車模擬器也能正確運作;最後上車測試,我沒焊上LED不能閃動,但是車門就如同預期關上了 我搞定了! IC不發燙,因為省電做得好 我是工程師,用專業做產品,以創造為榮

VOLVO+開發故事 (5),Low Power比想像得更難做

圖片
第二篇 做了樣品上車測試,結果第一晚過去了,電瓶電壓掉得比平常更低,發動後自動啟停也不反應。看起來我量到很低的電流跟成功搞定省電(low power)是兩件事(淚) 當晚我在汽車鎖定的狀態下,端詳著板子上的LED燈。他設計成有封包就會閃,而且是每0.1秒亮暗切換。我真的看到LED一閃一閃亮晶晶,想破頭不小心觸發汽車警報!我一直都沒辦法順利解除警報,最後把OBD-II電源 & 警報系統的保險絲燒壞,車子也跑出錯誤碼收場 有三個讓LED閃爍的可能 LED閃爍讓汽車警報系統送出CAN封包 汽車休眠,還是定期會有CAN封包 我的關門器插上去,把汽車喚醒,於是出現CAN封包 看來問題不單純,要找兇手了 我還是得先修車,不然OBD-II頭沒電不能做實驗。雖然還在保固期,但跑原廠和他說我開發車用電子要出保固,似乎不大妥。趕緊約新竹知名的外場(昇佑汽車)處理,老闆很專業,很快就定位到保險絲的問題,幫忙消除錯誤碼,整台車又回復正常 下圖是換下來的5A保險絲,可以看到裡面的線已經斷掉 我和老闆討論起實驗,老闆很有把握:LED閃爍不會觸發警報。所以眼下只剩兩個可能(柯南背景音樂響起) 汽車休眠,還是定期會有CAN封包 我的關門器插上去,把汽車喚醒,於是出現CAN封包 ELM327還是很好用的 從駕駛座拉出一分二延長線,一邊接ELM327,一邊接遙控關門器,有趣的地方來了 接ELM327,汽車鎖定幾分鐘後,CAN bus確實平靜無波 接ELM327和遙控關門器,ELM327和遙控關門器都會看到CAN bus有封包 每隔幾秒就有一些封包送出 所以接上遙控關門器,就會讓汽車定期被喚醒一下(然後又立刻睡下去)。所以第一晚測試,汽車不斷被喚醒,吃了不少電 驗屍報告 CAN Transceiver有根腳叫CAN-TX,這根腳收到0,就會送出CAN bus的"dominant"信號叫醒大家。所以汽車睡覺時, CAN-TX必須永遠保持是1,才不會驚擾大家 經過一長串debug,我找到錯誤的原因了 開機瞬間,CAN Transceiver還沒啟動,CAN-TX是0或1都沒關係 事件A: 打開CAN Transceiver CAN-TX pin開機預設是0

VOLVO+開發故事 (4),定義產品外觀,畫電路

圖片
在我之前,戰鬥民族俄羅斯已經有類似的產品,一共有兩個版本。第一個要拆開電動尾門後飾板,在裡面接5根線。這個版本其實非常省電,可靠,而且他有蜂鳴器可以提醒人注意。程式簡單無比,不用折騰CAN bus。缺點是安裝比較麻煩,像我就沒把握拆開自己的車,還有辦法無損再裝回去 俄羅斯人的CAN Bus產品長得像下面這樣:一個OBD-II的頭,搭配一串尾巴連接到盒子裡   安裝好以後,再把盒子藏到飾板裡面 這個外觀我就覺得不OK了:太大了!還要想辦法藏盒子,我覺得不好 我的原型只有三顆IC,最理想的尺寸是下圖ELM327的大小。我打開外殼,把裡面印刷電路板的大小用A4紙裁下來,再剪三張真實IC大小的紙片排排看 扮家家酒的結果顯示:似乎塞得下 只是藍色透明的外殼感覺有點low,我另外訂購了黑白兩色的外殼,感覺和車子比較搭 我找了身邊的硬體專家評估可能性。他們聽到信號速度只有125kHz,沒有高速信號,評語很簡單:塞得進去就結案了。問要不要幫我畫? 我寫了十幾年的韌體,一直想畫一次Layout,這個產品只有三顆IC,成功率滿高的,為什麼不試試看?KiCAD是一款免費的PCB軟體,裝了就開始動工了! 畫PCB有點像畫室內設計,需要先畫原理圖,描述IC怎麼連接,再來才是實際擺放。擺放的時候,軟體會提醒你哪根PIN要彼此相連,把所有線都接完基本上就搞定了 以前我看IC的手冊很少看封裝,現在我就得仔細核對IC的型號和封裝尺寸,畢竟畫錯了板子就是垃圾 電源的部分我有點特別留意要用高耐壓的元件,避免被突波打壞。不過這裡的耗電量只有13mA,只要降壓IC就結案了。最後挑選的元件都能承受到36v 擺放元件有點像老婆神奇的收納術,要在有限的面積塞下元件和走線。走線很難一次就滿意,多試幾次反覆修改,還真的給我畫出來了!同一顆IC我甚至留了兩個封裝的腳座,還可以選擇不同尺寸放上去(我買了兩種尺寸的CAN Transceiver,也才用得上) 我把圖印下來,放上連接器再確認尺寸。但是訂購的外殼還沒回來,不過尺寸看起來合用 幾個容易出錯的點要注意 IC接腳的定義要再看仔細,看錯了回來就是垃圾 還真的有幾顆電源元件錯了 OBD-II接頭定義再仔細核對,

VOLVO+開發故事 (3),製作開發版

圖片
要做出遙控關門器,第一步就是拿現成的零件兜出我要的功能。自己做不比外面上班,有專門的HW team搞定板子的事;遇到問題也可以找IC廠的FAE幫忙。自己做才知道團隊的偉大,校長兼撞鐘,每樣東西都得錯個幾次才挑出合用的 第一樣是MCU主板, Blue Pill ,藍色小藥丸,電子材料行都買得到STM32最小核心版。這板子多年前我就備了很多片在家裡,處理器可以跑72Mhz,64K Flash,20K SRAM記憶體,其實拿來製作關門器有點大材小用! 每次我都要挑掉上頭的power LED(因為它會吃電),把燒錄的pin腳解下重焊;拔掉板子背後5v to 3.3v轉換器避免影響電流數據。它的製作品質也是參差不齊,我手邊有一批上面的銅箔特別薄,刮到就會斷線! 再來是CAN收發晶片,這東西讓我吃足苦頭:TI的晶片我買過一批爛貨,最後總算是取得可以用的貨。後來火大又額外備了好幾種。下面那顆IC上面印著淡淡的230,正是折磨我的那顆 NXP TJA1050, 5v Microchip MCP2551, 5v TI SN65HVD230, 3.3v TI SN65HVD231, 3.3v Maxim MAX3051, 3.3v 最後是電源轉換IC,將12v降壓到3.3v。以我的耗電量(<20mA),用LDO降壓就好。最早我用AMS1117/3.3製作原型,不過他的靜態耗電是5mA! 前一篇 文章我把耗電壓到0.385mA都還想繼續省電,這顆IC顯然不合我用 另外朋友幫我申請了台灣IC設計公司的樣片,他的待機耗電只有15uA,不愧是台灣精品!如果你仔細看照片,會發現我故意把商標和型號遮住(他們沒公開放在網路上)另外我還用過DC-to-DC的模組,這東西的基礎耗電量更大,40mA,可調電壓很好用,但是小電流不好用 已經把IC解焊準備換TI LM2936 這顆是DC to DC module 零件東拼西湊,有些零件不適合,也有零件是壞的,還有不小心燒掛,所以我陸續做了4片原型。第一片我用洞洞板做,想說體積小,可以上車直接用。 事實是這片很快就燒了。 第二片我決定用麵包板做,上面備了5v和3.3v的電源,也有3.3v/ 5v兩種CAN收發器的插座。用麵包版最省事是不用焊接,測試那堆C

VOLVO+開發故事 (2),關於省電機制

圖片
前一篇 的電路板被我燒壞以後,我又陸續做了幾片,燒的燒壞的壞,功能穩定後,終於打到魔王:省電機制。Volvo XC60使用AGM或EFB電瓶,一顆大概$7000,很多車友大概兩年一換,相當於一年燒$3500,實在不便宜。鉛電池盡量充飽比較不會壞。 玩具會搞壞電瓶,我是絕對不敢用的! 關門器只有電子元件,運作電量只有13mA,對汽車的發電機九牛一毛,只要控制處理器運作速度,讓他夠用就好(不消耗沒必要的功率)。汽車熄火後,CAN bus還會再運作幾分鐘才停下。 關門器會隨著汽車一起進入待機模式, 開始對電瓶吸血 ,所以待機電流做得越小越好! 我評量省電的標準是 1%電瓶電量能支持多久 ,這個單位比起安培更有物理意義:時間越長,代表越省電,搞壞電池的機率就越低!下圖是我的原車電瓶,EFB 70Ah。這篇文章1%電瓶電量是70Ah*1% = 0.7Ah 靜態耗電(2019/05) 經過一系列努力(工程師時間,這裡就跳過了),當前已經把待機電流做到0.385mA,這表示1%電瓶能支持75天,兩個半月。鉛電池的自放電率大概一個月3%,做到比自放電還低兩倍就很堪用了 0.7Ah = (0.385*0.001)A *24h* 75.75days Low Power機制 Low Power需要參考實際汽車的CAN bus行為,設計喚醒和睡覺的機制。下圖是真實的CAN封包,左邊括號的單位是秒,汽車醒著時,幾乎每0.001秒(1ms)都有封包進來 我設計的喚醒機制是:只要MCU睡醒,就監聽CAN bus 10ms,這段時間起碼能框到5個封包。只要收到任何有效的封包,就保持喚醒20秒 如果沒收到任何封包,代表車子還在睡。人去解鎖車門,打開尾門,放東西,一系列操作大概也要10秒。MCU每次睡3秒,只要人有操作汽車都來得及喚醒 根據上面兩個參數(待機3000ms,喚醒10ms),計算加權耗電量為0.385mA 3000ms待機,電流0.345mA 10ms一般接收,電流12.430mA 加權平均 (3000*0.345 + 10*12.430) / (3010) = 0.385mA = 385uA 進一步分析待機電流的組成如下,可以看到TI的CAN收發器占了95% TI CAN TRANSCEIVER,

VOLVO+開發故事 (1)

圖片
故事要從2017我買Volvo XC60說起,這個車電動尾門可以遙控開,但不能遙控關門。車子開了兩年,2019農曆年我突然很想搞他。著手製作了工具,想辦法弄清楚汽車的CAN protocol,中間要特別感謝車友出借XC70,讓底下這盒土炮般的工具上車做實驗,不怕我搞爛您的車,再次感謝。結果是好的,我們成功找到關門的指令! 今年的勞動節我製作了第一個產品的原型。電路板有點滿目瘡痍,跳線飛了又飛,熱熔膠裝了又拆,好在他會動。上面的元件不多,但也讓我吃足苦頭... 我用的開發版暱稱 Blue Pill ,藍色小藥丸,短小精悍又容易取得:72Mhz,64K Flash,20K SRAM,意思是我程式亂寫都可以放得下。這個板子我家很多片,但是開發過程也是一片一片的燒(苦笑) CAN Transceiver就讓我吃足苦頭了。我很早就選定3.3v的TI SN65HVD230,和處理器同電壓。沒想到我買了10片全部是壞的,最後只好先拆一個NXP TJA1040 (5v)擋著 開發版本來用了AMS1117/3.3供電,趕緊跑電子材料行買一顆,總算可以從汽車的12轉5v,不過這顆轉換器也是我的噩夢。這個可調的轉換器,可變電阻方向我調錯了,輕輕一轉電壓就劇烈變化。於是我拍完底下影片後,不小心轉出9v,就把整片板子的元件燒光光了 Anyway,讓我們看看Demo影片,看看這片板子最後的風華 :-)