Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.11.2015, 11:14   #11
Revenger
Senior Member
 
Регистрация: 11.07.2015
Адрес: Ставрополь
Сообщений: 142
Вес репутации: 0
Revenger is an unknown quantity at this point
По умолчанию Re: Вывод на LCD 1602 оборотов ШД. Как?

Максимальные обороты.. сейчас погуглю этот мотор. В стандартном скетче с его библиотекой (кем-то переделана из стандарта похоже), указано 4076.
А на входе А0 средняя точка между резистором и фоторезистором, т.е. я просто ногу переменника убрал и вместо "той части переменника" включил фоторезистор. Переменником подстроил примерно равное сопротивлению подсвеченному светодиодом фоторезистору (примерно по 10кОм). Сейчас читаю про делители, может что не так сделал... конденсатор не ставил (встречается в некоторых схемах).


Первый в таблице он. 5,625 один шаг (редуктор пока я не беру во внимание), с подсчетом выходило совсем не 4076 почему-то. Почему такой параметр в библиотеке - х.з.

Последний раз редактировалось Revenger; 18.11.2015 в 11:19.
Revenger вне форума   Ответить с цитированием
Старый 18.11.2015, 11:34   #12
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Вывод на LCD 1602 оборотов ШД. Как?

Если Вы хотите получить максимальную скорость, то в переменной motorSpeed должно получится значение равное максимальной скорости 4076. Получается что у Вас с порта А0 должно приходить максимальное значение 1023, тоесть на порт А0 для этого нужно подать +5в, а с делителем у Вас это значение никогда не получить
Admin вне форума   Ответить с цитированием
Старый 18.11.2015, 11:41   #13
Revenger
Senior Member
 
Регистрация: 11.07.2015
Адрес: Ставрополь
Сообщений: 142
Вес репутации: 0
Revenger is an unknown quantity at this point
По умолчанию Re: Вывод на LCD 1602 оборотов ШД. Как?

А делитель, это то, что у меня сейчас с фоторезистором? Почему тогда переменник (это же вроде тот же делитель) прекрасно регулирует (даже приходится уменьшать параметр в строке "мар" со ста на 50)?
п.с. наверняка для профи вопросы идиотские.. но прошу немного терпения.. я или победЮ "это" или заброшу и отстану
Revenger вне форума   Ответить с цитированием
Старый 18.11.2015, 11:46   #14
Vovan_a
Member
 
Регистрация: 16.01.2015
Сообщений: 71
Вес репутации: 0
Vovan_a is an unknown quantity at this point
По умолчанию Re: Вывод на LCD 1602 оборотов ШД. Как?

Цитата:
Сообщение от Revenger Посмотреть сообщение
А делитель, это то, что у меня сейчас с фоторезистором? Почему тогда переменник (это же вроде тот же делитель) прекрасно регулирует (даже приходится уменьшать параметр в строке "мар" со ста на 50)?
В крайних положениях переменника его средний вывод соединяется непосредственно сс одним из крайних выводов. И сопротивление между ними при этом равно почти нулю.
Vovan_a вне форума   Ответить с цитированием
Старый 18.11.2015, 12:03   #15
Revenger
Senior Member
 
Регистрация: 11.07.2015
Адрес: Ставрополь
Сообщений: 142
Вес репутации: 0
Revenger is an unknown quantity at this point
По умолчанию Re: Вывод на LCD 1602 оборотов ШД. Как?

Это понятно. Т.е. мне необходимо добиться 5В (или близко к этому) на выходе фоторезистора необходимой засветкой, верно?
И еще момент, я уже упоминал выше (скетч уже с фоторезистором ниже прикрепил), что при том же включении, но без дисплея, у меня даже с фоторезистором получилось добиться вроде бы максимальных обротов ШД. Попробую сегодня допилить скетч, добавив в него строки с дисплеем, возможно где-то дисплей всё портит. Даже светодиод ноги 13 (на плате который) без дисплея практически горит (мерцание незаметно), а с дисплеем моргает в такт всему дёрганию.

