コンテンツへスキップ

フィラメント菅時計

時計って家にあります? 私,引っ越したので無かったんです。

PCかスマホ見ればいいですし,時計を持ってない人は多いかも。 しかし,朝はギリギリまで寝ているので,スマホをわざわざポケットから取り出す時間すら勿体なかったりします。

時計が欲しい! しかもなるべくカッコイイ時計が欲しい!

そこで,欲求を整理した結果,自分が欲しい時計がamazonでは見つかりませんでした。なんてこった!! そんなわけで時計を作りました。

作ったの半年くらい前なんですけどね。作り方をざっくり紹介します。

ガラスの加工がうまくいかなかったのが残念。

目次

  • 欲求の整理
  • 全体構想と仕様追加
  • 開発環境
  • 回路の部品一覧
  • 回路とソースコード
  • タイマモジュールの使い方
  • GPSの使い方
  • IOエキスパンダ―のつなぎ方
  • フィラメント間の使い方
  • 木枠
  • 回路発注
  • 完成!
  • 雑記

欲求の整理

時計を作るにあたって,求める機能を羅列していきます。

  • 見た目をカッコよくしたい → 木材で枠を作る。フィラメント菅を使用。
  • 電池交換したくない → コンセントから給電
  • 手動で時間を合わせるのが面倒 → 電波等で時間を公正

ニキシー菅を使って作りたかったけど,ニキシー菅はかなり高電圧らしい。5Vで作れた方が安心なので,フィラメント菅に変更しました。敗北 +1。

全体の構想と仕様追加

また,基本的な部品はこれを使用。これにGPSをくっつけます。 6桁表示・フィラメント管時計キット -nixie-tube.com さん

コントローラ(マイコン)部分は私が慣れているRaspberry Pi Picoを使用します。

全体の構成はこんな感じ。

電波で公正ですが,なるべく簡単に作りたいという気持ちがあり,GPSでやります。

GPS受信キット 1PPS出力尽き 「みちびき」2機受信対応

GPSから時刻を取得して時刻表示を更新するタイミングは下記にします。

  • 電源投入時
  • スイッチ(SW)押下時
  • 内部で持っている時刻が12時0分0秒の時

開発環境

  • 開発PC: windows
  • 開発対象: Raspberry Pi Pico
  • 言語: MicroPython
  • 開発環境: Thonny
  • その他: Mini GPS_r1.20 (GPSの設定に使う)
  • その他: Power GPS_r1.00 (GPSの設定に使う)

回路の部品一覧

NAMEQuantitymemoURL
Raspberry Pi Pico1https://akizukidenshi.com/catalog/g/gM-16132/
IV-96フィラメント菅https://nixie-tube.com/shop/1_76.html
5V2A11Aで十分https://akizukidenshi.com/catalog/g/gM-01801/
DCジャック12.1mmhttps://akizukidenshi.com/catalog/g/gC-09408/
タクトスイッチ4色は何でもhttps://akizukidenshi.com/catalog/g/gP-03647/
ボタン電池11.5Vhttps://www.amazon.co.jp/dp/B003X5WJR6?tag=amz-mkt-edg-jp-22
電池ホルダ(LR44用)1https://akizukidenshi.com/catalog/g/gP-08208/
ICソケット18pin1https://akizukidenshi.com/catalog/g/gP-00008/
ICソケット8pin1https://akizukidenshi.com/catalog/g/gP-00017/
ICソケット28pin3https://akizukidenshi.com/catalog/g/gP-00013/
DS1307+1RTC(タイムキーパー)https://akizukidenshi.com/catalog/g/gI-06949/
MCP230173I/Oエキスパンダーhttps://akizukidenshi.com/catalog/g/gI-09486/
水晶発振子32.768kHz1https://akizukidenshi.com/catalog/g/gP-04005/
10kΩ5https://akizukidenshi.com/catalog/g/gR-25103/
1kΩ2I2Cバス用https://akizukidenshi.com/catalog/g/gR-25102/
15Ω6https://akizukidenshi.com/catalog/g/gR-09429/
0.1µF6https://akizukidenshi.com/catalog/g/gP-00090/
M3ねじ適量
スペーサー適量
GOS受信機キット1https://akizukidenshi.com/catalog/g/gK-09991/
ボタン電池1予備https://amzn.to/3oIKaik
基板1PCBwayでプリントしてもらいました。

