ARDUINO Наливатор. Обсуждение проекта

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
Изменено:

Konder885

★✩✩✩✩✩✩
23 Ноя 2019
81
16

Praporatorr

★★★✩✩✩✩
8 Дек 2019
86
108
очень аккуратно и стильно!
А из чего сделали ящик и столб?
Не знаю как он точно называется. Какой-то пластик рекламщики из него различные стенды делают. Отлично режется китайским лазером 3000mW и на мертво клеится суперклеем. Экспропреировал на работе стенд по охране труда :), нарезал из него конструктор. Ну а дальше склейка покраска. Сенсоры залил эпоксидкой смешанной с тонером для лазерного принтера :).
 
Изменено:

Praporatorr

★★★✩✩✩✩
8 Дек 2019
86
108
А как энкодер заменить на кнопки, тоже думаю.Сейчас пробую заменить концевики на ттп224
Я просто посадил сенсор на один контакт предназначенный для подключения энкодэра, второй подтянул на землю 10кОм. Работает только в плюс по кругу от 10 до 50мл. Кнопка для прокачки не используется - я решил что для меня это лишняя функция :).
 
Изменено:

Konder885

★✩✩✩✩✩✩
23 Ноя 2019
81
16
Я просто посадил сенсор на один контакт предназначенный для подключения энкодэра, второй подтянул на землю 10кОм. Работает только в плюс по кругу от 10 до 50мл. Кнопка для прокачки не используется - я решил что для меня это лишняя функция :).
У меня работает в минус и не по кругу , не прокатило.
 

Носмас

✩✩✩✩✩✩✩
12 Дек 2019
64
6
Коллеги.
Собрал, завелось с первого раза. пробывал стоковую прошивку и модифицированную Левонти.
В обоих случаях такая картина:
1. Направление вращения энкодера изменяет значения грамм как то не по русски, а именно что вращение по часовой. стрелке убавляет значения;
2. При работе налива, например, гусак дергается (рывками что ли) во время перемещения, соответственно капает с него в этот момент. Грешу на серву. Гусак металлический, внутри силиконовая трубка - может тяжеловат?
Подскажите куда копать добрые люди
 
Изменено:

Praporatorr

★★★✩✩✩✩
8 Дек 2019
86
108
Коллеги.
Собрал, завелось с первого раза. пробывал стоковую прошивку и модифицированную Левонти.
В обоих случаях такая картина:
1. Направление вращения энкодера изменяет значения грамм как то не по русски, а именно что вращение по часовой. стрелке убавляет значения;
2. При работе налива, например, гусак дергается (рывками что ли) во время перемещения, соответственно капает с него в этот момент. Грешу на серву. Гусак металлический, внутри силиконовая трубка - может тяжеловат?
Подскажите куда копать добрые люди
Я просто поменял местами провода на энкодэре.
 
  • Лойс +1
Реакции: Gusha

Konder885

★✩✩✩✩✩✩
23 Ноя 2019
81
16
// пин clk, пин dt, пин sw, направление (0/1), тип (0/1)
encMinim enc(ENC_CLK, ENC_DT, ENC_SW, 1, 1);
 
  • Лойс +1
Реакции: medwed

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
Господа! Подскажите пожалуйста, как в автоматическом режиме сделать задержку между постановкой рюмки и срабатыванием сервы, Чтобы успеть убрать руку? прошивка Левонти.

и еще вопрос, как сделать, чтобы при выборе объема не было отрицательных значений?
 
Изменено:

YmitY

✩✩✩✩✩✩✩
18 Дек 2019
14
2
Подскажите пожалуйста , у сервака " 0 " не справа а слева ? подключен по схеме !
 

medwed

★✩✩✩✩✩✩
12 Дек 2019
8
27
Господа! Подскажите пожалуйста, как в автоматическом режиме сделать задержку между постановкой рюмки и срабатыванием сервы, Чтобы успеть убрать руку? прошивка Левонти.

