誘導加熱の制作記録(3)

基板も出来たので久しぶりに誘導加熱の記事を書いていこうと思う

イマイチな状態ですが、一応沸騰させるところまで出来たので、それまでの記事をまとめていこうと思います。

 

①誘導加熱ってコイル単体でできないのかな?って思って最初は始めたわけで、ハーフブリッジorフルブリッジでできるのかな?って思って試したわけですが、これがうまくいかないんですよ。

 

②コイル単体ではダメなのか?と思い色々と調べるうちに共振なるものを使うことで効率が良くなるらしいので原理とかについてはよくわかりませんが、「制作記録(2)」でも説明しましたが、詳しくは知りませんけどLとCを使うことでそれぞれをいいとこ取り?みたいなことが出来てるらしいです。

(詳しいことが知りたい人は別のサイトを参照してください。)

 

③自作基板作成!!

ユニバーサル基板だとどうしてもパターンやらが細くて危なそうだったので、フルブリッジ構成の基板を作成することにしました。使用したCADはKiCADで一般的に有名だったので使ってみましたがこんなのがフリーでいいものなのか?ってくらい使いやすいので、今後はKiCADでやっていこうかなと思います。

 

 

③空芯コイルで誘導加熱

誘導加熱用の空芯コイル(30uHくらい)に0.47uFを直列接続したコンデンサを並列接続して、その状態でコイルの中に金属を入れて駆動させると中に入れてた金属が発熱させられました。波形は汚いけどまぁいいでしょう。
(たぶん80度以上にはなってると思う)

youtu.be

 

④IHもどきのコイルで誘導加熱

平面上に銅線を巻き上げたタイプの誘導加熱コイル(10uH)でも並列コイルをやったのですが、なぜか熱量が上がらずにアルミ缶の温度が上がりませんでした。

なら今度は直列共振でやったらどうか?ってことでコイルを直列に接続してみると5分〜10分くらいの時間はかかりますが、沸騰するところまでは行けました。

f:id:ArcPrize:20220306190329j:plain

youtu.be


youtu.be

⑤まとめ

アルミ缶を沸騰させるところまではできましたが、まだまだ色々調べたりしながらやった方が良さそうです。「負荷のQが小さいと波形が汚くなる」とか「鉄共振」なんてのもあるので負荷(アルミ・スチール・鍋の大きさ・共振回路)の構成によっても変化するのかもしれないので色々調べながらやっていきたいと思うので、一旦は切り上げてまた時間があればやっていこうかなぁと思います。それでは

ESP32でワイヤレス書き込み(OTA)

ESP32でワイヤレス書き込みをする必要があって「これを使うとめっちゃ便利になるので試して欲しい」
ってのもあったのでその方法を備忘録的な感じで書いていく


<環境>
PC:Mac OS Big Sur
IDEArduino IDE
ボード:ESP32-DevKitC-32D


最初に有線接続でESP32に次のプログラム書き込む
(サンプルプログラムにもBasicOTAという同じファイルがある)


#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "アクセスポイントのSSIDを入力";
const char* password = "アクセスポイントのパスワードを入力";

void setup() {
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // Port defaults to 3232
  // ArduinoOTA.setPort(3232);

  // Hostname defaults to esp3232-[MAC]
  // ArduinoOTA.setHostname("myesp32");

  // No authentication by default
  // ArduinoOTA.setPassword("admin");

  // Password can be set with it's md5 value as well
  // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
  // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");

  ArduinoOTA
    .onStart([]() {
      String type;
      if (ArduinoOTA.getCommand() == U_FLASH)
        type = "sketch";
      else // U_SPIFFS
        type = "filesystem";

      // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
      Serial.println("Start updating " + type);
    })
    .onEnd([]() {
      Serial.println("\nEnd");
    })
    .onProgress([](unsigned int progress, unsigned int total) {
      Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
    })
    .onError([](ota_error_t error) {
      Serial.printf("Error[%u]: ", error);
      if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
      else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
      else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
      else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
      else if (error == OTA_END_ERROR) Serial.println("End Failed");
    });

  ArduinoOTA.begin();

  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  ArduinoOTA.handle();
}