Код:
/* 
 Stepper_28BYJ Motor Control - speed control
 
 This program drives a unipolar or bipolar stepper motor. 
 The motor is attached to digital pins 8 - 11 of the Arduino.
 A potentiometer is connected to analog input 0.
 Эта программ управляет униполярным или биполярным шаговым двигателем.
 Шаговый двигатель присоединён к цифровым выходам 8-11 платы Arduino. 
 Потенциометр присоединён к аналоговому входу 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.
 Двигатель будет вращаться по часовой стрелке. Чем выше напряжение снимаемое с потенциометра,
 тем выше будет скорость вращения. Потому что функция setSpeed() определяет задержки между шагами,
 вы можете заметить, что двигатель становится менее чувствительным к показаниям датчика на
 низких скоростях.
 
 Created 30 Nov. 2009
 Modified 28 Oct 2010
 by Tom Igoe
 
 */

#include <Stepper_28BYJ.h>

// количество шагов на один оборот
const int stepsPerRevolution = 4076;  // change this to fit the number of steps per revolution
// for your motor


// initialize the stepper library on pins 8 through 11:
// инициализируем библиотеку Stepper_28BYJ на выходы 8-11
Stepper_28BYJ myStepper_28BYJ(stepsPerRevolution, 5,4,3,2);            

// количество шагов, которые мотор уже сделал
int stepCount = 0;  // number of steps the motor has taken
int ledPin = 6; // пин для светодиода
int sensorPin = 0;
// Также зададим 3 глобальные переменные - lightLevel, high и low
int lightLevel, high = 0, low = 1023;

void setup() {
  // nothing to do inside the setup
  // ничего не делаем внутри процедуры setup
}

void loop() {
  // read the sensor value:
  // читаем значение датчика на аналоговом входе 0
  int sensorReading = analogRead(A0);
  // map it to a range from 0 to 100:
  // масштабируем значение с аналогового входа
  // из диапазона 0..1023 в диапазон 0..100
  int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
  // set the motor speed:
  // установить  скорость вращения
  if (motorSpeed > 0) {
    myStepper_28BYJ.setSpeed(motorSpeed);
    // step 1/100 of a revolution:
	// прощагать 1/100 оборота
    myStepper_28BYJ.step(stepsPerRevolution/100);
  } 
  //включение ноги светодиода
  pinMode(ledPin, OUTPUT);
  //включаем светодиод
  lightLevel = analogRead(sensorPin);
    analogWrite(ledPin,60);//светодиод горит на 60 )) 
}

Последний раз редактировалось Revenger; 18.11.2015 в 12:06.
Revenger вне форума   Ответить с цитированием
Старый 18.11.2015, 13:18   #16
Vovan_a
Member
 
Регистрация: 16.01.2015
Сообщений: 71
Вес репутации: 0
Vovan_a is an unknown quantity at this point
По умолчанию Re: Вывод на LCD 1602 оборотов ШД. Как?

Ардуино ведь не многозадачная система. Вывод на дисплей отбирает часть процессорного времени. От того происходят дергания и нестабильная работа двигателя.
Vovan_a вне форума   Ответить с цитированием
Старый 18.11.2015, 13:22   #17
Revenger
Senior Member
 
Регистрация: 11.07.2015
Адрес: Ставрополь
Сообщений: 142
Вес репутации: 0
Revenger is an unknown quantity at this point
По умолчанию Re: Вывод на LCD 1602 оборотов ШД. Как?

Дык... у меня на "про мини" гораздо больше скетч (управление ШД, регулировка каких-то таймеров, кнопки, вывод на экран, контроль по оптопаре... там 168 атмега, а это уно и она не может вывести на дисплей работу ШД? Что-то слабо верится. Скорее всего в порядке вывода данных какой-то косяк, но я просто об этом не догадываюсь.
Revenger вне форума   Ответить с цитированием
Старый 18.11.2015, 13:25   #18
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Вывод на LCD 1602 оборотов ШД. Как?

Скорость ШД регулируется раузами между шагами, чем меньше пауза тем выше скорость и наоборот
Если у Вас вывод в дисплей будет проходить в общем цикле, то и пауза между шагами увеличится, а значит и скорость упадет
Скорость желательно регулировать через условие(if()) если было изменение скорости, в таких то пределах, то тогда применить изменение и вывести скорость в дисплей
Admin вне форума   Ответить с цитированием
Старый 18.11.2015, 13:43   #19
Revenger
Senior Member
 
Регистрация: 11.07.2015
Адрес: Ставрополь
Сообщений: 142
Вес репутации: 0
Revenger is an unknown quantity at this point
По умолчанию Re: Вывод на LCD 1602 оборотов ШД. Как?

иф? я примерно понимаю, что это типа "если", но вряд ли смогу сам приспособить
нет попроще варианта, на понятном языке?
Revenger вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:55. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика