ツール

2020年11月12日 (木)

Arduino UNOでデューティー比測定回路 ケースに入れて完成

2020年8月24日:Arduino PWM波形のデューティー比測定 これで完成形か?
2020年8月18日:Arduino デューティー計測のためのインプットキャプチャータイミング
2020年1月28日:Arduinoから「タイマー0」を取り上げる(ユーザーが使う)
これの続き。

Arduino UNO基板を引っ張り出さなくても、「手軽」に
デューティー比を測定できるようにと、回路をケースに
入れました。

オシロを使えば、周波数や周期も表示してくれるし、
デューテューやパルスのH幅、L幅(時間系の測定機能)
も計ってくれます。

でも、「正確になんぼやねん?」にはちょい桁数不足。
  ※周波数や周期は周波数カウンタを使えば
   良いんですが・・・

せっかくだし、ということで実験していた回路を
ユニバーサル基板に組んで、ケースに入れました。

こんな回路。
Dutyck1
単3電池2本で動かします。

ケースの様子。
11_20201112162301

高い周波数の測定を目指したんじゃなくって、入力クロックの
H区間とL区間を調べようというのが目的。

デューテューは t1/(t1+t2) * 100で「xx.xx%」と表示。
周波数は clk / (t1+t2) で表示。
t1とt2はタイマー1のインプットキャプチャー機能で
数えたT1クロックの数。
T1クロックは16MHz~0.1MHzまでスイッチで選択
できるように。
最大クロック数が16bitで65535。
それ以上は(つまり低い周波数)はカウンターがオーバー
フローしてしまいます。

こんな表示になります。
12_20201112162301
0.1MHzのT1クロックで、t1+t2が50000カウント。
だから周波数は2.00Hz。
デューティーは49955 / 50000 = 99.91%。
  ※H/Lsetというスイッチで、t1とt2を入れ替え
   できるようにしています。
   負論理信号のデューティーを読めるように。

基板の様子。
13_20201112162301

片面基板に配線。

14_20201112162301
ハンダ面への部品取り付け(コネクタとVR)はこの↓応用。
2020年9月26日:手組みするときは片面基板で:1kHz PWM発生回路

液晶の下にATmega328P。
15_20201112162301

入力にいれたシュミット 74HCT14は無くてもok。
  ※ちょいスレッショルドを下げたかったんで。
入力プルアップ抵抗のon/off機能(ジャンパーピンで)
付けておくほうが良いかもしれません。

※スケッチ:ダウンロード - duty_ck1.c
  ファイルタイプを「.ino」ではなく
  「.c」にしています。

| | コメント (1)

2020年11月 2日 (月)

DCキャリブレータというか±電圧出力回路を

±電圧入力の装置調整用に、±12Vを連続して可変調整できる、
つまり0Vをまたいで自由に電圧調整できる電圧源(出力電流は
ちょびっとで10mAほどで電流制限)は作ってあるんですが、
もうちょい出力電圧範囲を広くっと(±25Vは欲しいぞ)要望が。

今だとDC30V出力のCVCC電源をつないで、マイナスが欲しい時は
プラスとマイナスを入れ替えて、てなめんどうな作業をしています。
これを、つなぎ替えずに、-25V~0V~+25Vを可変できれば便利かなぁ
っという目論見です。

普通のOP-AMPの電源、±15Vを出力するのに±18Vがmax。
高電圧OP-AMPもあるんで、それを買うか、それともトランジスタで
電圧ブースターを作るか・・・

電圧可変の方法も、10回転ポテンショをクルクル回して設定するか
(出力電圧はテスターで読む)、16bitくらいのD/Aを使って設定するか。

12bitのD/Aなら±25Vだと10mV分解能に届かない。
16bitにすると±25.000Vっと1mV分解能を実現。
Arduino-UNO(ATmega328の16bitタイマー1)のPWM出力を
使ってのD/Aか。

さて、どうしたものか・・・


| | コメント (0)

2020年10月31日 (土)

