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

Rom327

✩✩✩✩✩✩✩
24 Ноя 2019
11
0
Приветствую уважаемое сообщество!
Пытаюсь повторить проект наливатора от alexgyver. https://alexgyver.ru/gyverdrink
Использую версию прошивки 1.5, серва на 300 градусов https://aliexpress.ru/item/32963192117.html
По заявлению продавца для этой сервы необходимо PWM ширина сигнала 500-2500us.
Серва 100% рабочая, вращается на 300+ градусов, проверял на другом проекте:

Столкнулся с такой проблемой: серва больше чем на 280 градусов крутится не хочет... Подскажите, где-чего надо прописать/переписать?
Спасибо!
 

s1uggard

★✩✩✩✩✩✩
15 Сен 2020
48
13
Серву можно без драйвера подключить
можно через транзистор, мосфет, ещё один драйвер или, как написал Stirlitz исполь
Спасибо, буду искать подробней как это сделать. Правда потом. Сейчас хоть что-то бы привести в порядок.


Ещё вопрос - а никто не делал разводку платы? Чтоб можно было у китайцев заказать например.
А то пытаюсь у себя на двусторонней макетке сделать по нормальному, но что-то как-то не очень (куча проводков, раздолбанные отверстия от попыток выколупать лишнее напаянное и т.д. ) :)
 

Rom327

✩✩✩✩✩✩✩
24 Ноя 2019
11
0
@
@Rom327, в файле a_setup
servo.attach(SERVO_PIN, 500, 2500);

Спасибо за ответ! Пробовал, не крутит на 300 градусов... Мне кажется тут упирается в ограничения в используемых для серво библиотеках. Но программист я никакой, а механика на 90% уже собрана... обидно... Буду благодарен за помощь!
 

Вложения

Изменено:

Stirlitz

★✩✩✩✩✩✩
8 Дек 2019
61
26
А что там надо для работы от аккумулятора какой контроллер?
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
А что там надо для работы от аккумулятора какой контроллер?
модуль TP4056. Есть две версии модуля на этом контроллере - одна с защитой от глубокого разряда, другая без. На модуле с защитой дополнительно стоит мосфет и контролер(DW01A), который его закрывает, если напряжение сильно проседает. Изначально ток заряда - 1А, который регулируется заменой резистора
 

Rom327

✩✩✩✩✩✩✩
24 Ноя 2019
11
0
@Rom327, тогда в файле GyverDrink_v1.5.ino
Замените ServoSmooth servo;
На ServoSmooth servo(300);
Прописал:
ServoSmooth servo(300);
...
servo.attach(SERVO_PIN, 450, 2550);
...
Серва вращается только на 180 градусов...

Затем прописал в "c_func"
servoPos = constrain(servoPos, 0, 300);
Серва вращается на 280 градусов... максимальные показания индикатора тоже стало 300. Уже близко к желаемому!!!

Прописал углы для рюмок:
const byte shotPos[] = {0, 60, 120, 180, 240, 300};
С 1 по 5 более-менее подходят. При замыкании А5 серва вращается только на 30 градусов....
 
Изменено:

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
@Rom327, точно, забыл, что там ещё ограничивается угол.

Прописал углы для рюмок:
const byte shotPos[] = {0, 60, 120, 180, 240, 300};
С 1 по 5 более-менее подходят. При замыкании А5 серва вращается только на 30 градусов....
тут происходит переполнение переменной типа byte, которая может принимать максимум 255. Если назначаете ей 300, она переполняется и сохраняет 45.
Чтобы это решить измените const byte shotPos[] на const int shotPos[]
 

Rom327

✩✩✩✩✩✩✩
24 Ноя 2019
11
0
@Rom327, точно, забыл, что там ещё ограничивается угол.


тут происходит переполнение переменной типа byte, которая может принимать максимум 255. Если назначаете ей 300, она переполняется и сохраняет 45.
Чтобы это решить измените const byte shotPos[] на const int shotPos[]
Спасибо! А5 пошло вращение, но только до угла 280 градусов. До 300 недокручивает... Видимо еще остались ограничения по длительности импульса (2400)
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Да, вот эти нестандартные сборки интересны, но очень многое цепляют. Пришлось корректировать библиотеку для шаговика с редуктором.. Углы же тоже в байте хранил. А потом понял. что можно было не корректировать библиотеку, а просто увеличить или уменьшить число шагов мотор, в зависимости от типа редукции..
 

Rom327

