Драйвер ШД dm542, arduino leonardo, LCD i2C
- Войдите на сайт для отправки комментариев
Приветствую! подскажите пожалуйста!
1) подключал драйвер dm542 к леонардо(по факту искра нео) и к китайской уне. почему то при одном и том же скетче на леонардо мотор крутится быстрее. леонардо шустрее работает?
2)Вчера перепробовал кучу библиотек, но половина не работала, половина работала не так как надо. нужо просто регулировать скорость вращения. В итоге использовал код:
int pulPin = 10; int dirPin = 11; int enblPin = 12; int ledPin = 13; long motorSpeed; void setup() { Serial.begin(9600); pinMode(pulPin, OUTPUT); pinMode(dirPin, OUTPUT); pinMode(enblPin, OUTPUT); pinMode(ledPin, OUTPUT); pinMode(6, OUTPUT); digitalWrite(pulPin, LOW); digitalWrite(ledPin, LOW); digitalWrite(enblPin, LOW); digitalWrite(dirPin, LOW); Serial.println("init"); digitalWrite(enblPin, HIGH); delay(100); digitalWrite(enblPin, LOW); } void loop() { int sensorReading = analogRead(A0); Serial.println(sensorReading); motorSpeed = map(sensorReading, 0, 1023, 600, 14000); //менять тут 600 и 1400 Serial.println(motorSpeed); digitalWrite(pulPin, HIGH); digitalWrite(ledPin, HIGH); digitalWrite(pulPin, LOW); digitalWrite(ledPin, LOW); delayMicroseconds(motorSpeed); }
Но скорость вращения мотора меняется не равномерно. необходимо было менять значения от 5 об/мин до 75 об/мин. При вращении резистора на 95% скорость мотора увеличивается примерно до половины, и в оставшиеся 5% хода крутилки происходит увеличение скорости до 75 об/мин. почему так? как правильно сделать? 600 и 14000 - значения задержки. при 600 75 об/мин, при 14000 5 об/мин.
и 3) как на одном МК управлять и драйвером и LCD (i2C) экраном? каждый раз когда передаются данный на экран, шаговик приостанавливается. когда давно проблема решилась подключением экрана к одной уне, а драйвера к другой уне. и между собой уны общались по юарт. искру нео с китайской уно подружить почему то не получилось...
например на 3д принтере МЕГА управляется 4-5ю моторами и выводит показания на экран и всё ок. ни один из моторов не притормаживается при обновлении экрана. как так то :(
и не получается найти голый код для вывода значений на экран. т.е. как управлять экраном без библиотеки. а в библиотеке код мудрено написан, не пойму...
данные вывожу так:
Но скорость вращения мотора меняется не равномерно. необходимо было менять значения от 5 об/мин до 75 об/мин. При вращении резистора на 95% скорость мотора увеличивается примерно до половины, и в оставшиеся 5% хода крутилки происходит увеличение скорости до 75 об/мин. почему так?
Вангую, взять потенциометр с линейной характеристикой, а не с магнитолы.
потенциометр как раз с линейной... через монитор порта наблюдал значение
Вы меняете период , а хотите менять частоту .
не совсем понял куда и как это вставить... управление ведь осуществляется задержкой отсылки сигналов?
ии.... почему +1?)
+1 это что бы на ноль не делить.Ошибка при делении. задержка отсылки сигнала дает период между тактами. Обороты это функция обратная от этих периодов. Вот вам и отсутсвие линейности.
и 3) как на одном МК управлять и драйвером и LCD (i2C) экраном? каждый раз когда передаются данный на экран, шаговик приостанавливается...
например на 3д принтере МЕГА управляется 4-5ю моторами и выводит показания на экран и всё ок. ни один из моторов не притормаживается при обновлении экрана. как так то :(
То, что при передаче денных на экран все остальные процессы (не только шаговик) приостанавливаются - это вполне нормальная ситуация и иначе быть не может.
Другое дело, что I2C LCD - медленное устройство, а потому в Вашем случае шаговик не просто приостанавливается, а приостанавливается надолго. Т.е. полностью от "приостановки" избавиться не удастся, остается лишь добиться, чтобы уменьшить время приотсановки до приемлемых величин.
Здесь существует, минимум, 3 варианта:
1. Переписать библиотеку с целью уменьшить время вывода.
2. Переписать алгоритм отображения на экране, чтобы за раз выводить не все содержимое экрана, а по одному символу.
3. Заменить I2C LCD на что-то более быстрое.
Привет я с вами, собирали для меня.
Драйвер dm542 будет работать от 3.3 в? Ардуино Due.
Я надеюсь вы имеете в виду управляться от 3.3 в ? На входе оптопары, есть вероятность, что будет, но по даташиту минимум 5в.
Я надеюсь вы имеете в виду управляться от 3.3 в ? На входе оптопары, есть вероятность, что будет, но по даташиту минимум 5в.
Да, управляющие напряжение. Нашел блок питания, подключил, работает.