過不足あるかもしれないけど御愛嬌。

回路とソースコード

私のgithubで公開したはず

回路は watch.pdfです。

タイマモジュール

DS1307+を使います。どうやら内部のメモリに格納された値が時間の初期値で,そこからカウントアップしていく感じらしいですね。

時間を合わせるには,このメモリに時間を上書きしてあげます。

ドライバーですが,Micropythonで簡単に使えるライブラリがgithubに上がってるので使わせていただきます。

書き込みなどは下記のgithubの関数を使うのが簡単です。

micropython-tinyrtc-i2c -github

使い方は簡単,「ds1307.py」をクローンして,picoに保存してあげましょう。それで準備完了。あとは main.py 内でインクルードしたりして,普通に関数をコールすればOK。

下記も参照。

注意点ですが,タイマモジュールに時間を書き込むときは2進化10進法表記の整数にしないといけません。この後出てくるGPSはASCIIで時刻を取得するので,変換してあげましょう。

なお,メモリの値は,電源供給が絶えると消えてしまいます。が,私の設計ではGPSで取得して上書きするので,電池追加等はしていません。

GPS

下記を設定

  • 5Hzで時刻を受信
  • GPZDAモード

GPZDAモードは日付と時刻だけが流れてきます。受信データはASCIIコード。 ホットスタンバイで,ずーっと受信します。消費電力など知るか。

仕様について。下記の3つの条件が一つでも満たされたとき,GPS情報を読み込むように設計しました。

  • 電源投入時
  • タイマモジュール が保持している時刻が0時0分0秒のとき
  • push switch が押下されたとき

GPSの使い方

GPSは色々と受信できます(位置情報とか)が,日付と時刻のみのモードに設定します。ボーレートや更新周波数も設定します。

GPS受信キット 1PPS出力尽き 「みちびき」2機受信対応

秋月のサイトに,GPS設定用ソフトのリンクが張ってあります。

受信するデータの形状はこんな感じの33文字です。ただし,時間は本初子午線基準なので,日本時間にするためには 9 時間足してあげる必要があります。

$GPZDA,131003.400,28,10,2022,,*5B

githubで共有した302行目でGPSを読み込んでいます。 次の行のcorrect_time(buff, rtc_write)の引数ですが,buffは302行目で読み込んだ値,rtc_writeは書き込み先(つまりタイマモジュールに対応するオブジェクト)です。

IOエキスパンダ―

GPIOピンを増やすICです。下記のようにI2Cで結線してあげればOKです。

I2Cの結線
回路一部抜粋

A0, A1, A2 の3ピンでスレーブアドレスを指定できます。Highが1, Lowが 0で,3bitなので最大で8個のMCP23017が繋げるってことですね。 (A0, A1, A2)=(0,0,0)の時,アドレスは0x20になります。

フィラメント菅の使い方

※フィラメント菅の回路図記号が分からなかったので(存在するんですか?)代わりに7セグで作りました。

回路一部抜粋

フィラメント菅には制御ピン8本と電源ピン(コモン)1本の計9ピンあります。

電源は5VでOK。コモンに5Vを供給しておいて,制御ピン(IOエキスパンダ―MCP23017に繋いである)を0Vにすると,電流が流れて対応するセグメントが光ります。

フィラメント菅の実験

木の枠

やっぱり3Dプリンタより木の方がカッコイイよね。

ところで,趣味で CAD 使う時って皆さん何を使ってるんですか?

こんなに単純ならCAD要らんやろって? CADなしで物を作るなどありえん……

自分は oneshapeを使ってみました。 インストール不要ですし,履歴型なので操作感がsolidworksに似ていて使いやすい。長さの測定方法がよく分からなかったのでそこだけイマイチでした。

