コンピューターなしでの3Dプリンター操作

こんにちは、愛するhabravchane!

それで私の動きは終わり、最小候補は引き渡され、プラスチックの最初のリールは終わり、私のプリンターの電子詰め物に関する約束の記事を書く時が来ました。

この記事では、3DプリンターPRUSA I3の自動化、つまり、スクリーン、エンコーダーではなくボタン、カードリーダー、およびすべての追加電子機器の電源システムの接続に焦点を当てます。

猫の下で詳細を尋ねます。



すぐにこれらのカードの要素を在庫から取得するように予約したいと思います。 手元にあったもの。



食べ物から始めましょう。


ここではすべてが簡単です。 Arduinsとディスプレイに電力を供給するための5ボルトの安定器(最大1.5Aの出力電流でL7805CVを使用しました)。 ストラッピング-2つのコンデンサ。 スタビライザーは12ボルトに接続されています。 それから抵抗を介して、動作を示すためにLEDを接続します。 3.3ボルトの電圧レギュレータ(最大1Aの出力電流を備えたLD1117A33)を5ボルトに接続して、SDカードに電力を供給します。 ストラップも-2つのコンデンサです(同様に、LEDは抵抗を介しています)。

コンデンサの特定の値は、安定器の仕様に従って選択され、抵抗器の値は、ダイオードの消費電流と供給電圧に応じて(まあ、または経験的に)選択されます。



RAMPSには、ダイオードD1をはんだ付けする場所があります。 接続すると、12ボルトがArduinsのVinピンに供給され、Arduinoのスタビライザーに送られます。 最初ははんだ付けし、すべてが一緒に機能しましたが、数分後にプリンターの電源が切れたばかりで、USBケーブルを接続せずに電源を入れることができませんでした(おそらくスタビライザーが過熱または焼損しました)。 したがって、ダイオードのはんだ付けを解除し、外部スタビライザーを接続することが決定されました。



カードリーダー


メモリカードに電力を供給するには、3.3ボルトが必要です。カードの論理レベルも3.3ボルトです。 SDRampsと呼ばれる既製のモジュールでは、スタビライザー(既に組み立て済み)とレベルコンバーターチップ(5-> 3.3)が使用されています。 私はそのようなチップを持っていなかったので、従来の抵抗分割器を使用することになりました。

カードはSPIモードで接続されています。 使用済み:arduinoから仕切りを介してマップまでの3行のSCK、CS、MOSI。 マップからarduinoへの直接のMISOライン。 3.3ボルトの電源も接続されています。 土地; また、カード可用性検出器も接続しました。 カード所有者は古いスマートフォンから取り外されましたが、SD-microSDアダプターを使用できます(ただし、カード可用性検出器はありません)。



スクリーン


16文字の2行から始まる任意の文字表示が適しています。 行が多いほど、より多くのデータを表示できます。 グラフィックディスプレイSPI LCD 128x64(コントローラST7565Rグラフィックディスプレイファミリ)を接続することもできます。 ここで説明された計画に従って接続します 。 4本のデータライン、RS、イネーブル、5ボルト、グランド、およびコントラスト調整用の10kΩトリマー。



ボタン


エンコーダーが見つからなかったため、ボタンインターフェイスを使用することにしました。 任意の3つのボタンでできます。 確かに、ファームウェアを編集する必要がありますが、それについては後で編集します。



加熱テーブル上のモスフェット


前の記事で述べたように、このMOSFETは不適切な操作のため非常に熱くなっています。 ビデオカードから取得したAPM2509Nに置き換えました。 テーブルの栄養経路も拡張されました。 ラッカーコーティングをメスできれいに切り落とし、厚いはんだ層ではんだ付けしました。 前のMOSFETは加熱されていたため、30〜50分後に指を火傷することができました。 そして、新しいものは6時間で38度まで加熱されました。 はい、MOSFETにはラジエーターがありません。

これで、テーブルは15〜17分(30分前)に100°Cに加熱されます。 そして、テーブル上のLEDがなんとか明るくなり始めました(または、たぶんそれだけのようです)。



つなぐ


5ボルトの安定器からの出力は、RAMPSの5Vピンに接続されます。

