Нажать кнопку Ардуиной. Как?

Dimarduino
Offline
Зарегистрирован: 16.08.2015

Здравствуйте! 

Имеется CD-Rom дисковод. На нём единственная кнопка открывания и закрывания лотка. 

Как, подпаявшись к контактам кнопки, подключить эти провода к Arduino Uno, чтобы по программе открывать и закрывать лоток? 

Параметры кнопки таковы, что в ненажатом состоянии красный щуп вольтметра показывает показывает на контактах +5В и -5В при нажатии - 0В. 

Кнопки срабатывает при замыкании контактов проводником, а также резисторами на 1 КОм и 2 КОм, но не срабатывает при 5,1 КОм. 

в 2012 году была тема, что через резистор 200 Ом можно подключить пин напрямую к кнопке и связать земли, тогда digitalWrite(LOW) будет восприниматься как нажатие (leshak - писал)

Как это реализовать? Получается, что например из 9 пина выходит провод, через резистор 200 ом приходит к контакту который показывает +5В, а пин GND дуины соединяется проводом с контактом кнопки, который показывает -5В. Или GND надо в разъём с чёрным проводом из блока питания компа? 

Кнопка в CD-Rom явно не подачей питания управляет, как минимум драйвером мотора.  

 

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Ну если сделаете общую землю (GND ардуины к земле платы, на которой кнопка находится) то с 9го пина можно просто подать 5В на тот край кнопки, где нет 5В... Правда надо быть уверенным, что ток через кнопку течет небольшой весьма... Ну это как один из вариантов)

Focus
Offline
Зарегистрирован: 05.04.2015

0_О

жескач

Сунь один конец цэшки на корпус сдрома второй к кнопке. Скорее всего один вывод кнопки всегда будет показывать 0, на втором +5, который при нажатии становица 0в, если так, переключи цэшку в режым измерения тока и подключи один конец так-же к корпусу сдрома, второй на вывод кнопки на котором +5. если ток не превышает 40мА та подключай так: gnd ардуины на корпус сдрома (ну или к одному из 2х черных проводов на молексе, они в центре, но лучше всётаки к массе который на плате сдрома или с тойже кнопки, где всегда 0в, ато при выдёргивании кабеля питание может чтонибудь произойти нехорошее) а цифровой пин ардуины к выводу кнопки где всегда +5 (пока кнопка не нажата) для безопасности через 200омный резистор (можно 300, 400, вообщем что под рукой есть) и управляй через digitalWrite(LOW).

если же на кнопке (относительно корпуса сдрома) на одном из выводов всегда присутствует +5 (хоть нажата кнопка, хоть нет) а на другом 0в а при нажатии 5в, то гнд ардуины суёш так-же на массу, а цифровой пин ардуины суёш туда где 0в а при нажатии 5в, так же через резистор, только управлять в таком случае надо digitalWrite(HIGH)

Но какойнибудь извращённый производитель может туда запросто запилить управление отрицательным (относительно массы) напряжением, тогда придется заморачиваться с оптопарой или хардкорно - реле :)

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Focus пишет:

Но какойнибудь извращённый производитель может туда запросто запилить управление отрицательным (относительно массы) напряжением, тогда придется заморачиваться с оптопарой или хардкорно - реле :)

Только я хотел реле предложить))))

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Шаговик + рычаг :)

Focus
Offline
Зарегистрирован: 05.04.2015

JollyBiber пишет:

Шаговик + рычаг :)

Сервой аккуратнее можно нажымать, нежнее :D

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Dimarduino пишет:

и срабатывает при замыкании контактов проводником, а также резисторами на 1 КОм и 2 КОм, но не срабатывает при 5,1 КОм. 

Берем реостат на 5+ килограмм))) И вышеупомянутые серву/шаговик....)))

Focus
Offline
Зарегистрирован: 05.04.2015

или 2 сервы, на одной один проводок от кнопки, ну другой - второй проводок, провода оголённые, сервоприводы по команде движут рычати с проводамина встречу друг-другу и замыкают, потом возвращаются в исходное состояние.

Хотя с реостатом чётче вариант :)

Dimarduino
Offline
Зарегистрирован: 16.08.2015

Спасибо большое за ответы! 

Особенно доходчиво Focus разъяснил - я два раза прочитал и прозрел! 

Вечером буду пробовать.   :) 

 

vvadim
Offline
Зарегистрирован: 23.05.2012

Dimarduino пишет:

Спасибо большое за ответы! 

