絞り込み条件を変更する
検索条件を絞り込む
有料ブログの投稿方法はこちら

すべてのカテゴリ

11 件中 1 - 11 件表示
カバー画像

PIC16F1827 使ってみました

16F1705(14pin)では、ご購入者様の仕様にピン数が足りず、出来るだけ小さいパッケージで実現したいと言うことでしたので16F1827(18pin)を使ってみました。よく使われるもののようでWeb上にも情報が多くて助かりました。タイマー割込みとA/Dコンバータ、GPIOを使いましたが、他にも一般的なペリフェラルが揃っていて使い易いと思います。消費電流を抑えるために内部クロック1MHzで実装し、未使用のペリフェラルをディスエーブルにしようとデータシートを見ましたが、Peripheral Module Disable (PMD) と言った記述を見つけられませんでした。それでも大分消費電流が小さいようなのでPMDは行わずに仕上げ、いつものようにブレッドボードに実現した確認用回路で動作確認を行い、トークルームで必要なオシロ画像や説明をお送りした上で納品しました。初めての16F1827でしたが、納品後の動作確認でも満足いただけたようで安心しました。お役に立てて嬉しいです。これで、総ピン数で言えば 8pin , 14pin , 18pin , 28pin , 40pin の実績が出来ました。 8pin   16F1831314pin   16F170518pin   16F182728pin   18F23K2240pin   18F46K22今後とも宜しくお願い致します。
0
カバー画像

16bitパターンでLチカ

マイコン基板を作る際に、デバッグ用を兼ねて動作状態を示すLEDを設けることが多いのですが、このLEDの点滅パターンを変えてプログラムの動作モードを示したいと言った時に16bitパターンに従って点滅させたりします。マイコンのコードよりも分かり易いかと思い、Micro:bit で例を作りました。動作概要100msec毎に以下のビットパターンのLSBが1なら点灯0なら消灯を出力し、ビットパターンを右シフトします。シフト回数をカウントし、16回目の時にビットパターンに初期値を書き込み、シフトカウンターをリセットします。(0bで始まる以下のビットパターンは2進数表現です。)ビットパターン1 0b1000000000000000 (1.6秒周期で短く点灯)ビットパターン2 0b0111111111111111 (1.6秒周期で短く消灯)ビットパターン3 0b0101010101010101 (0.2秒周期で点滅)点滅パターン切り替えは、ビットパターンの初期値を書き換えるだけです。この例では、以下のボタン操作で点滅パターンを切り替えます。  ボタンA=ビットパターン1  ボタンB=ビットパターン2コードのブロック実際のブロックは以下のようなものです。変数は以下の4個です。  ledpd   LED点滅パターンの初期値  ledwk   ↑ のワーク(シフトレジスタ)  ledcnti  シフトカウンターの初期値  ledcnt   シフトカウンターledpd を書き換えると点滅パターンが変わります。PICマイコンで実現するにはMicro:bitの場合は上図のようにブロックを並べるのですが、P
0
カバー画像

Raspberry Pi Pico W に期待

PICマイコンを使うので、Raspberry Pi Pico を使う機会がありませんでした。現場で使うためには何らかのI/F基板を作る必要があり、基板を作るならCPUも一緒に実装した方がスッキリすると言う理由です。 Raspberry Pi Pico W であれば WiFi が使え、将来は BLE にも対応する予定と言うことですし、Micro Python で記述出来るようなので期待しています。 ESP32 が既に実現している機能で、私も ESP32 を Micro Python で使う機会があります。WiFiを手軽に使えるマイコンボードは IoT 分野で使い易くて助かります。 Micro:bit は WiFi は使えないながらも、BLE を手軽に使えて便利です。I/F基板への実装制御対象とのI/F基板にこれらのマイコンボードを実装する際には、直接半田付けするか、ピンヘッダーやコネクタで接続することになるかと思います。 とにかく小さくまとめたい場合は、ESP32を直接半田付けする方法が良いと思います。 Mciro:bit はカードエッジコネクタでI/F基板に接続するのが一般的だと思いますが、このコネクタの大きさと Micro:bit 自体の大きさから小さくまとめるには不利な選択になるかと思います。 一方で標準実装されたLED表示器、SW、センサー、無線機能を使う他、手軽に複数の装置に付け替えて使いたいと言った場合に向いていると思います。Raspbrry Pi Pico W は ESP32 に比べて外形寸法が大きい分だけ、小さくまとめるには前述2機種の中間的な存在になるのかな?
0
カバー画像

