タグ付けされた質問 「microcontroller」

中央処理装置(CPU)、メモリ、および(一般的に)緊密に結合されたスタンドアロンの各種I / Oペリフェラル(UART、ADC、DAC、汎用I / O、I2Cなど)を含むデバイスパッケージ。

4
共有バスをORとして機能させる
せっかちな人は、背景をスキップできます。 バックグラウンド SPIと通信する一連のマイクロコントローラーをプログラミングしています。nバスを共有するマスターとスレーブが1つあります。チップセレクトはありません。(これは悪いデザインでnはありませんが、サイズが大きく、n余分なラインを配置するための十分なスペースがありません)。 したがって、MISOを高インピーダンスに維持することはスレーブの責任であり、多くても1人が話します。これは、IDがポーリングされたときにのみ応答することによって行われます。 ここで、マスターがスレーブに接続されているIDを使用してスレーブを検出する最初の検出フェーズが必要です。生活をより簡単にするために(いくつかの側面で)、IDを一意にしたいと考えています(したがって32ビットなど)。これにより、マスターがIDを1つずつポーリングして、誰が応答するかを確認することができなくなります(可能性が多すぎます)。 この問題を解決するために、スレーブがまとめて応答し、マスターが最小IDをすばやく見つけることができるバイナリ検索のバリエーションを考案しました。そのIDのスレーブは、参加しないように指示され、アルゴリズムが繰り返されます。(重要ではない詳細)。 ただし、問題が1つあります。集合的応答は、すべての応答の論理OR(または論理AND)である必要があります。MISOバスが論理ORとして機能するようにラインを構成できると聞いています。私が言われたことは: マスターのMISOをプルアップとして設定し、 すべてのスレーブでMISOをオープンドレインとして設定します。 私はこれを試しましたが、スレーブが1つでも、この構成は機能しません(オシロスコープはライン上に一定のゼロを示します)。マスターでMISOを高インピーダンス入力として構成すると、オシロスコープで、2つのスレーブからの出力のビットが異なる場所で電圧が半分に低下していることがわかります(基本的には短絡と思います)。 注:マスターのMISOを高インピーダンスとして構成し、スレーブをそれぞれプッシュプルとして構成すると、同じバス上に多数ある場合でも、それぞれに個別に通信できます。つまり、ライン自体の問題ではないかと思います。 質問 私の質問は、これが可能な場合、そして可能であれば、共有MISOラインが論理OR(または論理AND)として機能するようにマスターとスレーブの入力ピンと出力ピンを構成するにはどうすればよいですか? 編集する 結局、それは否定的な真の論理を持つOR(基本的にはAND)になります。 シングルスレーブの問題は、マスターのプルアップピンに1を書き込むことで解決されました。以前は、初期状態は0でした。 編集2 STスレーブがオープンドレインとしてMISOの私のGPIO構成をオーバーライドし、書き込まれたときにそれを強制的に高くしていることが判明しました。この特定のケースでは、手動でSPIをサイレントにしてMISOを出力することにしました。

2
小型DC扇風機から誘導される電気ノイズの低減
小さなブラシレスDCファンからADCに誘導される電気ノイズを低減/排除するための標準的な方法は何ですか?以下の参照用に、このウォールウォートとこの 5Vリニアレギュレータも使用しています。 私のベースラインシステムは次のようになります。 私の頭の中にはいくつかのオプションがあり、どれが一番いいのか疑問に思っています。 私の最初のアイデアはこれです[オプションA]: 私の2番目のアイデアはこれです[オプションB]: 私の3番目のアイデアはこれです[オプションC]: おそらく私がまだ考えていない他のオプション、およびこれらのオプションの順列と組み合わせがあります。これらのオプションの長所と短所は何ですか?どのオプションを選択し、その理由を教えてください。

