Программирование коммутационного переменного тока?

Я попытался использовать этот код для вывода переменного тока с одного H-моста, а затем с другого, переключаясь каждую секунду, но когда я подключил к нему двигатель, он, казалось, просто выводил постоянный ток. Это код, который я использовал (кстати, контроллер двигателя, который я использую, имеет максимальную частоту 20 кГц, так что это не проблема, насколько я знаю):

int EnablePin = 8;
int duty;
int PWMPinA;
int PWMPinB;

const byte CPin = 0;  // аналоговый входной канал
int CRaw;      // raw A/D value
float CVal;    // скорректированное значение усилителя

void setup() {                
  pinMode(EnablePin, OUTPUT);     
  pinMode(PWMPinA, OUTPUT);
  pinMode(PWMPinB, OUTPUT);
}

void loop() {

  digitalWrite(EnablePin, HIGH);

  for(duty = 0; duty <= 20000; duty += 1){

    PWMPinA=11;  // Timer2
    PWMPinB=3;
    analogWrite(PWMPinA, 255);
    analogWrite(PWMPinB, 0);
    delayMicroseconds(50);

    if(PWMPinA == 11) {
      PWMPinA = 3;
      PWMPinB = 11;
    } else {
      PWMPinA = 11;
      PWMPinB = 3;
    }

  }
  for(duty = 20000; duty>=0; duty -= 1){

    PWMPinA=6;  // Timer2
    PWMPinB=5;
    analogWrite(PWMPinA, 255);
    analogWrite(PWMPinB, 0);
    delayMicroseconds(50); 

    if(PWMPinA == 6) {
      PWMPinA = 5;
      PWMPinB = 6;
    } else {
      PWMPinA = 6;
      PWMPinB = 5;
    }
  }
}

, 👍-1

Обсуждение

..... Ваш выход ШИМ-сигналов на 4 разностные контакты? это очень запутанно-менять контакт, назначенный переменной, а не иметь их всех определенных и изменять, какой из них вы используете. Нужно опубликовать схему того, что вы сделали, если вам нужна какая-либо помощь, @Chad G

Я попробовал, и это, кажется, работает. Не знаю, почему я не подумал об этом, учитывая, что это проще, но спасибо!, @Tom


1 ответ


0

Похоже, вы уже разобрались с этим, но первая серьезная проблема с вашим исходным кодом заключается в том, что вы используете PwmPinA и PwmPinB в setup (), прежде чем им будут присвоены какие-либо значения.

Я был бы удивлен, если бы компилятор не предупредил об этом. Никогда не игнорируйте предупреждения компилятора! :-)

,