使用廉价驱动程序模块的 DIY DRSSTC 音乐特斯拉线圈带中断器

ChangeCode
转载
发布时间: 2025-06-10 15:28:48 | 阅读数 0收藏数 0评论数 0
封面
一种简单且相对便宜的方法来制造高效的 DRSSTC(双谐振固态)特斯拉线圈。
1

简介

DRSSTC(双谐振固态特斯拉线圈)是一种特斯拉线圈,它使用固态元件,通常是 MOSFET 或 IGBT(绝缘栅双极晶体管)进行开关。初级电路由谐振电感和电容器组成,它们共同构成谐振电路。

输出驱动电路通常由用于控制 MOSFET 的半桥或全桥配置组成,反馈电路用于监控输出和动态调整发射模式。这种类型的特斯拉线圈具有几个优点,包括更高的能源效率、对脉冲频率、宽度和幅度的更好控制以及更安静的运行。

现在,我将向您介绍一种相对简单的方法来制作这种设备,这要归功于我以大约 15 美元的非常低的价格获得的廉价驱动程序模块。

2

电路图

与模块一起,该封装还包括模块电路图形式的描述,以及如何连接功率部分的示意图,其中应包含 MOSFET 或 IGBT 晶体管。

PCB 结构坚固,还包含一个带有两个调节电位器的断断续续电路,以及一个带有电位器的音频调制器,用于控制音乐特斯拉线圈操作的输入音频信号的调制。

3

变压器线圈

如您所见,我将组件放在一个小塑料板上,两个功率半导体安装在铝制散热器上,其他元件直接焊接到它们上面或用双面胶粘在板上。变压器绕在直径大于 2cm 的环形铁氧体磁芯上,由三个绕组组成,两个绕组为 12 个,一个绕组为 8 个绕组。

实际上,这是一个非常相似的配置,但使用不同的组件执行,而不是 QCW 灭弧室,它包含一个具有部分频率和占空比控制的常规灭弧室。为了给 MOSFET 的半桥配置供电,我使用了一个简单的半波整流器,它由一个快速二极管和一个 1 微法拉电容器组成。我用 2kW 的电压控制电压。

4

实践测试

一开始测试期间,特斯拉工作正常,但随着电压逐渐升高到 100V 左右,我遇到了一个大问题。

也就是说,MOSFET 经常意外地烧坏。这就是结果:manu death mosfets。我发现造成这种情况的原因是栅极驱动器变压器的铁芯质量非常差。很快,变压器的输出信号应尽可能接近理想的方波信号。偏差越大,MOSFET 燃烧得越快。现在,我将向您展示一种简单的方法来测试栅极驱动器变压器的特性,该方法取决于磁芯的质量和组成。为此,在我目前拥有的所有未知类型的内核上,我用从网线中取出的双线缠绕了 10 圈。一种颜色是输入,另一种颜色是变压器的输出。现在我们需要一个方波发生器、一个示波器和一个栅极驱动器 IC,在我的例子中是 TC426,但您可以使用任何栅极驱动器。如图所示,在 IC 的输入端,我们从发电机带来信号,在输出端,我们连接变压器的初级。在变压器的输出端,我们连接一个示波器来观察信号的形状。

5

调节绕组

如果您没有信号发生器和示波器,您可以简单地使用电感计对其进行测试。在所有磁芯上绕组相同数量的绕组(例如 10 个),并测量这样制备的线圈的电感。线圈电感最高的应该是最适合此目的的。

现在让我们看看变压器在实际条件下是如何工作的。首先,我们使用 20--30V 的极低电压进行测试,使 CFL 接近次级。如果灯泡亮起,则表明变压器正在振荡,我们可以逐渐提高半桥电源配置的电压。选择合适的驱动变压器后,我的运行没有问题,请注意我测试该设备的最高电压是 150V。不幸的是,目前我没有更多的备用 Mosfet,所以我不想进行极端极限的测试。我预计 MOSFET 以及更强大的 IGBT 晶体管很快就会到来,所以我计划用 QCW Staccato 控制器更新项目。有趣的是,在这个特斯拉线圈的长期运行期间,MOSFET 的温度不超过 35 摄氏度,您可以在我使用热像仪进行的热分析中看到这一点。

6

额外小项目

我还制作了一个用于生成矩形音乐的小型 Arduino 项目。

7

特斯拉线圈测试图片

以上是该特斯拉线圈在灭弧室设置下操作的视频插页。

8

实践结论

最后是一个简短的结论。这个项目的目的主要是测试这个便宜的驱动板,这也是我的第一个半桥配置的 DRSSTC 特斯拉线圈。如您所见,该模块工作得相当稳定,满足了这种变压器的简单制作需求。板上还有一个可以连接外部断路器的地方,所以正如我之前提到的,在下一个项目中,我计划制作一个 QCW 特斯拉线圈。

安全注意事项:除非您熟悉高压安全技术,否则请不要尝试重现本视频中显示的实验!即使直流电高于 60V 也可能是致命的,即使由于电容器中存储的能量而断开了交流电源电压。

9

代码

