Официальный сайт компании Arduino по адресу arduino.cc
Шим с обратной связью
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 05/03/2018 - 11:13
Всем привет !!! Есть вот такой код
#include <PID_v1.h> double pwmSet, pwmSpeed, pwmOut; PID myPID(&pwmSpeed, &pwmOut, &pwmSet, 0.9, 0.5, 0., DIRECT); #define PWM_PIN 11 #define SET_PIN 0 #define TACHO_PIN 1 const int fwdbuttonPin = 13; const int bckbuttonPin = 12; const int pin1 = 9; const int pin2 = 10; int potValue = 0; int motorValue = 0; int fwdbuttonState = 0; int bckbuttonState = 0; void setup() { myPID.SetMode(AUTOMATIC); pinMode(fwdbuttonPin, INPUT_PULLUP); pinMode(bckbuttonPin, INPUT_PULLUP); pinMode (pin1, OUTPUT); pinMode (pin2, OUTPUT); } void loop() { fwdbuttonState = digitalRead(fwdbuttonPin); bckbuttonState = digitalRead(bckbuttonPin); motorValue = map(potValue, 0, 123, 0, 255); if (fwdbuttonState == LOW) { analogWrite(pin1, motorValue); digitalWrite (pin2, LOW);} else if (bckbuttonState == LOW) analogWrite(pin2, motorValue); digitalWrite (pin1, LOW); digitalWrite (pin1, LOW); digitalWrite (pin2, LOW); digitalWrite (pin1, LOW); digitalWrite (pin2, LOW); pwmOut = constrain ( pwmOut , 0, 250); pwmSet = analogRead(SET_PIN); pwmSpeed = analogRead(TACHO_PIN); myPID.Compute(); analogWrite(PWM_PIN, pwmOut); }
Но он не умеет тормозить путем реверса двигателя, подкиньте идейку как доработать чтоб мог тормозить в случае если фактические обороты валы превышат установленные?
Что у Вас за двигатель? Как он подключён? Как Вы собираетесь делать реверс? Может лучше динамическое торможение?
Двигателя пока нет . Смысл в том чтоб регулировать обороты двигателя постоянного тока, с поддержанием момента и торможением в случее превышения заданных оборотов . Двигатель будет на 220 вольт силовая часть тиристорный мост. Пока пытаюсь сделать саму логику работы на ардуино то есть шим управление и переключение реверс.
220 вольт постоянного тока? Точно?
Ну, если будет мост, то он по другому управляется, там два пина. Чтобы крутить в одну сторону, надо на один пин HIGH, на другой - LOW, а реверс - наоборот.
Но резкий реверс - это больно двигателю (и мосту). Подумайте всё же о динамичесом торможении. Даже когда реальнло нужно крутить в разные стороны, обычно делать, сначала торможение, а потом уже вращение в другую сторону. Реверс сразу - это большой скачок тока - серьёзный удар и по двигателю и по мосту.
Вы не совсем так меня поняли. Реверс включается с шим, то есть подается не полная мощность и она зависит от того на сколько отклонились обороты от заданных.
Нужно чтоб был один выход шим и два выхода реверс. При активном одном выходе, шим управляет тиристорами, в случае наброса нагрузки на валу двигателя шим увеличивает мощность.Если наоборот двигатель увеличивает обороты относительно установленных ,первый выход отключается и включается второй (реверс) и шим притормаживает двигатель. В случае реверса все так же только наоборот.