多分下記リンクで飛べば,自分が作ったデータが見れるはず。

onshape

CAD

これに合わせて切っていきました。切る/穴を空ける/削る。 ドリルとのこぎりと,ガラスカッターが必要です。

水溶性ニス(ダークブラウン) ガラス切る

ガラスはガラスカッターで傷を付けた後,板チョコのように割って加工するんですが,上手くカットできませんでした。当然です,板チョコですら上手く割れないじゃないですか。

自分はガラスカッター以外はホームセンターで全部買いました。

・ガラスカッター & オイル(左端2個): 使いやすかったかと言われると微妙。普通なのでは。

・ニス(真ん中): 二度塗りしました。塗って乾かすだけなので楽でした。色も良い感じ。

・ドリル(右端): ドリルって何が良いんだか分からないのでとりあえず BOSCH にしました。小さい木材を削る分には全く問題無い,使い勝手がいいドリルと言う印象でした。

・ドリルスタンド(右端): ドリルを固定してボール盤みたいにして使ってます。小さい木材を固定するのはちょっと工夫が必要ですが,まぁ大丈夫でしょう。

金が溜まったら卓上フライスが欲しい。

回路発注

PCBway で注文しました。注文時にオペレーターにチャットで繋がって基板チェックが入って,新鮮でした。後でメールでやり取りとかしないんだなぁと。一発OKだったのでほぼ会話なしでしたし,届くまでも1週間しなかったので,かなり良かったです。 ただし,たしか 5枚 $30 くらいだったんですが,ちょうど円安の時期だったので5500円くらいに…。

んで,出来た。

完成!

部品値段 [円]
プリント基板5493
フィラメント菅時計キット11600
GPS受信機キット2200
木材・ハケ・ニス・ガラス1526
合計13419

他にのこぎりとかドリルとか買ったので結構な額が動いた。

夜の姿はこんな感じ。

夜のフィラメント菅の暖かい輝き
夜のフィラメント菅

雑記

利用させてもらった ds1307.py は MITライセンス。こういう無償で公開しているコードってすごく有難いですし有難すぎて投げ銭したい気持ち。github さんスパチャ機能を実装してくれないかな。

追記 (2023/5/13)

みちびき受信キット (GPS) の電池が無くなると動作がおかしくなります。

詳細ですが,GPS はホットスタンバイでずっと正確な時間を受信しており,ラズピコが時々読みに行くという設計です。GPS は受信する信号の種類やボーレートを設定する必要があり,秋月のページに載っている設定ソフトであらかじめ設定します。そして,設定を保持するために,ボタン電池が付いています。この電池が無くなると,設定が初期化されて,ラズピコが読みたいデータ形式ではなくなってしまい,結果,動作がおかしくなってしまいます。(たぶん 11:59:59 から時間が更新されなくなります。)

つまり,「電池交換したくない → コンセントから給電」という要求は達成できていません!!! くやしい!!!!! 

とはいえ,正確な時間 or 停止 なので異常が分かり易くて使い勝手は良いのかなと思います。「いつの間にか時計が30分遅れていた! 遅刻だ!」が一番ヤバいと思いますので。なので,いったんは保留にして,今後もし Ver 2. を設計することになったら修正したいと思います。

KiCADを使用してプリント基板を注文するところまでやります。届いたら追記します。 使用するKiCADは5.0.2です。

目次

  • kicadとは
  • インストール
  • 基板データの作成
  • 製造データの出力
  • Elercowに注文
  • 雑談

KiCADとは

KiCADとは、回路図とプリント基板のレイアウトを作れるEDA(Electronic Design Automation、電子設計自動化ツール)で、無料で使用することが出来ます。CADの一種です。=>KiCad EDA

用途

回路を作るとき、部品の数がめちゃくちゃ多いだとか、回路を小さく軽くしたいというようなことがあります。そういうとき、プリント基板で作るということがあります。プリント基板というのは、配線が銅などでプリントしてある基板で、部品をつけるだけでいいという優れものです。KiCADはそのプリント基板を設計するときに活躍するツールで、なんとタダ!素晴らしいですね。

