Программирование коммутационного переменного тока?
Я попытался использовать этот код для вывода переменного тока с одного 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;
}
}
}
@Tom, 👍-1
Обсуждение1 ответ
▲ 0
Похоже, вы уже разобрались с этим, но первая серьезная проблема с вашим исходным кодом заключается в том, что вы используете PwmPinA
и PwmPinB
в setup ()
, прежде чем им будут присвоены какие-либо значения.
Я был бы удивлен, если бы компилятор не предупредил об этом. Никогда не игнорируйте предупреждения компилятора! :-)
,
@Mark Smith
Смотрите также:
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Генерация частоты ШИМ выше 125 кГц с помощью Arduino Uno
- Увеличить разрядность PWM
- Как вывести истинное аналоговое напряжение на выходной контакт
- Как заставить сервопривод вращаться на угол больше 180°
- ПИД-регулятор для управления скоростью двигателя
- Почему Adafruit motor shield не крутит моторы?
..... Ваш выход ШИМ-сигналов на 4 разностные контакты? это очень запутанно-менять контакт, назначенный переменной, а не иметь их всех определенных и изменять, какой из них вы используете. Нужно опубликовать схему того, что вы сделали, если вам нужна какая-либо помощь, @Chad G
Я попробовал, и это, кажется, работает. Не знаю, почему я не подумал об этом, учитывая, что это проще, но спасибо!, @Tom