投稿

1月, 2023の投稿を表示しています

Arduinoで電流を測定する

イメージ
こんにちは、こんばんは 今回はArduinoを使って電流を測定してみたいと思います。   用意するもの ・Arduino Uno ・ジャンパ線 ・1~250Ω、1W以上の抵抗(ニクロム線でも可) ・適当な電気負荷(抵抗、モーター等) ・5V以上の外部電源(あったらよい) 理論 どうやって電流を電圧に変更するのかというと、中学校で習う理論を使います。 それは抵抗によって起きる電圧降下を利用します。 下の図を見てください。 図の抵抗ではRvarとRconstが存在します。 ここでいうRvarは通常の負荷と考えてください。電気負荷は電気の使用量によって変化するので、Rvarの抵抗値は変数(自由に変わる数)であり、未知数なので計算には使用できません。 また、Rconstは変更されることのない抵抗なので、定数(変わることのない数)であり値は変化しません。 よってオームの法則を使うことによって電流がわかります。 \begin{align} R=\frac{V}{I} \end{align} そして回路を流れる電流はキルヒホッフの法則によりすべて同じです。 電流を計算するためにV0とV1の部分の差を取ります。 差をとる処理はオペアンプでも可能です。 また差をとって電流を調べるためには以下の式になります。 \begin{align} I[A]=\frac{V_0-V_1}{R_{const}} \end{align} また電力を求めるには電圧を掛けるだけなので、V0を掛けてやると以下の式になります。 \begin{align} E[W]=V_0\times\frac{V_0-V_1}{R_{const}} \end{align} 回路図 Rconstの抵抗に、100Ω10Wのセラミック抵抗を使用していますが、流す電圧と相談してワット数と抵抗の大きさを決めてください。 \begin{align} E_R[W]=\frac{V_{in}^2}{R_{const}} \end{align} Rvarは何らかの負荷を接続してください。また負荷が大きい場合(200mAを超える)はArduinoが壊れ...

サーボモーターをArduino、ESP32で制御する。

イメージ
こんにちは、こんばんは サーボモーターは知っていますか? モーターにパルス信号を送ると決まった角度だけ回転できるという優れたモーターです。 今回はその使い方を解説します。 用意するもの ・Arduino、ESP32どっちか ・サーボモーター(SG-90) ・ジャンパ線 ほかに用意するものとしてサーボモーターのライブラリを持ってきます。 Pulse関数を使って書いてもいいですが面倒なのでライブラリに頼ります。 https://github.com/RoboticsBrno/ServoESP32   サーボモーターについて サーボモーターにはACとDCタイプが存在します。  交流と直流で使えるかどうかだけの違いなのであまり詳しくは解説しませんが、トルクの特性の違いがあります。 また似たようなモーターでステッピングモーターがありますがこれに関しては動作原理が全く違います。 サーボモーターはロータリーエンコーダを用いてフィードバックをしますが、ステッピングモーターはフィードバックは行わず、コイルに流す電流の違いで角度を変化させます。 そのためステッピングモーターを扱うときは専用のモータードライバが必要になります。   DCタイプ 小さいタイプ   ACタイプ 大きいタイプ   回路 Arduinoでサーボモーターを扱うときは以下のようになります。 まず、外部電源を使うときの図です。 なぜ外部電源を使うのかというと、消費電力の大きいサーボモーターを使うとarduinoのボードを破損してしまう恐れがあるからです。またサーボモーターの電圧が足りず、サーボモーターがうまく回転しないときがあるので、そういったときは外部電源を使用します。   次にarduinoの内部電源を使うときの図です。  さらっと9番ピンを使っていますが、プログラムを変更すればどこでも使えるのでそこまで重要じゃないです。   ...