ユーザーモジュールOneShotを使ったチャタリング除去の実験
2009-06-24
先の実験で使ったOneShotでチャタリング除去を試してみました。
まずは小道具。

手持ちのオシロはストレージタイプじゃないのでチャタリングみたいな単発現象はうまく観測できません。
そこで74HC393を使ったカウンタにLEDをつないだものを用意しました。

こんな回路です。

試したスイッチです、左側のマイクロスイッチはかなり以前に手に入れたものです(10年以上前かと・・・)
右のタクトスイッチは比較的最近です(のはずです^^;;)
まずは右のタクトスイッチで実験、カウンタに直接つないでオンオフするとカウンタは1~4程度カウントアップします。
左のマイクロスイッチでは数十もカウントアップしてしまいます。古くて接点が劣化しているからでしょうか。
次にユーザーモジュールOneShot8を設定したPSoCにスイッチをつなぎ、出力をカウンタにつないでみると、タクトスイッチでは1ずつカウントアップします、チャタリングはうまく除去できているようです。
マイクロスイッチでは減ったもののそれでも3~4程度カウントアップします、チャタリングは取り切れてません。試しにスイッチに並列に0.1μFのコンデンサを入れると1カウントずつアップするようになりました。
今回のOneShot8の設定はクロック0.25mSですのでデータシートのReluxTime(どう訳せばいいんでしょうか?)は2mSです。マイクロスイッチでチャタリングが取り切れていないのでもう少し長くする必要があるのかもしれません。
まずは小道具。

手持ちのオシロはストレージタイプじゃないのでチャタリングみたいな単発現象はうまく観測できません。
そこで74HC393を使ったカウンタにLEDをつないだものを用意しました。

こんな回路です。

試したスイッチです、左側のマイクロスイッチはかなり以前に手に入れたものです(10年以上前かと・・・)
右のタクトスイッチは比較的最近です(のはずです^^;;)
まずは右のタクトスイッチで実験、カウンタに直接つないでオンオフするとカウンタは1~4程度カウントアップします。
左のマイクロスイッチでは数十もカウントアップしてしまいます。古くて接点が劣化しているからでしょうか。
次にユーザーモジュールOneShot8を設定したPSoCにスイッチをつなぎ、出力をカウンタにつないでみると、タクトスイッチでは1ずつカウントアップします、チャタリングはうまく除去できているようです。
マイクロスイッチでは減ったもののそれでも3~4程度カウントアップします、チャタリングは取り切れてません。試しにスイッチに並列に0.1μFのコンデンサを入れると1カウントずつアップするようになりました。
今回のOneShot8の設定はクロック0.25mSですのでデータシートのReluxTime(どう訳せばいいんでしょうか?)は2mSです。マイクロスイッチでチャタリングが取り切れていないのでもう少し長くする必要があるのかもしれません。
スポンサーサイト
不格好ですが・・・LCD延長ケーブル
2009-06-16
秋月でLCD延長基板キットが発売されているを知りました。
600円かぁ、だったらというわけでユニバーサル基板の切れ端を利用して作ってみました。

ろくに考えず勢いだけで作ったので不格好です。

こんな感じです。
600円かぁ、だったらというわけでユニバーサル基板の切れ端を利用して作ってみました。

ろくに考えず勢いだけで作ったので不格好です。

こんな感じです。
LTC1799とPSoCを使った広帯域パルスジェネレータの試作
2009-06-13

秋月で発売しているLTC1799モジュールとPSoCを組あわせて約30MHz~0.01Hzまで可変出来るパルスジェネレータを試作してみました。

ブロック図です。LTC1799の出力をPSoCのデジタルブロックを使って10^N分周します。(Nの最大値は7です、もっと増やせますがあまり意味がないかと・・・)
ただしN=0には出来ないので、この場合のみ外部回路にて切り替えています。
また周波数カウンタも内蔵しています。
スイッチにてレンジを切り替えます。10^NのNをアップダウンさせます。
液晶ディスプレイの下段の数字はこのNです。
PSoCでデュアル周波数カウンタ・これで何度目か・・・
2009-06-11
データシートを読んでみる。
2009-06-05
CY8C29466のデータシートのTable 11-22. AC Digital Block Specificationsから引用すると
CounterのMaximum Frequency(No Enable Input) は最大で 49.2 MHz (4.75V < Vdd < 5.25V)とある。
実際のところ49.2MHzを少しでも超えたら動作停止するわけではない(そんなことが出来たらそれはそれですごいことだと思うが)、私の使ったチップは公称値の140%でも動作している。
でもチップによってばらつきがあるだろうから60MHzで動作しなくなるのもあるかもしれない。
アマチュアとしては「70MHzでも動作してるからラッキー」なのだろうが、そんなことを期待して設計するわけにもいかない・・・・かな。
CounterのMaximum Frequency(No Enable Input) は最大で 49.2 MHz (4.75V < Vdd < 5.25V)とある。
実際のところ49.2MHzを少しでも超えたら動作停止するわけではない(そんなことが出来たらそれはそれですごいことだと思うが)、私の使ったチップは公称値の140%でも動作している。
でもチップによってばらつきがあるだろうから60MHzで動作しなくなるのもあるかもしれない。
アマチュアとしては「70MHzでも動作してるからラッキー」なのだろうが、そんなことを期待して設計するわけにもいかない・・・・かな。
確認作業・ホントに70MHzも測れてるのか?
2009-06-04


