ARDUINO Помогите разобраться. Не корректная работа серво.

Remmert

✩✩✩✩✩✩✩
8 Ноя 2022
4
0
Всех приветствую.
Суть: Заказал здесь проверенному мастеру скетч arduino. Набросал тз и оплатил... И в итоге у кодера все работает, а юзверь рукожоп.
Ну да ладно, это вопрос другой темы, сейчас хочу разобраться с работоспособностью устройства.

Само устройство - три сервы+кулер+дисплей+энкодер+время+дунька. Суть работы - тупо таймер. На каждую серву и кулер пять таймеров. Для кулера вкл/выкл, для сервы проворот на определенное количество градусов и возврат. Грубо - кулер тупо вентилирует а сервы открывают и закрывают окошки. Всё. Менюшка.

В процессе сборки много слов было проговорено с создателем скетча... Выявлены некоторые ошибки схемы подключения для пользователя. В конечном итоге всё собрано, но по какой то неведомой мне причине - при подключении сервы на прописанные выводы она постоянно вращается. Не зависимо вообще от активации таймера как такового для конкретного вывода или его состояния ежели он активирован. На видео.

Сервы по проводам подключены совершенно точно правильно - даже разбирал и отслеживал где провод управления S. Сервы рабочие - куплен тестер сервоприводов и все проверено. Платы ардуино тоже точно рабочие - менялись платы, прошивались примеры теста сервы - все работает. Проверялись выводы - прописывались иные. Картина та же -крутится. Сервы подключались по питанию как не правильно - через саму дуньку, так и правильно - от отдельного источника питания.

Так что никакие ухищрения не позволили мне понять в чем трабл. Так же проблема в том, что мои познания в коде на уровне опытного пользователя 3D принтера. То есть я могу настроить прошивку, менять там выводы, углы поворотов сервы и тп. Тупо пользовательские настройки. Сама суть кода - функции/шмункции и прочее мне неведомы.

Вынужден обратиться за помощью к более сведущим. Хочу разобраться почему сервоприводы SG90 не корректно работают?


Здесь сам код в txt https://drive.google.com/file/d/1dBTHfKYQYMe7MGOe6EGcfj-8LFRWP0nJ/view?usp=sharing
 

te238s

★★✩✩✩✩✩
14 Ноя 2021
374
97
Программа на FlProg не подлежит анализу,в принципе. Думаю со мной многие согласятся. Любой код анализируется и модифицируется на том уровне,на котором создан. Код на Си не смотрят на ассемблере. Код на ФлПрог не смотрят на Си. Нужен изначальный проект.
 
  • Лойс +1
Реакции: Boroda22

Normalek

★✩✩✩✩✩✩
6 Авг 2021
140
39
Ну во первых сочувствую. Во вторых выкинь этот код. Ну а в третьих костыль но должно работать изменяй
C++:
if (1)
    {
        _SM3.write (_swi11);
    }
    if(((_trgs11) || (_trgs12) || (_trgs13) || (_trgs14) || (_trgs15)))
    {
        _swi12=String("3 SERVO START");
    }
на
C++:
    if(((_trgs11) || (_trgs12) || (_trgs13) || (_trgs14) || (_trgs15)))
    {
        _swi12=String("3 SERVO START");
        _SM3.write (_swi11);
    }
и так со всеми сервоприводами и то не гарантирую что заработай ибо не очень читаемый код
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
472
133
@Remmert,
Судя по видео, у вас сервопривод НЕПРЕРЫВНОГО ВРАЩЕНИЯ. Вам такой и нужен? Или вам нужен был сервопривод для поворота на фиксированный угол 0 - 180 град ?
Дополнено позже. Программно изменить тип привода невозможно.
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
611
145
А чего это она на 360 шпарит? Там же внутри должен быть ограничитель и она не должна так вращаться, даже от руки. Может это серва постоянного вращения? Или пошли по одному месту внутренности сервы? В смысле ограничитель сорвало, привод потенциометра сломало, вот и котовасия теперь.
 

Normalek