Arduino-UNO 12bit×4chアナログ SDカードデータロガー完成形

前記事
2020年10月27日:Arduino-UNO 12bit×4chアナログ データロガーほぼ完成
2020年10月28日:データロガーのサンプリング日時出力形式

最終的にはこんな回路に。
Analog_log1_20201031105101

31_20201031105401

時間をちゃんとしておこうと、クロック発振素子を
セラロックから水晶に換えました。

★スケッチ:ダウンロード - sd_analog4ch1.c
  ファイルタイプを「.c」にしています。
  inoのままだとIDEが起動するんで。

START/STOP/ENTスイッチがちょん押しと長押しを区別。
CYC/↑とMENU/↓がオートリピート処理。

ややこしい操作がA/Dのキャリブレーション。
±2Vレンジと±20Vレンジを独立して調整します。
それぞれのレンジに切り替えてから、
 0V・+2V・-2V  0V・+20V・-20V
の電圧を、同時に4chの入力に与えてENTすると
設定完了に。
アナログ系の調整のため、この設定は必須。
6回操作しなくちゃなりません。
  ※調整値はEEPROMに記憶。

※A/D値から電圧値へのスケーリング処理に
 「浮動小数点にしたmap」を使っています。

2019年4月3日:線形補間って「LERP」って言うんだ!
2020年5月17日:Arduino なんとかして誤用を正したい:A/Dの1/1023とmap関数
2020年5月16日:Arduino 10bit A/D値をmap関数でスケーリングする例

SDカードのインターフェースやA/Dコンバータが無くても
液晶(20文字×4行)とスイッチをつないでもらえれば
試運転(操作の雰囲気)は分かってもらえるかと。

外付け12bitA/Dコンバータとの接続にPC0~3(AD0~3)
を使ってますんで、A/D無しでここを入力にして
adreadすれば、10bitで処理できるように改造可能かと。

これ以上のものとなると、Arduino-UNOではもうチカラ不足。
  ※いろんな制御しようとすると、ポートがとRAMが足りない。
ここらと、プリンターシールド をドッキングできればエエんですが。
しかし、手軽な「SD」ライブラリは捨てがたい。


| | コメント (0)

2020年10月28日 (水)

データロガーのサンプリング日時出力形式

Arduino-UNO 12bit×4chアナログ データロガーほぼ完成
記しましたが、データをサンプルした日時の出力をどうした
ものかと悩んでおりました。
GNUPLOTに食わせるんで食わせやすい書式で、1日を越えた
記録でも扱いやすくというのが要求仕様。

GNUPLOTをあれこれ触ってみて、なんとかなりそうなんで、
単純にこうしておきます。
 『 d H:M:S data1 data2 data3 data4』
先頭のdは1から始まる経過日
H:M:Sは時分秒。
最初のデータは「 1 00:00:00 data1~」からスタート。

GNUPLOTに食わせるサンプルデータ。

1 00:00:00  0.00
1 06:00:00 0.20
1 12:00:00 0.40
1 18:00:00 0.60
2 00:00:00 0.80
2 06:00:00 1.00
2 12:00:00 0.80
2 18:00:00 0.60
3 00:00:00 0.40
3 06:00:00 0.20
3 12:00:00 0.00
3 18:00:00 -0.20
4 00:00:00 -0.40
4 06:00:00 -0.60
4 12:00:00 -0.80
4 18:00:00 -1.00
5 00:00:00 -0.80
5 06:00:00 -0.60
5 12:00:00 -0.40
5 18:00:00 -0.20

まず、GNUPLOTの「set xdata time」での処理。
こんなスクリプト。

set grid
set xdata time
set timefmt "%j %H:%M:%S" # 「%j」の範囲が1~366
set xrange [0:"6T0:0:0"] # この「T」で日を指定
set xtics 3600*12
set xlabel "\nDate/Time"
set format x "%1dday\n%H:%M"
set yrange [ -2:+2]
set ytics format "%4.2f"
set ytics 0.5
set key right top
plot "L1.txt" using 1:3 with lines lw 2 ti "Test"

