主题中讨论的其他器件:MSP430FR2355、 MCT8329A、、MCF8329A
工具与软件:
我想使用 RC 变送器控制速度输入。 我曾尝试过该方法、但它不会像 I2C 那样达到最大速度。 在 GUI 中、速度输入的最大频率为10Hz 至325Hz。 如何获得最大速度?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我想使用 RC 变送器控制速度输入。 我曾尝试过该方法、但它不会像 I2C 那样达到最大速度。 在 GUI 中、速度输入的最大频率为10Hz 至325Hz。 如何获得最大速度?
尊敬的 Babji:
您是否可以检查 INPUT_MAX_FREQUENCY 位字段(位30-16)寄存器"Device Config"(0xAA)的当前设置? 该位字段设置等于100%占空比的 PWM 频率、并用于确定哪个更低的 PWM 值等于什么占空比%。
此外、如果您使用高于325Hz 的频率来执行速度命令、则 PWM 频率速度范围可以调节为325Hz 至95kHz。
您还可以检查 CURRENT_DUTY (0x512)值、从而查看当前占空比%值、进而查看当前速度命令。
此致、
约书亚
尊敬的 Babji:
GUI 中没有显示 CURRENT_DUTY 选项。
没错、GUI 中未显示寄存器。 您可以将 CURRENT_DUTY 变量映射到 DACOUT 引脚上的输出、但这需要进行一些调优来使 DACOUT 正确显示变量。
能否通过设置电机频率来更改固件发出蜂鸣音(如通电、校准和错误条件)? 如果我做了任何修改、驱动程序是否出现任何错误?
是否打算修改为 EVM 提供的固件以便与 GUI 通信? 无法修改 MCT8329A 的内部算法、但可以对外部 MCU (例如 MSP430FR2355)的固件进行任何修改、这不会影响 MCT8329A 驱动电机的能力。
此致、
约书亚
你好、Joshua:
我将从飞行控制器提供 PWM 值。 因为我要用于无人机应用。
下面是 Arduino 代码。 此代码包括 ESC 校准(通常用于无人机)以及 PWM。 请在 MSP430 (包含在 MCT8329EVM 中)中进行这些修改。
//常量
const int pwmInputPin = 2;// Pin 用于读取 PWM 信号
const int pwmOutputPin = 9;//用于写入 PWM 信号的 Pin
const int maxDutyCycle = 255;// PWM 的最大值(8位)
const unsigned long readDelay = 100;//读取之间的延迟(以毫秒为单位)
int MaxValue = 1980;
int MinValue = 1050;
void setup(){
Serial.begin(9600);//开始串行通信
pinMode (pwmInputPin、input);//将 PWM 输入引脚设置为输入
pinMode (pwmOutputPin、output);//将 PWM 输出引脚设置为输出
}
void loop(){
//读取 PWM 信号持续时间
unsigned long pulseDuration = pulseIn (pwmInputPin、high);
if (pulseDuration =0){
while (1){
unsigned long pulseDuration = pulseIn (pwmInputPin、high);
serial.print ("测试:");
serial.println (pulseDuration);
if (pulseDuration >= 1980){
while (1){
unsigned long pulseDuration = pulseIn (pwmInputPin、high);
serial.print ("in:");
serial.println (pulseDuration);
if (pulseDuration > MaxValue){
MaxValue = pulseDuration;
serial.print ("maxnumber:");
serial.println (MaxValue);
}
else if (pulseDuration < MinValue){
MinValue = pulseDuration;
serial.print ("minnumber:");
serial.println (MinValue);
休息;
}
}
else if (pulseDuration > 900 && pulseDuration < 1010){
// MinValue = pulseDuration;
serial.print ("minnumber:");
serial.println (MinValue);
休息;
}
}
}
否则{
//计算 PWM 占空比百分比
float dutyCycle =(pulseDuration / 20.0)* 100.0;//假设周期为20ms
int pwmValue = map (pulseDuration、1,000,2000、0、maxDutyCycle); //将脉冲持续时间映射到 PWM 范围
//将 PWM 值写入输出引脚
analogWrite (pwmOutputPin、pwmValue);
//将占空比和输出值打印到串行监视器
serial.print ("出周期:");
serial.print (pulseDuration);
serial.print ("最大值:");
serial.print (MaxValue);
serial.print (" MinValue:");
serial.println (MinValue);
delay (readDelay);//下一次读取之前延迟
}
}
尊敬的 Sachin:
我们计划将该评估板用于无人机应用、在这些应用中、它将接收来自飞行控制器的 PWM 信号。 通常、飞行控制器的最小 PWM 值约为1050 (范围为1000至2000)、 因此电机 不会达到零速。 我们需要相应地从飞行控制器映射这些 PWM 值。
由于各个飞行控制器的最大和最小 PWM 值可能会有所不同、因此大多数电子调速器(ESC)都包含重新映射这些值的过程、然后将这些值存储在 ESC 的 EEPROM 中。 我们的目标是在 MCT8329EVM 板中集成类似的功能。
尊敬的 Babji:
如果我在这些方面有误、请纠正我的问题、这些是我的理解:
1.您正在读取从 PWM 源到 Arduino 的脉冲持续时间,然后将从 PWM 源获得的值范围映射到 Arduino 上介于1000和2000之间的值。
2.值1000对应于 Arduino 上的零占空比输出? 值2000对应于100%占空比?
3. Arduino 的输出是通过 MCT8329A 上的 SPEED 引脚给出的?
谢谢。此致、
Sachin S.
尊敬的 Babji:
我查看过过去的讨论、
如果要查找 EVM 的固件示例、可以从 TI.com 下载
关于基于 PWM 的速度控制使用可以根据占空比配置(频率可以是10Hz 至95KHz)。
我想了解为什么电机在 PWM 模式和 I2C 模式下无法以最大占空比旋转。
请确保 SPD_PWM_RANGE_SELECT 中的选择适合您提供的 PWM 频率。
谢谢、此致
Venkatadri S.
尊敬的 Venkatadri:
感谢您的响应。
牵引逆变器中的图腾柱 PFC 、 当 SPEED 引脚上的 PWM 信号保持小于 VIL 的时间超过 TEN_SB_PWM 时、使速度为零。 数据表中提到 VIL 为0.8V。 但飞行控制器的电压将为1.13V。 这就是速度不变为零的原因。
所以、我认为我们无法更改 VIL。 因此,这就是为什么我们通过 Arduino (在上面的对话)在代码中映射这些值(从飞行控制器)。 是否有任何方法可以做到这一点。 或者我们是否可以通过 MSP430更改 MCT8329EVM 中的相同代码。
尊敬的 Babji:
MCT8329和 MCF8329A 中都有一个称为"参考配置文件"的功能、我已使用 MCF832A 的最新 GUI 为您的应用提供了配置文件。 此功能主要用于我们需要自定义输出速度与输入命令的情况。
因为你的窗(1,050,2000年)、我推断你的最低占空比是5%。 我构建了一个基准配置文件、其中对于输入<5%、输出速度为零。
请在各自的字段中配置 MAX_SPEED 和以下值:
您应该获得执行方式如下所示的基准配置文件(来自 MCF GUI):
如果您观察该图、当输入占空比<5%时、输出速度为0、并逐渐以线性方式增加至100%。 请告诉我解决方案的方向是否正确、如果需要、我们可以进一步修改。
谢谢!
Sachin S.
尊敬的 Sachin:
我将在驱动器链接中附加.json 文件。 请检查并修改平滑启动。
https://drive.google.com/file/d/1L1FCXfNKZWJW69mz4b3Uujyk6heUz2wj/view?usp=sharing
嗨、sachin、
我努力想要控制住。 我将在驱动器链接中附加.json 文件。 如果可能、请检查并修改更平稳的启动。
https://drive.google.com/file/d/1TCETiNRuk70AEggEfMaWlIEoQrRRQemB/view?usp=sharing
尊敬的 Sachin:
这是.json 文件。 如果可能、请检查并修改平滑启动。
{ "signature": "oneui-register-data", "data": [ [ { "idx": 0, "id": "isd_config", "value": "0x77404C06" }, { "idx": 1, "id": "motor_startup1", "value": "0x6810620E" }, { "idx": 2, "id": "motor_startup2", "value": "0x33630200" }, { "idx": 3, "id": "closed_loop1", "value": "0x29247200" }, { "idx": 4, "id": "closed_loop2", "value": "0x0FA1A40D" }, { "idx": 5, "id": "closed_loop3", "value": "0x34C92005" }, { "idx": 6, "id": "closed_loop4", "value": "0x001AC953" }, { "idx": 7, "id": "const_speed", "value": "0x30010000" }, { "idx": 8, "id": "const_pwr", "value": "0x20D00640" }, { "idx": 9, "id": "150_deg_two_ph_profile", "value": "0x24DB7200" }, { "idx": 10, "id": "150_deg_three_ph_profile", "value": "0x48DB6946" }, { "idx": 11, "id": "ref_profiles1", "value": "0x21E18328" }, { "idx": 12, "id": "ref_profiles2", "value": "0x46586A3C" }, { "idx": 13, "id": "ref_profiles3", "value": "0x1FBFFF58" }, { "idx": 14, "id": "ref_profiles4", "value": "0x000D1E2C" }, { "idx": 15, "id": "ref_profiles5", "value": "0x1F67F1F8" }, { "idx": 16, "id": "ref_profiles6", "value": "0x007FFFC2" } ], [ { "idx": 0, "id": "algo_ctrl1", "value": "0x00000000" }, { "idx": 1, "id": "device_ctrl", "value": "0x00008000" } ], [ { "idx": 0, "id": "ana_trim3", "value": "0x48004800" }, { "idx": 1, "id": "ana_trim4", "value": "0xC00000000" }, { "idx": 2, "id": "ana_trim5", "value": "0x0000000C" }, { "idx": 3, "id": "ana_trim6", "value": "0x00000000" }, { "idx": 4, "id": "ana_trim7", "value": "0x00000000" }, { "idx": 5, "id": "ana_trim8", "value": "0x00000AF2" }, { "idx": 6, "id": "ana_trim9", "value": "0x0091B71A" }, { "idx": 7, "id": "ana_trim10", "value": "0x5370E03C" } ], [ { "idx": 0, "id": "fault_config1", "value": "0x71183604" }, { "idx": 1, "id": "fault_config2", "value": "0x7684000A" } ], [ { "idx": 0, "id": "gate_driver_fault_status", "value": "0x00000000" }, { "idx": 1, "id": "controller_fault_status", "value": "0x00000000" } ], [ { "idx": 0, "id": "gd_config1", "value": "0x000000FC" }, { "idx": 1, "id": "gd_config2", "value": "0x00000000" } ], [ { "idx": 0, "id": "pin_config1", "value": "0x20600002" }, { "idx": 1, "id": "pin_config2", "value": "0x3E0020AA" }, { "idx": 2, "id": "device_config", "value": "0x27100003" } ], [ { "idx": 0, "id": "sys_status1", "value": "0x00A30000" }, { "idx": 1, "id": "sys_status2", "value": "0x60010000" }, { "idx": 2, "id": "sys_status3", "value": "0x00000000" } ] ] }
尊敬的 Babji:
您可以尝试此 json 文件吗? 我已使所有加速度稍微保守一些、一旦它开始工作、您就可以缓慢增加。 我已经将启动方法更改为 IPD
e2e.ti.com/.../regs-drone.json
谢谢。此致、
Sachin S.