3
制御理論は、実際のプロセッサ制御のブーストコンバーターにどのように適用されますか?
制御理論についての理解は限られています。私は学校で極と零点と伝達関数を扱いました。DC / DCコンバーターに対して、いくつかのマイクロプロセッサーベースの制御方式を実装しました。これら2つの事柄がどのように相互に関連しているか、まだわかりません。知りたいのですが。試行錯誤に基づいて設計を行うこともできますが、私は自分のしていることとその結果が何であるかをより深く理解することを好みます。 回答は、システムを改善する方法ではなく、システムを分析する方法に焦点を当てる必要があります。そうは言っても、システムを改善するための提案があり、その理由を分析的に説明したい場合は、すばらしいことです。改善が分析に次ぐものである限り。 この質問のための私のサンプルシステム: C1:1000uF C2:500uF L1:500 uH スイッチング周波数:4 kHz R1:変数 入力電圧:400ボルト 出力電圧ターゲット:500ボルト 出力電流制限:20アンペア 出力電流制限を超えずに出力電圧を調整しようとしています。私は電圧と電流のセンシングを行っています。これらは、この時点で分析していないさまざまな増幅段階を通過しますが、フィルタリングが含まれています。これに続いて、100オームと1000 pFのRCローパスフィルターがA / Dコンバーターに直接続きます。A / Dは12 kHzでサンプリングします。この値は、最後の64サンプルの単極IIR移動平均フィルターを通過します。 その後、2つのPIループがあります。まず、電圧ループ。以下は疑似コードで、値はボルト、mA、ナノ秒にスケーリングされています。境界チェックが他の場所で正しく実装されていると仮定します。これらのループの構造は、積分項がない場合の最大許容ドループの点でPを定義し、次に、max'd out積分器がそのドループを正確に補償できるように積分項を定義します。INTEGRAL_SPEED定数は、インテグレーターがスプールする速度を決定します。(これは、定数をどのように設定したかに関係なく、Pと私が常に適切にバランスをとるようにするための合理的な方法であるように思えますが、他の提案を受け入れるつもりです。) #DEFINE VOLTAGE_DROOP 25 #DEFINE VOLTAGE_SETPOINT 500 #DEFINE MAX_CURRENT_SETPOINT 20000 voltage_error = VOLTAGE_SETPOINT - VOLTAGE_FEEDBACK current_setpoint = MAX_CURRENT_SETPOINT * voltage_error/VOLTAGE_DROOP #define VOLTAGE_INTEGRAL_SPEED 4 voltage_integral += voltage_error/VOLTAGE_INTEGRAL_SPEED //insert …

4
マイクロコントローラ入力ピンをソフトパワースイッチから保護する
瞬間的なスイッチで回路をオンにできるマイクロコントローラー(マイクロコントローラーを含む)のソフト電源スイッチに取り組んでいます。スイッチを2回押すと、クリーンアップを実行した後、マイクロコントローラーがシャットダウンします。 私はこれまでのところ上記の回路を使用していますが、信頼できるかどうかはわかりません。リチウムイオンバッテリー(3.7〜4.2V)とTC1015レギュレーター(3.0V出力)を使用しています。アイデアは、スイッチが押されるとレギュレータがオンになり、次にマイクロコントローラがuC Powerハイに設定されてそれ自体をオンに保つというものです。スイッチがもう一度押されると、割り込みがオンにuC Switchなると、マイクロコントローラーはuC Powerローに設定され、それ自体をオフにします。 バッテリー電圧からマイクロコントローラーを保護する必要があるかどうかはわかりません。私が使用しているマイクロコントローラーは、I / OピンにVdd + 0.4Vの絶対最大電圧を持っているので、その最適な処理方法がわかりません。 第2に、この回路は、レギュレータが「オフ」状態のときにレギュレータがオンにならないようにしますか?イネーブルラインでプルダウン抵抗を使用することを考えていましたが、チップの電源がオンのときの電流引き込みが心配です。 編集:マイクロコントローラーは切り替えられる主要な負荷であるため、残念ながら低電力モードにすると、ここでは機能しません。 編集#2(回答が投稿された後): 私は以下の回路を使用してしまいました: 以前に投稿された回路はあまりうまく機能せず、マイクロコントローラーが電力を供給していないときにフローティングイネーブルラインに問題がありました。 新しい回路はフリップフロップを使用し、データラインは通常ローにプルダウンされます。スイッチを押すと時計が鳴り、システムがオンになります。その後スイッチを押すと、CLOCKラインがHighに駆動されます(マイクロコントローラーが押しを感知できるようになります)が、レギュレーターの出力には影響しません。マイクロコントローラの電源をオフにする準備ができると、DATAラインがハイに設定され、CLOCKラインがハイに設定されます。これにより、レギュレータがシャットダウンします。 このセットアップの非常に優れた点の1つは、最初のボタンを押すとレギュレーターがオンになり、マイクロコントローラーがシャットダウンする準備ができるまでオンのままになることです。バウンスは問題ではありません。何故クロックラインがハイになったとしても、データラインは依然としてプルダウンによってローに保持されているからです。さらに、電流引き込みは非常に最小限でなければならず(オフのときはフリップフロップとTC1015だけ)、オンのときは抵抗を通る電流引き込みが最小になります。 マイクロコントローラーは、クロックラインのバッテリー電圧から保護する必要がありますが、@ Andy akaが示唆しているように、オンの抵抗でそれを行うことができますCLOCK。