✩✩✩✩✩✩✩
24 Ноя 2019
11
0
Да, вот эти нестандартные сборки интересны, но очень многое цепляют. Пришлось корректировать библиотеку для шаговика с редуктором.. Углы же тоже в байте хранил. А потом понял. что можно было не корректировать библиотеку, а просто увеличить или уменьшить число шагов мотор, в зависимости от типа редукции..
СПАСИБО ЗА ПОМОЩЬ!!!
Все! Победил!!!
Перенес библиотеки Servo.h, Servo.cpp, ServoSmooth.h, ServoSmooth.cpp, папку AVR в папку с проектом.
Везде изменил тип библиотек с < > на " ".
В Servo.h и ServoSmooth.h изменил длительности импульсов на 500-2500.
Может сделал каряво, но за то работает!
Прикладываю архив, может кому пригодится!
Буду признателен, если кто подскажет как это надо было делать правильно.
 

Вложения

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
@Rom327, да, действительно, ServoSmooth использует стандартную библиотеку servo.h и подключает двигатель с максимальным импульсом 2400, даже если вызывали метод attach(pin, 500, 2500); из ServoSmooth.
Решается корректированием вышеуказанного метода в библиотеке ServoSmooth с вызовом метода из Servo.h: attach(pin, min, max);
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
Как вы добились нормальной работы от датчиков TTP223 ?
Хоть и не мне вопрос, но отвечу: просто повезло. Эти датчики даже у одного и того же продавца и в одной партии могут быть разными, одни будут удерживать состояние, другие нет. Поэтому если хочется ёмкостные датчики поставить, то лучше всего TTP224 или TTP229
 

mosic

★✩✩✩✩✩✩
3 Июн 2020
130
14
всем привет. подскажите, как можно заставить помпу качать быстрее? а то 8000мс для 50 мл это реально долго. спасибо
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
Обновление v5.1
  • ускоренна анимация
  • добавленна возможность выбора одного из двух шрифтов для отображения больших цифр (объём, угол, напряжение). #define NUM_FONT
  • убавленна яркость в режиме ожидания до минимума
IMG_20201005_123914.jpgIMG_20201005_124004.jpg
 

TimicH

★★✩✩✩✩✩
9 Фев 2020
127
60
63
Новосибирск
Сейчас "не щадно" погонял серву с библиотекой USE_TICOSERVO
Вывод - углы старается держать точнее чем стандартная, конечно до идеала ей далеко ещё.
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
@TimicH, подёргивания серво пропали? Или их не было? Я просто особо разницы не заметил, так как на макете проверяю и подёргивания что с этой библиотекой, что со стандартной были из-за питания от USB. И в чём проявляется "не идеальное" поведение?
Вообще думаю может всё-таки отказаться от ускорений серво. Толку от них не много
 

TimicH

★★✩✩✩✩✩
9 Фев 2020
127
60
63
Новосибирск
@TimicH, подёргивания серво пропали? Или их не было? Я просто особо разницы не заметил, так как на макете проверяю и подёргивания что с этой библиотекой, что со стандартной были из-за питания от USB. И в чём проявляется "не идеальное" поведение?
Вообще думаю может всё-таки отказаться от ускорений серво. Толку от них не много
Ну я бы не сказал подёргивания, скорее не попадание в точку (установленную) налива, вот новая библиотека стреляет в 8, старая в 6-7 от из начально установленного угла.
Я кроме как от повербанка и не питаю ничем.
Ускорение сервы я и так всегда уменьшаю до 30.

@VICLER - подёргивания серво пропали?
"Подёргиваний" у меня нет, только что проверил

Давно забываю сказать - вот такую "Кракозябру" обнаружил (с лева от цифр), примерно с версии .... (начало использования OLEG) после спящего режима.
При значениях меньше 10 она вылезает, а потом исчезает.
Если "крутить туда-сюда" но в пределах значений 1-9, кракозябра не исчезает.
Всё это на этапах тестирования и в практике не применимо, поэтому на это можно "забить" ;)

IMG_20201005_215943_новый размер.jpgIMG_20201005_215956_новый размер.jpgIMG_20201005_220010_новый размер.jpgIMG_20201005_220018_новый размер.jpg

#define SERVO_ACCEL 10 // ускорение серво в процентах
Честно говоря, я до сих пор не понимаю, что это такое :(
Ну и это не совсем понятно, что значит в процентах - #define SERVO_SPEED 30 // скорость серво в процентах
 
Изменено:

Roman-RV

★✩✩✩✩✩✩
21 Июн 2019
52
15
46
Уберите к чертям это ускорение с float из библиотеки, возможно будет лучше. Я вообще не понимаю зачем это нужно, для данных серв
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
@Roman-RV, да, пожалуй так и сделаю. На самом деле их и ускорениями сложно назвать. Хотел давно убрать, но что-то не доходил всё до этого.

@TimicH,
Кракозябру исправлю)
А скорость в процентах чем больше, тем быстрее(100% максимальная скорость). Ускорение чем меньше в процентах, тем медленнее разгон и торможение. 100% ускорение - выход на заданную скорость сразу же, без разгона.

Я правильно понимаю, что если в калибровке установили угол, а потом, при наливе серво не доезжает до этого угла?
 
Изменено: