Видео тележка на потолке. Как сделать плавный "СТОП" и "СТАРТ"?

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

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

На тележке висит Видео-Камера.

Когда тележка доежает до края рельс, то замыкает концевой выключатель "S1", меняеться полярность на моторчике и тележка бежит в обратную сторону, пока не упрется в другой концевой выключатель "S2".

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

Задача добавить возможность плавного "СТОП" и "СТАРТ".

То-есть цель, один 12-ти Вольтовый DC-Motor с ШИМ-ом (скорость задавать потенциометром) гнать в право до нажатия концевого выключателя "S1", далее плавно тормозить до полной остановки и также плавно разгоняясь крутить моторцик в обратном направлении до нажатия концевого выключателя "S2", опять плавный "СТОП", "СТАРТ" и т.д без конца. Было здорово бы еще одним потенциометром задавать время (промежуток) плавного "СТОП" и "СТАРТ". 

Механическая часть уже готова, 

[youtube]http://www.youtube.com/watch?list=UUYdqZFBT38Km8SNTydIan_g&feature=player_detailpage&v=gz4VTu7U2rI[/youtube]

хочу использовать "Ардуино" для решения данной задачи, ну вот ни как ни могу подходящего скетча.

Вернее примеров с ШИМ полно, но вот как в них добавить возможность плавного "СТОП" и "СТАРТ" не знаю.

Помогите, пожалуйста.

СПАСИБО!!!

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

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

нужен будет какой нибудь датчик для определения приближения к концу, или ультразвуковой дальномер например

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

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Спасибо "jeka_tm", но это не совсем то что нужно.
ШИМ-ом я могу выставить нужную мне скорость. Знать его скорость мне не требуесться!
Моторчик будет вращаться до момента нажатия на кнопку (концевой выключатель или любой другой сенсор).
Как только нажмет кнопку (или любой другой сенсор), начнет замедлять ход до полной остановки, а потом начнет вращение в противоположную сторону и так до того, как нажмет другую кнопку.
То-есть, замедлять ход он должен только после того, как нажмется кнопка. 
Было здорово бы другим потенциометром задавать время (промежуток) плавного торможения и старта.

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

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

программирование вообще не знаешь?

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Да правда, программирование вообще не знаю. Вернее просто поверхностно логику понимаю, ну или думаю, что понимаю :)
Нет нужды, чтобы все как "Швецарские часы" работало.
Просто нужно, чтобы картинка в камере не тряслась во время смены направления движение. Вот и все!

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

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

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Неужели нет возможности в Скетч с ШИМ-ом добавить функцию, если нажата "S1" кнопка, то замедлять ШИМ до "0", далее запускать в противоположном направлении от "0" до значения выставленного потенциометром. 

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

да легко. а остановится ли там где нужно?

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

jeka_tm пишет:

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

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

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

jeka_tm пишет:

да легко. а остановится ли там где нужно?

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

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Вы видили конструкцию по ссылке http://www.youtube.com/watch?v=gz4VTu7U2rI  или тут лучше видно http://www.youtube.com/watch?v=aqTNBnnMPnA?
Смотря на нее в принципе должно быть понятно, что требуется.

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

так и не смог понять на каком языке говорят на втором видео. что за язык?

вот простейший случай остановки после нажатия кнопки

 

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

"jeka_tm" прости меня за мою тупость, но я не понял на какой выход в Ардуинке UNO цеплять моторчик, потенциометр (ШИМ) и кнопку?
Если не очень сложно, напиши пожалуйста полный Скетч, который я смогу (Copy/Paste) в Ардуинку.
СПАСИБО!
А язык на видео, это Турецкий.

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

ты издеваешься?)))) а самое начало кода чего не прочитал. код без потенциометра. просто тележка едет. нажал кнопку она плавно должна остановится

1#define button     5
2#define motor      6

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

 

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

хотя правильнее так

 

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Ок, понял!
Прости, не догнал сразу, что это указаны выводы для Ардуинки.
Смутили цифры
#define step_reg   5
#define pause_reg  20

Сейчас прямо попробую.

А про "Ищу исполнителя" это интересно. Если всетаки с твоей помощью не одолею, то попробую найти кого нибуть. Спасибо за идею! 
Хотя так хочется самому все сделать, понять принцип :)
Все равно спасибо!!!

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

тут просто помогают если человек сам что то делает. а если просто дайте, то в ищу исполнителя

