自己作一個轉速表,也曾是大學時剛接觸FZR的一個小小夢想
羽山大學時騎FZR,騎了二、三年,某一天拉拉轉,轉速表就秀逗了
當年還在念書的我,也曾跑了好幾趟電子街,一方面是想修看看
過程也曾有好幾次念頭想做看看轉速表
不過一直沒有成功 XD
直到最近又燃起了一點熱情,當手邊的零件越來越齊全,看的書跟資料越來越多
就一定要自己動手作看看
這個影片是我用之前幫車友們修表的訊號產生器,餵給
作好的轉速表測試看看製作的工具是使用 NodeMcu V2
一個相當好開發 Arduino 的 IDE 開發板
又兼具價格低廉,嘗試用這樣的組合,幾乎90%的零件都可
以輕鬆的在電子材料行中取得
當然也可以買個 8051 的燒錄器,寫 Keil C 或 組合語言
但學習曲線有點高...(汗)
以下是所需要的材料:
- Nodemcu V2 x 1 ( 我個人比較喜歡 V2,因為板子 比 V3 小一些些 )
- MG995 Servo 270° x 1 ( 這個算是最難買的零件,因為大部分都是 180°,羽山是上淘寶買的 )
然後別買 360° 的,那會變成只能用 PWM 控制,在歸零的步驟可能會遇到困難...
- PC817 x 1 光偶合器
- 12V 轉 5V ( 羽山是用 YwRobot 545043 ),強烈建議用其他的 Buck,體積較小,輸出電流大
- 小麵包板 x 2
- 電阻 220Ω 1/2w
- 電阻 680Ω 1/2w
- 電阻 4.7KΩ 1/2w
- LED 高亮度發光二極體 紅色 x 1
- 故障的 FZR 轉速表 x 1
- Micro USB 傳輸線 x 1
接角圖如上
https://59-126-75-42.hinet-ip.hinet.net/photo/small.php?w_size=1280&compassion=100&file_name=users/shadow/1592241194_1.png&noshow=1
NodeMcu 比較關鍵的幾個角位:
D0 : 將訊號輸出給 Servo
D1:用來連接 LED,大於 8000rpm 會有超轉燈亮起
D3:PWM 接角,可以接收經過 PC817 過濾後的轉速訊號
程式碼:
https://github.com/shadowjohn/Servo_Tachometer/blob/master/tachometer/tachometer.ino
這幾年 Arduino 很夯,很多創客喜歡用這些小玩意作一些東西
剛好這陣子常去圖書館借書,看這類的書越看手越癢,就自然會買一些來玩玩
其實最重要的應該是 270° 的 Servo,這樣作出來的轉速表
才能繞一大圈跑到14000rpm,看起來才爽,平常 180° 的只能給 FZ2 的碼表使用
那個爽度就不太夠力了
MG995、MG996R 都可以,不過我覺得用 MG995 即可,反應速度夠快了
把故障的 FZR 轉速表拆下來,指針拔掉,圓盤的二支小小十字螺絲
拆下來,就可以把圓盤拿下來,圓盤中心的孔,裝到 MG995 、MG996R
根本就一敗,密合度相當好,這時只要在 MG995 馬達上貼一張雙面膠
就可以固定面板,就不會跟著一起轉了~~~
練習的時候,也要把馬達用雙面膠貼在桌上,比較不會亂跑
左邊是 FZR 轉速表,下面使用 Servo,右邊是 FZ2 轉速表,原本無拆
左邊的 Servo 高度非常接近,低了大概3mm,大小高度相當剛好~~
固定指針的話也不是什麼困難的問題,使用熱熔膠,中心點一滴,在歸零時
壓入 Servo 就會很穩定了
嘗試把所有的東西塞入原本的表架
裝上面板,黏上指針
呵...相當一敗
蓋上表蓋,神不知鬼不覺!
二個空的螺絲孔可以再把螺絲鎖上,背板黏個熱熔膠即可
也許 Servo 並不是最佳解,但至少還是滿足了一下往日情懷
藉由實作一個轉速表,從中可以學到
1、Arduino ESP8266 NodeMcu 開發方式
2、讀取轉速的方法
3、能讀取高於 12000rpm 的方法
4、將轉速變成 Servo 角度
5、嘗試修正 2000~0 rpm 這個區段比較不線性的問題,格子較小
6、8000rpm 以上,觸發 PWM 來作一個超轉燈
7、如何利用程式過濾雜訊,避免抓到錯誤的資訊
8、如何安全的轉動 Servo ,避免他滑牙、故障、過熱
9、如何利用74LS14N,或 PC817 來讓 Arduino 安全的接收轉速訊號
10、如何利用 fritzing 來繪製接腳圖(畫到一半當掉,還好有救回來...)
11、拆解 Servo 潤滑零件
下一步想做的 (Todo):
1、將取到的轉速進行濾波,如轉速取得後,連續放到一個陣列中,將偏差太多的值去除,如10個只留8個,除去二個差太多,剩下的進行平均,來得到取到的轉速,這樣轉速表比較不會亂抖動。
2、裝到車上轉看看效果如何,可惜我沒有 FZR ,會用 NSR 代替
3、找其他可以替代 Servo 的方案,這種陸製的伺服機,多轉個幾次就覺得齒輪聲變得很粗糙,感覺隨時會壞掉…呵
4、再作一個 7段顯示器的版本
參考資料:
1、抓取引擎訊號的二種解法: https://kokoraskostas.blogspot.com/2013/12/arduino-inductive-spark-plug-sensor.html
為了解決 12000rpm 以上的轉速抓取,作了一些語法的改良
2、PC817 (光偶合器) 的使用方法:
機器人零件指南 / Ohmsha編著; 沈鄉吟譯
也可以使用 TLP621、TLP 421
http://wyj-learning.blogspot.com/2017/10/arduino-04pc817.html
或參考 小老婆機車資訊網,尋找 killPeople 大大分享的8051 轉速表的文章
3、呼吸燈:
http://web.htjh.tp.edu.tw/B4/106iot/NodeMCU%E4%BD%BF%E7%94%A8%E4%BB%8B%E7%B4%B9.pdf
4、Gensou 的 呼吸燈影片教學
https://www.youtube.com/watch?v=27GkMk8ct0s