2
低消費電力マイクロコントローラーを選択するにはどうすればよいですか?
Cortex-M0 +からNXPとフリースケールは、彼らが世界をリードするエネルギー効率を持っていると主張します。 TI Wolverineはまた、消費電力を半分に削減し、メモリ、ペリフェラル、スタンバイ、およびアクティブで最も電力が低いと主張しています。 一部のデータロギングアプリケーションで、消費量が少ないプラットフォームはどれですか。サンプリングレートが約3200Hzの3チャンネルセンサーがあります。

5
カスタム回路基板を製造する最も費用効果の高い方法は何ですか?
2012年6月21日更新: MG Chemicalsから塩化第二鉄、ポジティブデベロッパー、ポジティブPCBボードを購入し、フォトエッチングプロセスを使用しました。結果は際立っていました!彼らの散水タンクや露出キットは必要ありません。20Wコンパクト蛍光灯電球の下にPCBを10分間さらし、指示に従ってタッパーウェア皿にPCBを展開し、次に同じ(すすぎ出した)タッパーウェア皿にフォームブラシで時々かき混ぜながらエッチングしました。 また、インクジェットプリンターを使用しました。説明書にはレーザープリンターのみを使用するように記載されていますが、非常に濃いリッチdpi設定を使用して透明部分を印刷するようにプリンターを設定すると、十分なコントラストが得られることがわかりました。 結果は素晴らしかった-超微細で詳細な薄いトレース!! バックグラウンド 最近、甥のためにSymaブランドの屋内RCヘリコプターを購入しました。さて、私は男の子と一緒にこれらを楽しむことがとても楽しかったので、自分の小さなコレクションを始めました。 楽しくて耐久性がありますが、これらのおもちゃは安価な電子機器を使用しています: 明るい部屋で信号品質を失うように見える赤外線送受信機 シングルチャネル。あなたと他の誰かが互いに干渉することなく同時に飛行することはできません。 私について: 電子技術者ではありませんが、私は技術的に気にしています。 私ははんだ付けの初心者であり、これらの小さな鳥の中の小さなボードをはんだ付けすることはできません。 私がしたいこと: 理想的な世界では、私はこれらの小さな鳥のために作られたカスタム回路基板が欲しいです 非赤外線信号を受け入れます(2.4 GHz?Bluetooth?Wi-Fi?-これらは「リビングルーム」のチラシであることを忘れないでください)。 2〜3人が同時に飛行できるように、送信機と受信機の両方で2〜3チャネルを選択できます。 これは大きな屋外の鳥にすでに利用できるかもしれないと思いますが、回路基板を小さくする必要があります。 これをプロトタイピングする費用効果の高い方法はありますか?仕様を送信して回路を「印刷」できる場所はあるのでしょうか?私のような半素人がそれを設計するために使用できるソフトウェア?私は最初の実行が高価になることを理解していますが、これはアフターマーケットアイテムであり、屋内ヘリバグに噛まれた私たちがコストを下げるのに十分なものを購入することを確認できます。