実際に作るときには、データを作って、そのあと外注するか自分でプリントすることになります。今回は注文してみたいと思います。

機能

KiCADは以下のCADがセットになっています。

  • KiCad プロジェクト・マネージャ
  • Eeschema 回路図エディタ (回路図とコンポーネント)。
  • CvPcb フットプリント・セレクタ。部品の足下の穴の位置や大きさ、銅の形などの情報を制作する。
  • Pcbnew PCB レイアウト。回路図にしたがってフットプリントが現れ、それを配置したり配線したりする。
  • GerbView ガーバー・ビューア。制作した製造データを確認する。
  • Bitmap2Component ビットマップをコンポーネントやフットプリントに変換。
  • PCB Calculator コンポーネント、線幅、電気的安全間隔、カラーコード等のための計算機。
  • Pl Editor 図枠エディタ。

kicadことはじめから抜粋

インストール

インストーラにした従えばオッケーです。Download | KiCad EDA

基板の設計

回路図の作成

私は今後つくるラジコンに搭載する赤外線受信回路をプリント基板にします。なるべく小さく、軽くし、かつ今後使いまわしできるようにするためです。動作確認とかやってないので今後変わる可能性は大ですが、まあとりあえずやってみようということで。 やり方は前述のkicadことはじめPDFにそって作業すればオッケーでしたので、申し訳ありませんが詳細は書きません。

  • オペアンプマークでコンポーネント(部品)を選び、緑の線で配線します。GNDマークから電源の類いが選べます。回路図が完成したらてんとう虫マークでチェックします。電源、GNDがついていないとここでエラーをはきますので注意してください。
  • ライブラリにない部品は自分で作らなければいけません。下記リンクで大量のコンポーネントを作ってくださった方のgitに飛べます。ダウンロードしたら、設定/パスの設定 からパスを設定できます。 nosuz/kicad-lib - GitHub GitHubからダウンロードする方法

回路図が完成したらてんとう虫マークでチェックし、問題がなければNETと書いてあるマークでネットリストを作成します。問題なければシンボルをフットプリントと関連付けます。それぞれの部品を調べながらフットプリントを選びます。新しいコンポーネントを作った場合、ここでフットプリントが見つからない場合は設定/パスの設定 からパスを設定できます。

必要なら部品表を作成しますが、私は部品表を作成できませんでした。なんででしょうね。バージョンに問題あるっぽい?です。

新規コンポーネントの作成

私の場合、秋月の変圧器はライブラリに無かったのでコンポーネントを新しく作る必要がありました。(5V出力昇圧DCDCコンバーター)。新規コンポーネントを作成する場合、回路図とフットプリントをそれぞれ作成して関連付けをします。Eeschema(回路図エディター)の上側ツールバーのオペアンプマークからシンボルライブラリーエディターを呼び出して回路図を作ります。

ファイル/新規ライブラリー か ファイル/ライブラリーの追加 からスタートします。作成するときの注意点は2つです。1つはパス、もう1つはピンのエレクトリックタイプです。

  • パス:回路図、フットプリントで関連付けるため、どのフォルダに入れたのかを覚えておきましょう。回路図エディターの 設定/パスの設定 からパスを設定できます。権限がありませんというメッセージが出てきたら、windowsの場合KiCADを起動するときに 右クリック/その他/管理者権限で実行 から開きます。
  • ピンのエレクトリックタイプ :ICなどは、動作に関係があるpinの他に電源供給用のpinやGNDのpinがあります。pinごとに、入力専用、出力専用、入出力兼用などという設定をしておくと回路図のエレクトリックルールチェックでミスがわかりやすくなります。ただ、ライブラリーを作成する時点で間違えると正しくてもエラーが出るので注意が必要です。よくわからないうちは パッシブ にしておけば大丈夫です。
新しく作った回路記号

