本帖最後由 ma_hty 於 2016-8-15 06:07 編輯
有片有真相, 先去片... https://youtu.be/KcJYnpaCl50
FSR 是 Force Sensitive Resistor 的縮寫, 即是力敏電阻. 沒解說, 也許你會以為片中只是一個 簡單的力敏電阻示範, ... , 當然不是了.
話說是這樣的, 先前淘東西, 一併買了兩片 FSR, 打算用來做平台調平用的 (一片做調平, 一片做後備). 兩星期前, 終於輪到佢. 誰不知, 不攪由自可, 一攪就發現, 這 FSR 是幾近無用之物 .
... 本來是要放棄了. 可是, FSR是超貴零件, 棄之可惜 ( ^^" 是的, 55人仔一片的電子零件, 是超貴了). 問Google大神 問到爛, 也沒人有可用方案. 無奈, 只好單挑FSR. 出盡所學的 filtering 技巧, 壓制了 drifting, 壓制了 環境雜訊, 才有上面視頻中 可靠又靈敏的結果.
最令人意外的是, 就連 兩張tempo紙巾掉落在桌上, 它也可不含糊地準確偵測 ( https://youtu.be/KcJYnpaCl50?t=1m36s ), 這意外的結果太有趣了, 貼上來跟大家分享一下. (不含糊 是指連續啟動20分鐘也沒誤報或漏報, 亦即是順利壓制了 drifting 的意思).
FSR的問題有很多方面, 最主要是本質上的問題. 本質上的問題嘛... FSR的讀數和負重的關係 是不停地在變化的 (i.e. drifting). 即是說, 你是無從得知讀數和負重的對應 (因為根本就沒有固定的對應); 甚至... 就算負重完全沒改變, 它的讀數也會無端大幅改變 . 不知讀數和負重的對應, 讀數多少才是剛碰到平台呢?
另一方面, 就是環境問題. 用 FSR, 當然就是期望 比簡易的方案優勝很多了; 不然, 何必花錢花工夫? 我想像中的好, 就是輕輕觸碰 已能不含糊地報告 (約 1g - 2g 的負重變化). 可是呀, 原來 1g - 2g 的負重變化, 在家居環境中, 是一條十分繁忙的頻道. 重的如 低音揚聲器 先不論; 輕的如 輕輕在桌上敲一下, 以至 兩張tempo紙巾掉落在桌上, 也會對這頻道發送訊號. 亦即是說, 除了 FSR 本身的問題, 我們還要處理 大量環境雜訊.
再另一方面, 就是 Arduino 上的ADC 的解像度只有 1024 steps (0V - 5V). 在不外置更高解像度 ADC 前提之下, 選擇配合FSR的電阻時, 合適的電阻用多少 又是一番功夫. (^^" 其實外置更高解像度 ADC 也都試過, 但硬體會變得複雜一點, 而且不用也成, 當然就不用了)
測試的零件倒沒什麼特別, 就是 一片FSR, 兩粒電阻, 一粒LED, 一堆跳線 和 Arduino Nano (上圖). 不過, 奉勸有打算用FSR做調平的師兄們, FSR雖能有用, 但 要有用 不易. 三思 三思. |