タッチリレーボード とは、
先日の ↑こちらの記事で使用したタッチリレーボードですが、スマホ等のタッチパネルをタップするハードウェアです。
おそらく、スイッチサイエンスさんのオリジナル商品ではないかと思います。
このタッチリレーボードは、商品説明ページに記載されているように、オムロン製(G6L-1F DC5)のメカニカルリレーを搭載しています。なので、動作時に カチカチ と音がします。
前出の記事では、これを点滅ICで動作させて、毎秒約9回の高速タップを実現しました。
では、このタッチリレーボードは、最高 毎秒何回 タップできるのでしょうか、今回の記事では それを検証します。
製品仕様は?
オムロン製のリレーの動作性能が そのまま タッチリレーボードのタップ性能になると思われるので、リレーのスペックを確認します。
データシートによると、

とあり、以下のように解釈しました。
- 動作時間 とは、OffからOnへ切り替わる時間:5ms(実力値 1.1ms)
- 復帰時間 とは、OnからOffへ切り替わる時間:5ms(実力値 0.4ms)
公称値は、5ms + 5ms = 10ms周期で、
デューティー比 50%(5/10)、周波数 100Hz(1000/10)となり、
実力値ベースなら、1.1ms + 0.4ms = 1.5ms周期で、
デューティー比 26.7%(4/15)、周波数 666.7Hz(1000/1.5)となります。
(解釈が違うようなら、ご指摘ください)
では、さっそく検証します。
検証
Raspberry Pi Pico を使い、Micropython で PWM を制御します。
Picoは、Clock周波数の1/2(半分)までの周波数のPWMを出力できます。
(標準のClock周波数は 125 MHz、PWMは最大 62.5 MHzと桁違いな分解能があります。最低は8Hz)
次のコードで、周波数を 10〜100Hz まで 10Hz刻みで 10秒間づつ、
200〜700Hz まで 100Hz刻みで 10秒間づつ出力してみます。
from machine import Pin, PWM, ADC
import machine
import utime
pwm0 = PWM(Pin(17), freq=8, duty_u16=32768) #duty rate 32768/65535
for hz in range(10, 110, 10):
print(f"now: {hz}Hz")
pwm0.freq(hz)
utime.sleep(10) # whole 10sec keep
pwm0.duty_u16(17476) #duty rate 17476/65535
for hz in range(200, 800, 100):
print(f"now: {hz}Hz")
pwm0.freq(hz)
utime.sleep(10) # whole 10sec keep
pwm0.duty_u16(0) # stop
10〜40Hzまでは ほぼその速度でタップできていることが確認できますが、
50Hz以上では、iPhone13 mini がちゃんとタップを拾っていない感じです。
考えられることとしては、次の2点;
- iPhoneに画面保護ガラスフィルムが貼ってあることが影響?
- SwiftUIの
onTapGesture
が追いつかない?
そこで、2DゲームフレームワークのSpriteKitを使って書き直し、かつ、画面保護フィルムを貼ってない(第9世代無印)iPad で再度検証。
その結果、50Hzはどうも(タッチリレーボードが滑っていて?)間引かれて認識しているようで、30〜40Hz程度に低下、
60Hzだと、数秒は60Hzを認識しますが、10秒程度でも継続が難しい状況です。
↓この時も、途中で認識しなかったタップがあり、10秒間で558回のタップとなっています。タッチリレーボードは60Hzで動作しているので、タッチリレーボードとスマホ/タブレットの相性の問題です。
ラストの10タップは 60.097Hz、瞬間最高10タップは 60.589Hz

70Hz以上のスピードでタップを受けられるデバイスがないので、これ以降の実機測定は断念します。
とは言っても、高橋名人の4倍近い性能ですから、十分だと思います。
余談ですが、タッチリレーボードの カチカチ 音ですが、周波数が上がると、ガー、ビー とブザーように鳴り、さらに周波数が高くなると、ピー と超音波かと思う音になりました。