結果のグラフ。 X軸の目盛が日と時分に。

Cap001

次が「time」を使わずに、plotコマンドに書式指定を
導入して、日、時、分、秒に分けて、秒数を計算します。
日は1から始まるんで「-1」してゼロスタートに。
それがこれ。
X軸を「時間」にしています。

#秒で読んでから時間に直してみる
# 1 12:00:00 1.000
# $1 $2 $3 $4 $5
set grid
set xrange [0:120]
set xtics 12
set yrange [ -2:2]
set ytics format "%4.2f"
set ytics 0.5
set key right top
plot "L1.txt" using (((($1-1)*3600*24)+($2*3600)+
($3*60)+($4))/3600):($5) '%lf %lf:%lf:%lf %lf'
with lines lw 2 ti "Test"

「plot」のところの「'%lf~」が入力文の書式指定。
$1が日、$2~$4が時分秒。
$5からデータ部を続けます。
「%lf」は小数点付の数値指定。
そのグラフ。 X軸の単位は「時」に。
Cap002
これで、まぁ、なんとかなりそうです。

※追記 10/30
gnuplotで文字列変数に入れてある文をコマンドとして差し込む方法(@を変数名の前に付ける)
を見ますと、長ったらしいし式を略して記せるとのこと。
しかし現用しているgnuplot4.6にはまだ搭載されてませんでした。
で、新しいgnuplotをダウンロード。
ちょっとテスト。
データ列をもう一つ増やして・・・

Yデータが一つだと。
  plot "L1.txt" using (((($1-1)*3600*24)+($2*3600)+($3*60)+($4))/3600):($5) '%lf %lf:%lf:%lf %lf' with lines lw 2 ti "Test"
二つになると、
  plot "L1.txt" using (((($1-1)*3600*24)+($2*3600)+($3*60)+($4))/3600):($5) '%lf %lf:%lf:%lf %lf %lf' with lines lw 2 ti "Test1" ,\
     "L1.txt" using (((($1-1)*3600*24)+($2*3600)+($3*60)+($4))/3600):($6) '%lf %lf:%lf:%lf %lf %lf' with lines lw 2 ti "Test2"
長い。
($6)に変わるのと%lfが増える。
それを、
  cc = "(((($1-1)*3600*24)+($2*3600)+($3*60)+($4))/3600)"
  cs = "'%lf %lf:%lf:%lf %lf %lf'"
として、プロット実行で
  plot "L1.txt" using @cc:($5) @cs with lines lw 2 ti "Test1",\
     "L1.txt" using @cc:($6) @cs with lines lw 2 ti "Test2"
と。
短くなります。

・・・ところが・・・
想定してる電文、
  1 00:00:00 1.084 0.262 0.000 0.000
  $1 $2 $3 $4 $5 $6 $7 $8
これだと、$nは1~8まで。

8つのデータを取り出してグラフにしようとすると、
gnuplotがこんなエラーメッセージで拒否。
 『format must have 1-7 conversions of type double (%lf)』
1~7の7コまでやで! 8コはあかん。っと。

※例
JIS C8708充放電中の電池電圧とLM35による温度出力。
取り込むとこんなデータが出てきます。

  経過時間 電圧 温度:LM35(10mV/度)
1 00:00:00 1.084 0.262 0.000 0.000
1 00:00:10 1.084 0.262 0.000 0.000
1 00:00:20 1.083 0.262 0.000 0.000
  :
1 04:06:00 1.479 0.269 0.000 0.000
1 04:06:10 1.479 0.268 0.000 0.000
1 04:06:20 1.479 0.268 0.000 0.000