回路記号ができたら、フットプリントを作成していきます。作業しやすいように下のようにしてすぐ保存できるようにするといいと思います。(参考にしたトラ技の丸パクリ)

  1. 回路図エディターのicマークでエディタを開き、ファイル/新規作成 から作成します。
  2. 名前をつけて、ツールバー左から3番目の 新規ライブラリを作成して,現在のモジュールを保存 でフットプリントをわかりやすいところ(mylib)に保存します。
  3. ファイル/アクティブなライブラリー で今作成したライブラリを選択します。ここで出てこない場合は 設定/パスを設定 でフォルダの場所を教えてあげます。
  4. ICとフォルダのマークからライブラリーから フットプリントをロード を選択して今保存したフットプリントを開きます。

あとは作りたい図面を探してきて、大きさに注意して作成するのみです。まずはアンカーを配置しておきましょう。中心線をフットプリントの中心に合わせなくても、後で配置するときに動かすので大丈夫だと思います。ほぼ直観的にできましたが、注意すべきポイントは2つです。

  • 単位 大きさはmmで統一しましょう。inchも選べます。1inch=25.4mm です。すべてのパーツをinchで作ると25.4倍の大きさで作れるのでうれしくなってしまいます。
  • クリアランス クリアランスはパターンとパターンの距離です。細かすぎるプリントは製造できません。P板.comではパッド-マスク(レジスト)のクリアランス設定 0.1mm 以上みたいなので参考にしましょう。
この章の参考

基板レイアウトの設計

回路図エディタの基板マークの 基板レイアウトの実行 をクリックします。部品がごちゃごちゃに並んでいるので、交差ができるだけ少なくなるように並べます。自動配線ツールがあるらしいですので興味がある方は調べてみてください。レイアウトはノイズ対策や高周波対策、熱などめちゃめちゃ細かいポイントがあるらしいですが、高周波ではないし複雑ではないレイアウトの場合に注意するポイントは2点です。

  • 直角に曲げない 電磁波が変な動作を引き起こすかもしれません
  • クリアランス パターン間が近すぎると製造できません。

わかりずらい項目についてメモしておきます。

  • 右上のアイコン F.Cuは表面の銅線のパターン、B.Cuは裏面の銅線のパターンです。各層ごとに決めていきます。F.Silksはメモのように使われてるはずです。
  • 配線 GNDは最後に配線します。
  • ビア 表と裏を貫通する穴です。ビアを経由することで表と裏の配線を繋げられます。

最後にてんとう虫マークの デザインルールチェックの実行 をします。設定をして「DRCの開始」ボタン。

私の場合ここでエラーが出たので書いておきます。 修正したかったがなぜか同じconn3は全部一緒のはずなのに配線できませんでした。コネクタ部品の穴につながりません。なんでだかわからないものの、問題があるのはこの部品だけなのでこのままやっちゃおうと思います。配線を別なところで作って移動させました。

悪知恵の写真

以上で基板のデータができました。最後に、データの出力の準備をします。

ドリルの配置をします。メニューバーの配置/ドリルと配置のオフセット から、基板外形の左隅におきます。これ、P版のサイトによると左下が安定らしいです。 セットアップ/パット -レジストのクリアランスで以下のように設定して保存します。P版では0.1mm以上を基準にしていました。配線/寸法線から寸法が測れます。

完成品の画像。ファイル/3Dビューア で3Dで見られます。

3Dビュー
この章の参考

プリント基板を作る

最後にメーカーに送るデータを作成します。作るのは「ガーバーファイル」と「ドリルファイル」です。

世の中には自作しているヒトも居ますので参考にしながら作ることもできそうです。が、今回私が作りたいのはかなり小さい基盤なのでプロにお願いしようと思っています。日本の企業もいくつかありますが、ちょっと高い。そこで今回はELECROW に注文します。

ガーバーデータとドリルデータ

ガーバーデータは各層のプリントの様子を、ドリルデータは穴の様子をまとめたデータです。