Active High と Active Low

タイトル画像はLEDを駆動する回路です。PICに限らずマイコンのI/O出力電流の最大定格の範囲で直接LEDを駆動出来ない場合はトランジスタで駆動します。 LEDの場合、ほとんどのマイコンが直接駆動可能だと思いますが、LEDに直列に接続する電流制限抵抗の値を変えて最大定格の範囲で電流(∝ 輝度)を調整して使います。 タイトル画像のLEDと電流制限抵抗の位置は入れ替わっても同様に機能します。私はタイトル画像のように、LEDのアノードをVcc、またはLEDのカソードをGNDに接続して使っています。 動作中のLED端子電圧(Vf)を測定し易いと思うからです。Activeとは制御対象や目的によって変わりますが、ここではLEDが点灯している状態をActive(な状態)として説明します。 Active High と Active Low どちらを選択するべきかですが、目視確認用のLEDではどちらでも大丈夫です。 一方でソレノイドやモーターを駆動する場合は、電源リセット時など不安定期間に意図しない動作をさせないように工夫することがあります。Active High 出力(I/O端子)がHighの時にActiveになるようにした制御です。 出力(I/O端子)をHighにしてLEDに直接、またはNPNトランジスタのベースに電流を流し込むことでActiveな状態を作ります。Active Low 出力(I/O端子)がLowの時にActiveになるようにした制御です。 出力(I/O端子)をLowにしてLEDに直接、またはPNPトランジスタのベースからI/O端子に電流を引き込むことでActiveな状態を作り
0
カバー画像

Raspberry Pi と PIC の連携

Raspberry Pi と PIC を組み合わせた治具や装置を作ることがあります。 オペレータが使う検査治具などが多いです。 表示能力に優れLANなどのネットワークを使い易いRaspbrry Pi と、きめ細かな信号制御が可能なPICを連携させて装置を作ります。 PIC側はRaspberry Pi からのコマンドを受けて動作を変更したりレスポンスを返すことで連携します。コマンド・レスポンスの取り決めは自由に設計しています。何故USBシリアルかタイトル画像のような構成ですが、Raspberry Pi をWindows PC に置き換えて、普段使い慣れたPCで使うようにすることもあります。 このように、PC側の選択肢を増やすことが出来るのでRaspberry Pi のGPIOを極力使わずUSBシリアル(変換ケーブル)で接続することにしています。何故PICか1個から入手しやすく、情報も多いことからPICにしています。 ESP32を併用した経験もあります。 手軽で情報の多い様々なマイコンボードがありますが、センサーやアクチュエータを接続して継続的に使おうとすると結局プリント基板を作ることになります。 それならマイコンも基板に載せた方が、安価で小型になると考えています。 作ったプリント基板を複数の用途に使いまわせるように工夫したりします。 簡単な表示機能で良い場合はRaspberry Pi を使わずにESP32を使ったこともありますが、WiFiよりもLANケーブルで接続する方が安心な気がしています。 ESP32 やMicro:bit は用途次第で柔軟に活用することにしています。Rasp
0
カバー画像

XIAO RP2040のI2C悪戦苦闘の記

表記Seeed XIAO RP2040(以下XIAO2040と表記)のI2C Master - Slave通信がうまく動かずに苦労しました。Master-Slaveが駄目というよりも、Wire1が駄目です。テストには「TalkingToMyself」を使っています。マイコン1台で2組のI2Cを使い片方をマスター他方をスレーブとして通信するやつです。ボード設定はPhilhower版Arduinoを使っています。まだ完全に切り分けができていないのですが、ボード設定としてSeeed XIAO RP2040を使うとうまくいきません。以下、とりあえず動かす方法です。XIAO2040固有の機能は使えなくなるかもしれませんが、ボードとしてRaspberry Pi Picoを指定して、以下のピン番号に置き換えて使用してください。たとえば、I2C0がアサインされたGPIO0, GPIO1を使うならば、D6 = 0u, D7 = 1uと記載されているので、Wire.setSDA(0); Wire.setSCL(1);と記述し実際の配線はD6とD7を使います。なんでこんなややこしいことをしてるんでしょうね。実際、XIAO2040を選んで Serial.println(D6);を実行すると0が出力されます。つまり、他のArduinoのつもりでdigitalWrite(6)って書いても駄目でLチカですらうまく動かないんですよね……。もう一つ、WireにはI2C0、Wire1にはI2C1に属するGPIOピンを指定してください。PR2040のI2Cは、I2C0とI2C1の2つのグループがあります。Pi Pi
0
カバー画像

