Видео тележка на потолке. Как сделать плавный "СТОП" и "СТАРТ"?
- Войдите на сайт для отправки комментариев
Подскажите пожалуйста, вот я сделал некое подобие рельс подвешенных на потолок, по которым туда-сюда бегает тележка.
На тележке висит Видео-Камера.
Когда тележка доежает до края рельс, то замыкает концевой выключатель "S1", меняеться полярность на моторчике и тележка бежит в обратную сторону, пока не упрется в другой концевой выключатель "S2".
Вот только есть одна проблема, при резкой смене полярности (направления движения тележки), камеру очень-очень трясет.
Задача добавить возможность плавного "СТОП" и "СТАРТ".
То-есть цель, один 12-ти Вольтовый DC-Motor с ШИМ-ом (скорость задавать потенциометром) гнать в право до нажатия концевого выключателя "S1", далее плавно тормозить до полной остановки и также плавно разгоняясь крутить моторцик в обратном направлении до нажатия концевого выключателя "S2", опять плавный "СТОП", "СТАРТ" и т.д без конца. Было здорово бы еще одним потенциометром задавать время (промежуток) плавного "СТОП" и "СТАРТ".
Механическая часть уже готова,
[youtube]http://www.youtube.com/watch?list=UUYdqZFBT38Km8SNTydIan_g&feature=player_detailpage&v=gz4VTu7U2rI[/youtube]
хочу использовать "Ардуино" для решения данной задачи, ну вот ни как ни могу подходящего скетча.
Вернее примеров с ШИМ полно, но вот как в них добавить возможность плавного "СТОП" и "СТАРТ" не знаю.
Помогите, пожалуйста.
СПАСИБО!!!
как вариант повесить на какое нибудь колесико оптический щелевой датчик, как в мышке чтобы знать с какой скоростью едет тележка
нужен будет какой нибудь датчик для определения приближения к концу, или ультразвуковой дальномер например
зная реальную скорость можно уже играясь с шимом регулировать скорость, сделать плавный старт и торможение
Спасибо "jeka_tm", но это не совсем то что нужно.
ШИМ-ом я могу выставить нужную мне скорость. Знать его скорость мне не требуесться!
Моторчик будет вращаться до момента нажатия на кнопку (концевой выключатель или любой другой сенсор).
Как только нажмет кнопку (или любой другой сенсор), начнет замедлять ход до полной остановки, а потом начнет вращение в противоположную сторону и так до того, как нажмет другую кнопку.
То-есть, замедлять ход он должен только после того, как нажмется кнопка.
Было здорово бы другим потенциометром задавать время (промежуток) плавного торможения и старта.
ну если без обратной связи нужно будет подбирать параметры времени и шима, чтобы это было плавно, все таки система инерционна
программирование вообще не знаешь?
Да правда, программирование вообще не знаю. Вернее просто поверхностно логику понимаю, ну или думаю, что понимаю :)
Нет нужды, чтобы все как "Швецарские часы" работало.
Просто нужно, чтобы картинка в камере не тряслась во время смены направления движение. Вот и все!
но как ардуина узнает насколько тормозить и остановилась ли тележка. может она раньше времени затормозит что врядли нужно, или поздно, тогда снова тряска
Неужели нет возможности в Скетч с ШИМ-ом добавить функцию, если нажата "S1" кнопка, то замедлять ШИМ до "0", далее запускать в противоположном направлении от "0" до значения выставленного потенциометром.
да легко. а остановится ли там где нужно?
но как ардуина узнает насколько тормозить и остановилась ли тележка. может она раньше времени затормозит что врядли нужно, или поздно, тогда снова тряска
Вот я говорю, было бы здорово выстовлять это значение (1 секунда или 2 секунды и т.д.) вторым потенциометром.
да легко. а остановится ли там где нужно?
так если легко и возможно, поделитесь пожалуйста Скетчем.
Ну а то где остановится, это я уж как нибуть опытным путем как нибуть...
Вы видили конструкцию по ссылке http://www.youtube.com/watch?v=gz4VTu7U2rI или тут лучше видно http://www.youtube.com/watch?v=aqTNBnnMPnA?
Смотря на нее в принципе должно быть понятно, что требуется.
так и не смог понять на каком языке говорят на втором видео. что за язык?
вот простейший случай остановки после нажатия кнопки
01
#define button 5
02
#define motor 6
03
#define step_reg 5
04
#define pause_reg 20
05
06
byte
pwm = 255;
07
08
09
void
setup
() {
10
pinMode(button, INPUT_PULLUP);
11
pinMode(motor, OUTPUT);
12
}
13
14
void
loop
() {
15
if
(digitalRead(button)){
16
while
(pwm){
17
pwm=pwm-step_reg;
18
analogWrite(motor, pwm);
19
delay(pause_reg);
20
}
21
}
22
}
"jeka_tm" прости меня за мою тупость, но я не понял на какой выход в Ардуинке UNO цеплять моторчик, потенциометр (ШИМ) и кнопку?
Если не очень сложно, напиши пожалуйста полный Скетч, который я смогу (Copy/Paste) в Ардуинку.
СПАСИБО!
А язык на видео, это Турецкий.
ты издеваешься?)))) а самое начало кода чего не прочитал. код без потенциометра. просто тележка едет. нажал кнопку она плавно должна остановится
1
#define button 5
2
#define motor 6
да просто лень писать все за тебя. если хочешь целиком и все так как ты хочешь тебе в раздел ищу исполнителя
хотя правильнее так
01
#define button 5
02
#define motor 6
03
#define step_reg 5
04
#define pause_reg 20
05
06
byte
pwm = 255;
07
08
09
void
setup
() {
10
pinMode(button, INPUT_PULLUP);
11
pinMode(motor, OUTPUT);
12
analogWrite(motor, pwm);
13
}
14
15
void
loop
() {
16
if
(!digitalRead(button)){
17
while
(pwm){
18
pwm=pwm-step_reg;
19
analogWrite(motor, pwm);
20
delay(pause_reg);
21
}
22
}
23
}
Ок, понял!
Прости, не догнал сразу, что это указаны выводы для Ардуинки.
Смутили цифры
#define step_reg 5
#define pause_reg 20
Сейчас прямо попробую.
А про "Ищу исполнителя" это интересно. Если всетаки с твоей помощью не одолею, то попробую найти кого нибуть. Спасибо за идею!
Хотя так хочется самому все сделать, понять принцип :)
Все равно спасибо!!!
тут просто помогают если человек сам что то делает. а если просто дайте, то в ищу исполнителя
остальные цифры для регулировки остановки. первая это шаг изменения шима, а вторая время замедления с шагом предыдущим
Попробовал этот Скетч, скопировал без изменений.
Моторчик крутится 0,5 секунды и останавливается.
Если в строке #define step_reg 5 значение менять на 1, крутится секунды 2-3 и тормозит.
При нажатии кнопки, вообще ни чего не происходит :(
кнопку нужно подключить между пином и землей
шаг не меняй. лучше меняй задержку. увеличь до 100 например. будет почти 5 секунд останавливаться
Кнопку то я подключил пином 5 и землей GND.
Вот только нажать на нее не успеваю, так как моторчик крутится только 0,5 секунды и тормозит и дальше не крутится.
так увеличь задержку для начала
"jeka_tm" помоги ПЛИЗ!!! Уже столько слов исписали а результат, "где был, там и стою".
Напиши пожалуйста Скетч, пожалуйста. Тебе это 5 минут, а мне это "Америку открыть". Смилуйся!!!
Бьюсь как рыба об лед!
01
#define button 5
02
#define motor 6
03
#define step_reg 5
04
#define pause_reg 200
05
06
byte
pwm = 255;
07
08
09
void
setup
() {
10
pinMode(button, INPUT_PULLUP);
11
pinMode(motor, OUTPUT);
12
analogWrite(motor, pwm);
13
}
14
15
void
loop
() {
16
if
(digitalRead(button)==0){
17
while
(pwm){
18
pwm=pwm-step_reg;
19
analogWrite(motor, pwm);
20
delay(pause_reg);
21
}
22
}
23
}
"jeka_tm" спасибо, но я имел ввиду Скетч в целом.
К стати, моторчик заработал, как оказалась проблема в кнопке была (произвольно нажималась).
Теперь тормозит так как нужно! Здорово и СПАСИБО!!!
У меня есть пример Скетча для вращения моторчика в два направления
//2-Way motor control
01
int
motorPin1 = 5;
// One motor wire connected to digital pin 5
02
int
motorPin2 = 6;
// One motor wire connected to digital pin 6
03
// The setup() method runs once, when the sketch starts
04
void
setup
() {
05
// initialize the digital pins as an output:
06
pinMode(motorPin1, OUTPUT);
07
pinMode(motorPin2, OUTPUT);
08
}
09
// the loop() method runs over and over again,
10
// as long as the Arduino has power
11
void
loop
()
12
{
13
rotateLeft(255, 1000);
//255 (100% speed), 10000 (10 seconds)
14
rotateRight(255, 1000);
//255 (100% speed), 10000 (10 seconds)
15
16
}
17
void
rotateLeft(
int
speedOfRotate,
int
length){
18
analogWrite(motorPin1, speedOfRotate);
//rotates motor
19
digitalWrite(motorPin2, LOW);
// set the Pin motorPin2 LOW
20
delay(length);
//waits
21
digitalWrite(motorPin1, LOW);
// set the Pin motorPin1 LOW
22
}
23
void
rotateRight(
int
speedOfRotate,
int
length){
24
analogWrite(motorPin2, speedOfRotate);
//rotates motor
25
digitalWrite(motorPin1, LOW);
// set the Pin motorPin1 LOW
26
delay(length);
//waits
27
digitalWrite(motorPin2, LOW);
// set the Pin motorPin2 LOW
28
}
ну как и куда вставить функцию "Нажатия Кпопки и Торможение"?
да лень же говорю весь скетч писать. начало есть. разбирайся, читай, доделывай
ты же сам хочешь сделать, но при этом просишь у меня весь скетч
Это становится похоже на ситуацию, когда один тонет в воде и просит помощи, а другой умеет плавать, но ему лень в воду лезть. Я то конечно хочу этому научится, но это в перспективе, а тону я сейчас и помощь мне нужна уже.
не надо строить из себя умирающего. хочешь быстро красиво и как ты хочешь иди в раздел ищу исполнителя. если просто просишь тебе никто ничем не обязан. хочет помогает, не хочет не помогает
знаешь сколько здесь людей появляется, которым что то нужно? много
и каждый тонет и так далее. и что каждому за него весь код писать? тратить личное время, без удовольствия, чтобы только человеку помочь
я помогаю в свое удовольствие. есть настроение помочь делаю, не очень так наводку дам, нет настроения помогать молчу. заставлять себя не собираюсь
другое дело когда делаю заказы за деньги. но там за мое время человек платит, и даже если настроя особо нет, присутствует мотивация
А сколько стоит мотивация?
а это только через почту
хочешь пиши. тут много людей выполняют заказы
jeka_tm@mail.ru
arthurilyuts
http://www.kinetik.ru/ г.Зеленоград МО
здесь делают качественные частотные приводы, которые можно настроить очень плавно на реверсивное движение.
Спасибо "kriss"!
Однако это не совсем то что надо.
Имею желание реализовать все это с помощью Ардуинки.
Урааааааа! Свершилось!
И все таки мир не без добрых людей. Нашелся человек который помог все сделать. И оно ЗАРАБОТАЛО!!!
Дабы не переносить все сюда, просто даю ссылку где поэтапно описано и показано на пальцах как решился вопрос.
Даже я, ни чего непонимающий в програмировании Ардуино, следуя шаг-за-шагом рекомендациям, смог собрать этот проэкт и запустить его.
Ссылка тут
Уважаемый Админ, это не реклама другого форума, просто не реально все сюда перекопировать.
Еще раз Спасибо всем тем кто хотел, но по каким либо причинам не смог помочь.
Ну а тем из вас кому это может пригодится, пользуйтесь на здоровье!!!