Как понять, что ось двигателя больше не крутится ЭПС-4+VNH2SP30?

Мининова
Offline
Зарегистрирован: 08.06.2012

Доброго времни суток, коллеги!

Для своего проекта использую драйвер Н-моста на базе VNH2SP30

Подключил к нему мотор от стелоподъемника ЛАДА. Соединил, написал простой скейтч все работает, крутится в любую сторону по желанию, с желаемым значением ШИМ. Питается от истояника 12В 15А.

int ENA = 12; // Clockwise
int ENB = 13; // Counter-clockwise
int PWM = 10; // PWM input
int CS = A0; //CS: Current sense ANALOG input

void setup()
{
  Serial.begin(9600);
  pinMode(CS, INPUT);
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(PWM, OUTPUT);

  // тут сразу стартуем мотор на полную
  go_forward(255);

}

void loop()
{
  Serial.println(analogRead(CS));
  delay(500);
}

void go_forward(byte spd)
{
  analogWrite(PWM, spd);
  digitalWrite(ENA, 1);
  digitalWrite(ENB, 0);
}

void go_backward(byte spd)
{
  analogWrite(PWM, spd);
  digitalWrite(ENA, 0);
  digitalWrite(ENB, 1);
}

Есть задача, если мотор на полном заначении ШИМ встал (уперся в то, что уже не крутится по превышению механической составляющей) то он начинает потреблять больше тока, разумеется (ток примерно 7А через него пробегает в это время, в не нагруженном состоянии около 1.5А). У данного драйвера есть пин CS, (current sense) не могу разобраться как правильно считать с него данные. Получается что если стопорнуть мотор и получить с него analogRead, то значение переменной, захваченной, с А0 не превышает 120.

Либо я что то не понимаю, либо одно из двух. Задача простая - Запустил мотор, ждешь пока не упрется (упрется по-любому), и потом отматываешь назад пока вся напраляющая не доедет до концевика сверху..

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

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

Благодарю. Буду рад любой помощи.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Датчик Холла
а вообще гугл знает кучу библиотек . Рубят питание по перегрузке
напрмер
https://www.sparkfun.com/products/10182

Мининова
Offline
Зарегистрирован: 08.06.2012

Датчик холла, для энкодера или для получения наводки с провода при перегрузе ?

Вот, что нашел в прошивке (код адаптировал) по линку, что вы мне дали. Видел его ранее, но как то этот момент пропустил за ненадобностью.. а когда понадобился не вспонил где его искать. Благодарю за линк.

if ((analogRead(CS) < 100) 
{
    digitalWrite(statpin, HIGH); // разрешаем работу, пока значение АЦП на пине менее 100
}

Получается, если доходит до 100 (что у меня и получается) то нужно либо останавливать, как у них в коде, либо вертать все назад.

Благодарю.

 
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

драйвер в обе стороны с одинаковой мощностью мотор крутит? у меня 2 драйвера,  в одну хорошо крутит, в другую мощность сильно падает