остальные цифры для регулировки остановки. первая это шаг изменения шима, а вторая время замедления с шагом предыдущим

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Попробовал этот Скетч, скопировал без изменений.
Моторчик крутится 0,5 секунды и останавливается.
Если в строке #define step_reg   5 значение менять на 1, крутится секунды 2-3 и тормозит.
При нажатии кнопки, вообще ни чего не происходит :(

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

кнопку нужно подключить между пином и землей

шаг не меняй. лучше меняй задержку. увеличь до 100 например. будет почти 5 секунд останавливаться

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Кнопку то я подключил  пином 5 и землей GND.
Вот только нажать на нее не успеваю, так как моторчик крутится только 0,5 секунды и тормозит и дальше не крутится.

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

так увеличь задержку для начала

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

"jeka_tm" помоги ПЛИЗ!!! Уже столько слов исписали а результат, "где был, там и стою".
Напиши пожалуйста Скетч, пожалуйста. Тебе это 5 минут, а мне это "Америку открыть". Смилуйся!!! 
Бьюсь как рыба об лед!
 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013
01#define button     5
02#define motor      6
03#define step_reg   5
04#define pause_reg  200
05 
06byte pwm = 255;
07 
08 
09void setup() {
10  pinMode(button, INPUT_PULLUP);
11  pinMode(motor, OUTPUT);
12  analogWrite(motor, pwm);
13}
14 
15void 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}

 

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

"jeka_tm" спасибо, но я имел ввиду Скетч в целом.
К стати, моторчик заработал, как оказалась проблема в кнопке была (произвольно нажималась).
Теперь тормозит так как нужно! Здорово и СПАСИБО!!!

У меня есть пример Скетча для вращения моторчика в два направления
//2-Way motor control

01int motorPin1 = 5;  // One motor wire connected to digital pin 5
02int motorPin2 = 6;  // One motor wire connected to digital pin 6
03// The setup() method runs once, when the sketch starts
04void setup()    {
05// initialize the digital pins as an output:
06pinMode(motorPin1, OUTPUT);
07pinMode(motorPin2, OUTPUT);
08}
09// the loop() method runs over and over again,
10// as long as the Arduino has power
11void loop()
12{
13 rotateLeft(255, 1000); //255 (100% speed), 10000 (10 seconds)
14 rotateRight(255, 1000); //255 (100% speed), 10000 (10 seconds)
15 
16}
17void rotateLeft(int speedOfRotate, int length){
18analogWrite(motorPin1, speedOfRotate); //rotates motor
19digitalWrite(motorPin2, LOW);   // set the Pin motorPin2 LOW
20delay(length); //waits
21digitalWrite(motorPin1, LOW);   // set the Pin motorPin1 LOW
22}
23void rotateRight(int speedOfRotate, int length){
24analogWrite(motorPin2, speedOfRotate); //rotates motor
25digitalWrite(motorPin1, LOW);   // set the Pin motorPin1 LOW
26delay(length); //waits
27digitalWrite(motorPin2, LOW);   // set the Pin motorPin2 LOW
28}

ну как и куда вставить функцию "Нажатия Кпопки и Торможение"?

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

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

ты же сам хочешь сделать, но при этом просишь у меня весь скетч

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Это становится похоже на ситуацию, когда один  тонет в воде и просит помощи, а другой умеет плавать, но ему лень в воду лезть. Я то конечно хочу этому научится, но это в перспективе, а тону я сейчас и помощь мне нужна уже. 

Ладно, наберу воздуха побольше, может все таки кому-то другому будет не лень в воду лезть. 
Там же "шитья пойдет аршин", от силы строк 20 то. 
Или может есть какое-то количество "вечно-зеленых президентов", в обмен на которых тебе будет не лень?
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

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

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

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

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

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

 А сколько стоит мотивация?

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

а это только через почту

хочешь пиши. тут много людей выполняют заказы

jeka_tm@mail.ru

kriss
Offline
Зарегистрирован: 24.01.2014

 

arthurilyuts

http://www.kinetik.ru/   г.Зеленоград МО

здесь делают  качественные  частотные приводы, которые можно настроить очень плавно на реверсивное движение. 

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Спасибо "kriss"!
Однако это не совсем то что надо. 
Имею желание реализовать все это с помощью Ардуинки.

arthurilyuts
Offline
Зарегистрирован: 14.10.2013

Урааааааа! Свершилось!
И все таки мир не без добрых людей. Нашелся человек который помог все сделать. И оно ЗАРАБОТАЛО!!!
Дабы не переносить все сюда, просто даю ссылку где поэтапно описано и показано на пальцах как решился вопрос. 
Даже я, ни чего непонимающий в програмировании Ардуино, следуя шаг-за-шагом рекомендациям, смог собрать этот проэкт и запустить его.
Ссылка тут
Уважаемый Админ, это не реклама другого форума, просто не реально все сюда перекопировать. 
Еще раз Спасибо всем тем кто хотел, но по каким либо причинам не смог помочь.
Ну а тем из вас кому это может пригодится, пользуйтесь на здоровье!!!