ガーバーデータとは、プリント基板を製造するためのデータです。ガーバーは元々基板のアートワークフィルムの作画に用いられるグラフィック・フォーマットでした。フィルム作画機メーカの Gerber System社の独自規格でしたが業界標準として広く普及したため、1979年にEIA (米国電子工業会)で RS-274D として規格化されました。

ガーバーデータとは -アロケートドットコム

データの出力

製造ファイル(ガーバーデータ)を出力

ガーバーデータを出力してみます。 ファイル/プロットで、写真のように設定して、製造ファイルの出力を押します。このようにファイルが出ます。 同じ画面で、ドリルデータの出力から、このように設定して、出力します。ついでにマップも出しておきます。

(追記) 裏面ソルダマスク のデータを送っていないことに気づきました。製造ファイル作成時にB.Maskにチェックを入れ、下の表の最終列のように編集してください。必須です。ありがとう、アニーさん。

ドリルファイルを生成

んで、elecrowの送るためにはデータの名前を変える必要があります。

Elecrowさんより抜粋

で、これを以下のように変更します。ファイルの名前が上の写真では「plane_SpeedControllReciever」になっていますが、表では「NAME」にまとめました。

layerbeforeafter
TopNAME-F.Cu.gbrNAME.GTL
BottomNAME-B.Cu.gbrNAME.GBL
Solder Stop Mask topNAME-F.Mask.gbrNAME.GTS
Silk TopNAME-F.SilkS.gbrNAME.GTO
NC DrillNAME.drlNAME.TXT
NC Drill-NPTHNAME-NPTH.drlNAME-NPTH.TXT
Mechanical layerNAME-Edge.Cuts.gbrNAME.GML
Solder Stop Mask BottomNAME-B.Mask.gbrNAME.GBS

-F.CtrYd,-F.Fabは参考にしたサイトでも使ってないし、部品を囲う線なのでプリントする必要もないものですので、送りませんでした。あと、NAME-NPTH.drlがありません。この基板はノンスルーホールを作ってません。

ガーバービューアで見てみたらこんな感じです。ドリルもあいてるっぽいですね。 これをzipにします。

B.Maskのガーバービュー

Elecrowに注文

Elecrowに注文します。この会社のはかなり安い!でも基本的に英語です。日本語のぺージもありますが翻訳が雑なので注意です。 Elecrow PCB Manufacturingから注文します。

このように設定して注文しました。

  • Haslは半田レベラーのことで、Hasl(lead free)は無鉛半田です。
  • 端面スルーホールは、ありにするとエッジの穴が銅メッキされます。
  • 銅箔厚は、銅の厚さです。基板全体の重量のうち、銅の重量の割合が大きいほど電気特性が向上しますが、エッジングするのが難しくなるそうです。1mil=0.0254mmみたいです。とりあえず1ozで行きます。
  • PCBステンシルというのは、基板の型(メタルマスク)を製造するか、ということです。有料です。
  • 生産時間は、急ぎじゃないので4-7working days。
  • 国家は、とりあえずjapan、Registered Airmail(書留郵便) $4.98。
  • 注文画面でまた発送方法が出てきたのがよく分かりませんが、とりあえず安定のANA。

初めての注文で500ポイントがついてきたので196points(-$1.96)適用して全体で$16.17。日本円で1800円くらい。かなり安い!

(追記)基板が届きました!

3/27にデータを送り直して4/1に発送のメールが届き、4/2には基板が届いていました。予想よりだいぶ早かったです。(小さいからでしょうか?)
3Dビューワーで見たとおりにできあがっていましたね。小さく作る事が目的だったので素晴らしい!30mm*35mmくらいです。10枚注文しましたが12枚入っててラッキーでした。基板の導通状態を何枚か確認しましたが大丈夫そうでした。使うときにもう一度確かめるつもりです。満足!!

この章の参考

雑談

発注した基板がとどいたら届くまでの時間や反省をまとめて追記します。このブログが正しいのかはそれまで解りません。

追記(2019/3/27): B.Maskのファイルを追加するように追記しました。
追記(2019/4/8):届いた基板について追記しました。