★✩✩✩✩✩✩
6 Авг 2021
140
39
@viktor1703, так они вообще стоять должны вы на экран посмотрите там белым по синему написано "Servo stop":rolleyes:
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
611
145
они вообще стоять должны вы на экран посмотрите там белым по синему написано "Servo stop"
Мало ли, что там написано. Это FlProg. Я заглянул в ту портянку - там фиг поймёшь что. Хуча переменных со своими, понятными только FjPror'у, именами. Почему она критится без остановки, если у неё внутри стоит ограничитель и потенциометр, который нифига не на 360 вращается.
 

Normalek

★✩✩✩✩✩✩
6 Авг 2021
140
39
@viktor1703, А хотя ваша правда библиотека "Servo" на моторах 360 при нулевом градусе делает один полноценный оборот. И все логично
C++:
    if(((_trgs6) || (_trgs7) || (_trgs8) || (_trgs9) || (_trgs10))) //если включен серво 2 или что то там
    {
        _swi9=_gtv6; //присваем градусы
    }
    else
    {
        _swi9=0; //выставляем 0 градусов на  серво со 180, но на 360 делаем оборот
    }
    if (1)// бесполезная проверка
    {
        _SM2.write (_swi9); // крутим по кругу или по градусу
    }
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
611
145
Да там платка, которая выдает пару сигналов.... Могу видос снять.
Да я в курсе, что за платка и какие сигналы она выдает, но вот странно, что на тестере всё нормально, а на устройстве по кругу шпарит. Давай видео работы сервы от сервотестера.
 

Normalek

★✩✩✩✩✩✩
6 Авг 2021
140
39
@Remmert, у вас сто 100% серво на 360 ибо
C++:
int _gtv7 = 90; //3 SERVO ANGLE Угол поворота сервомашинки задеет
/* На серво с 360 градусов 90 угол останавлевает привод */

//............. код далше

if(((_trgs11) || (_trgs12) || (_trgs13) || (_trgs14) || (_trgs15)))  { //если включено то
    _swi11=_gtv7; //присваеваем угол 90 гродусов, у серво 360 выключаем его
}
else //если не вкличено
{
    _swi11=0;//присваем угол 0, а у 360 делаем полноценый обород
}
_SM3.write (_swi11); //управляем серво
Безымянный.png
можешь даже убиться, залив это
C++:
#include <Servo.h>

Servo myservo;

int pos = 0;

void setup() {
  myservo.attach(11); // Провод управления сервоприводом подключается к контакту 11 Arduino
  myservo.write(90); // Сервопривод неподвижен
}

void loop() {
  myservo.write(180); // Сервопривод вращается вперед на полной скорости в течение 1 секунды.
  delay(1000);
    
  myservo.write(90); // Сервопривод неподвижен в течение 1 секунды.
  delay(1000);

  myservo.write(0); // Сервопривод вращается в обратном направлении на полной скорости в течение 1 секунды.
  delay(1000);

  myservo.write(90);// Сервопривод неподвижен в течение 1 секунды.
  delay(1000);
}
 

Remmert

✩✩✩✩✩✩✩
8 Ноя 2022
4
0
Да я в курсе, что за платка и какие сигналы она выдает, но вот странно, что на тестере всё нормально, а на устройстве по кругу шпарит. Давай видео работы сервы от сервотестера.
Вот таким макаром все происходит

 

viktor1703

★★★✩✩✩✩
9 Дек 2021
611
145
Какие строки на какие заменить?
Заменить серво первым делом. Или делать костыль - подавать сигнал на серво для поворота в нужную сторону не постоянно, а лишь какое-то время, необходимое для поворота вала на требуемый угол. Но с кодом из-под Flprog'a, увы, не помогу.
 

Normalek

★✩✩✩✩✩✩
6 Авг 2021
140
39
@Remmert, Ну серво стоит выбирать от твоих задача. Цифровой сервак имеет энкодер, аналоговый переменный резистор. На твой скетч нужен с углом поворота 180 градусов. И да если не лень попробуй залить это скетч. Сразу говорю может и не завестись, не проверял но чем черт не шутит
 

Вложения