и еще вопрос, как сделать, чтобы при выборе объема не было отрицательных значений?
Покажите, что у вас в void encTick() из файла d_control.ino
 

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
@medwed, все что есть в d_control:

// кнопки-крутилки

void encTick() {
enc.tick();
if (enc.isTurn()) {
timeoutReset();
if (enc.isLeft()) {
thisVolume += 5;
}
if (enc.isRight()) {
thisVolume -= 5;
}
dispMode();
}
}

void btnTick() {
if (btn.holded()) {
timeoutReset();
workMode = !workMode;
dispMode();
}
if (encBtn.holded()) {
pumpON();
while (!digitalRead(ENC_SW));
timeoutReset();
pumpOFF();
}
}
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
@medwed, все что есть в d_control:

// кнопки-крутилки

void encTick() {
enc.tick();
if (enc.isTurn()) {
timeoutReset();
if (enc.isLeft()) {
thisVolume += 5;
}
if (enc.isRight()) {
thisVolume -= 5;
}
dispMode();
}
}

void btnTick() {
if (btn.holded()) {
timeoutReset();
workMode = !workMode;
dispMode();
}
if (encBtn.holded()) {
pumpON();
while (!digitalRead(ENC_SW));
timeoutReset();
pumpOFF();
}
}
После
thisVolume -=5;
}

Добавьте:
thisVolume = constrain(thisVolume, min, max);
Где min = минимальное значение объёма, а max = максимальное
 
  • Лойс +1
Реакции: konoev

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
А сами значения min и max куда ставить нужно? Извините, никак я не догоню как этот скетч пишется...

ну то есть min и max где то объявить нужно, а где это можно сделать?
 
Изменено:

Носмас

✩✩✩✩✩✩✩
12 Дек 2019
64
6
Подскажите пожалуйста , у сервака " 0 " не справа а слева ? подключен по схеме !
Тут уже писали про это. Когда я собрал свой, то понял в чем дело. В оригинальном проекте и скечах сделано: серва стоит осью вниз, а кто то делает осью вверх, соответсвенно направление наоборот
 

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
просто впишите вместо min и max желаемые значения. Например:
thisVolume = constrain(thisVolume, 5, 200);
Спасибо за помощь, все работает. Вот бы еще задержку на серву сделать. И еще когда серва к рюмке едет, она дергается как то. Похоже на то, что она каждые 5 градусов остановку на доли секунды делает. Обратно крутит плавно.
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
Спасибо за помощь, все работает. Вот бы еще задержку на серву сделать. И еще когда серва к рюмке едет, она дергается как то. Похоже на то, что она каждые 5 градусов остановку на доли секунды делает. Обратно крутит плавно.
для задержки можете использовать delay. В файле c_func в функции flowTick() после строк
if (servo.tick()) { // если приехали
systemState = PUMPING; // режим - наливание

добавьте if(workMode) delay(сюда впишите задержку в миллисекундах); // задержка перед наливом в автоматическом режиме

правда эта задержка будет перед налитием каждой рюмки. То есть если поставите первую - система подождёт до начала налива, потом будет наливать. Если во время налива поставить ещё пару рюмок, то эта задержка будет перед каждой рюмкой. Другого варианта без усложнения прошивки пока не приходит в голову.
 

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
нет. немножко не так. Нужна задержка после постановки стакана и перед движением сервы, а не остановкой и наливанием. Чтобы после установки стакана руку успевать убрать. А то знаете ли, с трезву еще так сяк, а после н ного количества выпитого реакция уже не та :)
 
Изменено:

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
это, по видимому, где то сдесь должно быть.

// наливайка, опрос кнопок
void flowTick() {
if (FLOWdebounce.isReady()) {
for (byte i = 0; i < NUM_SHOTS; i++) {
if (!digitalRead(SW_pins) && shotStates == NO_GLASS) { // поставили пустую рюмку