10秒サイクルで取り込んで4時間あまり放置。
それをこんなgnuplotスクリプトでグラフ化。
~~~~~~~~~~~~~~~~~~~~~~~~~~~
#秒で読んでから分に直す
# 1 00:00:00 1.084 0.262 0.000 0.000
# $1 $2 $3 $4 $5 $6 $7 $8
set term wxt 0
set grid
set xrange [0:250]
set xtics 30
set yrange [0.8:1.8]
set ytics format "%4.2f"
set ytics 0.1
set y2range [10.0:60.0]
set y2tics format "%.1f"
set y2tics 10.0
set xlabel "経過時間(分)"
set ylabel "電圧(V)"
set y2label "温度(℃)"
set key right bottom
cc = "(((($1-1)*3600*24)+($2*3600)+($3*60)+($4))/60)" # 経過時間:分
cs = "'%lf %lf:%lf:%lf %lf %lf %lf'"
# $1 $2 $3 $4 $5 $6 $7 ($8がダメ)
plot "M10.txt" using @cc:($5) @cs with lines lw 2 ti "電圧",\
"M10.txt" using @cc:($6 * 100) @cs with lines lw 2 ti "温度" axes x1y2
~~~~~~~~~~~~~~~~~~~~~~~~~~~

出てきたグラフ。
21_20201030161301
  新しいgnuplot、これまでのと色がチョイ違います。

充放電電圧変化と電池側面の温度変化が2サイクル分。
-Δ検出の様子やその時の電池温度上昇が分かります。

チャートレコーダーのようにリアルタイムでは見られません。
けど、こまかいところを見ようとしたとき、データですんで
手があります。

※『set xdata time』だとこんなスクリプトに。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 1 00:00:00 1.084 0.262 0.000 0.000 memo...
# 1 2 3 4 5 6 7
set term wxt 0
set grid
set xdata time
set timefmt "%j %H:%M:%S"
set xrange [0:15000]
set xtics 1800
set format x "%H:%M"
set yrange [0.8:1.8]
set ytics format "%4.2f"
set ytics 0.1
set y2range [10.0:60.0]
set y2tics format "%.1f"
set y2tics 10.0
set xlabel "経過時間(時)"
set ylabel "電圧(V)"
set y2label "温度(℃)"
set key right bottom
plot "M10.txt" using 1:3 with lines lw 2 ti "電圧" ,\
"M10.txt" using 1:($4 * 100) with lines lw 2 ti "温度" axes x1y2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

短縮するための「@cc」や「@cs」は不要。
普通に書けます。
出てくるグラフはこんなの。
Cap001_20201031100601
「波」は同じですが、X軸の目盛が異なり「時:分」の
表現になっています。

とりあえず備忘録ということで。


| | コメント (0)

2020年10月27日 (火)

Arduino-UNO 12bit×4chアナログ データロガーほぼ完成

Arduino-UNO 12bit×4chアナログ データロガー計画中
ざっとカタチになりました。
全体はこんな回路。
Analog_log1

SDカード部はaitendo製の基板。
SDカードスロットDIP化きっと [WV-N09WG]
レベル変換ICでATmega328Pにつないでいます。

A/Dコンバータは12bit 4chのMCP3204
14ピンDIPなんで配線は楽。

4行x20文字の液晶で表示。
11_20201027152801

中身。
12_20201027152801

SDカードに記録する電文フォーマットに悩み中。
現在は、こんな具合。

# 1 Cyc time 2sec  ←設定値の一部をヘッダーに置いて
# 2 Ch1 Range 2V
# 3 Ch2 Range 2V
# 4 Ch3 Range 2V
# 5 Ch4 Range 2V
# 6 Rx chr max 40
# 7 Rx start 0
#LOG on 2sec
00:00:00 0.896 0.896 0.897 0.897 21.23
00:00:02 1.452 1.451 1.451 1.451 21.23
00:00:04 1.504 1.504 1.504 1.503 21.23
00:00:06 0.961 0.961 0.961 0.960 21.24
00:00:08 0.494 0.492 0.493 0.493 21.23
00:00:10 -0.034 -0.034 -0.034 -0.034 21.31
00:00:12 -0.553 -0.553 -0.553 -0.553 21.38
 経過時間 A/D ch1 ch2 ch3 ch4  外部シリアル電文
                     max 40文字