次にシリアルポートに「ネットワークポート」という項目に自分の
設定したIPアドレス的なのが追加されていると思うのでそれを選択する

それが終わったら次を書き込んで正常に書き込まれれば終わり

#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "アクセスポイントのSSIDを入力";
const char* password = "アクセスポイントのパスワードを入力";

void setup() {
  Serial.begin(115200);

  WirelessSet();
}

void loop() {
  ArduinoOTA.handle();
}

void WirelessSet(void){
  
  Serial.println("Booting");
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    while (WiFi.waitForConnectResult() != WL_CONNECTED) {
      Serial.println("Connection Failed! Rebooting...");
      delay(5000);
      ESP.restart();
    }
  
    // Port defaults to 3232
    // ArduinoOTA.setPort(3232);
  
    // Hostname defaults to esp3232-[MAC]
    // ArduinoOTA.setHostname("myesp32");
  
    // No authentication by default
    // ArduinoOTA.setPassword("admin");
  
    // Password can be set with it's md5 value as well
    // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
    // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");
  
    ArduinoOTA
      .onStart([]() {
        String type;
        if (ArduinoOTA.getCommand() == U_FLASH)
          type = "sketch";
        else // U_SPIFFS
          type = "filesystem";
  
        // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
        Serial.println("Start updating " + type);
      })
      .onEnd([]() {
        Serial.println("\nEnd");
      })
      .onProgress([](unsigned int progress, unsigned int total) {
        Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
      })
      .onError([](ota_error_t error) {
        Serial.printf("Error[%u]: ", error);
        if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
        else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
        else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
        else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
        else if (error == OTA_END_ERROR) Serial.println("End Failed");
      });
  
    ArduinoOTA.begin();
  
    Serial.println("Ready");
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());

}

誘導加熱器の製作記録(2)久々のブログ更新!!

お久しぶりです。

色々忙しくてブログ更新ができてなくて、すんません。

前回の投稿から3ヶ月以上も空いてしまっていたんですね

どうやら冬の方がやる気が出るらしいです

 

その間に何もやらなかったわけではないんですけどね

 

ここから本題ですが、

 

誘導加熱をするのに必要な電源がありません!!

 

というのも、誘導加熱をするのに並列共振と直列共振ってのがありまして

(知っていたら読み飛ばしてください)

 

「RLC直列共振回路:共振周波数でインピーダンスが最小となる」というもので要は

加熱用コイルに直列にコンデンサを直列接続するとある周波数で抵抗成分だけとなり電圧は小さいけど電流がものすごい流れるという方式で、これだと配線の発熱がマジでやばいことになります。空き缶で試しましたが、めちゃめちゃ発熱しました。(40Vくらいで約70A!!)

f:id:ArcPrize:20211127144842p:plain

次に

「RLC並列共振回路:反共振周波数でインピーダンスが最大となる」というものでこちらは

加熱用コイルに並列にコンデンサを直列接続することである周波数で外部から見たらインピーダンスが高く見えますが、LとCで見たらインピーダンスが0Ωのように見えるので、スイッチング素子なんかはあまり発熱しにくいです。

(もちろんコイル単体には大電流が流れますが)

この方式でやっているのがamazonなんかで販売してるZVS誘導加熱装置になります

 

f:id:ArcPrize:20211127144850p:plain

そしてこの並列共振回路で今回は実現しようというわけです。

ただ、家庭電源のAC100は危なくて使いたくないし(高調波やらなんやらで最悪火事になる可能性もある)

 

正弦波インバータも作ってみたいな〜

(マイブームなんです)

 

なんて考えていたのでひとまず可変できる141V電源を作ってみようと思います。

 

次回は電源作りの話になります。

 

それでは

Arduino 備忘録(1)  SDカードで読み出し編

急遽マトリクスLEDを表示させたくなったので、そのための備忘録的な感じでArduino周辺機器の使い方についてまとめていこうと思います。

 

SDカード:その辺に転がってた2GBのやつ

マイコンボード:Arduino Uno

フォーマット:FAT16


簡単な説明
通信方法:SPI通信
回路図

Arduino SDカード
       