5
組み込みシステムの障害モデリング
マイクロコントローラーと2.4 GHzトランシーバーモジュールを備えたワイヤレスセンサー回路、I²Cインターフェイスを備えた一部の統合センサー、UARTポート、および必要なディスクリートコンポーネントがあります。 このボードは、LiPoバッテリーとシャント充電器を備えた、ソーラー(PV)パネルからの電力を清掃するように設計されています。これにより、センサーは自己給電され、無期限に動作し、メンテナンスを最小限に抑えることができます。 このようなシステムで発生する可能性のある障害を調査したいと思います。これは、経年劣化、環境仕様(温度、湿度など)の違反、または誤ったメンテナンス(設計の問題/バグではない)が原因である可能性があります。動作寿命を最大化するため。 センサーノードが動作する環境は、天井または壁に貼り付けられた建物です。したがって、極端な温度や雨は考慮されません。 私が思いついたのは、要約しようとするいくつかの欠点です: コンポーネントが壊れています->オープン\短絡 センサーの故障->誤った出力値(しかし、どのように間違っていますか?) ほこり\水による分離の欠陥->漏れの増加 温度が範囲外-> ??? センサーノードがどのように失敗するかをどのように推定できますか、そしてその理由は?

1
この電源回路はどのように機能しますか?(MCU + LM317)
私はウェブを検索しているときに見つけたこの回路図を研究しています。PWMのポイントを理解しています。これにより、オペアンプに供給される平均電圧を正確に変化させることができます。フィルタR1、R2、C1はPWM波形を積分します。 しかし、オペアンプのポイントは何ですか?それは私にとっては非反転増幅器のように見え、ゲインはR6とR7によって設定されます-私が間違っていなければ。しかし、なぜ統合されたDC電圧は増幅を必要とするのでしょうか? おそらく、Lm317がMCUと連携してどのように機能しているかが理解できないため、その部分は理解できません。LM317がOUTとADJピンの間の1.25Vのリファレンスを降下することを理解しています(回路に対してR5の両端にある必要があります)。Voutは1.25(1 + R2 / R5)+ I(adj。)* R2として定義されます。(データシートから) 上記の式の唯一の変数はI(adj)なので、積分されたDC電圧が実際に電流を変化させ、したがって出力電圧を変化させるという私の理解では正しいですか? どんな洞察もいただければ幸いです。

10
整数mod 10と整数除算10を取得する最も速い方法は?
ハードウェアが係数または除算演算をサポートしていない場合、ソフトウェアによる係数/除算をシミュレートするには、さらに多くのCPUサイクルが必要です。オペランドが10の場合、除算と係数を計算するより速い方法はありますか? 私のプロジェクトでは、整数モジュラス10を頻繁に計算する必要があります。特に、PIC16Fで作業していて、LCDに数値を表示する必要があります。サポートする4桁があるため、係数と除算関数(ソフトウェア実装)への4つの呼び出しがあります。つまり、次のようになります。 digit = number % 10; // call to an expensive function number /= 10; // call to an expensive function somehow_lit_segments(); digit = number % 10; // call to an expensive function number /= 10; // call to an expensive function somehow_lit_segments(); digit = number % 10; // …

5
XMOSシリーズとは何ですか?
わかりました、それで私は最近、XMOSの名前が場所に現れるのを見ました。私は彼らのウェブサイトを見て、オンラインで検索しましたが、それが何であるのかよくわかりませんか?それは何ですか?マイクロコントローラーとFPGAのクロスのように見えますか? 私も彼らのサイトを調べましたが、 XMOSとは何か、他のマイクロコントローラーラインとの違いについて理解できることは何もありませんでした(サンプルデザインとその他の参照ドキュメントのみ)。

