Прилепил на намотчик ШД, который с драйвером покупал 5В. Ремёная передача не катит похоже. Шестерёнку напечатал, но зубчики мелкие и не получились, соответственно скорее всего будет проскальзывать и силы не хватит завернуть нить пластика на катушку. Запустил на ардуинке про мини, залив тестовый скетч из ПО ардуино, подправив чуть (убрал лишние паузы и обратное вращение). Теперь поищу как вставить туда сенсор (типа фоторезистора), что бы он включал ШД при провисе нити, а не постоянно маслал (хотя наверное постоянно в моем варианте лучше, чтобы натяг хоть какой-то был нити. Ну в оПчем попробую в работе, а если что начну шестерёнчатую передачу туда мутить. Или поменяю местами моторы с протяжки и этот.
Андрей (или кто знает), скажите, в стандартном тестовом скетче для управления ШД есть возможность регулировки оборотов, используется пин А0,а куда второй/третий провод резистора цеплять? Можно ли использовать первую версию "нашего" скетча, где использовался переменник, для управления ЩД 28BYJ-48 с драйвером, где нужно использовать 4 провода управления и пара питания?
вопчем регулировку оборотов для мотора 28BYJ-48 с его же драйвером сделал на основании стандартного скетча среды Ардуино. Регулирует скетч потом на всякий случай в первое сообщение воткну, вдруг кто-то тоже ардуино пустит на одну операцию . Начал там потихоньку оглавление делать.
This program drives a unipolar or bipolar stepper motor. The motor is attached to digital pins 2 - 5 of the Arduino. A potentiometer is connected to analog input 0.
The motor will rotate in a clockwise direction. The higher the potentiometer value, the faster the motor speed. Because setSpeed() sets the delay between steps, you may notice the motor is less responsive to changes in the sensor value at low speeds.
Created 30 Nov. 2009 Modified 28 Oct 2010 by Tom Igoe
*/
#include <Stepper.h>
const int stepsPerRevolution = 32; // change this to fit the number of steps per revolution // for your motor
// initialize the stepper library on pins 2 through 5: Stepper myStepper(stepsPerRevolution, 5, 3, 4, 2);
int stepCount = 0; // number of steps the motor has taken
void setup() { // nothing to do inside the setup }
void loop() { // read the sensor value: int sensorReading = analogRead(A0); // map it to a range from 0 to 100: int motorSpeed = map(sensorReading, 0, 1023, 0, 800); // set the motor speed: if (motorSpeed > 0) { myStepper.setSpeed(motorSpeed); // step 1/100 of a revolution: myStepper.step(stepsPerRevolution / 32); } }
Может кто подсказать, что значат параметры этой строки int motorSpeed = map(sensorReading, 0, 1023, 0, 800); ? Я 800 поставил, т.к. более 950, например, мотор срывается и не крутит, это типа максимума шагов? 0 перед ним это типа с какого кол-ва шагов запуск, А другие параметры, перед ними две цифры?
Revenger писал(а):Может кто подсказать, что значат параметры этой строки int motorSpeed = map(sensorReading, 0, 1023, 0, 800); ? Я 800 поставил, т.к. более 950, например, мотор срывается и не крутит, это типа максимума шагов? 0 перед ним это типа с какого кол-ва шагов запуск, А другие параметры, перед ними две цифры?
Кхе, ты ж жеж уже почти мастер дуино Стыдно должно быть, такие вопросы задавать http://arduino.ru/Reference/Map Но настоящие дзены приводят диапазоны вручную, умножением/делением. Типа: "значение" умножить на N, а потом разделить на N2. Получится тот же map. Можно еще разбавить плюсом/минусом (для смещения).
Я вас умоляю... это Андрей мастер, он скетчи делал, а я всего лишь сделал простейший повтор с изменением пары цифр... Спасибо за ссылку, попробую разобраться при необходимости, хотя бы для понимания процесса. Так то меня устраивает и метод тыка )) Разве что работает непредсказуемо
Ну ацп с переменного резистора дает значения от 0 до 4095 (2^12). А скорость двигателя может меняться только от 0 до 800. Что делать с оставшимися 4096 - 800 значениями? Правильно, надо диапазон значений 0-4095 привести к диапазону 0-800. Это и делает map. Математически это просто коэффициент: 800/4096 = 0,1953125. Например, когда резистор дает 0: 0 * 0,1953125 = 0 скорость. Резистор ровно в центре = 2047: 2047 * 0,1953125 = 400, т.е. середина резистора равна середине мощности. Резистор на максимуме = 4095: 4095 * 0,1953125 = 800, т.е. макс. значение резистора равно максимальной мощности. Понел?
Вона чо...теперь понятно ))) Ну как понятно? Почти.. до меня медленно доходит.. через руки чаще. т.е. надо попробовать, чтобы окончательно дошло. Я тут просто сразу на высшую математику полез, и вместо переменника фоторезистор поставил (думаю что филамент, прикрывая при приближении свет будет менять сопротивление и, соотвественно скорость ШД), вот мне по идее надо как раз правильно расчитать этот мап, замерив и найдя баланс. Же да?
Добавлено спустя 19 минут: Вот что я тут наизобретал с мапами этими (точнее хочу как-то воплотить в общий ансамбль электроники) )))
Revenger писал(а): Ну как понятно? Почти.. до меня медленно доходит.. через руки чаще
Ок, представь что от тебя просят регулировать задвижку, которая имеет 256 положений, от входных данных, которые от нуля до 100500 значений. Скорее всего ты начнешь преобразовывать несколько входных значений в одно выходное, т.к. задвижка может двигаться в намного меньших пределах...
Я скоро начну сам задавать такие же вопросы по шредерам/экструдерам , ибо чо-то совсем все сложно. Сверло для экструдера купил 100 лет назад, но что-то очень большое, куда его сувать - хз. Можна я вас буду тупить?