在这篇文章中我们学习了如何通过Arduino产生正弦波脉宽调制或SPWM,可以用来制作一个纯正弦波逆变电路或类似的小配件。
的Arduino代码是由我开发的,这是我的第一个Arduino代码,…看起来很不错
什么是变频调速
我已经解释过了如何使用opamps生成SPWM在我之前的一篇文章中,您可以浏览它,了解如何使用离散组件创建它,以及它的重要性。
SPWM是正弦波脉冲宽度调制,基本上是一种脉冲调制,将脉冲调制成模拟正弦波的波形,使调制能够达到纯正弦波的特性。
为了实现SPWM,对脉冲进行调制,初始宽度较窄,在周期中心逐渐变宽,最后在周期结束时变窄。
更准确地说,脉冲开始时宽度最窄,随着每个后续脉冲逐渐变宽,在中心脉冲处宽度最宽,在此之后,序列继续下去,但调制方式相反,脉冲现在逐渐变窄,直到周期结束。
视频演示
这构成一个SPWM周期,并以应用程序频率(通常为50Hz或60Hz)确定的特定速率重复整个周期。通常,SPWM用于驱动逆变器或变换器中的功率器件,如mosfet或bject。
这种特殊的调制模式确保频率周期以逐渐变化的平均电压值(也称为RMS值)执行,而不是像通常在平坦的方波周期中看到的那样突然出现高/低电压峰值。
在SPWM中,这种逐渐修改PWM的方法是有目的的,这样它就可以密切地复制标准正弦波或正弦波的指数上升/下降模式,因此它被称为正弦波PWM或SPWM。
使用Arduino生成SPWM
上面解释的SPWM可以很容易地使用几个离散部分来实现,也可以使用Arduino,这可能会让你获得更准确的波形周期。
下面的Arduino代码可用于为给定的应用程序实现预期的SPWM。
天哪!!这看起来太大了,如果你知道如何缩短它,你当然可以在你的末端随意做。
//通过Swagatam(我的第一个Arduino代码)
无效的设置(){
pinMode(8、输出);
pinMode(9、输出);
}
无效循环(){
digitalWrite(8、高);
延迟微秒(500);
digitalWrite(8、低);
延迟微秒(500);
digitalWrite(8、高);
delayMicroseconds (750);
digitalWrite(8、低);
延迟微秒(500);
digitalWrite(8、高);
delayMicroseconds (1250);
digitalWrite(8、低);
延迟微秒(500);
digitalWrite(8、高);
delayMicroseconds (2000);
digitalWrite(8、低);
延迟微秒(500);
digitalWrite(8、高);
delayMicroseconds (1250);
digitalWrite(8、低);
延迟微秒(500);
digitalWrite(8、高);
delayMicroseconds (750);
digitalWrite(8、低);
延迟微秒(500);
digitalWrite(8、高);
延迟微秒(500);
digitalWrite(8、低);
/ /……
数字写入(9,高);
延迟微秒(500);
digitalWrite(9、低);
延迟微秒(500);
数字写入(9,高);
delayMicroseconds (750);
digitalWrite(9、低);
延迟微秒(500);
数字写入(9,高);
delayMicroseconds (1250);
digitalWrite(9、低);
延迟微秒(500);
数字写入(9,高);
delayMicroseconds (2000);
digitalWrite(9、低);
延迟微秒(500);
数字写入(9,高);
delayMicroseconds (1250);
digitalWrite(9、低);
延迟微秒(500);
数字写入(9,高);
delayMicroseconds (750);
digitalWrite(9、低);
延迟微秒(500);
数字写入(9,高);
延迟微秒(500);
digitalWrite(9、低);
}
//-------------------------------------//
在下一篇文章中,我将解释如何使用上面的基于Arduino的SPWM生成器做一个纯正弦波逆变电路....继续阅读!
Atton先生对上述SPWM代码进行了进一步改进,以提高其性能,具体如下:
/*
此代码基于Swagatam SPWM代码,并进行了更改以删除错误。像使用其他Swagatam作品一样使用这段代码。
阿东风险2017
*/
const int spwarray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500};//这是带有SPWM值的数组,可以随意更改
const int sPWMArrayValues = 13;//你需要这个,因为C没有给你数组的长度
//别针
常数int sPWMpin1=10;
const int sPWMpin2 = 9;
//引脚开关
bool sPWMpin1Status = true;
bool sPWMpin2Status=true;
无效设置()
{
pinMode (sPWMpin1、输出);
引脚模式(sPWMpin2,输出);
}
无效循环()
{
//为引脚1循环
for (int i (0);我! = sPWMArrayValues;我+ +)
{
如果(sPWMpin1Status)
{
digitalWrite (sPWMpin1、高);
delayMicroseconds (sPWMArray[我]);
sPWMpin1Status=false;
}
其他的
{
数字写入(sPWMpin1,低电平);
delayMicroseconds (sPWMArray[我]);
sPWMpin1Status = true;
}
}
//为引脚2循环
for (int i (0);我! = sPWMArrayValues;我+ +)
{
如果(sPWMpin2Status)
{
数字写入(sPWMpin2,高);
delayMicroseconds (sPWMArray[我]);
sPWMpin2Status = false;
}
其他的
{
digitalWrite (sPWMpin2、低);
delayMicroseconds (sPWMArray[我]);
sPWMpin2Status=true;
}
}
}
你好,同上。Swagatam !
我真的很欣赏这篇文章。但是我有一个关于软启动功能的问题。
是否有可用的代码来实现软启动功能,以控制SPWM的准时切换?
请我将非常高兴,如果这可以包括在代码。
谢谢你!
谢谢你,金斯利,我真的希望我能帮上忙,但是我对如何在PWMs上实施软启动不太清楚。我想你可以把这个问题带到Arduino.cc论坛,向他们寻求解决方案…。他们可能会帮助你!
Swagatam先生你好,
这是不是可以应用您的代码为3相SPWM与小的变化?我的意思是,通过在代码中添加新的pwm引脚,比如引脚11、引脚6、引脚5和引脚3。因此,三相SPWM逆变器有6个sPWMpin。可能吗?我发现一篇文章提到Arduino Uno无法生成6 pwm信号,因为一个引脚用于中断。
Hi Fitrah,如果你用适当的120度分离生成它们,那么它将工作,但我不确定究竟哪个Arduino板能够实现这一点。
谢谢你的回复,Swagatam先生。
那么关于120度相移,有一篇文章提到,要得到120度相移,第二个信号必须在第一个信号之后6.66 ms开始,第三个信号必须在第二个信号之后6.66 ms开始。那么,我应该在代码中加入一些延迟吗?或者你能告诉我更好的方法吗?
致以最良好的祝愿。
是的,这是对的,但是我不记得3相波的频率延迟的计算,如果你确定你可以尝试实现提到的延迟量,并检查响应。
谢谢你,斯瓦塔姆先生。
我感谢你的帮助,非常感谢。我试试这个方法。很快,我将通过注释发布代码,以确保程序正确与否,这样您或读者就可以将其改进为更好的代码。
欢迎你,菲特拉!
嗨,斯瓦格。
我只是想把你的代码上传到我的arduino UNO上。在液晶屏上,我只能看到全黑的数字。这个代码是正确的还是需要修改?
的问候。
嗨,Paaker,本网站发布的所有Arduino代码都是完美且经过测试的…但是,由于上述电路的作者目前没有关联,所以我很难解决您的问题…但是您可以在任何在线Arduino论坛上提出此问题…他们可能会帮助您解决此问题…。
谢谢赃物。
压实代码:
/*此代码基于Swagatam SPWM代码,并进行了更改以删除错误。像使用其他Swagatam作品一样使用这段代码。
Atton Risk 2017 + Yves。Hacha @ tresco。Eu, 22/6/2018:更紧凑的代码*/
//从下面的SPWM表中选择一个:
const int spwarray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500};//这是具有50Hz SPWM值的数组;随意更改
// const int sPWMArray[] = {416,416,625,416,1041,416,1666,416,1041,416,625,416,416,7};//使用该表获取60Hz
// const int sPWMArray[] = {124,464,245,349,359,244,463,153,552,80,630,29,1880,29,630, 80,552,153,463,244,349,245,464,124,586};//更详细的50Hz SPWM
const int sPWMArrayValues=sizeof(sPWMArray)/sizeof(sPWMArray[0]);
//别针
常数int sPWMpin1=10;
const int sPWMpin2 = 9;
无效设置()
{
pinMode (sPWMpin1、输出);
引脚模式(sPWMpin2,输出);
}
无效循环(){
{
const int pinArray[] = {sPWMpin1,sPWMpin2};
用于(int引脚(0);引脚<2;引脚++)
{
bool sPWMpinStatus=true;
for(int i(0);i
digitalWrite (pinArray(销),(sPWMpinStatus) ?高:低);
delayMicroseconds (sPWMArray[我]);
sPWMpinStatus = ! sPWMpinStatus;
}
digitalWrite (pinArray(销)、低);
}
}
谢谢Yves,如果您能告诉我们您在代码中删除的错误,我将非常感激。
1.提供3个单独的桌子可供选择
2.自动获得正确的PWM表大小
3.重用前半正弦波循环代码也为后半正弦波循环
4.确保每个输出引脚在另一个引脚“脉冲”期间保持低电平
(很抱歉,粘贴时代码的缩进丢失了…)
好的,非常感谢!缩进问题会导致编译错误吗?
不,一点也不!
好了好了!
使用
const int sPWMArrayValues = sizeof(sPWMArray)/sizeof(sPWMArray[0])
来自动获取表大小,而不是
const int sPWMArrayValues = 13;//你需要这个,因为C没有给你数组的长度
谢谢你的建议,Yves,非常感谢!
你好先生,
im使用14V直流电源。通过使用您的代码,是否可以获得230V或240V?
Hi Uthaya,您可以根据变压器规格获得任何所需的输出电压,这里必须通过计算Arduino的接通时间来选择一次电源,检查Arduino每个通道的高输出和低输出比率,将代码中的高输出+低输出总数除以高输出数,现在将蓄电池电压与此结果分开,以获得变压器初级电压规格。
先生,我在H桥使用你的代码,mosfet irf520。我的出场率很低。如何解决?
请提供所有的细节,原理图,变压器额定值,电池规格等
电路采用H桥式设计,采用4场效应晶体管。Mosfet模型为irf520。变压器12/240V 3。输入14 v直流。目前输入来自直流电源而不是电池。
在连接到变压器之前,我只得到大约5V的输出。
能给我你的邮箱吗?所以我可以把电路图和一些细节发给你
嗨,你可以制作可以改变频率(0 - 50Hz),移位,三角波,调制的代码吗?谢谢
您好,获得定制代码目前是一个溢价优惠,您可能需要为此付费。
是的,我认为每个波形周期上的阵列计数应该是偶数。
我对此有了更多的想法,现在我觉得在波形的两个半部分之间应该有一个轻微的延迟,所以我建议如下:
sPWMArray [] = {496500750500, 1250, 500, 2000, 500, 1250, 500750500496, 8}
如你所见,我已经将开始和结束ON时间减少了4uS,以提供8uS的保护频带,这样就不会有两个晶体管同时ON的机会。
当我已经建立了完整的逆变器,我将进一步试验的延迟,以优化正弦波的形状。
顺便说一句,如果需要60Hz版本,缩放数字可得出以下结果:
sPWMArray [] = {416416625416, 1041, 416, 1666, 416, 1041, 416625416416, 7}
好的,这是有道理的,我确实感谢你的修改和投入。
然而,根据我的数字阵列形成的“PWM柱”跨越交流周期波形,实际上不会影响正弦波的结果,如果他们的任何其他不利影响,那么我不确定它。
至于“死时间”,您将看到每个通道上的代码以“low”结尾,精确地表示为:digitalWrite(8, low)
因此,“低”确保在转换期间两个设备都完全关闭,尽管该值上的延迟可能会增加到更高的水平,以确保更好的死时间延迟…这是我在设计代码时所假设的,不确定这在实际实现期间是否有效
建立了一个低功率版本的逆变器,我发现它是困难的滤波器的交流输出。所以在进行了更多的研究之后,我想出了一个使用更多脉冲的版本(在上面的草图中使用):
const int sPWMArray[]={124464245349359244463153552,80630,291880,29630,80552153432445349245464124586};//这是具有SPWM值的数组
const int sPWMArrayValues = 26;//你需要这个,因为C没有给你数组的长度
您会注意到,这会改变延迟以及脉冲宽度。还要注意,在序列结束时的延迟要长得多,以便在极性切换时提供较长的关闭时间。该序列是使用唐·兰卡斯特大师的巢穴魔法正弦波库得出的:
我目前在变压器输出上使用一个系列100uH电感和一个1uF X2电容。这有帮助,但我认为它需要一个更大的电感,所以我订购了一个560uH。
非常感谢你,安迪,我感谢你的研究,希望其他读者会发现这是有用的,请保持我们的最新进展,因为你进一步与这个项目
非常感谢您的时间和工作!伟大的工作
不客气!
斯瓦加塔姆,谢谢你在这个项目上的工作。本页顶部的代码生成正确的波形;而下面的“增强性能”版本则没有。不幸的是,我对Arduino编码不够精通,无法了解如何修复它。但由于您不太优雅的解决方案占用的空间太小,我很乐意使用它。
通过实验,我发现通过在sPWMArray的末尾添加一个0,并将sPWMArrayValues更改为14,代码可以正常工作。我怀疑问题是每个循环都增加2 (1 HIGH, 1 LOW),所以数组中有一个奇数会导致它不同步。
谢谢你安迪,我很高兴能帮上忙!
你能再解释一下关于“奇数”的问题吗?你的意思是说每个波形周期的数组计数应该是一个理想的偶数吗?
感谢您访问我的网站,并对我们大家有所启发。
干得好一个斯瓦盖特,你已经正式进入我的前5名911工程名单,我感谢你在这个博客上的辛勤工作。
我有两个问题:
1.电路是否会持续提供稳压的VAC输出?
2.我怎样才能更好地携带风扇之类的东西?
再次感谢
谢谢Miebaka,我很高兴你喜欢我的网站!
由于Arduino的PWM延迟是恒定的,或者可以根据用户偏好和变压器绕组额定值进行调整,因此输出可以非常精确,并且不需要外部调节器来固定RMS。
至于风扇操作,在trafo输出端正确计算的滤波电路足以让您有效操作电感负载。
只有开关频率为30KHz。但主要输出为60Hz。因为我的电器需要。我现在正在使用arduino UNO生成的SPWM。
每个波形上不应该有超过4到6个柱子,就像在我的SPWM中实现的那样,我想你正在使用一些其他的代码,而不是上面的那个。
是的,我有不同的密码。我正在使用中断。由于arduino循环功能非常慢。因为它在翻译代码时执行了其他代码。它会影响循环中的代码,比如速度。
好的,但是确保每个波形上的支柱不超过6,但是不管怎样,你的问题是与电流(安培)有关而不是波形。
我从未尝试过大电流h桥。,也许我会尝试建立一个大电流h桥,以便我可以检查输出,如果它是良好的。,将在我构建后更新。谢谢你的帮助。
当然!我的荣幸!
嗨swatagam。你能检查一下我的h桥电路吗?我不认为ir2110能驱动每英寸3 mosfet。
https://www.dropbox.com/s/zln57f64dleta7h/fsdf.png?dl=0
你好,Isak,我看起来不错,为什么你认为它不能驱动3或更多平行mosfet ?
mosfet有高的栅极阻抗,所以电流对它们的栅极来说从来都不是问题。
所以一个驱动器可以驱动超过3个mosfet ?
我是否为引导电容器选择了正确的值?
是的,你可以,在我看来!但首先验证结果与单一对,如果它工作良好,然后继续并行连接。您可以检查数据表中的上限值,并按照那里提供的说明使用它。
: 100000000 c946c000c9494000c9494000c94940048
: 100010000 c9494000c9494000c9494000c94940010
:1000020000C9494000C94000C94000C94000C94000C94940000
: 100030000 c9494000c94ee030c9494000c94940093
: 100040000 c94a4030c9494000c9472030c944c0331
: 100050000 c9494000c9494000c9494000c949400d0
: 100060000 c9494000c94940005a84ccdb2d44eb9d5
:1000070003836A9020C50B9918688083CA6AAAA2A4B
:100008000BE000000803F00000008000201000003E5
: 100090000407000000000000000000000000250030
: 1000 a00028002b0000000000240027002a00040480
: 1000 b0000404040404040202020202020303030310
: 1000 c00003030102040810204080010204081020ec
: 1000 d000010204081020b50411241fbecfefd8e0a0
: 1000 e000debfcdbf11e0a0e0b1e0e0e4f2e102c08c
: 1000 f00005900d92a033b107d9f726e0a0e3b1e057
:1001000001C01D92A630B207E1F710E0CCE6D0E0C6
:1001100004C02197FE010E941309CB36D107C9F70D
: 100120000 e9401050c941e090c94000090e0fc0153
: 10013000 ee53ff4f2491fc01e255ff4f8491882339
:1001400099F090E0880F991FFC01EC55FF4FA591A5
: 10015000 b491fc01e656ff4f859194918fb7f894c6
: 10016000 ec91e22bec938fbf0895cf92df92ef9248
: 10017000 ff920f931f93cf93df936c017a018b0152
:10018000E0D0E0CE15DF0589F0D8016D918D017A
:10019000D601ED91FC910190F081E02DC60199509
: 1001 a000892b11f47e0102c02196eccfc701df91ab
:1001B000CF911F910F91FF90EF90DF90CF90089516
:1001C000FC01538D448D252F30E0842F90E0821B5D
: 1001 d000930b541710f0cf96089501970895fc01e2
:1001E000918D828D981761F0828DDF01A80FB11D6E
: 1001 f0005d968c91928d9f5f9f73928f90e0089592
:1002000008FEF9FEF0895FC01918D828D981731F04B
: 10021000828 de80ff11d858d90e008958fef9fef9f
: 100220000895 fc01918d228d892f90e0805c9f4f75
: 10023000821 b91098f739927089581e595e00e94ab
: 10024000110121 e0892b09f420e0822f0895fc019f
: 10025000848 ddf01a80fb11da35abf4f2c91848d4f
: 1002600090 e001968f739927848fa689b7892c9384
: 10027000 a089b1898c9180648c93938d848d98131f
: 1002800006 c00288f389e02d80818f7d80830895e8
: 10029000 ef92ff920f931f93cf93df93ec0181e0d6
: 1002 a000888f9b8d8c8d981305c0e889f989808192
: 1002 b00085fd24c0f62e0b8d10e00f5f1f4f0f73ce
: 1002 c0001127e02e8c8de8120cc00fb607fcfacf78
: 1002 d000e889f989808185fff5cfce010e94270149
:1002E000F1CF8B8DFE01E80FF11DE35AFF4FF08235
: 1002 f0000b8fea89fb898081806207c0ee89ff89c4
: 100300006083 e889f98980818064808381e090e05e
:10031000DF91CF911F910F91FF90EF900895CF93B0
:10032000DF93EC01888D8823C9F0EA89FB898081FD
: 1003300085 fd05c0a889b9898c9186fd0fc00fb6cf
:1003400007FCF5CF808185FFF2CFA889B9898C9110
: 1003500085 ffedcfce010e942701e7cfdf91cf913e
:10036000089580E090E0892B29F00E941D01811101
: 100370000 c940000089590e0fc01ea57ff4f34917f
: 10038000 fc01ee53ff4f2491fc01e255ff4fe49135
: 10039000 ee2309f43bc0332339f1333091f038f4c4
:1003A00003130A9F0323001F584B58F7D12C037307D
:1003B00091F003830A1F03430B9F4809180008F7D15
: 1003 c00003c0809180008f77809380000dc084b53a
: 1003 d0008f7784bd09c08091b0008f7703c0809172
:1003E000B0008F7D8093B000F0E0EE0FFF1FE65667
: 1003 f000ff4fa591b4918fb7f894ec91611103c0b0
: 1004000020952 e2301c02e2b2c938fbf0895cf93c0
: 10041000 df93ec0160e08e810e94bb0161e08e8180
: 100420000 e94bb0160e08e810e94bb018be891e0dd
: 100430000197 f1f7df91cf910895cf92df92ef927c
: 10044000 ff920f931f93cf93df937c016c0187e0a2
:10045000C80ED11CC0E0D0E0062F10E0B8010C2E71
:1004600002C0759567950A94E2F76170F601819173
: 100470006 f010e94bb012196c430d10579f7c701f5
:10048000DF91CF911F910F91FF90EF90DF90CF9070
: 100490000 c940702cf92df92ef92ff920f931f937b
:1004A000CF93DF93EC01F62E642F8C810E94BB0169
: 1004 b0008d818f3f19f060e00e94bb018f850f2d69
: 1004 c00010e084ff25c06e0187e0c80ed11ce12c2e
: 1004 d000f12cb8010e2c02c0759567950a94e2f7cd
:1004E0006170F60181916F010E94BB01FFEFF1A6D
: 1004 f000ff0a88e0e816f10461f7ce01df91cf91a1
: 100500001 f910f91ff90ef90df90cf900c94070216
: 10051000 b80184e0759567958a95e1f7ce010e9450
:100520001D026F2DCE01DF91CF911F910F91FF9092
:10053000EF90DF90CF900C941D0241E00E944A02A00
: 1005400081 e090e0089540e00c944a02ef92ff921f
:100550000F931F93CF93DF93EC01423018F08F85F8
: 1005600088608 f874b8b1c8a80e48d8b6e8b70e04c
: 10057000605 c7f4f6f8b8c810e9496008d818f3fd6
: 1005800011 f00e9496008e810e9496007e0187e005
: 10059000 e80ef11c00e010e08f8584fd03c084e0cc
: 1005 a00090e002c088e090e00817190744f4f701d2
: 1005 b00081917f010e9496000f5f1f4fedcf8be36b
: 1005 c0009de00197f1f760e08c810e94bb0160e043
: 1005 d0008e810e94bb018d818f3f19f060e00e94e7
: 1005 e000bb016f8564fd1dc063e0ce010e941d024a
: 1005 f0000be416e4c8010197f1f763e0ce010e9415
: 100600001 d02c8010197f1f763e0ce010e941d02af
: 1006100083 e592e00197f1f762e0ce010e941d02ae
:10062000016C06062CE010E94A3028BE496E401979B
: 10063000 f1f76f856062ce010e94a30283e592e02c
:100640000197F1F76F856062CE010E94A3026F856A
:100650006062CE010E94A30284E0888B6CE0CE0130
:100660000E94A30261E0CE010E94A3028BE39FE1FE
: 100670000197 f1f782e0898b66e0ce01df91cf919f
: 100680001 f910f91ff90ef900c94a302089580e0ca
:100690090E008950E9419091F920F920FB60F92D1
: 1006 a00011242f933f934f935f936f937f938f9377
: 1006 b0009f93af93bf93ef93ff9381e595e00e94e3
: 1006 c0002701ff91ef91bf91af919f918f917f9102
: 1006 d0006f915f914f913f912f910f900fbe0f90af
: 1006 e0001f9018951f920f920fb60f9211242f93ff
:1006F0008F939F93EF93FF93E0916105F0916205D3
: 100700008081 e0916705f091680582fd12c09081bb
: 1007100080916 a058f5f8f7320916b05821751f06e
:10072000E0916A05F0E0EF5AFA4F958F80936A05E1
: 1007300001 c08081ff91ef919f918f912f910f9038
: 100740000 fbe0f901f9018951f920f920fb60f9229
:1007500011242F933F938F939F93AF93BF938091D7
: 100760004 d0590914e05a0914f05b09150053091e7
: 100770003 e0123e0230f2d3720f40196a11db11d6a
:100780005C026E8230F0296A11DB11D20933E014E
:1007900080934D0590934E05A0934F05B095055F
: 1007 a00080913a0190913b01a0913c01b0913d01b3
: 1007 b0000196a11db11d80933a0190933b01a09336
: 1007 c0003c01b0933d01bf91af919f918f913f91bb
: 1007 d0002f910f900fbe0f901f9018951f920f92a0
: 1007 e0000fb60f921124cf92df92ef92ff922f93c8
: 1007 f0003f934f935f936f937f938f939f93af93a9
: 10080000 bf93ef93ff93409143055091440560914e
: 100810004505709146058091360190913701 a09170
: 100820003801 b0913901840f951fa61fb71f80931f
: 10083000360190933701 a0933801b093390120918c
:100840003501213059F4909010180EA8927809383
: 10085000020180938000109235012 ac0409131013d
: 10086000509132016091330170913401442777 fd3a
: 1008700043955527662777276 c017d01cc24f7fc2b
: 10088000 c394dd24ee24ff24c416d506e606f7063d
: 1008900079 f0b7fd0dc02f5f2093350161e08091a5
:1008A0003001811160E0609330018DE00E94BB0156
:1008B0008091360190913701A0913801B09113901B2
:1008C0008093310190933201A0933301B0933401AE
: 1008 d00027e1b695a795979587952a95d1f7880f23
: 1008 e000991ffc01e15cfe4fa081b18120913f0581
:1008F0003091400540914105509142050E94A1066A
: 100900009 b01ac016ce055954795379527956a9505
: 10091000 d1f7a0910001b09101010e94ac06dc0169
:10092000CB017AE0B595A7959799587957A95D1F7FC
: 1009300090938 b0080938a00909389008093880025
: 10094000 ff91ef91bf91af919f918f917f916f91a7
: 100950005 f914f913f912f91ff90ef90df90cf905b
: 100960000 f900fbe0f901f901895e1e5f5e01382f0
: 10097000128288 ee93e0a0e0b0e084839583a683a2
: 10098000 b78387e091e09183808385ec90e0958741
: 10099000848784 ec90e09787868780ec90e0918b49
: 1009 a000808b81ec90e0938b828b82ec90e0958b36
:1009B000848B86EC90E0978B868B118E128E138E33
:1009C000148EEEEEF5E013821289E191E09183BC
: 1009 d000808387e084838fef858386e0868385e04c
: 1009 e000878384e0808783e0818782e08287138623
: 1009 f000148615861686178641e060e1cf010c94b7
: 100 a0000a602cf93df93cdb7deb7a1970fb6f894c8
:100A1000DEBF0FBECDBF789484B582084BD84B53F
:100A2000816084BD85B582085BD85B581685B581685BD9
: 100 a300080916e00816080936e00109281008091a1
: 100 a40008100826080938100809181008160809329
:100A50008100809180008160809380008091B1004E
: 100 a600084608093b1008091b00081608093b00079
: 100 a700080917a00846080937a0080917a0082600d
: 100 a800080937a0080917a00816080937a008091cf
: 100 a90007a00806880937a001092c100e09161052d
:100AA000F091620592E09083E0915D05F0915E0522
: 100 ab0001082e0915f05f09160058fec80831092c9
:100AC0006905E0916505F091660586E08083E09117
: 100 ad0006305f0916405808180618083e091630506
: 100 ae000f0916405808188608083e0916305f091d6
:100AF0006405808180688083E0916305F0916405DE
:100B000080818F7D8083F894909380005FE3C52E71
:100B100051E0D52E00E010E0B801012E000C880B4A
: 100 b2000990b0e948a072bed3fe049e450e40e94b4
: 100 b3000160820e030e040e05be30e9416080e94c7
: 100 b4000830820e030e040e855e40e94160820e0e9
: 100 b500030e040e05fe30e94e6060e945207f601a3
:100B6000619371936F010F5F1F4F0115F2E01F0733
:100B700099F6809018093800078948CE390E054
: 100 b800090934c0580934b05609147057091480503
:100B9000809149050914A050E9459079B01AC013B
: 100 ba000ace3b0e00e94a106609343057093440556
:100BB00080934505909360580E094E09093010171
: 100 bc00080930001809102018093800089e18093ed
: 100 bd000810081e080936f008091b100887f816007
:100BE0008093B100789486E084B98DE00E949600ED
: 100 bf00044e064e18eee95e00e94a6024de050e0f4
:100C000061E271E08EEE95E00E94B50081E9282E48
: 100 c100080e0382e94e6c92ed12c24e6f22e38ee50
: 100 c2000432e33e0532e612c712c4ae0842e912cfc
: 100 c3000a12cb12c8be00e949600f10184918330ad
:100C4000F9F048F48130B9F08230A1F584B58062C2
: 100 c500084bdf8bc33c08730e9f0883019f18430a6
: 100 c600049f580918000806280938000d0928b0053
:100C7000C0928A0023C084B5806884BDF7BC1EC0C2
:100C80008091800080688093800D0928900C0921B
: 100 c9000880014c08091b00080688093b000f0920a
:100CA000B3000CC08091B00080628093B000F092DD
: 100 cb000b40004c060e08be00e94bb01e09101063b
: 100 cc000e23010f4e15001c0e1e0f0e0e251fa4f0f
: 100 cd000648960688eee95e00e94a3022fb7f894b5
:100CE00060914D0570914E0580914F059091500592
: 100 cf0002fbfa30192010e94b40619a28e010f5dbd
: 100 d00001f4fca01b901a50194010e94b406605d9c
:100D1000F80162938F01211531054105510589F7CD
: 100 d2000309761f001900020e9f73197af01401b47
: 100 d3000510bb8018eee95e00e94b5000e94b10102
:100D400079CF0E94D606A59F900DB49F900DA49FC9
: 100 d5000800d911d11240895b7ff0c94a1060e94e7
: 100 d6000a106821b930b0895a1e21a2eaa1bbb1b9e
: 100 d7000fd010dc0aa1fbb1fee1fff1fa217b30767
: 100 d8000e407f50720f0a21bb30be40bf50b661f7d
: 100 d9000771f881f991f1a9469f760957095809541
: 100 da00090959b01ac01bd01cf010895a29fb001b8
: 100 db000b39fc001a39f700d811d1124911db29f8f
: 100 dc000700d811d1124911d08955058bb27aa272d
: 100 dd0000e94fd060c94dc070e94ce0738f00e94aa
: 100 de000d50720f039f49f3f19f426f40c94cb0773
:100DF0000EF4E095E7FB0C94C507E92F0E94ED0780
: 100 e000058f3ba17620773078407950720f079f43f
: 100 e1000a6f50c940f080ef4e0950b2eba2fa02d1a
: 100 e20000b01b90190010c01ca01a0011124ff2797
: 100 e3000591b99f0593f50f4503e68f11a16f04092
: 100 e4000a22f232f342f4427585ff3cf4695379591
:100E50002795A795F0405395C9F77EF41F16BA0B56
:100E6000620B730B840BBAF09150A1F0FF0FBB1F04
:100E7000661F771F881FC2F70EC0BA0F621F731F4D
: 100 e8000841f48f4879577956795b795f7959e3faa
: 100 e900008f0b0cf9395880f08f09927ee0f97953b
: 100 ea000879508950e9459076894b1110c94100811
: 100 eb00008950e94f50788f09f5798f0b92f992759
: 100 ec000b751b0f0e1f0660f771f881f991f1af035
: 100 ed000ba95c9f714c0b13091f00e940f08b1e083
:100EE00008950C940F08672F782F2F8827B85F39F082
: 100 ef000b93fccf3869577956795b395d9f73ef4ce
: 100 f000090958095709561957f4f8f4f9f4f089575
: 100 f1000e89409c097fb3ef4909580957095619593
:100F20007F4F8F4F9F4F9923A9F0F92F96E9BB2749
: 100 f30009395f695879577956795b795f111f8cfc5
: 100 f4000faf4bb0f11f460ff1bc06f5f7f4f8f4f30
:100F50009F4F16C0882311F096E911C0772321F026
:100F60009EE8872F762F005C0662371F096E8862FBE
: 100 f700070e060e02af09a95660f771f881fdaf715
: 100 f8000880f9695879597f9089597f99f6780e858
:100F900070E060E008959FEF80EC089500240A94CB
:100FA0001616170618060906089500240A94121644
: 100 fb0001306140605060895092e0394000c11f477
: 100 fc000882352f0bb0f40f4bf2b11f460ff04c024
: 100 fd0006f5f7f4f8f4f9f4f089557fd9058440f7d
: 100 fe000551f59f05f3f71f04795880f97fb991f88
:100FF00061F09F3F79F08795089512161306140645
:1010000551FF2CF4695F1DF08C0161617061806D1
: 10101000991 ff1cf86957105610508940895e894ac
: 10102000 bb2766277727cb0197f908950e942908e7
: 101030000 c94dc070e94ce0738f00e94d50720f000
: 10104000952311 f00c94c5070c94cb0711240c9434
: 1010500010080 e94ed0770f3959fc1f3950f50e0c3
: 10106000551 f629ff001729fbb27f00db11d639f5a
: 10107000 aa27f00db11daa1f649f6627b00da11d00
: 10108000661 f829f2227b00da11d621f739fb00da6
:10109000A11D621F839FA00D611D221F749F332716
: 1010 a000a00d611d231f849f600d211d822f762faf
: 1010 b0006a2f11249f5750409af0f1f088234af08c
:1010C000EE0FFF1FBB1F661F771F881F91505040F8
: 1010 d000a9f79e3f510580f00c94c5070c941008a9
: 1010 e0005f3fe4f3983ed4f3869577956795b7957f
: 1010 f000f795e7959f5fc1f7fe2b880f911d969599
:10110000879597F908959F930E948D080F9007FC8B
: 10111000 ee5f0c94b6080c94cb070e94f507d8f349
: 10112000 e894e0e0bb279f57f0f02aed3fe049ec60
: 1011300006 c0ee0fbb0f661f771f881f28f0b23a5c
: 1011400062077307840728 f0b25a620b730b840b93
:10115000E3959A9572F7803830F49A95BB0F661F25
: 10116000771 f881fd2f790480c94cc08ef93e0ffcc
: 1011700007 c0a2ea2aed3fe049ec5feb0e94fd06c2
: 101180000 e94dc070f90039401fc9058e8e6f0e021
: 101190000 c94d8089f3f31f0915020f487957795b3
:1011A0006795B795880F911D9695879597F908953E
: 1011 b0009f938f937f936f93ff93ef939b01ac016a
:1011C0000E941608EF91FF910E94EC082F913F9129
:1011D0004F915F910C941608DF93CF931F930F9359
: 1011 e000ff92ef92df927b018c01689406c0da2ea9
: 1011 f000ef010e942908fe01e894a59125913591ff
: 1012000045915591 a6f3ef010e94fd06fe0197015d
:10121000A801DA9469F7DF90EF90FF900F911F918A
:10122000CF91DF910895EE0FFF1F0590F491E02D0F
:10123000099481E090E0F8940C941E09F894FFCF93
: 10124000000482000000004801 b500e0008f011199
: 1012500001 ef000301000000009d02b500470346b6
:101260000368656C6C6F2C20776F726C64210000D2
: 00000001 ff
高斯瓦格,你能帮我设计一个过滤器吗?
这是我的spwm,我用的是arduino uno。你能试试吗?
开关频率为31Khz
频率:60赫兹
你好,Isak,很抱歉我不擅长模拟电路,因为我的设计主要依赖于我的大脑模拟。
你好,斯瓦加姆,我试过模拟,但是。电容的值非常大,大约20uf。
怎样才能减少它?请查看我的模拟
https://www.dropbox.com/s/5s1kt37dfs92flh/simulation.png?dl=0
你好,Isak,这看起来很误导,这就是为什么我从不依赖模拟器....如果你实际地检查它,你会发现一个小得多的电容器做的工作完美,因为变压器次级本身将像一个滤波器,并在很大程度上平滑波形,即使没有电容器……
顺便说一句,您可以尝试在模拟中加载并检查效果
因为我没有示波器,所以很难判断我是否戴对了帽子。我用2.2uf试过了,它可以运行立式风扇。但速度不是很快。我认为这并不像我预期的那样平稳,因为试图以低速切换时,风扇会以非常低的速度转动。试图在网格上比较输出。这有很大的区别。
如果没有示波器,则无法验证逆变器输出,这是必须的。
风扇转速与电流和功率的关系更大,而不是波形.....请阅读这篇文章学习关于电压下降的问题
//www.addme-blog.com/2017/07/inverter-voltage-drop-issue-how-to-solve.html
我可以使用8v–230v变压器,因为我的开关频率很高。现在我将其设置为30KHz。电压降不是什么大问题。。变压器只是旧ups的一部分。我的代码可以改变振幅,以便稳定电压输出。我还可以在系统运行时更改开关频率。但主要问题是230输出的过滤器。
你的意思是说你用30kHz来驱动风扇,而不是50Hz或60Hz ?这是非常不推荐的,而且电流消耗是主要方面,检查您的电池电流,它必须满足风扇的额定消耗。
您的变压器输出必须产生与您的电网交流特性在各个方面相匹配的交流。
做了一些改变,把它放在粘贴箱,使事情容易
https://pastebin.com/1sQAi9vr
请您介绍一下这项修改将如何帮助改善PWM输出的性能,我相信读者会喜欢了解它。
// Atton Risk对Swagatam做了一些改变
const int spwarray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500};//这是带有SPWM值的数组,可以随意更改
const int sPWMArrayValues = 13;//你需要这个,因为C没有给你数组的长度
//别针
常数int sPWMpin1=8;
const int sPWMpin2 = 9;
//引脚开关
bool sPWMpin1Status = true;
bool sPWMpin2Status=true;
无效设置()
{
pinMode (sPWMpin1、输出);
引脚模式(sPWMpin2,输出);
}
无效循环()
{
//为引脚1循环
for (int i (0);我! = sPWMArrayValues;我+ +)
{
如果(sPWMpin1Status)
{
digitalWrite (sPWMpin1、高);
delayMicroseconds (sPWMArray[我]);
sPWMpin1Status=false;
}
其他的
{
数字写入(sPWMpin1,低电平);
delayMicroseconds (sPWMArray[我]);
sPWMpin1Status = true;
}
}
//为引脚2循环
for (int i (0);我! = sPWMArrayValues;我+ +)
{
如果(sPWMpin1Status)
{
digitalWrite (sPWMpin1、高);
delayMicroseconds (sPWMArray[我]);
sPWMpin1Status=false;
}
其他的
{
数字写入(sPWMpin1,低电平);
delayMicroseconds (sPWMArray[我]);
sPWMpin1Status = true;
}
}
}
非常感谢阿东,希望读者能从这些信息中受益匪浅!我非常感激!
没问题。希望我们将来能合作。
当然可以!
for (int i (0);我! = sPWMArrayValues;我+ +)
{
如果(sPWMpin1Status)
{
digitalWrite (sPWMpin1、高);
delayMicroseconds (sPWMArray[我]);
sPWMpin1Status=false;
}
其他的
{
数字写入(sPWMpin1,低电平);
delayMicroseconds (sPWMArray[我]);
sPWMpin1Status = true;
}
}
在这段代码中,我认为LOW和HIGH应该互换。
因为在正弦波开始时,我们有一个小电压。
光环先生。
我将尝试您的代码和驱动器作为纯正弦波逆变器。
如果我成功了,我可以重新发布这篇文章吗?
至少只适用于arduino代码。
谢谢你!
瑜珈。
你好,溜溜球,
你可以将详细信息提交给我,我会在上面的文章中将其与你的凭据一起发布,但是如果你将其用于自己的网站,则可能会侵犯版权…。
你好,
根据给定代码,pin8/9将以50Hz的频率交替产生SPWM脉冲。计算两个引脚之间的总延迟周期,以产生50Hz的频率
SPWM波形率(延迟)在代码中是任意设置的,您可以根据变压器的主电压额定值对其进行调整,以创建不同的RMS值。
此外,Arduino代码可以进一步升级,以响应来自变压器输出的反馈,并实现自动有效值调整
你好先生,
很高兴看到你参与arduino项目,希望你也能很快掌握这个领域
我想指出代码中的一些错误:
1) 我们不能在arduino中使用引脚13,除非我们的引脚用完,因为它总是与LED连接,这将偏离我们的结果。我们可以使用其他引脚,比如8和9。
2)不能使用小于1ms的延时,不能在延时函数中使用小数点,如delay(1.25);.而不是使用delayMicroseconds ();例如delayMicroseconds (500);500us和delayMicroseconds(1250);1.25 ms。你可以用这个函数替换所有的延迟。
上面的错误在编译时不会显示出来,但是它会影响我们的最终结果。
当做
谢谢你GR,
虽然我几乎找不到时间,但我这么做只是为了好玩…
我一定会按照您的建议尽快更正上述代码。。
我非常感谢您的帮助,我相信读者也会有机会从这次讨论中学习。
再次感谢,继续努力!