モジュール分割

PICマイコンに限りませんが、モジュールに分割して各機能を実現し、動作を確認したモジュールを使ってmainプログラムを書くと作業が楽になると思います。タイトル画像プログラムの目的ADC(ADコンバータ)のサンプリング結果によってLEDの点滅パターンを変化させることです。実現のためのモジュールADCモジュールはタイマー割込み処理で、ADCのサンプリング結果を所定のメモリー(ここでは led_d)に上書き保存します。タイマー割込みが発生する都度、同じことを行って終了します。LEDモジュールもタイマー割込み処理で、所定のメモリー(ここではled_d)の値に従って所定のLED制御を行います。ここでは遅い点滅または早い点滅を実現します。mainプログラムは、前述2つのモジュールとのやり取りによって、プログラムの目的を実現します。mainを書く方が楽しいマイコンを使ってハードウェアを制御する場合、全体の構想を考え、回路図を描いてモジュールを記述し、動作確認してmainを書くことになると思います。回路図はもろにハードウェアですし、モジュール記述にはマイコン内部のペリフェラルを扱う内容を含むため、ハードウェア寄りの知識が必要になります。マイコンの端子毎の機能制約によって回路図も変化します。慣れない内は、難解と感じる部分です。一方で、動作確認済の回路とモジュールがあれば、mainを書く作業はとても楽になりますし、楽しい作業だと思います。初めは難解な作業を依頼するのも良い慣れない内は、難解な回路設計とモジュール部分を誰かに頼んで、楽しい作業から始めるのも良いと思います。モジュール記述についても、ゼ
0
カバー画像

キャラクタLCDコンソールのアートワーク

先日紹介したキャラクタLCDコンソールの制御基板は構想から回路設計、アートワーク、部品実装、PIC18F23K22のファームウェア作成、アクリルケースの設計・作図、組み立て、動作確認まで、ほぼ一人で行いました。Raspberry Pi の信号電圧が 3.3V に対して、LCDユニットは 5.0V と異なっているため、PIC18F23K22には5Vを供給してRaspberry Pi のI/Fは FET (BSS138) を使ってレベル変換しています。今回紹介するアートワークは、CADLUS PCB と言う無料のCADを使っています。スタッキングコネクタの位置に注意し、完成時のバランスを考えながらタクトスイッチ等を配置してしまえば、後はCADの力を借りて楽に配線出来ます。部品番号のシルク位置を調整し、基板名などのシルクを配置します。誤配線のチェックや、ルール違反がないかのチェックもCADのお陰で簡単かつ完璧です。自動ベタを貼ってから、浮き導体がないか確認しつつ小さなベタを削除したり、ベタとGNDパターンを接続します。CADLUS PCB はガーバー出力が出来ませんが、.COMPと言うファイルを出力して基板屋さんに依頼するとPWB(生基板)が届きます。自動機で大量に作るような基板(PCB)のアートワークは実装屋さんにお任せすることにしていますが、社内で使う治具工具類の基板はCADLUS PCB でデータを作って基板屋さんに依頼、部品実装(半田作業)は自分達で行います。上のPWB(生基板) 190 x 70 mm を5枚作ってもらって約26000円でした。混雑具合にもよりますが、1週間
0
カバー画像

キャラクタLCD コンソール