3
CANバス上のネットワーク層の選択
産業オートメーションアプリケーションでCANバスを使用することを計画していますが、ネットワークレイヤーの実装方法を決定するのに苦労しています。メッセージIDの割り当て方法とデータパケットのフォーマット方法のガイドラインを提供する、CANを介して使用する上位層プロトコルの推奨事項はありますか?独自のネットワークレイヤーを開発するか、CANopenなどの既存の標準を実装する必要がありますか?

8
どのマイクロコントローラを使用すればよいですか?
コンピュータープログラムが現実の世界と通信するための最適なマイクロコントローラーパッケージを見つけようとしています。私はCPUで実行しているプログラムから関数を呼び出して直接読み書きできる多数のI / Oピン(これまでのところ64デジタルで十分ですが、アナログやPWMのような特別なものはありません)を望んでいます。 実行するためにマイクロコントローラー自体にプログラムをダウンロードするのではなく、USBに接続するだけで、C ++プログラムから制御できるCPU制御のI / Oピンをたくさん提供したいのですが。 私にとって最高のマイクロコントローラーパッケージは何でしょうか?USBで動作し、Windows 7のような最新のOS用の64ビットドライバーを備えているため、かなり安価で将来性のあるものを望んでいます。これらのマイクロコントローラーの複数を同じコンピュータープログラムに接続できると、素晴らしいボーナスも(将来の拡張)。 編集:高いサンプリングレート(読み取り入力に10 Hz、出力信号に1 kHz)は必要ありません。ほとんどのピンは出力専用です。私は新しいコンピューター(コアi7 860)を使用しているので、サンプリングが少し非効率的または遅い場合でも、問題ありません(I / O専用のスレッドを1つ用意し、メインプログラムと通信させるだけです)。 また、単一のマイクロコントローラーパッケージにすべての64 I / Oピンを必要としません。同時に多くのマイクロコントローラーパッケージをインターフェイスできれば、それも機能します(実際には、多くの小さなマイクロコントローラーパッケージをインターフェイスできることが理想的です。つまり、拡張が簡単です)。 私はこれを見てきました:http : //www.schmalzhaus.com/UBW32/index.html 誰かがこのようなことを経験したことがありますか?それがうまくいくかどうかの考えはありますか?主な関心事は、プログラムを実行しているのがマイクロコントローラーであり、CPUではないということです。

4
最高のPICプログラマー?
私のプロジェクトでPICの使用を開始したいと思い、どのプログラマーを取得する必要があるのか​​と思っていました。マイクロコントローラー(68k、avr)の使用経験は豊富ですが、電子機器の経験も豊富です(プログラマーの構築が可能です)。 MPLAB、icsp、およびインサーキットデバッグ機能を使用できるようにしたいと思います。USBも便利ですが、必須ではありません。あなたの答えでは、あなたの推薦の賛否両論の比較をお願いします。