24時間を越えたら「1 00:00:01」と出力。

サンプリング周期は1秒、2秒、5秒、10秒、30秒
1分、2分、5分、10分、30分、1時間の11種類。

長期間の記録を考えると24時間「12:34:56」表記では
不足。
「日」を入れなければなりません。

ところが・・・
グラフ化はGNUPLOTを使います。
しかし、GNUPLOTの日時処理はカレンダーになっています。

例えば、時分秒の前に「日」を付加して「123 01:12:34」という
「日時分秒」という書式は扱えるんですが、これは経過日数が
123ということではなく、年の初めから123日目の日を示すのです。
ですんで、この数値範囲は「1~366日」。
ログ開始からの経過日、「最初は0」で「0 00:00:00」から始めたい。
でも、「0日」は許してもらえません。
最初のデータは「1 00:00:00」にしておかないと怒られます。
そして、1年、閏年もあるんで最大が366日。
これも越えられません。
これに従っていれば、日時のフォーマット変換が簡単に済ませられ
ます。

GNUPLOT、
  set xdata time
  set timefmt "%j %H:%M:%S"
で、「12 12:34:56」と日付+時刻が得られ(秒に換算されて)
ます。

いろんな機能があるGNUPLOT、何か方法はあるんでしょうが、
まだ探し出せてません。


※日時の規約
日と時分秒の間に「T」を入れるかどうか・・・
日時を分ける「T」、調べたらこんな規約があるんですな。
    https://ja.wikipedia.org/wiki/ISO_8601


※おまけでシリアル電文を付加
12bit 4chのA/Dデータに加えて、シリアルで受けた電文を
40文字だけ付加できるようにしています。
他の装置が出すデータをシリアルで受けて、SDカードに
同時に記憶しておこうという魂胆です。
バッファを大きくできないんで、1行40文字で制限してい
ます。
ただし、1行の文字の先頭何文字目までは捨てちゃえという
設定もありますんで、行のうちの必要な所だけを取り込
めるかと。

 

| | コメント (0)

2020年10月26日 (月)

シャープ製関数電卓 EL-566

昨日、片付けものをしていた次男が・・・
『おとん。電卓いるか?』っと出してきてくれたんが
シャープの関数電卓「EL-566」。
  私: 関数電卓、使うやろ?。
  息子:スマホでやるし。
ということで、やってきました。

21_20201026153401

これ、致命的にキライなんが、
・数式通り入力や。  普通の入力方法でエエねん。
評価できるのが、
・単独の「パイ」キーががあるやん。
そして、
・あかん、「1/X」が2ndFや。 「X^2」の裏に割り付け。
・「×=」はエラー。 「X^2」キーがあるから。
  数式通り入力やからか。 
  普通の入力方式やったら、X=で二乗が出てくるのが多い。

数式通り入力、ほんとにイヤ。
ルートやSIN、COS、長年の癖で結果を求めたい数字を
先に入れてしまいます。
この電卓だと「√ 144 = 」で12。
普通は「144 √」で12。 「=」は不要。

16進計算もできますし、とりあえず仕事場作業机の引き出しに
入れておきます。

| | コメント (5)

2020年10月13日 (火)

ダイソー『厚さ測定定規』

昨日寄ったダイソーで見つけたのがこれ。
「発送用 厚さ測定定規」。

011

きっと、使うのは「3cm」だけでしょうが、これはありがたい。
文鎮:ハンダ付け補助ツール の発送で使っているクリックポストや
レターパック・ライトの厚み制限が「3cm」。
これの確認用に、プラ板でテンプレートを自作していたんですが、
ちょいとひ弱。
すでに割れをテープで補修したりと「作り替えなあかんなぁ」っと
思ってたとこだったのです。

とりあえず厚みの精度を確認。
012

| | コメント (0)

2020年9月26日 (土)

手組みするときは片面基板で:1kHz PWM発生回路