カードリーダーはAUX-3コネクタに接続されています(左側にRAMPSピン、右側にSD):

ピンD50(MISO)-DO(MISO);

ピンD51(MOSI)-ディバイダー-DI(MOSI);

ピンD52(SCK)-分周器-SCK;

ピンD53-分周器-CS;

3.3ボルト(スタビライザー付き)-VCC;

GND-GND(VSS);

SD Detectがある場合は、AUX-4コネクタのピンD43に接続します。



ボタンとディスプレイは、AUX-4コネクタに接続されています。

ディスプレイ(左側のRAMPSピン、右側のディスプレイ(データバスはD0で始まります)):

ピンD16-RS;

ピンD17-イネーブル(E);

ピンD23-データ4(D4);

ピンD25-データ5(D5);

ピンD27-データ6(D6);

ピンD29-データ7(D7);

5ボルト-VDD;

GND-VSS;

チューニング抵抗は5ボルトとグランドに接続され、出力はVOピンに接続されます(コントラスト)。

RSディスプレイのピンはグランドに接続されています。

バックライトがある場合、1.8kオームの抵抗とグランドを介して5ボルトを接続します。



ボタンは地面に接続されており、次のとおりです。

ピンD31-アップ;

ピンD33-ダウン;

ピンD35-クリック。

デフォルトでは、これらのピンはファームウェアで設定されます。 他のユーザーに接続するには、ファームウェアのpins.hファイルを修正する必要があります。



configuration.hファイル内のファームウェアのSDカード、文字ディスプレイ、およびボタンのサポートを開始するには、次の行のコメントを解除します。

#define REPRAP_DISCOUNT_SMART_CONTROLLER
      
      





この場合、ULTIPANEL、NEWPANEL、SDSUPPORT、およびULTRA_LCDが自動的に検出され、ディスプレイ、ボタン、およびカードリーダーの操作を担当します。

画面に表示されるプリンター名は、次の行で指定されます。

 #define CUSTOM_MENDEL_NAME "This Mendel"
      
      





ディスプレイの文字数と行数は、それぞれLCD_WIDTHパラメーターとLCD_HEIGHTパラメーターによって設定されます。

表示サイズを設定します
 #ifdef ULTIPANEL // #define NEWPANEL //enable this if you have a click-encoder panel #define SDSUPPORT #define ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the DOG graphic display #define LCD_WIDTH 20 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 20 //   #define LCD_HEIGHT 4 //   #endif #else //no panel but just LCD #ifdef ULTRA_LCD #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display #define LCD_WIDTH 20 #define LCD_HEIGHT 5 #else #define LCD_WIDTH 16 #define LCD_HEIGHT 2 #endif #endif #endif
      
      





ultralcd.cppファイルでエンコーダーの代わりにボタンをサポートするには
行を見つける
  //manage encoder rotation uint8_t enc=0; if(buttons&EN_A) enc|=(1<<0); if(buttons&EN_B) enc|=(1<<1); if(enc != lastEncoderBits) { switch(enc) { case encrot0: if(lastEncoderBits==encrot3) encoderDiff++; else if(lastEncoderBits==encrot1) encoderDiff--; break; case encrot1: if(lastEncoderBits==encrot0) encoderDiff++; else if(lastEncoderBits==encrot2) encoderDiff--; break; case encrot2: if(lastEncoderBits==encrot1) encoderDiff++; else if(lastEncoderBits==encrot3) encoderDiff--; break; case encrot3: if(lastEncoderBits==encrot2) encoderDiff++; else if(lastEncoderBits==encrot0) encoderDiff--; break; } } lastEncoderBits = enc;
      
      





に変更
 //manage encoder rotation uint8_t enc=0; if(buttons&EN_A) { encoderDiff = 1; delay(10); } if(buttons&EN_B){ encoderDiff = -1; delay(10); }
      
      





正しいアセンブリを使用すると、ファームウェアをアップロードした後、USBケーブルをデスクドロワーから取り外して、SDカードから印刷できます。



今のところすべてです。 いつものように、質問やコメントを楽しみにしています。



PS近い将来、私はサーボモーターを使って自動校正をテーブルに置く予定です。 2台目のプリンターのフレームを組み立てます。



All Articles