🔥

【Arduino】モータドライバでペルチェ素子の同じ面を熱くしたり冷たくしたりする方法

2022/12/07に公開

1. はじめに

ZAWAWORKSアドベントカレンダー2022、7日目の記事です!
前回の記事ではリレーを用いたペルチェ素子の制御方法についてまとめました。
ここに埋め込み

しかし、この方法は電流の流れをON・OFFするだけで、ペルチェ素子の同じ面を熱くしたり、冷たくしたりできません。そこで今回は電流の流れの向きを変えられるモータドライバTA7291Pを用いたペルチェ素子の制御方法についてまとめます。

2. 開発環境


A. Arduino UNO
B. ペルチェ素子
C. モータドライバ(TA7291P)
D. 電池ボックス 単3 4本
E. ジャンプワイヤ オス-オス 5本(色数が多いジャンプワイヤがオススメです)
F. サンハヤト ジャンプワイヤ SMP-200 ミノムシ付

3. 配線

3.1. 電池ボックスとペルチェ素子にワニ口クリップをつける

3.2. Arduinoにジャンプワイヤ(オス-オス)を挿す

  • ちなみに茶色の線は~がついた番号(3,5,6,9,10,11)にしか繋げてはいけない
  • Arduinoのピンの違いについでは、以下の記事を参考にしてほしいです
    https://miraiworks.org/?p=5655

3.3. ブレッドボードにモータドライバとジャンプワイヤを挿す

  • 文字が書いてる面ブレッドボードから外側を向くように挿します

  • Arduino・電池ボックス・ペルチェ素子に繋げたジャンプワイヤをそれぞれブレッドボードに挿す
  • 下の図のように黒い線は同じ行に挿す
  • 図の左側の緑はペルチェ素子の黒い方、右側の緑は赤い方

4. コード


7番ピンと8番ピンを各々HIGHまたはLOWにすることで、電流の向きを制御します

#define PIN_IN1  7
#define PIN_IN2  8
#define PIN_VREF 9 //~がついてる番号のもの
 
void setup(){
  pinMode(PIN_IN1,OUTPUT); 
  pinMode(PIN_IN2,OUTPUT); 
}
 
void loop(){
      
    // モーターの回転速度を中間にする
    analogWrite(PIN_VREF,127); 
 
    // 回転
    digitalWrite(PIN_IN1,HIGH);
    digitalWrite(PIN_IN2,LOW);
    delay(5000);
 
    // ブレーキ
    digitalWrite(PIN_IN1,HIGH);
    digitalWrite(PIN_IN2,HIGH);
    
    // 逆回転
    digitalWrite(PIN_IN1,LOW);
    digitalWrite(PIN_IN2,HIGH);    
    delay(5000);
    
    // モーターの回転速度を最大にする
    analogWrite(PIN_VREF,255); 
    
    // 逆回転 
    digitalWrite(PIN_IN1,LOW);
    digitalWrite(PIN_IN2,HIGH);    
    delay(5000);
                
    // ストップ
    digitalWrite(PIN_IN1,LOW);
    digitalWrite(PIN_IN2,LOW);
    delay(2000);
}

5. おわりに

今回の記事で、ペルチェ素子の同じ面を熱くしたり冷たくしたりする方法をまとめました。
ただし、ここに書いてある方法だけではペルチェ素子がどんどん熱く(冷たく)なるだけです。

一定の温度に制御するにはPID制御が必要です。PID制御する方法については、以前の記事にまとめていますが、その記事ではモータドライバではなくリレーを使っています。次回は、モータドライバでのPID制御の方法についてまとめます。

6. 参考文献

宣伝|大阪の梅田で展示会を開催します!


※これは2022年のものです

12/22(木)~12/25(日)に、まるでリア充のような体験ができる「バーチャルリアジュウ展」を開きます!
電子工作やVRで、あなたを「バーチャルリア充(ほぼリア充)」に変えます!

クリスマスシーズン、時間に余裕がある方はぜひお越しください!

著者プロフィール

ZAWA WORKS
モテない理系男子の末路。妄想を叶える装置を日々開発中。

Discussion