ユニバーサル基板を使って回路を手組みするときは
もっぱら片面基板。
手組みでの両面スルーホール基板はキライです。

  ジュンフロン線で配線するんですが、しっかり
  ハンダゴテを当てないとちゃんとハンダが
  乗りません。
  スルーホール基板だと、しっかりハンダした
  ハンダが穴の反対側(裏側)に盛り上がっちゃう
  ことがあるんです。 これがイヤ。

しかし、今回の製作物のように「ハンダ面側にも部品を」
という場合(7seg LEDを裏側に乗せる)は、そんなことも
言ってられません。

そんなときに重宝するのが、サンハヤトのハサミで切れる
薄いシート基板。
薄型ユニバーサル基板 UB-THN01
   シール基板よりしっかりしています。

これを部品面側に貼り付け(クズ線とハンダで固定)、ハンダ面に
取り付けた部品の足を、部品面側でハンダします。
スルーホール基板のように、反対側のハンダが盛り上がること
はありません。
今回の配線だとこんな感じ。

C11_20200926100901

C12_20200926100901

ユニバーサル基板の配線、「最短配線を考えて」とか
「できるだけ小さく」なんてことは後回し。
   ・作るのはこれ1台だけだし
配線の引き回しは部品面。
ハンダ面は電源まわりの接続と直近の信号線接続。
配線がハンダ面でウジャウジャしてると手直しでき
ないから。

※最終的な配線の様子。 あとはケース入れ。
部品面
C22_20200926175501
※写真で気がついた! コイル「100=10uH」はミス。
 ほんとは「101=100uH」が正解だぁ。

ハンダ面。 7seg LEDが見える
C21_20200926175501


こんな回路です。
電源は単3電池2本。
それをホルテックのDCコンICで5Vに昇圧。
   ※そこのコイルを間違っていた次第
P11_20200927172201

制御プログラム・・・ダウンロード - 1khz_360.c
  ※Arduinoでは動きません。

いっぱい割り込みを使ってます。
タイマー0:7seg LED表示に
     コンペアAでブランクに
     コンペアBで表示データを出力
タイマー1:1kHzPWM出力ついでに
     1msタイマー割り込み
タイマー2:チャタリング除去用タイミングに
     オーバーフロー割り込み
INT0とINT1:A相/B相↑↓パルスエッジ割り込み。


※エンコーダーの回転制御をちょいと手直し
クリックの無いグルグル回しのエンコーダー、24P/Rを
4逓倍してるんで96P/R。
これだとちょいと回り過ぎに(手で操作しにくい)。
そこで、最大カウント(+1)を360じゃなく4倍の1440に。
この値を1/4して0~359度を得るという処理にしました。
これで実質的に24度/回転。
そこに、急速回転だと4倍速という処理を入れてます。
しかし、「・358・359・0・1・2・」という、0度を中心
とした合わせ込み操作の時、このスピードアップ処理が
働くと回り過ぎることがあってちょいと使いにくい。
0度±10度ではスピードアップしないような処理にしました。
     ダウンロード - 1khz_360a.c


※箱入れして完成
B32_20200929090101

使ったのは、タカチのプラケース SW-100S
電池ボックス(単3x2)はフタに両面テープで貼り付け。

そして、これ↓で発生デューティーをチェック。
2020年8月24日:Arduino PWM波形のデューティー比測定 これで完成形か?
  発振素子がセラロックなんで、周波数は
  0.6Hzほど高い目になってました。

出力信号はJSTのXHコネクタ で出しています。

便利小物のお話し
2.5mmや2.54mmピッチコネクタの仮接続用に
こんなソケットアダプタを作っておくと便利です。
ジャンパー線でArduinoやブレードボードと手軽に
接続できます。

B33

メスソケットを対向させてハンダ。

B34

信号をつまむこともできるし、ジャンパーピンで引き出すことも
可能。
  ※ツールボックスに入れたこれを探し出す方が
   早いか、新たに作る方が早いか・・・
   「前に作ったし、どっかに有るはずやけどなぁ」
   っと悩んでいる間に作れます。


