Gowin FPGA の OPEN_DRAIN の挙動
Tang Nano 9K に搭載されている Gowin の FPGA(GW1NR-9)について、I/O に設定可能な OPEN_DRAIN
というオプションの挙動を確認しました。結論としては、OPEN_DRAIN
の ON/OFF によらずプルアップ抵抗の有無が選択できること、0 を出力すると 0V が出力されることが分かりました。
Tang Nano 9K に搭載されている Gowin の FPGA(GW1NR-9)について、I/O に設定可能な OPEN_DRAIN
というオプションの挙動を確認しました。結論としては、OPEN_DRAIN
の ON/OFF によらずプルアップ抵抗の有無が選択できること、0 を出力すると 0V が出力されることが分かりました。
10pA の分解能で ±20nA まで計れる電流計を設計してみました。本記事ではその設計の一部を紹介します。本記事で紹介する設計は、トランジスタ技術 2024 年 8 月号別冊付録「保存版 実験お役立ち回路の製作」の「第 3 章:分解能 1pA!微小 1nA 電流測定回路」(以下「トラ技の記事」)を大いに参考にしています。
多くのマイコンと同様、CH32V003 の I/O ピンにはプルアップ/プルダウン抵抗が内蔵されています。それらが GPIO 以外の周辺機能使用時にも有効なのかを調べてみました。結論は周辺機能でも有効です。
CH32V203 には RTC(Real-Time Clock)が搭載されています。時刻を利用するような電子工作をしたいなと思い、この RTC の使い方を調べてみました。
WCH-Link を用いたプログラム書き込みができないときに、ブートローダーを使うことで書き込めるようになる、というお話です。
筆者(uchan)が主導する ComProc プロジェクトの各種情報をまとめるためのページです。載せるべき情報が出るたびに追記していこうと思います。
キャラクタ LCD のコントラスト調整端子に与える電圧とコントラストの関係を実測しました。対象の LCD は秋月電子通商で買える ACM1602K-NLW-BBW(販売コード 110185)です。この LCD はバックライト付きの 16 桁 2 行表示のものなのに、たった 400 円で買えるので結構お得と思います。
IoTマルチ無線ユニット IB-DUAL の説明書によると「本製品を PC に接続しコンソールに Ctrl+C を(動作中は 2 回連続)入力することで、コードを 1 行ずつ入力して即実行できる REPL での動作も可能です。」とありますが、具体的な方法がイマイチ分からなかったので探求しました。
この記事では Raspberry Pi Pico + Arduino IDE の組み合わせで割り込みを使うとハングアップする現象の原因を説明します。結論からいえば、割り込みハンドラ内で digitalWrite
を使うとハングアップすることがあります。この原因は digitalWrite
がメモリ確保(new
や malloc
)を行うことです。
自作ブログ内でリンク先記事に被リンクを表示するトラックバック的機能を設計します。ブログ機能のアイデアに書いた機能の 1 つです。
ブログに実装したい機能をリストアップしました。随時更新予定。
筆者は最近、プログラミングによって 3D モデルを作っています。3D プリンタで印刷するモデルや KiCad の 3D ビューで表示するためのモデルです。本記事では、Autodesk Fusion 等のグラフィカルな 3D CAD ではなく、プログラミングによってモデルを作ることの魅力を語ってみたいと思います。
ComProc プロジェクトは筆者が主導するコンパイラと CPU を両方作るプロジェクトです。
ComProc CPU は当初はシンプルでしたが、タイマや UART 通信などの周辺機能が追加されていき、この春に A/D コンバータも仲間入りしました。そのため、最近では ComProc マイコン(MCU)と呼ぶことも多くなってきました。この記事では、マイコンとしてさらに高性能化・高機能化するために欲しい機能を考えてみました。
前回はふじみんロボットの大まかな構造やモータードライバの型番を調べました。今回はその続きで、ロボットの制御方法を解析していきます。まず回路図を復元し、次にモータードライバの制御信号などから制御方法を推測します。
ふじみんロボットの調子が悪いということで電子工作ラボに運び込まれました。動くには動くけど、ふとした瞬間に止まってしまう、というのです。このロボットの回路を調査し、復旧を試みることになりました。
修理が完了するまで、進捗があるたびに記事化していこうと思います。本記事はシリーズ 1 回目ということで、現在のロボットの状態を観察していきます。
PCBgogo さんからプリント基板をご提供いただきました。作った基板の用途や製造品質について紹介します。基板提供のきっかけは、PCBgogo の広報担当の方が私の記事 CH32V003 マイコンの PA1 や PA2 が使えないときに確認すること by uchan | elchika のコメント欄にで連絡をくださったことです。技術記事を継続的にアウトプットしておくと、いいことがありますね。
CH32V003J4M6 は秋月電子でたった 40 円で買える、STM32 風の周辺機能を持ったマイコンです。このプログラムを開発していたところ、PA1 や PA2 から信号が出せないことに気付いたので、原因を探求しました。本記事では原因、回避策、原因調査の詳細を説明します。
Arduino Due の実行時のメモリ消費量を確認したいと思い、方法を調査しました。スタック領域とヒープ領域の消費量を測定する方法を紹介します。メモリ量が限られる Arduino の別機種(Arduino Uno など)への移植のために、メモリ消費量を削減する場合などに役立つと思います。
株式会社エンジニア製の圧着ペンチ PA-21 と PA-24 を買って使ってみました。圧着品質の参考にしてください。なお、筆者は圧着の専門家ではなく、正しい圧着が出来ている保証はありません。
上図は左から AWG #28、#26、#24、#22 の電線を QI コネクタのコンタクトに圧着したものです。使った工具は PA-24 です。ダイス選択は後述します。
PIC16F1786 のアナログ入力端子に、FVR を超える電圧を印加したときの挙動を測定しました。ADC の VREF+ には FVR(×4 モード、4.096V)を設定しています。
結果、FVR を超える電圧を印加した端子は ADC の最大値に張り付き、その他の端子の ADC 値には特に影響を及ぼさないことが分かりました。
オペアンプを使うと手軽に電圧で制御できる定電流回路を作ることができます。原理は簡単ですが、使い方によっては大きな突入電流により素子が破壊されたり回路が不安定になることがあります。この記事ではどんな場合に突入電流が流れるかを見て、その対策を考えてみます。
NextPCB さんからプリント基板をご提供いただいたので、発注から到着までの経緯や製造品質について紹介してみようと思います。基板提供のきっかけは NextPCB の広報担当の方が elchika で私の記事を読んだことだそうです。ありがたや~。この記事はスポンサードではありますが、悪かったところも含めて正直に報告します。
Analog Discovery 2 には波形発生器(Waveform Generator)とオシロスコープ(Oscilloscope)が搭載されており、任意の周波数・電圧の波形を出力したり、回路の電圧波形を観測したりできます。JavaScript による自動化機能を使えば、波形発生器の出力設定を変えつつオシロスコープで自動的に観測するようなことが可能です。例えば MOSFET の Id-Vgs 特性の測定ではゲート電圧を変えながらドレイン電流を測る必要がありますが、自動化機能を使って「ゲート電圧の変更」と「ドレイン電流の測定」を自動的に行えば、素早く多くのデータを得ることができます。
本記事では自動化の際に問題になり得ることとして、波形発生器の出力電圧が安定するまでの時間を検証しました。スクリプトから出力電圧を設定しても、実際の出力がその電圧になるまでには多少時間がかかります。どの程度の時間を待てば出力が安定するのでしょうか。
先日 elchika AWARD 2022 | elchika を受賞しました。賞品として reTerminal をいただいたので、本格的な製作に使う前にとりあえずセットアップと L チカ1をやってみました。
電子回路によく「負荷抵抗」や、単に「負荷」という言葉が良く出てきます。関連して「負荷が軽い」や「負荷が重い」という表現も良く見ます。負荷が軽いと言った場合、それは負荷抵抗が小さいことを意味するのでしょうか。大きいことを意味するのでしょうか。この記事ではアンケートや文献の調査を行い、人々がどんなイメージを抱くのかを調査しました。
結論としては人によってイメージが異なることが分かりました。誤って伝わる可能性のある「負荷が軽い」というような表現の代わりに「負荷抵抗が大きい(小さい)」とか「負荷電流が少ない(多い)」と表現した方が良いかもしれません。
MIDI 信号の送受信は基本的には UART 機能を使うだけなので簡単です。しかし、よくある MIDI の記事では大体 5V で MIDI 信号を生成している一方、Raspbery Pi の GPIO 入出力電圧は 3.3V ですので、それを解決するのがこの記事のキモです。結論から言えばアップデートされた MIDI 規格に 3.3V での送受信回路が規定されており、その通りの回路で無事に動きました。
この記事ではステッピングモータを加減速させる場合のパルス速度を計算してみます。こんな話題はきっと他に解説してる記事や書籍があろうかと思いますが、ぱっとは見つからず自分で計算してみたのでメモ程度に残しておきます。紹介する計算式は、マイコンの非力な計算能力でもタイマに設定する値を計算するのに十分計算可能な速さであることを検証済みです。
uchan の独自の判断で面白い、あるいは役立つサイトを集めようと思います。掲載しているコメントは uchan の勝手なコメントです。リンク先サイトの公式見解ではありませんのでご注意ください。
KaTeX を使って数式(LaTeX 記法)の表示に対応させました。テキストで $E = mc^2$
と書くと次のように表示されます:$E = mc^2$
ユニポーラステッピングモータ SPG27-1101 を矩形波と三角波(を模した簡易 PWM 信号)で駆動し、コイルに流れる電流を計測してみました。三角波で制御した方が駆動音が小さくなりました。
駆動音を録音してみましたので興味のある方は聞いてみてください。 SPG27-1101を矩形波と三角波で回したときの駆動音 - YouTube
そろそろ記事に画像を表示する方法を考えないといけないですね……。この自作ブログの記事は Obsidian で書いているので、その画像管理方式と互換性を保ったまま、自作ブログにも画像を表示したいです。
まずは Markdown の画像記法 ![夕方に撮影した東京駅の丸の内駅舎 | 100](夕方の東京駅丸の内駅舎.jpg)
を考えます。この記法に対しては、alt 属性に「夕方に撮影した東京駅の丸の内駅舎」が設定された <img>
タグを出力します。こんな感じに:
STM32CubeIDE 1.10.1 で作成した C 言語プログラムにおいて PRIu8
マクロや %hhu
書式指定子が使えないことが分かりました。また、その解決方法も分かりましたので記事にまとめてみました。
STM32CubeIDE 1.10.1 で生成したコードには次のような著作権表示が含まれます。それを読むと、ルートディレクトリの LICENSE というファイルに従ってライセンスされる、とあるのですが、LICENSE ファイルは生成されません。いったい、どのように解釈したらいいのでしょう?
Rust で時刻文字列をパースしたくなったのでどんなクレートがあるかを調べました。strptime
のようなことが出来れば満足です。
適当にググると Rustで日時を扱う - Qiita や Rustの日付時刻処理(stdtime, time, chrono) - 簡潔なQ などがヒットしました。これらは共通して Chrono を使いましょうと主張しています。Chrono が Rust で時刻表現を取り扱うデファクトスタンダードのようです。
Open Graph protocol は SNS で記事をシェアした際、タイトルや概要文、サムネイル画像等を適切に表示するための仕組みだそうです。uchan は今ちょっとこの仕組みを調べただけなので詳しくないのですが、とにかく、各記事の HTML にこの仕組みを導入することで、Twitter や Facebook で良い感じに記事がシェアできるみたいです。
設定方法は主に上記公式サイトと OGPの正しい設定方法を解説!Facebook・Twitter対応 という記事で調べました。
ブログエンジンを作るにあたり、記事データをどのように作り、管理するかを決めます。記事のマークアップ言語は Markdown にしようと思います。特別な Wiki 文法のようなものを独自に考案するのも面白いですが、Markdown を採用するメリットは次のようにたくさんあります。
実はこの記事を書いているのは、まだブログシステムが完成していないときです。完成どころか、CGI でハローワールドをやってみた段階です。だから、ブログシステムがお披露目できるまで作れるかどうかさえ分からないときに書いてることになります。