Особенно доходчиво Focus разъяснил - я два раза прочитал и прозрел! 

 

 

нужно ещё и уверовать

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Dimarduino пишет:

Спасибо большое за ответы! 

Особенно доходчиво Focus разъяснил...

Про реле с сервой особенно)))

kayot
kayot аватар
Offline
Зарегистрирован: 11.04.2014

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

Andrey-S
Offline
Зарегистрирован: 02.01.2015

А еще можно просто в компе правой кнопкой по дисководу - "Извлечь")))

kayot
kayot аватар
Offline
Зарегистрирован: 11.04.2014

была софтина шутка которая телегу двигала туда сюда

Andrey-S
Offline
Зарегистрирован: 02.01.2015

kayot пишет:

была софтина шутка которая телегу двигала туда сюда

Точно... Пожалуй, это самый простой и дешевый и надежный вариант.)

Dimarduino
Offline
Зарегистрирован: 16.08.2015

Зарабортало!!!

Подключился по первому варианту:  

На кнопке лотка один контакт постоянно +5 В и 0 В при нажатии, другой контакт - абсолютный ноль.

При замыкании контактов в режиме измерения силы тока происходит срабатывание мотора и сила тока 477 микроА или ~0,5 мА.

Подключил Arduino Uno: 12 пин к контакту +5В через 200 ом, GND к 0. 

Скетч CD-Rom_Blink:  

int Pin = 12;                 // Подключение выхода 12 к контакту +5В кнопки CD
void setup()
{
  pinMode(Pin, OUTPUT);      // устанавливает режим работы - выход
}

void loop()
{
  digitalWrite(Pin, HIGH);   // Устанавливает постоянный уровень +5В на выходе 12 
  delay(3000);               // Определяет время - сколько лоток будет неподвижным. 
  digitalWrite(Pin, LOW);    // Имитирует нажатие кнопки 
  delay(50);                 // держит в нажатом состоянии. 
                             // Если 10 мс - срабатывает через раз или два. 50 - стабильно. 
}
Dimarduino
Offline
Зарегистрирован: 16.08.2015

Вообще, интересно, а почему нельзя то же самое через pinMode(INPUT) управлять?

Из того как написано в разделе программирование  можно предположить, что digitalWrite(HIGH) равноценен прикладыванию к контактам кнопки резистора в 20KОм. А digitalWrite(LOW) убирает этот "резистор".  Но эксперимент показал, что через INPUT - не реагирует. 

 

Focus
Offline
Зарегистрирован: 05.04.2015

Помоему вы вообще не понимаете как всё это работает. Какие 20кОм? pinMode(INPUT) переводит пин в режим входа и если не включать подтяжку резистором, то вывод ничего не выдает, он находится в третьем состоянии, какбудто в воздухе болтается. если включить подтяжку, то вывод, дабы не болтался в воздухе, подтягивается резистором к плюсу.

А вам что нужно было? Сделать чтобы ардуина выдавала сигнал! а это уже pinMode(OUTPUT). в этом режиме на пине ардуины может быть только либо 0 (digitalWrite(LOW) тоесть какбудто бы замкнут на массу) и 5в (digitalWrite(HIGH) как будто бы замкнут с +5в) и никаких подтягивающих резисторов тут нет.

Dimarduino
Offline
Зарегистрирован: 16.08.2015

Я предполагал, что есть возможность организовать между пинами "размыкатель". Написал в программе какую-нибудь функцию - возник между пинами проводник, написал другую - диэлектрик. Это бы очень упростило жизнь, даже с тем же подключением к кнопке. 

Focus
Offline
Зарегистрирован: 05.04.2015

размыкатель это уже периферия, это может быть например реле, тиристор, полевик - всё это размыкатели. На практике удобней и универсальней работать с логическими 0 и 1, а размыкалку уже каждый под свои нужды подберает :)

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Эх вот бы все так просто было))) Каждый второй бы понаделал космических аппаратов уже

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

pinMode(OUTPUT, BEER);

Focus
Offline
Зарегистрирован: 05.04.2015

JollyBiber пишет:

pinMode(OUTPUT, BEER);

Такое только на дистилятородуино руских работает :D

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Andrey-S пишет:
Эх вот бы все так просто было))) Каждый второй бы понаделал космических аппаратов уже

Так и понаделали уже :)

Каждый второй не туда улетает.

Radjah
Offline
Зарегистрирован: 06.08.2014

Релюху повесь или оптрон, только про резисторы не забудь, а то попалишь всё. :)