※さらに制御プログラムを変更
1分間操作しなかったら、その時のエンコーダカウント値を
EEPROMに保存。
次回起動時、その角度からスタートできるようにしました。
  ちょっと便利に。
ダウンロード - 1khz_360b.c

 

| | コメント (0)

2020年9月14日 (月)

「チャタリング除去回路」じゃなくって「チャタリング発生回路」をどうぞ

2020年9月12日:ロータリーエンコーダーの2相パルスをピン変化割り込みで取り込む
に絡んで、接点式ロータリーエンコーダーの「チャタリング」を
ソフトでどうにかできないかと試しています。

ただ・・・
件の接点、たいへん状態が良くって、オシロで見てても頻繁に
は発生しません。
たまに出る」という状態です。
しかし、チャタリング除去回路無しでは、「出ればカウントミス
が発生します。
やはり、これではあきません。
外付けチャタリング除去回路(抵抗+コンデンサ)無しでなんとかな
らないかと、試行錯誤中です。

その試行錯誤するためには、信号源として
チャタリングが出る接点」が必要です。
「リレーをカチャカチャ」なんてこともありなんですが、
エンコーダーなんで2相パルスが欲しい所です。

そんな時のためのツールが『チャタリング発生回路』。
1chだけのを作ってあったんで2chに拡張しました。
これで、2相パルスの両方に模擬的な「チャタリング信号」
を乗せることができるようになりました。

こんな回路です。

C11_20200914081201
まず、X-ORゲートを使ったエッジ検出回路で↑↓エッジからちょいと
遅れたゲート信号を作ります。
別の発振回路で作ったチャタリング信号を、そのゲートの時間だけ
X-ORゲートで元の2相パルスと合成します。

こんなタイミング。
C12_20200914081201
X-ORゲート、2つの入力信号のH/Lが一致で出力L。
2つの入力のH/Lが異なったら出力H。
ということは、
片方がLならもう片方の信号をそのまま出力。
片方がHならもう片方を反転して出力すると
いう性質があります。
これでエッジ検出やチャタリング信号の合成を
行っています。

オシロで見たところ。

C022  

手組みした基板の様子。
C24

チャタリング時間とチャタリング信号の周波数を半固定ボリュームで
可変できるようにしてるんで、あれこれ試せます。


※2相パルス発生回路はあれこれ製作しています。
2005年09月09日:トラ技2005年10月号
2015年12月08日:んっ? トグルスイッチが
2014年07月01日:高速2相パルス発生回路



| | コメント (0)

2020年8月29日 (土)

Arduino-UNO 12bit×4chアナログ データロガー計画中

Arduino-UNO + SDカードでシリアルデータロガー 完成形 今度こそ
でArduino-UNOを使ったSDカードの読み書きがうまく行ったんで、
今度はアナログ値のデータロガーかと、構想中です。

◎要求仕様
・10bitでは不足だっ。
 だもんで、ATmega328Pの10bit A/Dは使わず、
 12bitのA/Dコンバータを外付けっと。
・4chは欲しいぞ。
 だもんで、A/DはMCP3204。
・リファレンス電圧は4.096Vで。
 ちょっとエエのを使おうか
・入力レンジをどうしよう・・・
 悩み中。
 とりあえず±2Vレンジと±20Vレンジで。

フロントエンドはこんな回路か・・・

50_20200829161201
±2Vレンジなら±2.048Vで最小桁が1mV。
±20Vなら10mVを読めるかと。
いわゆる 3・1/2桁 相当。

昔々、各チャンネルのGNDをアイソレートして
別電源でも測れるようにっと、こんな回路も描いたけど・・・

53_20200829161301

入力レンジ切替回路の参考図。
51_20200829161301
2015年04月22日:A/Dコンバータの入力レンジを拡大する方法

これ↓はプリンタシールド応用チャートレコーダの
52_20200829161301
2014年01月25日:プリンタシールド、付加回路


| | コメント (2)