Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Alexander
ЛА
Зарегистрирован: 08.10.2008
Сообщения: 2762 Благодарности: 241
Откуда: Минск
|
Добавлено: Чт Июл 07, 2016 11:30 Заголовок сообщения: |
|
|
Сегодня вечером помучаю ее еще. Может в самом деле контакты паленые так попались. Хотя я к ним ничего кроме драйвера мотора не подключал.
_________________ Celestron C8, GSO 150/600
|
|
Вернуться к началу |
|
|
Alexander
ЛА
Зарегистрирован: 08.10.2008
Сообщения: 2762 Благодарности: 241
Откуда: Минск
|
Добавлено: Чт Июл 07, 2016 20:53 Заголовок сообщения: |
|
|
Проблему нашел. Оказался банальный непропай . И непропай именно двух контактов - 5 и 10. Все нормально включается и работает.
_________________ Celestron C8, GSO 150/600
|
|
Вернуться к началу |
|
|
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6184 Благодарности: 75
|
Добавлено: Чт Июл 07, 2016 22:34 Заголовок сообщения: |
|
|
А преподнёс так, будто из ардуины они не вылезают... И отсёк варианты, когда предлагали это проверить.
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
|
|
Вернуться к началу |
|
|
Alexander
ЛА
Зарегистрирован: 08.10.2008
Сообщения: 2762 Благодарности: 241
Откуда: Минск
|
Добавлено: Пт Июл 08, 2016 10:21 Заголовок сообщения: |
|
|
Я ничего не отсекал. Проверил напряжения на контактах, прозвонил на всякий случай провода. Но такое совпадение с двумя триплетами контактов сбило с толку. И сразу проверить пайку не догадался. Тем более, что все контакты были канифолью залиты и огрехов видно не было. Отмыл канифоль и ужаснулся - куча раковин, три контакта практически без припоя. Я думал штыревые контакты луженые, а они какой-то дрянью покрыты и с канифолью очень плохо паяются. Пришлось паять с кислотой.
_________________ Celestron C8, GSO 150/600
|
|
Вернуться к началу |
|
|
Lupus
RadioAdmin
Зарегистрирован: 10.07.2007
Сообщения: 4337 Благодарности: 100
Откуда: Minsk, Belarus
|
Добавлено: Пт Июл 08, 2016 22:16 Заголовок сообщения: |
|
|
Alexander писал(а): | Я думал штыревые контакты луженые, а они какой-то дрянью покрыты и с канифолью очень плохо паяются. Пришлось паять с кислотой. |
Какие-то уж совсем китайские попались, у меня никогда проблем не было с ними -- канифоли хватало.
_________________
_________________________________________________
"Вит, cкоро Геминиды!" (с) Pova
"Познавший себя -- собственный палач." (с) Ф. Ницше
"Просто я живу на улице Ленина
И меня зарубает время от вре-ме-ни..." (с) Ф. Чистяков
|
|
Вернуться к началу |
|
|
Alexander
ЛА
Зарегистрирован: 08.10.2008
Сообщения: 2762 Благодарности: 241
Откуда: Минск
|
Добавлено: Сб Июл 09, 2016 15:21 Заголовок сообщения: |
|
|
Lupus писал(а): | Alexander писал(а): | Я думал штыревые контакты луженые, а они какой-то дрянью покрыты и с канифолью очень плохо паяются. Пришлось паять с кислотой. |
Какие-то уж совсем китайские попались, у меня никогда проблем не было с ними -- канифоли хватало. |
Контакты шли в комплекте с платой. Цвет серебристый, но не луженые. Есть у меня контакты золотистого цвета и они паяются отлично.
Есть вопрос по поводу использования кнопок. Код, по идее, должен работать следующим образом:
1. Нет сигнала на аналоговом входе - мотор стоит.
2. При появлении короткого импульса на аналоговом входе мотор должен совершить один оборот и остановиться.
3. При постоянном сигнале на входе мотор должен непрерывно вращаться.
Пункты 1 и 3 работают, как и ожидается. А вот со вторым какая-то ерунда. Мотор делает не один, а около 16 оборотов и только потом останавливается. Если убрать условие "while" и добавить "exit" при окончании цикла, то мотор делает ровно один оборот.
Это особенность считывания сигналов платой или кривой код?
Код: | const int stepPin = 8;
const int dirPin = 9;
const int M1 = 5;
const int M2 = 6;
const int M3 = 7;
const int d10 = 10;
const int d11 = 11;
const int d12 = 12;
void setup() {
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(M1,OUTPUT);
pinMode(M2,OUTPUT);
pinMode(M3,OUTPUT);
pinMode(d10,OUTPUT);
pinMode(d11,OUTPUT);
pinMode(d12,OUTPUT);
}
void loop() {
while(digitalRead(14)==HIGH) {
digitalWrite(dirPin,HIGH);
digitalWrite(M1,HIGH);
digitalWrite(M2,HIGH);
digitalWrite(M3,HIGH);
digitalWrite(d10,HIGH);
digitalWrite(d11,HIGH);
digitalWrite(d12,HIGH);
for(int h = 0; h< 1; h++) {
for(int x = 0; x < 6400; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(30);
digitalWrite(stepPin,LOW);
delayMicroseconds(30);
}
}
}
} |
_________________ Celestron C8, GSO 150/600
|
|
Вернуться к началу |
|
|
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6184 Благодарности: 75
|
Добавлено: Сб Июл 09, 2016 15:57 Заголовок сообщения: |
|
|
Те пины, которые тебе нужно слушать, настраиваешь на INPUT. Учти, что если нет подтяжки уровня, контакты могут показывать всё что угодно, поэтому лучше программно внутренним резистором на 10к подтянуть уровень входа к высокому напряжению, а кнопкой нужно прижимать пин к земле.
Код: |
void setup()
{
pinMode(pin, INPUT); // настроить на вход
digitalWrite(pin, 1); // включить подтягивающий резистор
}
void loop()
{
if (digitalRead(pin) == 0) // кнопка нажата
{
// сделать шаг
}
}
|
Смотри в общем картинку, там понятнее должно быть
Описание: |
|
Размер файла: |
11.8 KB |
Просмотрено: |
7871 раз(а) |
|
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
|
|
Вернуться к началу |
|
|
Ветер
ЛА
Зарегистрирован: 21.08.2014
Сообщения: 1266 Благодарности: 132
|
Добавлено: Сб Июл 09, 2016 17:02 Заголовок сообщения: |
|
|
Если ориентироваться на встроенный резистор, тогда режим должен быть INPUT_PULLUP
|
|
Вернуться к началу |
|
|
Alexander
ЛА
Зарегистрирован: 08.10.2008
Сообщения: 2762 Благодарности: 241
Откуда: Минск
|
Добавлено: Сб Июл 09, 2016 17:04 Заголовок сообщения: |
|
|
Спасибо. Так срабатывает уже как и должен. Но появилась другая проблема - мотор самопроизвольно меняет направление вращения.
_________________ Celestron C8, GSO 150/600
|
|
Вернуться к началу |
|
|
Ветер
ЛА
Зарегистрирован: 21.08.2014
Сообщения: 1266 Благодарности: 132
|
Добавлено: Сб Июл 09, 2016 17:06 Заголовок сообщения: |
|
|
Мистика) А в каких случаях это происходит? Или абсолютно случайно?
|
|
Вернуться к началу |
|
|
Alexander
ЛА
Зарегистрирован: 08.10.2008
Сообщения: 2762 Благодарности: 241
Откуда: Минск
|
Добавлено: Сб Июл 09, 2016 17:08 Заголовок сообщения: |
|
|
Случайно. Может сделать пару оборотов в одном направлении, потом меняет и делает несколько в другом. Зависимости нет. Правда вместо кнопки я просто минусовой провод к контакту кратковременно подключаю. Может из-за дребезга такая ерунда.
_________________ Celestron C8, GSO 150/600
|
|
Вернуться к началу |
|
|
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6184 Благодарности: 75
|
Добавлено: Сб Июл 09, 2016 17:20 Заголовок сообщения: |
|
|
У тебя две кнопки за направление отвечают? Или одна за направление, вторая за включение-выключение?
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
|
|
Вернуться к началу |
|
|
Alexander
ЛА
Зарегистрирован: 08.10.2008
Сообщения: 2762 Благодарности: 241
Откуда: Минск
|
Добавлено: Сб Июл 09, 2016 17:23 Заголовок сообщения: |
|
|
Кнопка только одна, которая запускает цикл. Направление жестко задано в параметрах цикла.
_________________ Celestron C8, GSO 150/600
|
|
Вернуться к началу |
|
|
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6184 Благодарности: 75
|
Добавлено: Сб Июл 09, 2016 18:54 Заголовок сообщения: |
|
|
Похоже на дребезг. Можно вот как сделать:
Код: |
bool isButtonPressed(int pin)
{
if (digitalRead(pin) == 0)
{
delay(2);
return digitalRead(pin) == 0;
}
return false;
}
|
Эта функция проверит, нажата ли кнопка, и если да, то остаётся ли она нажатой в течение 2 мс.
А можно посадить кнопку на пин 3 и повесить прерывания на кнопку: https://www.arduino.cc/en/Reference/AttachInterrupt
Ну и самое правильное решение - параллельно кнопке повесить конденсатор хотя бы на 10 000 пФ.
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
|
|
Вернуться к началу |
|
|
Anton Dodonov
ЛА
Зарегистрирован: 11.01.2010
Сообщения: 182 Благодарности: 13
Откуда: г.Речица. Гомельская обл.
|
Добавлено: Ср Июл 13, 2016 17:30 Заголовок сообщения: |
|
|
А! Вот образовалась родственная моему занятию тема. Тоже сооружаю привод ведения на ардуино (только слегка своеобразный - та же плата одновременно управляет и фокусером). Я сразу вообще без step-dir драйвера управлял униполярными ШД, в полушаге, набором ключей uln2003A. Но это "от лукавого", конечно. А вот DRV8825 у меня работают вполне приемлемо и тихо. Каким напряжением их питали? Не могло ли быть просадок, а то у них от недонапруги мозги на бекрень съезжают, причем весьма разнообразными способами :))
_________________ PowerSeeker 70 EQ1, БПЦ 7х35, Canon EOS 550D (EF 50mm f/1,8; Porst super-tele 200mm f/3.5).
|
|
Вернуться к началу |
|
|
Alexander
ЛА
Зарегистрирован: 08.10.2008
Сообщения: 2762 Благодарности: 241
Откуда: Минск
|
Добавлено: Ср Июл 13, 2016 19:38 Заголовок сообщения: |
|
|
Напряжение 12 В. Вначале запитывал от компьютерного БП, сейчас стоит стабилизатор на LM2596. Просадок никаких нет. A4988 питается совершенно тем же и работает нормально.
_________________ Celestron C8, GSO 150/600
|
|
Вернуться к началу |
|
|
Pikrat
ЛА
Зарегистрирован: 14.07.2016
Сообщения: 4 Благодарности: 0
|
Добавлено: Чт Июл 14, 2016 12:48 Заголовок сообщения: |
|
|
Добрый день!
Alexander, Вам удалось решить проблему с пропуском шагов в микрошаге 1/16?
Я столкнулся с такой же проблемой на nema17+a4988+nano168. Только у меня шаговик не проскакивает пропущенные шаги на большей скорости, а просто останавливается на миг каждую секунду-две.
|
|
Вернуться к началу |
|
|
Alexander
ЛА
Зарегистрирован: 08.10.2008
Сообщения: 2762 Благодарности: 241
Откуда: Минск
|
Добавлено: Чт Июл 14, 2016 13:33 Заголовок сообщения: |
|
|
Проблема, к сожалению, осталась. Решил ставить более точный мотор и редуктор и либо полностью отказываться от микрошага, либо ставить режим 1/2.
Подобного поведения, как вы описали, я у себя не наблюдал.
_________________ Celestron C8, GSO 150/600
|
|
Вернуться к началу |
|
|
Pikrat
ЛА
Зарегистрирован: 14.07.2016
Сообщения: 4 Благодарности: 0
|
Добавлено: Чт Июл 14, 2016 14:00 Заголовок сообщения: |
|
|
Мне рекомендовали подавать на драйвер 27В вместо 12В. Вы не пробовали так?
Последний раз редактировалось: Pikrat (Чт Июл 14, 2016 15:13), всего редактировалось 1 раз
|
|
Вернуться к началу |
|
|
Ветер
ЛА
Зарегистрирован: 21.08.2014
Сообщения: 1266 Благодарности: 132
|
Добавлено: Чт Июл 14, 2016 14:14 Заголовок сообщения: |
|
|
Напряжение можно поднять, хотя бы до 24В. А плавность хода регулировать подстроечником на плате драйвера. Для этого на вал мотора вешается стрелка, запускается прошивка с заметной скоростью вращения вала в микрошаге и крутится подстрочник с поглядыванием на стрелку
|
|
Вернуться к началу |
|
|
|