После долгих поисков я решил задать здесь. Как я могу управлять двигателями постоянного тока с помощью драйвера Pololu DRV8835? Я попытался использовать библиотеку Microsoft.IoT.Lightning
, но частота кажется слишком низкой. В Python library частота этого драйвера составляет 20 кГц. Когда я попытался изменить эту библиотеку, сборка сделала исключение из-за несуществующих целей (но они даже не появились после создания библиотеки).Управление двигателями постоянного тока в C# с DRV8835 и Raspberry Pi
Это мой код:
public async Task Initialize()
{
try
{
if (!LightningProvider.IsLightningEnabled)
{
throw new Exception("No lightning provider detected!");
}
LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider();
Gpio = await GpioController.GetDefaultAsync();
APhase = Gpio.OpenPin(19);
BPhase = Gpio.OpenPin(6);
APhase.SetDriveMode(GpioPinDriveMode.Output);
BPhase.SetDriveMode(GpioPinDriveMode.Output);
Pwm = await PwmController.GetDefaultAsync();
Pwm.SetDesiredFrequency(1000);
AEnable = Pwm.OpenPin(26);
BEnable = Pwm.OpenPin(13);
}
catch (Exception e)
{
throw e;
}
}
private bool stopMove = true;
private double speed = 1;
public void StopMove()
{
stopMove = true;
}
public async Task MoveForward()
{
await Task.Delay(1);
stopMove = false;
APhase.Write(GpioPinValue.Low);
BPhase.Write(GpioPinValue.Low);
AEnable.SetActiveDutyCyclePercentage(speed);
BEnable.SetActiveDutyCyclePercentage(speed);
Debug.WriteLine("Starting...");
AEnable.Start();
BEnable.Start();
while (!stopMove) { }
AEnable.Stop();
BEnable.Stop();
AEnable.SetActiveDutyCyclePercentage(0);
BEnable.SetActiveDutyCyclePercentage(0);
}
public async Task MoveBackward()
{
await Task.Delay(1);
stopMove = false;
APhase.Write(GpioPinValue.High);
BPhase.Write(GpioPinValue.High);
AEnable.SetActiveDutyCyclePercentage(speed);
BEnable.SetActiveDutyCyclePercentage(speed);
AEnable.Start();
BEnable.Start();
while (!stopMove) { }
AEnable.Stop();
BEnable.Stop();
AEnable.SetActiveDutyCyclePercentage(0);
BEnable.SetActiveDutyCyclePercentage(0);
}
Кто-нибудь знает любой рабочий раствор?
Я попытался изменить эту библиотеку, но сборщик процессов «Файл полезной нагрузки» (мой рабочий стол) \ lightning-develop \ Providers \ Microsoft.IoT.Lightning.Providers.targets 'не существует. " – Nick14