7
Arduinoシリアルプリントはプログラムの動作を望ましくなく変更します
ヘッダーで宣言されているループカウンターを使用しています。 int loop_counter = 0; 私はこのカウンターを使用して、時々イベントをトリガーします。私はこれと同じタイプの動作にモジュロを使用していましたが、操作を簡単にするために単純化しました(それでも同じ動作になります) void loop() { if(loop_counter > 100) loop_counter = 0; else loop_counter++; //Serial.println("hey"); if(loop_counter == 0) { //do_something_important(); } } (この例では、この動作はばかげているので、この例ではSerialコメントを外して)通信を試みるまで、すべてが順調です。//Serial.println("hey");"hey" これにより、コードloop_counterのdo_something_important();セクションがトリガーされることはありません。と宣言しloop_counterてみましたがvolatile、何も変わりませんでした。私が試したSerial.printINGのloop_counter、そして私も(それがループをフリーズします)異常な動作を得ていました。 Serial.println("hey");シリアルモニターでたくさんの「ねえ」を取得するという意味で機能します(つまり、すぐに100を超える「ねえ」、コードの他のセクションがトリガーする必要がある反復の数)。 の使用を引き起こしている可能性のあるものは何ですか?Serial(私が知る限り)loop_counter正しく関連付けられていないデータが関連付けられていませんか? 編集:問題を引き起こしてしまったメインファイルの一部を次に示します(まあ、それに最も貢献しています(メモリの使用が多すぎます))。 void display_state() { int i,j,index=0; short alive[256][2]; for(i=0;i<num_rows;i++) { for(j=0;j<num_cols;j++) { if(led_matrix[i][j]==1) { alive[index][0]=i; alive[index][1]=j; index++; } } } alive[index][0]=NULL; …

1
STM32F103C8T6ボードから始める方法は?
私はここ数年、8ビットAVR MCUを使用して、生徒と一緒にラインフォロワーロボットを構築しています。オドメトリやセンサーフュージョンなど、CPUを多用する機能を追加したいので、ARM Cortex-M3にステップアップしたいと思います。 要件は次のとおりです。 8つのアナログ入力、 4つのPWM出力、 I 2 C、 2つの直交エンコーダ入力、 シリアルI / O、 ロボットに物理的にアクセスせずにワイヤレスで自己プログラミング。 マルチプラットフォームツールチェーン+ IDE(OS X、Linux、Windows)。 これまでに行った手順は次のとおりです。 このSTM32F103C8ベースのボードを使用しています。このMCUには、ソフトウェアで実装する予定の2 x QEIを含め、必要なものがすべて含まれていると思いますが、これはたまたまハードウェアに実装されているので、非常に優れています。 ボードhttp://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789 プログラマーhttp://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733 私はこれに従って私のツールチェーン+ IDEを設定しました: http://www.davidrojas.co.uk/stm32f3discovery-on-mac-os-x-using-eclipse-gcc-arm-and-openocd/ このチップのドキュメントは、私がダウンロードしたいくつかのPDFに散在していることがわかりました。 STM32F103x8データシートhttp://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf リファレンスマニュアルhttp://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf AN2606(メモリブートモード)、PM0075(フラッシュプログラミングマニュアル)、AN3155(シリアルブートローダープロトコル)のような他のいくつかのドキュメント。これはおそらく将来必要になるでしょう。 私はSTM32F10x標準周辺機器ライブラリもダウンロードしましたが、それにより、新しいSTM32CubeF1を入手するよう勧められました。 http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890 http://www.st.com/web/en/catalog/tools/PF260820 最後に、Joseph Yiuによる「The ARM Cortex-M3の決定的なガイド」も入手しました。これは、ボードが到着するのを待っているときに読んでいます。 私の質問は: 控えめに言っても、私はドキュメントに少し圧倒されており、すべてを手に入れたかどうかさえわかりません。たとえば、データシートとリファレンスマニュアルには、直交エンコードされた入力が可能な3つのタイマーがチップにあると記載されています。しかし、タイマーを制御するレジスターのドキュメントが上記のPDFのどこにも見つかりません。何が欠けていますか? (古い?)標準ペリフェラルライブラリ、または(新しい?)キューブのものを使用する必要がありますか?違いは何ですか?どちらのライブラリでも、レジスタを直接操作する必要がなく、推奨される方法であることを理解しています。私は正しいですか? ライブラリのドキュメントはどこにありますか(埋め込まれたdoxygenのコメントに加えて、これはすばらしいのですが、検索可能なhtml / pdfが必要です)。 私はツールチェーンとしてEclipse + GCC ARM + OpenOCDを選択しました。これは、コードサイズやその他の制限なしに3つのメインOSで実行できる唯一のオプションだと考えているためです。他にオプションはありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.