/*
Super Mario Bros - Overworld theme
Connect a piezo buzzer or speaker to pin 11 or select a new pin.
More songs available at https://github.com/robsoncouto/arduino-songs
Robson Couto, 2019
*/
#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define NOTE_C2 65
#define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_FS2 93
#define NOTE_G2 98
#define NOTE_GS2 104
#define NOTE_A2 110
#define NOTE_AS2 117
#define NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
#define NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 4978
#define REST 0
// change this to make the song slower or faster
int tempo = 200;
// change this to whichever pin you want to use
int buzzer = 11;
// notes of the moledy followed by the duration.
// a 4 means a quarter note, 8 an eighteenth , 16 sixteenth, so on
// !!negative numbers are used to represent dotted notes,
// so -4 means a dotted quarter note, that is, a quarter plus an eighteenth!!
int melody[] = {
// Super Mario Bros theme
// Score available at https://musescore.com/user/2123/scores/2145
// Theme by Koji Kondo
NOTE_E5,8, NOTE_E5,8, REST,8, NOTE_E5,8, REST,8, NOTE_C5,8, NOTE_E5,8, //1
NOTE_G5,4, REST,4, NOTE_G4,8, REST,4,
NOTE_C5,-4, NOTE_G4,8, REST,4, NOTE_E4,-4, // 3
NOTE_A4,4, NOTE_B4,4, NOTE_AS4,8, NOTE_A4,4,
NOTE_G4,-8, NOTE_E5,-8, NOTE_G5,-8, NOTE_A5,4, NOTE_F5,8, NOTE_G5,8,
REST,8, NOTE_E5,4,NOTE_C5,8, NOTE_D5,8, NOTE_B4,-4,
NOTE_C5,-4, NOTE_G4,8, REST,4, NOTE_E4,-4, // repeats from 3
NOTE_A4,4, NOTE_B4,4, NOTE_AS4,8, NOTE_A4,4,
NOTE_G4,-8, NOTE_E5,-8, NOTE_G5,-8, NOTE_A5,4, NOTE_F5,8, NOTE_G5,8,
REST,8, NOTE_E5,4,NOTE_C5,8, NOTE_D5,8, NOTE_B4,-4,
REST,4, NOTE_G5,8, NOTE_FS5,8, NOTE_F5,8, NOTE_DS5,4, NOTE_E5,8,//7
REST,8, NOTE_GS4,8, NOTE_A4,8, NOTE_C4,8, REST,8, NOTE_A4,8, NOTE_C5,8, NOTE_D5,8,
REST,4, NOTE_DS5,4, REST,8, NOTE_D5,-4,
NOTE_C5,2, REST,2,
REST,4, NOTE_G5,8, NOTE_FS5,8, NOTE_F5,8, NOTE_DS5,4, NOTE_E5,8,//repeats from 7
REST,8, NOTE_GS4,8, NOTE_A4,8, NOTE_C4,8, REST,8, NOTE_A4,8, NOTE_C5,8, NOTE_D5,8,
REST,4, NOTE_DS5,4, REST,8, NOTE_D5,-4,
NOTE_C5,2, REST,2,
NOTE_C5,8, NOTE_C5,4, NOTE_C5,8, REST,8, NOTE_C5,8, NOTE_D5,4,//11
NOTE_E5,8, NOTE_C5,4, NOTE_A4,8, NOTE_G4,2,
NOTE_C5,8, NOTE_C5,4, NOTE_C5,8, REST,8, NOTE_C5,8, NOTE_D5,8, NOTE_E5,8,//13
REST,1,
NOTE_C5,8, NOTE_C5,4, NOTE_C5,8, REST,8, NOTE_C5,8, NOTE_D5,4,
NOTE_E5,8, NOTE_C5,4, NOTE_A4,8, NOTE_G4,2,
NOTE_E5,8, NOTE_E5,8, REST,8, NOTE_E5,8, REST,8, NOTE_C5,8, NOTE_E5,4,
NOTE_G5,4, REST,4, NOTE_G4,4, REST,4,
NOTE_C5,-4, NOTE_G4,8, REST,4, NOTE_E4,-4, // 19
NOTE_A4,4, NOTE_B4,4, NOTE_AS4,8, NOTE_A4,4,
NOTE_G4,-8, NOTE_E5,-8, NOTE_G5,-8, NOTE_A5,4, NOTE_F5,8, NOTE_G5,8,
REST,8, NOTE_E5,4, NOTE_C5,8, NOTE_D5,8, NOTE_B4,-4,
NOTE_C5,-4, NOTE_G4,8, REST,4, NOTE_E4,-4, // repeats from 19
NOTE_A4,4, NOTE_B4,4, NOTE_AS4,8, NOTE_A4,4,
NOTE_G4,-8, NOTE_E5,-8, NOTE_G5,-8, NOTE_A5,4, NOTE_F5,8, NOTE_G5,8,
REST,8, NOTE_E5,4, NOTE_C5,8, NOTE_D5,8, NOTE_B4,-4,
NOTE_E5,8, NOTE_C5,4, NOTE_G4,8, REST,4, NOTE_GS4,4,//23
NOTE_A4,8, NOTE_F5,4, NOTE_F5,8, NOTE_A4,2,
NOTE_D5,-8, NOTE_A5,-8, NOTE_A5,-8, NOTE_A5,-8, NOTE_G5,-8, NOTE_F5,-8,
NOTE_E5,8, NOTE_C5,4, NOTE_A4,8, NOTE_G4,2, //26
NOTE_E5,8, NOTE_C5,4, NOTE_G4,8, REST,4, NOTE_GS4,4,
NOTE_A4,8, NOTE_F5,4, NOTE_F5,8, NOTE_A4,2,
NOTE_B4,8, NOTE_F5,4, NOTE_F5,8, NOTE_F5,-8, NOTE_E5,-8, NOTE_D5,-8,
NOTE_C5,8, NOTE_E4,4, NOTE_E4,8, NOTE_C4,2,
NOTE_E5,8, NOTE_C5,4, NOTE_G4,8, REST,4, NOTE_GS4,4,//repeats from 23
NOTE_A4,8, NOTE_F5,4, NOTE_F5,8, NOTE_A4,2,
NOTE_D5,-8, NOTE_A5,-8, NOTE_A5,-8, NOTE_A5,-8, NOTE_G5,-8, NOTE_F5,-8,
NOTE_E5,8, NOTE_C5,4, NOTE_A4,8, NOTE_G4,2, //26
NOTE_E5,8, NOTE_C5,4, NOTE_G4,8, REST,4, NOTE_GS4,4,
NOTE_A4,8, NOTE_F5,4, NOTE_F5,8, NOTE_A4,2,
NOTE_B4,8, NOTE_F5,4, NOTE_F5,8, NOTE_F5,-8, NOTE_E5,-8, NOTE_D5,-8,
NOTE_C5,8, NOTE_E4,4, NOTE_E4,8, NOTE_C4,2,
NOTE_C5,8, NOTE_C5,4, NOTE_C5,8, REST,8, NOTE_C5,8, NOTE_D5,8, NOTE_E5,8,
REST,1,
NOTE_C5,8, NOTE_C5,4, NOTE_C5,8, REST,8, NOTE_C5,8, NOTE_D5,4, //33
NOTE_E5,8, NOTE_C5,4, NOTE_A4,8, NOTE_G4,2,
NOTE_E5,8, NOTE_E5,8, REST,8, NOTE_E5,8, REST,8, NOTE_C5,8, NOTE_E5,4,
NOTE_G5,4, REST,4, NOTE_G4,4, REST,4,
NOTE_E5,8, NOTE_C5,4, NOTE_G4,8, REST,4, NOTE_GS4,4,
NOTE_A4,8, NOTE_F5,4, NOTE_F5,8, NOTE_A4,2,
NOTE_D5,-8, NOTE_A5,-8, NOTE_A5,-8, NOTE_A5,-8, NOTE_G5,-8, NOTE_F5,-8,
NOTE_E5,8, NOTE_C5,4, NOTE_A4,8, NOTE_G4,2, //40
NOTE_E5,8, NOTE_C5,4, NOTE_G4,8, REST,4, NOTE_GS4,4,
NOTE_A4,8, NOTE_F5,4, NOTE_F5,8, NOTE_A4,2,
NOTE_B4,8, NOTE_F5,4, NOTE_F5,8, NOTE_F5,-8, NOTE_E5,-8, NOTE_D5,-8,
NOTE_C5,8, NOTE_E4,4, NOTE_E4,8, NOTE_C4,2,
//game over sound
NOTE_C5,-4, NOTE_G4,-4, NOTE_E4,4, //45
NOTE_A4,-8, NOTE_B4,-8, NOTE_A4,-8, NOTE_GS4,-8, NOTE_AS4,-8, NOTE_GS4,-8,
NOTE_G4,8, NOTE_D4,8, NOTE_E4,-2,
};
// sizeof gives the number of bytes, each int value is composed of two bytes (16 bits)
// there are two values per note (pitch and duration), so for each note there are four bytes
int notes = sizeof(melody) / sizeof(melody[0]) / 2;
// this calculates the duration of a whole note in ms
int wholenote = (60000 * 4) / tempo;
int divider = 0, noteDuration = 0;
void setup() {
// iterate over the notes of the melody.
// Remember, the array is twice the number of notes (notes + durations)
for (int thisNote = 0; thisNote < notes * 2; thisNote = thisNote + 2) {
// calculates the duration of each note
divider = melody[thisNote + 1];
if (divider > 0) {
// regular note, just proceed
noteDuration = (wholenote) / divider;
} else if (divider < 0) {
// dotted notes are represented with negative durations!!
noteDuration = (wholenote) / abs(divider);
noteDuration *= 1.5; // increases the duration in half for dotted notes
}
// we only play the note for 90% of the duration, leaving 10% as a pause
tone(buzzer, melody[thisNote], noteDuration * 0.9);
// Wait for the specief duration before playing the next note.
delay(noteDuration);
// stop the waveform generation before the next note.
noTone(buzzer);
}
}
void loop() {
// no need to repeat the melody.
}


阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载