負電圧が欲しいんダァァァ!!
今回はMOSFETなんかをスイッチング(ターンオフ期間とか)するのに負電圧が欲しい時がしばしばある
なので負電圧IC(NJW4191)なるものを使ってみようと思う
試作した回路はこんな感じになっていてR1とR2の比で出力電圧が決まってくるようだ
C2は適当に1uFくらいをつけておけばいいらしい(知らんけどw)
で厄介なのが「CLK」と「ON/OFF」信号だけが0~6V以内(データシート参照)に収めなければいけないらしいので12VをV+に入れると考えるなら定電圧回路が必要になる(1MΩの抵抗を直列に入れている人もいるけれども...)。今回はTL431というシャントレギュレータというICで代用した。
一応これで負電圧ができた(あっさりできて面白みがないなw)
リップルが発生するらしいので変動率を見ると...
大きな変動ではないけどなんかリップルがあるな...
LCフィルタなんかつければ除去できそうなので、今度試してみようと思う(やるかわからんけど)
ESP32単体で動作させてみた。
ESP32を実装するのに単体で書き込む→Lチカまでをやったので備忘録的な感じで回路図を載せておこうと思う
一応こんな感じの回路図で動作させることができた。
あとはLチカプログラムを書いてやれば動作できるはず。
誘導加熱の制作記録(3)
基板も出来たので久しぶりに誘導加熱の記事を書いていこうと思う
イマイチな状態ですが、一応沸騰させるところまで出来たので、それまでの記事をまとめていこうと思います。
①誘導加熱ってコイル単体でできないのかな?って思って最初は始めたわけで、ハーフブリッジorフルブリッジでできるのかな?って思って試したわけですが、これがうまくいかないんですよ。
②コイル単体ではダメなのか?と思い色々と調べるうちに共振なるものを使うことで効率が良くなるらしいので原理とかについてはよくわかりませんが、「制作記録(2)」でも説明しましたが、詳しくは知りませんけどLとCを使うことでそれぞれをいいとこ取り?みたいなことが出来てるらしいです。
(詳しいことが知りたい人は別のサイトを参照してください。)
③自作基板作成!!
ユニバーサル基板だとどうしてもパターンやらが細くて危なそうだったので、フルブリッジ構成の基板を作成することにしました。使用したCADはKiCADで一般的に有名だったので使ってみましたがこんなのがフリーでいいものなのか?ってくらい使いやすいので、今後はKiCADでやっていこうかなと思います。
③空芯コイルで誘導加熱
誘導加熱用の空芯コイル(30uHくらい)に0.47uFを直列接続したコンデンサを並列接続して、その状態でコイルの中に金属を入れて駆動させると中に入れてた金属が発熱させられました。波形は汚いけどまぁいいでしょう。
(たぶん80度以上にはなってると思う)
④IHもどきのコイルで誘導加熱
平面上に銅線を巻き上げたタイプの誘導加熱コイル(10uH)でも並列コイルをやったのですが、なぜか熱量が上がらずにアルミ缶の温度が上がりませんでした。
なら今度は直列共振でやったらどうか?ってことでコイルを直列に接続してみると5分〜10分くらいの時間はかかりますが、沸騰するところまでは行けました。
⑤まとめ
アルミ缶を沸騰させるところまではできましたが、まだまだ色々調べたりしながらやった方が良さそうです。「負荷のQが小さいと波形が汚くなる」とか「鉄共振」なんてのもあるので負荷(アルミ・スチール・鍋の大きさ・共振回路)の構成によっても変化するのかもしれないので色々調べながらやっていきたいと思うので、一旦は切り上げてまた時間があればやっていこうかなぁと思います。それでは
ESP32でワイヤレス書き込み(OTA)
ESP32でワイヤレス書き込みをする必要があって「これを使うとめっちゃ便利になるので試して欲しい」
ってのもあったのでその方法を備忘録的な感じで書いていく
<環境>
PC:Mac OS Big Sur
IDE:Arduino 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!!)
次に
「RLC並列共振回路:反共振周波数でインピーダンスが最大となる」というものでこちらは
加熱用コイルに並列にコンデンサを直列接続することである周波数で外部から見たらインピーダンスが高く見えますが、LとCで見たらインピーダンスが0Ωのように見えるので、スイッチング素子なんかはあまり発熱しにくいです。
(もちろんコイル単体には大電流が流れますが)
この方式でやっているのがamazonなんかで販売してるZVS誘導加熱装置になります
そしてこの並列共振回路で今回は実現しようというわけです。
ただ、家庭電源のAC100は危なくて使いたくないし(高調波やらなんやらで最悪火事になる可能性もある)
正弦波インバータも作ってみたいな〜
(マイブームなんです)
なんて考えていたのでひとまず可変できる141V電源を作ってみようと思います。
次回は電源作りの話になります。
それでは
Arduino 備忘録(1) SDカードで読み出し編
急遽マトリクスLEDを表示させたくなったので、そのための備忘録的な感じでArduino周辺機器の使い方についてまとめていこうと思います。
SDカード:その辺に転がってた2GBのやつ
フォーマット: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付近の信号を駆動させてみた。
黄色が電圧波形、赤色がCTの波形です。
コイルなので電流波形が遅れています。
「一応温まるけど、なんかそこまであったまらないな〜」
次にインピーダンスアナライザで共振周波数を調べて共振コンデンサつけて駆動させてみました。
(だいたい共振周波数が100kHz付近?)
黄色がCTの波形、赤色が電圧波形
電流波形が綺麗じゃありませんが、一応それっぽい(位相があってるのか?)波形になったのでよしとしましょう。超テキトー
「鉄の棒で半田が溶けたw」
一応ここまで来るとMOSFETが小さいヒートシンクつけててもまじで熱くなるのでヒートシンク取り付けられる基板を発注しようと思います。
次回は基板ができてからの更新になると思います。
(更新ペース遅れてすみません。)