64分周した出力を左の秋月の周波数カウンタキットに入れてみました。計算してみるとほぼ1/64になってます。
ぴったりとは一致しません、ゲートタイムは共に1秒なんですが、ゲートが開くタイミングが一致してませんからね、今回のような安定していないオシレータでは無理ないでしょう。とはいえ約70MHzをカウントしているのは間違いなさそうです。

デュアル周波数カウンタなんだから他の入力に64分周した出力を入れてみました。
70252918/64=1097701.84375ですから、どんぴしゃです。
67MHz?!ホントかよ。
2009-06-03
デュアル周波数カウンタ
2009-06-03
以前作ったのですが、回路とPSoCの設定を変えました。
以前より簡単な回路で動くようになりました。
カウントの上限はわかりませんが、写真のように32MHzが測定できています。
上のは24MHzの水晶発振器の出力を測定しています。
下のはLTC1799の出力です。


ユーザーモジュールCounter32を2つ使っています。
sysclockに非同期に設定します。
Counter32のデータシートによると
今回EnableはHigh固定としたので上限がのびましたが外部にゲートが必要となります。


以前より簡単な回路で動くようになりました。
カウントの上限はわかりませんが、写真のように32MHzが測定できています。
上のは24MHzの水晶発振器の出力を測定しています。
下のはLTC1799の出力です。


ユーザーモジュールCounter32を2つ使っています。
sysclockに非同期に設定します。
Counter32のデータシートによると
とあります、ただし条件があります。Maximum input frequency -- 48MHz Vdd=5.0V
以前はEnableに別のカウンタで作ったゲートパルスを入れていたんですが、それによって入力上限が抑えられていました。Provided enable signal is always high; otherwise, the limit is 24 MHz.
今回EnableはHigh固定としたので上限がのびましたが外部にゲートが必要となります。


プロフィール若干変更
2009-06-01
いつまでも53歳というわけにはいかないですからね。
あと、念のための一文を入れておきました、まぁ大丈夫だとは思いますが、あくまで念のためです。
でもホントこういうことは書きたくないです。
あと、念のための一文を入れておきました、まぁ大丈夫だとは思いますが、あくまで念のためです。
でもホントこういうことは書きたくないです。
PSoC分周器にLTC1799を使ったオシレータをつないでみる
2009-06-01
先に作ったPSoC分周器をこれまた以前作ったLTC1799を使ったオシレータにつないでみました。

14pinのICソケットに刺さってるのがPSoCです。(手持ちの8pinICソケットがなくなったのでやむなく・・・)
このオシレータは32MHzぐらいまで発振します。

上が入力波形、約32MHzの方形波のはずなんですが、ウチのオシロは帯域が40MHzなのでこんな風にしか見えません。もっと広帯域のが欲しい。ちなみに横軸は0.2μS/divです。
下が10分周出力、ちゃんと1/10になってます、動くかどうか心配でしたが。
PSoCにはカウンタモジュールなどの入力をSysclockの倍にシンクロさせることができる設定があります。
ということは通常Sysclockは24MHzですから、倍の48MHzでも動くってことでしょう。
LTC1799はスイッチで出力の周波数を1/10、1/100に切り替えられますが、もっと低い周波数にするには不足です。
74HC390を並べてもいいんですが、8pinPSoCを使えばコンパクトにできます。

14pinのICソケットに刺さってるのがPSoCです。(手持ちの8pinICソケットがなくなったのでやむなく・・・)
このオシレータは32MHzぐらいまで発振します。

上が入力波形、約32MHzの方形波のはずなんですが、ウチのオシロは帯域が40MHzなのでこんな風にしか見えません。もっと広帯域のが欲しい。ちなみに横軸は0.2μS/divです。
下が10分周出力、ちゃんと1/10になってます、動くかどうか心配でしたが。
PSoCにはカウンタモジュールなどの入力をSysclockの倍にシンクロさせることができる設定があります。
ということは通常Sysclockは24MHzですから、倍の48MHzでも動くってことでしょう。
LTC1799はスイッチで出力の周波数を1/10、1/100に切り替えられますが、もっと低い周波数にするには不足です。
74HC390を並べてもいいんですが、8pinPSoCを使えばコンパクトにできます。