4 2
11 3
3.3 4
13 5
GND 6
12 7


SDカードの信号線(2,3,5,7)はすべてArduinoは5VでSDカード側は3.3Vに変換する必要がある(そうしないと壊れる)


 

#include <SPI.h>//SPI通信用のライブラリ
#include <SD.h>//SDカード読み出し用のライブラリ

File myFile;//インスタンス生成

void setup() {
  Serial.begin(57600);//ボーレート設定
  while (!Serial) {//シリアルポートが開くまで無限ループ
  }

  if (!SD.begin(4)) {//引数にSSピンを指定。接続されるとtrueを返す
    while (1);
  }
  myFile = SD.open("abc.txt");//abc.txtというフォルダを開く(読み取りモード)
  if (myFile) { //ファイルが開けたらtrueを返す
    while (myFile.available()) {//myFile.available()はデータがなくなるとfalseを返す
      Serial.write(myFile.read());//でバッファにあるデータを読み出す
    }
    myFile.close();//読み出しが終わると閉じる
  } 
}
void loop(){
}

動作:リセットボタンを押すとファイルの内容が読み出されて、おしまい

プログラムの内容はコメントに書きましたが、自分用に書いたので分かりにくかったらすみません。

実行してみると、どうやらファイル名が長いと読み込まれないらしいので色々調べてみると
「8.3形式」という手法で書かないとダメみたいですね。

誘導加熱器の製作記録(1)

今回から誘導加熱を本格的にやっていこうと思います。

誘導加熱をPFC回路から出力してその電圧を可変させて負荷を駆動させようという考えです。

 

最初のうちはハーフブリッジにトランスで絶縁させて負荷(空芯コイルに金属棒を入れただけ)を駆動させていたのですが、どうもそこまで暖まらないな〜といことで色々な記事を見ていると共振?位相を合わせる?何てのを見つけ出してもしかして共振電流を多く流せればもっと温められるんじゃね?ってことでやってみました。

 

 

ハーフブリッジで680kHz付近の信号を駆動させてみた。

f:id:ArcPrize:20210509230956j:plain

黄色が電圧波形、赤色がCTの波形です。

コイルなので電流波形が遅れています。

「一応温まるけど、なんかそこまであったまらないな〜」

 

 

次にインピーダンスアナライザで共振周波数を調べて共振コンデンサつけて駆動させてみました。

(だいたい共振周波数が100kHz付近?)

f:id:ArcPrize:20210509230838j:plain

黄色がCTの波形、赤色が電圧波形

電流波形が綺麗じゃありませんが、一応それっぽい(位相があってるのか?)波形になったのでよしとしましょう。超テキトー

「鉄の棒で半田が溶けたw」

 

一応ここまで来るとMOSFETが小さいヒートシンクつけててもまじで熱くなるのでヒートシンク取り付けられる基板を発注しようと思います。

 

次回は基板ができてからの更新になると思います。

(更新ペース遅れてすみません。)

電圧可変型のDCDCコンバータ作ってみた

今回は絶縁型DCDCコンバータを試作してみました。

 

f:id:ArcPrize:20210509005713p:plain

  

目標仕様は電源電圧(50V)の直流信号を0〜電源電圧まで可変させるというもので

一応ブレッドボード上ですが、動作させることができたのでその記録的なもの

 

 

回路構成はPWM信号を出力してやって目標電圧に近づくにつれてduty比を減らしていくというもの。

 

ノイズとか心配ですが熱くなったらやめようかと思います(適当w)

 

 

50V出力(正確には47Vくらい)

f:id:ArcPrize:20210509002656j:plain

 

25V出力(正確には21Vくらい?)

f:id:ArcPrize:20210509002709j:plain

結果としては当たり前ですけど普通に出力されます。

交流結合で電圧変動を見てみましたが結構ノイズ?が乗ってるみたいですね。知らんけど

(ブレッドボードなので仕方ないです)

原理までは確認できたので、今度は基板に起こしてみようと思います。

 

今はアナログ回路で無理やり実現しているので、マイコン制御できると楽しいかもしれませんね。

 

これでやっと出力可変ができる。

それではまた。