Шим с обратной связью

mag155
Offline
Зарегистрирован: 21.12.2017

Всем привет !!! Есть вот такой код

#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);
}

Но он не умеет тормозить путем реверса двигателя, подкиньте идейку как доработать чтоб мог тормозить в случае если фактические обороты валы превышат установленные?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Что у Вас за двигатель? Как он подключён? Как Вы собираетесь делать реверс? Может лучше динамическое торможение?

mag155
Offline
Зарегистрирован: 21.12.2017

Двигателя пока нет . Смысл в том чтоб регулировать обороты двигателя постоянного тока, с поддержанием момента и торможением в случее превышения заданных оборотов . Двигатель будет на 220 вольт силовая часть тиристорный мост. Пока пытаюсь сделать саму логику работы на ардуино то есть шим управление и переключение реверс. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

220 вольт постоянного тока? Точно?

Ну, если будет мост, то он по другому управляется, там два пина. Чтобы крутить в одну сторону, надо на один пин HIGH, на другой - LOW, а реверс - наоборот.

Но резкий реверс - это больно двигателю (и мосту). Подумайте всё же о динамичесом торможении. Даже когда реальнло нужно крутить в разные стороны, обычно делать, сначала торможение, а потом уже вращение в другую сторону. Реверс сразу - это большой скачок тока - серьёзный удар и по двигателю и по мосту.

mag155
Offline
Зарегистрирован: 21.12.2017

Вы не совсем так меня поняли. Реверс включается с шим, то есть подается не полная мощность и она зависит от того на сколько отклонились обороты от заданных.

mag155
Offline
Зарегистрирован: 21.12.2017

Нужно чтоб был один выход шим и два выхода реверс. При активном одном выходе, шим управляет тиристорами, в случае наброса нагрузки на валу двигателя шим увеличивает мощность.Если наоборот двигатель увеличивает обороты относительно установленных ,первый выход отключается и включается второй (реверс) и шим притормаживает двигатель. В случае реверса все так же только наоборот.