この記事では、マイクロコントローラーでプロジェクトを最初から作成する最初のステップに関する情報を収集しようとしました。
目的
私は実際にマイクロコントローラーの動作を研究することにしました。シミュレーターで数十個のLEDを駆動するよりも、実際に何かをするほうがはるかに面白いです。
まず第一に、私がやりたいことを決める必要がありました。 私は前述のムードランプに落ち着きました。 完全なアナログを作成しないために、ランプの機能を拡張し、PCから制御を追加することが決定されました。
マイクロコントローラー
マイクロコントローラーの選択は簡単でした。
COMポート経由でPCを操作することは最新ではないため、USB経由の通信オプションが選択されました。 マイクロはんだ付けを開始しないために、DIPパッケージのコンポーネントのみを使用することにしました。 適切なマイクロコントローラーはほとんど残っていません。USBのソフトウェアエミュレーションを備えたAVR、またはUSB 2.0のハードウェアサポートを備えた18FシリーズのPICのいずれかです。
誰かが異なる決定をするかもしれませんが、私の選択は最後のオプションにかかっていました。このプロジェクトでは、MK PIC18F2455を使用しました。
18F2455は18F2550に問題なく置き換えることができますが、違いはメモリの量だけです。
最小限の変更で、次を使用することもできます。
18F4455 / 4550-必要に応じて、より多くの脚(28ではなく40)
18F14K50-20脚、機能は少し調整されていますが、少し安くなっています
スキーム
PIC18F2455を接続するための最も簡単な回路は次のとおりです。
理由はわからないが、MKの脚は図の場所に再配置された。
それに基づいて、ランプの図を作成できます。 必要な変更のうち:
USBからの5V電源と接地。
D +およびD- USBを対応するMKレッグに接続します。
ボタンを1つのデジタル入力に接続します。
トランジスタを3つのデジタル出力に接続して、LEDを制御します。
この図には、LEDのカソードへの強力な抵抗のみが示されていません。
プログラマー
マイクロコントローラーは、組み立てる前にフラッシュする必要があります。 賢い人は、ピークの点滅にはPicKitほど良いものはないと言うでしょう。 しかし、1000から2000ルーブルを費やしたい人。 単一のファームウェアMKの場合
さまざまな複雑さの自家製プログラマーには多くのスキームがありますが、誰もが初めてそれらを働かせることができるわけではありません。
私は2つの最も単純なプログラマーをテストしました。1つはLPTポートを介して動作し、もう1つはCOMを介して動作します。 驚いたことに、問題なく機能しました。
Scheme art2003(続きを読む ):
LPTコネクタ、8個のダイオード、コンデンサ、抵抗。 サポートされているMKのリストだけが不満です。
汎用プログラマー回路(JDMのように機能します):
ほぼすべてのPICは、外部5V電源を備えた3つの抵抗でこのような単純な回路でフラッシュできます。主なことは、ワイヤをMKの目的のレッグに接続することです(また、複数のVddおよびVssがあることも忘れないでください)。
5V電源は、USB、コンピューターの電源、または電話の充電器から取得できます。
両方のプログラマは、ピークを点滅させるプログラムWinPic800でサポートされています。
ブートローダー
プログラマーは優れていますが、MKをフラッシュする必要があることが多い場合はどうすればよいでしょうか。 この場合、ブートローダーの使用が適しています。 MKに一度書き込むだけで十分です。その後、すべてのファームウェアの更新はUSB経由でコンピューターから直接実行する必要があります。
初期段階では、詳細を知る必要はありません。既製のソリューションを使用すれば十分です。 ブートローダーをMKにフラッシュした後、ボタンを押して電源を供給すれば十分で、新しいMicrochipカスタムUSBデバイスがシステムで検出されます。 ドライバーをインストールした後、Microchipによって配布されたソフトウェアを介して使用可能なメモリを安全に操作できます。
コンパイラ
多くの優れたコンパイラーがありますが、おそらく最も知られていないJAL( Just Another Language )に決めました。 誰かがこのコンパイラの使用を不合理だと考えるかもしれませんが、開始するための私のすべての要件を完全にカバーしました。 最小サイズ(11 MBのアーカイブ)、インストールの欠如(アンパックに1分はカウントされません)、飾り気なし(開発環境は必要ありません)、必要なすべてのライブラリの存在、各MK(点滅LED)およびすべての基本機能の動作例
LED点滅コードの例:
include 18f2455 --
--
pragma target clock 48_000_000 -- ,
--
enable_digital_io () --
--
alias led is pin_B3 -- led B3
pin_B3_direction = output -- B3
--
forever loop --
led = on --
_usec_delay ( 250000 ) --
led = off --
_usec_delay ( 250000 ) --
end loop
ブートローダーを使用すると、MK構成全体がインストールされます。ファームウェアをブートローダーに適合させるには、 -loader18 2048 -no-fuseフラグを追加してコンパイルパラメーターを変更するだけで十分です。
ファームウェア
MK用のプログラムを作成するときのすべての微妙な点を説明するには、1つの記事だけでなく本も十分ではありません。 PIC18F2455 / 2550/4455/4550のドキュメントだけで430ページを占有します。 一度にすべてを知ることはほとんど不可能です。
自分で何かを書く最も簡単な方法は、例を見て、類推することです。 このパスが常に最も正しいとは限りませんが、すべてのコード行の操作性を常にチェックすると、完全に機能するプログラムが作成されます。
現在のファームウェアバージョンに含まれる機能:
- 200 Hz、3チャネルのソフト8ビットPWM
- ガンマ補正テーブルを使用する機能(PWMを10ビットBAMに転送することをお勧めします。そうしないと、色の変化が顕著になります)
- 色を操作するための4つの手順:
- 一時停止および遷移時間の設定のために、0.1秒刻みでプログラムタイマー(最大時間1:49:13.5)
- タイマー中のRGB値による現在の色から指定された色への遷移
- タイマー中のHSV値に応じた現在の色から指定された色への遷移
- インスタントカラーチェンジ
- 6色変更ルーチン
- HSVホイールの回転 オプション:彩度と輝度の変動
- 原色サイクル; オプション:各ステップのランダムな遷移時間
- 固定色; オプション:2番目の固定色
- RGBパラメータに応じたランダムな色。 オプション:HSVパラメーターに応じたランダムな色
- プリセットカラーサイクル; オプション:-(将来的に-PCからダウンロードされた一連のコマンド)
- (PCからアクティブ化)PCから受け取った色の直接出力。 オプション:新しい色へのスムーズな移行
- 3モードボタン
- クイックプレス-サブプログラムを変更(または一時停止をリセット);
- 長押し-代替モード。
- 長押し-サービスモードに切り替えます(点滅用)
- カウントダウンタイマー(PCから設定、最大時間1:49:13.5)
- イベント通知(複数および1回)、6チャネル(原色の数による)
- さまざまなイベントのために一時停止
- PC接続:
- ソフトウェアを使用して各サブプログラムのメインパラメータを変更する機能
- カウントダウンタイマーとアラートの制御コマンドの受信
- PCから色を直接制御する機能。これにより、ソフトウェアを介して機能を拡張することができます。
どうやらそれは特別なことではないようです。 夜に書くことができます。 しかし、MKがどのように機能するかを知らないと、おそらくあなたが会うことができるほとんどすべての熊手を集めます。 それにもかかわらず、ドキュメントを読み直し、徹底的にグーグルで調べ、コードを最初から書き直そうとするすべての努力は正当化されました:最終結果は非常に実行可能であることが判明しました。
組立
ランプの主要なコンポーネントは、ハウジング、マイクロコントローラー、およびLEDです。
イケアの同じGRÖNÖランプがランプの基礎として採用されました。
LEDはDealExtreme( SKU 4530 )を搭載した中国語のアナログで、元の製品のほぼ3倍安価です。
LEDは非常に熱く、少なくともいくつかのラジエーターが必要です。そうしないと、長時間明るく燃えません。
小さなこと:
- MK用ソケット
- 3トランジスタ
- 3つの強力な抵抗器と5つの低電力抵抗器
- 2個のコンデンサ
- 共振器
- ボタン
- miniUSBコネクタ(DIPバージョンではまれ)
これはすべて、ランプのニッチに入るためにボード上に配置されます。
Sprint Layoutでのボードレイアウト、 LUTメソッドを使用したtextoliteへの変換、穴あけ、はんだ付け。
作業は完全ではなく、エラーなしで行うことはできませんでした。1つの抵抗器が不要であることが判明しました(回路上にはありません)。
ボード全体がランプの下にあり、ワイヤ用のくぼみには、電源とPCとの通信用のボタンとminiUSBコネクタがあります。
電源はminiUSBを介して供給されますが、このようなLEDのランプを最初に点灯した電源に接続しないでください。最大輝度でのランプの消費電力は1A弱です。 すべてのPSUがこのような電流用に設計されているわけではありません。PSUの種類によっては、非常に悪くなり、不快な結果を招く可能性があります。
コンピューターに接続するには、追加の電源コネクター(ポータブルHDDなど)を備えたケーブルまたは有効なアクティブUSBハブが必要になる場合があります。
ソフトウェア
個々のタスクに適したソフトウェアを見つけることは不可能です。 私は自分でこの問題に対処しなければなりませんでした。
このプログラムはファームウェアと並行して作成され、主にランプのデバッグに使用されました。 現時点では、いくつかの機能は実装されていませんが、おそらくすぐにそれらを完了する時間があるでしょう。
まとめ
判明したように、独自のUSBガジェットをゼロから作成することは、手頃な価格のタスクです。 これには、高価なft232をはんだ付けするスキルは必要ありません。USBのソフトウェア実装との互換性に気を取られる必要はなく、Arduinoの半製品は必要ありません。 必要なのは少しの欲求だけです。
お役立ち情報
プロジェクトファイルのセット。
USB 2.0をサポートするPIC 18Fファミリのドキュメント。
ドキュメントのロシア語翻訳:本「USBハードウェアサポート付きマイクロチップマイクロコントローラー」著者:V. S. Yatsenkov
JALおよびIDE- JALEdit のライブラリのセット 。
WinPic800 -Picファームウェア。
MCHPFSUSB-ブートローダーを操作するためのセット。