装置の操作を行うRaspberry Pi は、7インチのタッチスクリーンを使って来ましが、用途によっては上図のようなマン・マシンI/Fが良いようです。経緯 タッチボタンが小さいと操作に気を使ったり、装置操作とは直接関係のないGUI操作など、PCに馴染みのない人は面倒に感じることがあるようです。 そう言った理由でキャラクタLCDとボタン操作、LED表示を使ったI/Fを試すことにしました。構造 マン・マシンI/Fとして、キャラクタLCDとタクトスイッチ6個、LEDを2個(2色x1個、単色x1個)、ブザー1個を使えるようにしました。上図は一部実装していない物です。 これらを制御するためにPICマイコン(18F23K22)を使い、Raspberry PiとはSPIで通信します。 上図のように作業台に置いて使いますが、用途によっては装置に組み込むことも出来そうです。上図に見えるLCDの裏側にRaspberry Pi をGIPO用のコネクタで直接接続しています。 横幅は7インチ・タッチスクリーンとほぼ同じと大振りなので、3Dプリンターの造形でケースを作ると高価になることから、アクリル板(3枚)をレーザーカットしてもらってケース代わりにしました。思ったより安価に抑えることが出来ました。 自作の装置はPICマイコンで動作し、UARTでコマンドを受け、レスポンスを返すと言う仕組みのものがほとんどです。 Raspberry Pi に USB・シリアル変換ケーブルを使って接続しています。 他のLinux PC や Windows PC でも使えるように、出来るだけGPIOを使わない方針でしたが、今回
0
カバー画像

ココナラで試したいこと

同じハンドルを使い、ブログ等を使って直接お話ししたことの無い方々に自分なりに良かれと思うお話を書いています。今後もマイペースでブログ投稿を続けたいと思います。コメントや高評価によって、ある程度の反応を感じることが出来ますが、読んでくれる方々が本当に必要としているお話を書けているのか疑問が残ります。私の場合は結構マニアックな内容ですから、多数の方々が同様に興味を持ってくれるような話題は少いだろうと思います。限られた読者層の中ですら、広く興味を持ってもらえるような話題は既にWeb上にある場合が多いように感じています。多くの方々に「為になった」と言ってもらえる話題を提供するためには、自ら経験した具体的な事例を示すのが良いだろうと思いますが、勤め人故に企業のノウハウや守秘義務の壁があります。ココナラにサービスを出品することで、「これが知りたい」と言ってコンタクトしてくれる貴方に向き合ってお役に立ちたいと思います。ココナラのサービスを通じて、複数の方々のお役に立てるようなヒントが得られたなら、やるべきことや試したいことが見えてくると思います。勿論、ご相談頂いた方やシステムにご迷惑をお掛けしない範囲で試します。ココナラのシステムについては初心者なので、私の勉強不足で、ご迷惑をお掛けするようなことがあったら遠慮なくご指導ください。宜しくお願い致します。
0
カバー画像

#1 ダイナミック点灯

久しぶりに7セグメントモジュール(通称:7セグ)を触りました。7セグとはその名の通り7つのセグメントを持ち、0~9の数字を表示するための表示器の一つです。身の回りには多くの製品で7セグが使われています。炊飯器、デジタル時計、DVDレコーダーにエアコンのリモコンにまで。。。そんな身近な7セグですが、当然マイコンで制御することができます。といっても、7セグの中身は7つのLED(ドットポイント含め8つ)が入っているだけで、電子工作では身近な砲弾型のLEDと何ら変わりはありません。なのでマイコンで制御するといっても、数字を表示するだけなら出力ポートを7つ用意すれば解決です。ですが、、、もし”10”とか”100”とか表示したい。。となったら、当然7セグも2個、3個と必要になってきます。そうなるとマイコンの出力ポートもかなりの数が必要になってきます。そこでよく使われる解決法として、ダイナミック点灯があります。ダイナミック点灯制御は簡単に言うと、目にもとまらぬ速さで1つずつ順番に7セグを点灯させ、あたかも複数の7セグすべてが同時に点灯しているかのように見せかける方法です。わかりづらいですね。。。例えば3つの7セグを使い、”123”と表示するとしましょう。1個目の7セグは”1”、2個目は”2”、3個目は”3”とそれぞれ表示します。ダイナミック点灯は、めちゃくちゃ短い時間で1個目だけ点灯 ⇒ 2個目だけ点灯 ⇒ 3個目だけ点灯 ⇒ 1個目だけ点灯 ⇒ 2個目だけ...と表示を繰り返します。 ちょっと制御部分は後回しにして、、、マイコンと7セグ間の配線について先に説明しましょう。3つの7セグの各セ
0
11 件中 1 - 11
有料ブログの投稿方法はこちら