我正在设计一台需要自动点火系统的机器。这个项目使用了我为Arduino编写的电机控制脚本。
我需要根据电机负载百分比计算点火之间的延迟。
这些是当前使用的变量
//Variables
int potentiometerIn; //RAW Potentiometer data variable
int potentiometerIn2; //Used in percent calculation, Will be == to potentiometerIn, just a different operation order
int potentiometerDivper; //Variable to hold percentage calculation (first step)
int potentiometerPer; // Holds the integer percent for motor speed IE: motor at 83% speed would have this value at 83
int potentiometerDiv;
int motorPin = (); //REPLACE () with PIN NUM
int motorRly = (); //Motor Positive pin () = pin num + Motor Pin
int motorNeg = (); //Motor Negative Pin () = pin num (Likely Not Needed)
int igniteRly = (); //Ignition Control Positive Pin
int igniteNeg = (); //Ignition Control Negative Pin (Likely Not Needed)
int ignitionTime = 0; // This will be used to set the time for an electric ignition.
int ignitionCalc = (); //This should be the time in seconds, that it takes for the machine to complete a full cycle with the motor set to 50%
// This enables/disables the ignition portion
int ignitionEnabled = true; // Default = True
if (ignitionEnabled == true)
{
ignitionCalc * 1000; //Converts the seconds to a format accepted by delay
50 / ignitionCalc = potentiometerPer / ignitionTime;
}
快速总结那些不想阅读我所有评论的人(我在电机到货之前编写此代码,因此价值都未设置)
电位计Per>这是供给电机的功率百分比。
ignitionTime>该值将用于设置点火发射之间的延迟
ignitionCalc>在50%功率下1个周期的时间量(秒)。
我试图找出一种计算点火延迟的方法,关于电机当前设定的百分比。例如:
如果电机百分比为80且每个周期的时间为5,那么在100%功率下,每个周期的时间为X(在这种情况下为6.25)
我似乎无法弄清楚如何在C ++中做比例,我对该语言不熟悉,只是开始为这个项目学习它。
答案 0 :(得分:1)
好吧,因为当电机功率为80%时,你得到的每个周期的时间是5.所以忽略百分比,让我们只说当功率水平为80时,你得到每个周期的时间为5.比较简单的话只是分歧。当80除以16时,得到5.所以我们所知道的是值16将保持不变。同样,如果你取任何电机功率值,除以16,你就会得到你想要的。如果这个比率保持不变那么无论电机功率是多少都适用于所有情况。我假设比率将保持不变。
所以你可以做的是 -
float timePerCycle = potentiometerPer/16;