2014年に「Johannes Heberlein」氏によって公開された、ホワイト・ボードにサーボ・モーターで時刻を書く時計です。
時計としての実用性はあまりありませんが、三角関数の計算でサーボモータを制御するプログラムが見事で、コミカルな動きの楽しめる工作です。
オリジナルは「Arduino」のスケッチですが、BASCOM-AVRのBASIC言語に移植しました。
回路の解説 |
・左アーム、右アーム、昇降の3つのサーボモータのPWM信号をAVRで制御します。
・サーボモータの電源は5Vなので、AVRと同じ電源に接続しています。
・製作では「Arduino UNO」ボードを使用しましたが、プログラム内で3つのサーボの制御ポートを
自由に選択できますから、任意のAVR回路でも動作します。
|
・プログラム内で行われている計算の原理図です。
|
注意! この図面を使用した、いかなる損害にも責任を負いません。
|
|
製作について |
・「Aliexpress」で「Plotclock」のキットを購入しました。
・製作図面等は何も付いておらず、同梱のサーボモーターも模造品のようで、付属のビスでは
固定できなかったので2mmのビスナットで固定しました。
・サーボモータの精度が悪いのと、アクリルのアーム等のしなりが大きく、ペンの移動時にペンの
慣性で揺れが起きるので、文字がきれいに書けるキットではありませんでした。
・資料が少ない分、色々と調べて工夫する必要がありますが、それも楽しみとして下さい!
・製作の参考サイト。
・https://www.thingiverse.com/thing:248009
・https://wiki.fablab-nuernberg.de/w/Ding:Plotclock
・https://youtu.be/2DZSj8b2RGw
アクリル部品の図面。
・https://github.com/9a/plotclock/blob/master/plotclock_beta1.pdf
|
・この製作の回路とは別のAVRポートを使用する場合は、プログラム冒頭の「ポート名の定義」で
ポートを指定して下さい。
・組み立てで重要なのが、サーボモータに取り付けるアームの位置です。
・プログラムには「キャリブレーション・モード」を用意してありますので、組み立て時に使用します。
1.アームとリフトの組み立て時。
・Const Calibration_mode = 1 にしてコンパイルします。
・プログラムが起動したら、左アームが2つのアーム用モータに対して水平の位置、右アームが
2つのアーム用モータに対して水直の位置になるように取り付けます。
(ギアの刃に対する位置の微調整は、キャリブレーション・モード2で行います)
・昇降サーボの位置を、ペンがホワイトボードに描画する位置に取り付けます。
2.サーボとアームの調整。
・Const Calibration_mode = 2 にしてコンパイルします。
・左右のアームがそれぞれ水平と垂直の位置を交互に繰り返しますから、下記の値をこまめに
微調整していきます。
Const Servoleftnull = 1845 '左サーボの水平位置。初期値(1950)
Const Servorightnull = 760 '右サーボの水平位置。初期値(815)
Const Servofaktorleft = 638 '左サーボの垂直位置。
値を小さくすると左へ回転、大きくすると右へ回転。初期値(600)
Const Servofaktorright = 650 '右サーボの垂直位置。
値を小さくすると右へ回転、大きくすると左へ回転。初期値(600)
3.イレーザーの待機位置調整。
・Const Calibration_mode = 3 にしてコンパイルします。
・左右のアームが描画位置(0,0)とイレーザーの待機位置を往復しますから、下記の値を微調整
していきます。
Const Eraserwpx = 71 'イレーザーの待機位置[X]。(距離cm) 初期値(75)
Const Eraserwpy = 44 'イレーザーの待機位置[Y]。(距離cm) 初期値(47)
※ その他、アームの長さや筐体の種類によって、プログラム冒頭の「[Plotclock]の個体差設定」
を微調整していくことで、描画の精度が上がります。
|
操 作 方 法 |
・シリアルターミナル(パソコン)を接続して、「Tera Term」等のターミナルソフトを起動します。
・シリアルポートの設定を、下記にします。 9,600ボー、パリティー無し、データ・ビット
8、ストップビット 1
・プログラムでは、1分ごとに自動で描画を行います。
・時間は「Arduino」ボードの水晶(16MHz)でカウントしていますので、電源を切ると「00:00」から
始まります。
・時刻を管理する場合は、別途RTCなどのモジュールを追加して下さい。
・ターミナルから4桁の数字を入力すると、時刻設定が行えます。
例、(12:34) → 1234 + [Enter]
・入力のエラー処理は一切行っていないので、キー入力に注意して下さい。
・[Enter]キーのみを押すと、描画を行います。
・プログラムは[Timeplot]サブルーチンで[_hour]と[_min]変数に対して描画を行いますから、
BASCOMの時計機能命令で自由に改変して下さい。
|
|