roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 11:35

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 437 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9 ... 30  След.
Автор Сообщение
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 29 июл 2015, 15:42 
Не в сети
Аватара пользователя

Зарегистрирован: 17 окт 2014, 20:39
Сообщения: 53
прог. языки: с++
Из тех схем что я сам пробовал эта самая простая http://www.tehnari.ru/attachments/f156/54603d1320489273-h-bridge.jpg У нее нет защиты от совместного включения входов (я делал программно) и нужно 2 входа вместо 1-го. Но для пробы она самая удобная и токи хорошие можно обеспечить.. (только диоды при большой мощности моторов обязательно ставить!)
Разные моторы через нее подключал (конечно не очень большой мощности до 30 Ват) проблем небыло с ней.

_________________
кто со мной тот герой, кто без меня, тот... нереально крут потому что сам во всем разбирается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 29 июл 2015, 16:14 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
обычный h-мост, только на здоровенных биполярных печках.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 29 июл 2015, 16:43 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
:)

Добавлено спустя 33 секунды:
вот самая простая на мосфетах


Вложения:
hb_mosfet (1).gif
hb_mosfet (1).gif [ 5.38 КиБ | Просмотров: 2152 ]

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 01:10 
Не в сети

Зарегистрирован: 08 май 2014, 18:32
Сообщения: 609
ага. именно что самая простая. защиты от сквозного тока в упор не видно.
вообще странно что неудобные вопросы вы считаете флудом.. ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 02:29 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
а зачем мудрить со схемой? нужна вам защита на рассыпухе, делайте. посмотрите схему опенсерво и другие популярные проекты. среди них полно именно с самой простой схемой. а когда нужно более можная, так обычно берут специализированные микры.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 03:39 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Ну вот хочет человек набить шишки, пусть набивает. Я тоже всегда хотел и сейчас хочу.
Вот ему ж, как и мне, лень посмотреть в даташит
Например вот на это:
RDS(on) () VGS = 10 V 0.54
И на график напряжения и тока при Vgs = 5V - ведь рулить хочется таким мостом с помощью дуни какой-нить, да? (Там какое напряжение не подавай, 1А макс тока будет, т.е. при напряжении питания движков 12В и токе 1А, сопротивление перехода будет 12Ом, а мощность рассеиваемая на транзисторе всего 12Вт). Короче абсолютно мой случай - абсолютное пренебрежение к аппноутам типа "Управление мощными мосфетами", элементарной арифметикой, советами на форуме. Кивание на ребят, которые делают экзоскелет на модельных аутраннерах, похоже, без малейшего понимания того, что они трехфазные и нужен спец драйвер, и что управлять в движках надо током, а не напряжением. В общем, удачи, чувак. Я часы на движке от винта два года делал. Ты свой экзоскелет будешь делать пять лет, если не бросишь. А потом придет Дима и расскажет тебе про емкость затвора мосфетов и чудесную магию маленьких магнитиков и китайских планетарных передач, и ты все будешь переделывать заново.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 04:16 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
поправки на ветер это после определения параметров мотора. для слабеньких моторчиков, как в микросервах мелкие полевички. для моторчиков помощнее, как в стандартных сервах, допустим irl7309. для более мощных другие мосфеты, может 4-мя и не обойдётся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 09:41 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
Цитата:
Кивание на ребят, которые делают экзоскелет на модельных аутраннерах, похоже, без малейшего понимания того, что они трехфазные и нужен спец драйвер, и что управлять в движках надо током, а не напряжением.

вы меня похоже за идиота считаете. Робототехника только одно из моих хобби. Со школы занимаюсь моделизмом. Прекрасно осведомлен о работе драйверов для BLDC движков. :x
Потому собственно и делаю как умею.
А схему я привел как самую простую для примера.
По поводу управления планируется пока так: Ардуина подключается к плате от мелкой сервы как у меня на модельке. Резистор на сустав, вместо мотора подключается Н мост собраный или на мосфетах или на микрухе(так даже проще). Получается как бы серво но мощное. Вы видео что я постил смотрите? :o
У меня и так головняка хватает и с механикой и с электроникой, а еще программирование...
С механикой трабл в том что нет возможности купить те моторредукторы что мне подходят, приходится что то думать, как то из говна и палок лепить редукторы. Пока остановился или на использовании редукторов от дворников с тросовым понижающим редуктором(нет возможности шестерни делать или купить) или тогда движки от шурика со шпилькой и гайкой.

Добавлено спустя 7 минут 22 секунды:
вчера баловался с переключателями :D


Вложения:
7uc0ri0okp.jpg
7uc0ri0okp.jpg [ 29.99 КиБ | Просмотров: 2032 ]
2015713205437.jpg
2015713205437.jpg [ 2.02 МиБ | Просмотров: 2032 ]

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 13:34 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
зачем сейчас большой макет? на этом мелком макете уже нормально получается мотором управлять?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 14:50 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
Цитата:
зачем сейчас большой макет? на этом мелком макете уже нормально получается мотором управлять?

Ну так большой же все равно придется делать и желательно в ЭТОМ году.

Добавлено спустя 10 минут 2 секунды:
Код:
//Wiper motor software v 1.3:
//Servo sensor to Analog 0
//Setpoint potentiometer to Analog 1
//H bridge direction pin to Digital 2
//H bridge PWM signal to Digital 3
//LEDs at digital pins 4 - 13 are optional (indicating setpoint as LED bar)
//
//For the first test run, set MAX_DUTYCYCLE to 75 in order to lower the maximum torque in case something goes wrong.
//When connecting the servo to the microcontroller for the first time, you have to consider the rotational direction of your wiper motor!
//Adjust the potentiometer defining the setpoint to the center position.
//If the servo moves to neutral position, too after connecting the circuit to the supply voltage, the polarity of the servo sensor is correct.
//If the wiper motor starts spinning away from the center position, the polarity of the servo sensor (+ and - connector) has to be swapped.
//
//
//Source & info: www.HomoFaciens.de/technics-computer-arduino-uno_en_navion.htm


//#include <avr/io.h>
//#include <util/delay.h>


int ADC_SetPoint = 0;
int ADC_SetPointOld = 0;
int ADC_ServoPoti = 0;
int ADC_ServoPotiOld = 0;
int dutyCycle = 50; // 10 - 255
int ADCdiff = 0;
int timeDiff = 0;

//Change values below to adapt your motor
//Set MAX_DUTYCYCLE to 75 for the first test run!

#define P_FRACTION 0.3         //0.0 - 10.0 (0.3)
#define I_FRACTION 0.3         //0.0 - 10.0 (0.3)
#define D_FRACTION 4.0         //0.0 - 10.0 (4.0)
#define V_WINDOW 25            //10 - 1000 (25)
#define MIN_DUTYCYCLE 25       //0 - 255 (25)
#define MAX_DUTYCYCLE 200      //0 - 255 (255)
#define SOFT_START 0.3        //0.00 - 1.00 (0.30) 1.00 = OFF
#define D_FRACTION_DEMO 0      //1 - consider only D_FRACTION for servo movement (0 - OFF)
#define EMERGENCY_SHUTDOWN 4   //0 - 100 (4), 0 - OFF, Stops motor if blocked
#define SHOOT_THROUGH_PAUSE 10 //Prevent H bridge from shoot through whenever the direction pin is changed

#define SERVO_DIRECTION_PIN 2 //Direction pin servo motor
#define SERVO_PWM_PIN 3       //PWM pin servo motor
#define SERVO_SENSOR A0       //Analog input servo sensor
#define POTI A1               //Analog input potentiometer
#define LED_01 4
#define LED_02 5
#define LED_03 6
#define LED_04 7
#define LED_05 8
#define LED_06 9
#define LED_07 10
#define LED_08 11
#define LED_09 12
#define LED_10 13


void setup(){
  pinMode(SERVO_DIRECTION_PIN, OUTPUT);     
  pinMode(SERVO_PWM_PIN, OUTPUT);     

  pinMode(SERVO_SENSOR, INPUT);     
  pinMode(POTI, INPUT);     

  //LED bar (optional)
  pinMode(LED_01, OUTPUT);     
  pinMode(LED_02, OUTPUT);     
  pinMode(LED_03, OUTPUT);     
  pinMode(LED_04, OUTPUT);     
  pinMode(LED_05, OUTPUT);     
  pinMode(LED_06, OUTPUT);     
  pinMode(LED_07, OUTPUT);     
  pinMode(LED_08, OUTPUT);     
  pinMode(LED_09, OUTPUT);     
  pinMode(LED_10, OUTPUT);     
 
}


void loop(){
  ADC_ServoPoti = analogRead(0);     // reads the servo sensor (between 0 and 1023)
  ADC_SetPoint = analogRead(1);             
   
  ADCdiff = ADC_SetPoint - ADC_ServoPoti;
 
  dutyCycle = abs(ADCdiff) * P_FRACTION;
  dutyCycle += timeDiff * I_FRACTION;
  dutyCycle += abs(ADC_SetPointOld - ADC_SetPoint) * D_FRACTION;
 
  if(D_FRACTION_DEMO == 1){
    dutyCycle = abs(ADC_SetPointOld - ADC_SetPoint) * D_FRACTION;
  }
 
  if(SOFT_START * timeDiff < 1){
    dutyCycle = dutyCycle * (SOFT_START * timeDiff);
  }
 
  timeDiff++;
 
  if(dutyCycle < MIN_DUTYCYCLE && dutyCycle > 0){
    dutyCycle = MIN_DUTYCYCLE;
  }
 
  if(dutyCycle > MAX_DUTYCYCLE){
    dutyCycle = MAX_DUTYCYCLE;
  }
 
  if(dutyCycle < 0){
    dutyCycle = 0;
  }
 
 
 
  if(D_FRACTION_DEMO == 1){
    if(abs(ADC_SetPointOld - ADC_SetPoint) < 2){
      analogWrite(SERVO_PWM_PIN, 0);
      delayMicroseconds(SHOOT_THROUGH_PAUSE);
      digitalWrite(SERVO_DIRECTION_PIN, 0);
      delayMicroseconds(SHOOT_THROUGH_PAUSE);
    }
    else{
      if(ADC_SetPointOld - ADC_SetPoint < 0){
        analogWrite(SERVO_PWM_PIN, 0);
        delayMicroseconds(SHOOT_THROUGH_PAUSE);
        digitalWrite(SERVO_DIRECTION_PIN, 0);
        delayMicroseconds(SHOOT_THROUGH_PAUSE);
        analogWrite(SERVO_PWM_PIN, dutyCycle);
      }
      if(ADC_SetPointOld - ADC_SetPoint > 0){
        analogWrite(SERVO_PWM_PIN, 0);
        delayMicroseconds(SHOOT_THROUGH_PAUSE);
        digitalWrite(SERVO_DIRECTION_PIN, 1);
        delayMicroseconds(SHOOT_THROUGH_PAUSE);
        analogWrite(SERVO_PWM_PIN, dutyCycle);
      }
    }
  }
  else{
    if(abs(ADCdiff) < V_WINDOW){
      dutyCycle = 0;
      timeDiff = 0;
    }

    if(abs(ADC_ServoPotiOld - ADC_ServoPoti) < EMERGENCY_SHUTDOWN && dutyCycle == MAX_DUTYCYCLE && timeDiff > 50){
      analogWrite(SERVO_PWM_PIN, 0);
      delayMicroseconds(SHOOT_THROUGH_PAUSE);
      digitalWrite(SERVO_DIRECTION_PIN, 0);
      delay(1000);
      timeDiff = 0;
    }
    else{ 
      if(ADCdiff > 0){
        analogWrite(SERVO_PWM_PIN, 0);
        delayMicroseconds(SHOOT_THROUGH_PAUSE);
        digitalWrite(SERVO_DIRECTION_PIN, 0);
        delayMicroseconds(SHOOT_THROUGH_PAUSE);
        analogWrite(SERVO_PWM_PIN, dutyCycle);
      }
      if(ADCdiff < 0){
        analogWrite(SERVO_PWM_PIN, 0);
        delayMicroseconds(SHOOT_THROUGH_PAUSE);
        digitalWrite(SERVO_DIRECTION_PIN, 1);
        delayMicroseconds(SHOOT_THROUGH_PAUSE);
        analogWrite(SERVO_PWM_PIN, dutyCycle);
      }
    }
  }
 

  ADC_SetPointOld = ADC_SetPoint;
  ADC_ServoPotiOld = ADC_ServoPoti;


  //LED bar at digital pins 4 - 13 (optional)
 
  if(ADC_SetPoint >= 93 * 10){
    digitalWrite(LED_10, 1);
  }
  else{
    digitalWrite(LED_10, 0);
  }

  if(ADC_SetPoint >= 93 * 9){
    digitalWrite(LED_09, 1);
  }
  else{
    digitalWrite(LED_09, 0);
  }

  if(ADC_SetPoint >= 93 * 8){
    digitalWrite(LED_08, 1);
  }
  else{
    digitalWrite(LED_08, 0);
  }

  if(ADC_SetPoint >= 93 * 7){
    digitalWrite(LED_07, 1);
  }
  else{
    digitalWrite(LED_07, 0);
  }

  if(ADC_SetPoint >= 93 * 6){
    digitalWrite(LED_06, 1);
  }
  else{
    digitalWrite(LED_06, 0);
  }

  if(ADC_SetPoint >= 93 * 5){
    digitalWrite(LED_05, 1);
  }
  else{
    digitalWrite(LED_05, 0);
  }

  if(ADC_SetPoint >= 93 * 4){
    digitalWrite(LED_04, 1);
  }
  else{
    digitalWrite(LED_04, 0);
  }

  if(ADC_SetPoint >= 93 * 3){
    digitalWrite(LED_03, 1);
  }
  else{
    digitalWrite(LED_03, 0);
  }

  if(ADC_SetPoint >= 93 * 2){
    digitalWrite(LED_02, 1);
  }
  else{
    digitalWrite(LED_02, 0);
  }

  if(ADC_SetPoint >= 93 * 1){
    digitalWrite(LED_01, 1);
  }
  else{
    digitalWrite(LED_01, 0);
  }


  delay(15);                             // waits for the servo to get there

}
нашел сайт http://www.homofaciens.de/technics-computer-arduino-uno_en_navion.htmгде подробно описано как функцию сервомашинки возложить на плечи ардуино. но код меня пугает :O:


Вложения:
wiper-servo_001g.jpg
wiper-servo_001g.jpg [ 165.58 КиБ | Просмотров: 2000 ]

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Последний раз редактировалось robovan 31 июл 2015, 11:47, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 16:31 
Не в сети

Зарегистрирован: 08 май 2014, 18:32
Сообщения: 609
Продолжайте пугаться. Т.к. собрать железки в кучу это хорошо если треть дела. Все остальное - код, код, код..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 18:57 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Функцию сервомашинки нельзя возложить на плечи ардуино , у ардуино нет движущихся частей. А если ты говоришь про управление сервомашинкой, то, конечно, такой успех в использовании поисковика похвален. Просто уточнить - ты обнаружил откровение о том, как генерить ШИМ с периодом 20мс и длиной импульса 1-2мс? Неужели ардуино способна осилить эту задачу, в ней же 8-ми битный МК стоит. Я думал как минимум ДСП нужен.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 30 июл 2015, 19:37 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
прототип на то и прототип, что бы на нём обкатывать. ну спали более мощный драйвер моторов или мотор.
что там пугает в этих паре строчках кода, ну блиииин? ну найди сразу мудрёный проект с парой-тройкой дясятков тысяч строк кода, в котором куча всяких датчиков и прочего используется. будешь упираться и искать какую-то хрень на подобии готового кода сервы и т.д., ну могу поздравить, лет через пять просто закинешь проект и ничего не сделаешь. что сложного для понимания, что изучают от простого к сложному, сначала всё по отдельности?
у тебя есть серва и ардуинка, вот бери и начинай работать с этим. меряй напряжение, ток, сопротивление, учись мотором управлять (шим, направление). сделай сервотестер. пробуй подпаяться к потенциометру и управлять напрямую мотором. мигай лампочками, работай с уартом (вывод информации, получение команд), делай регулируемую скорость движение "ноги" и т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 31 июл 2015, 00:46 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
ох набежали))) завтра отвечу

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзоскелет "кРок"
СообщениеДобавлено: 31 июл 2015, 11:12 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
dccharacter писал(а):
Функцию сервомашинки нельзя возложить на плечи ардуино , у ардуино нет движущихся частей. А если ты говоришь про управление сервомашинкой, то, конечно, такой успех в использовании поисковика похвален. Просто уточнить - ты обнаружил откровение о том, как генерить ШИМ с периодом 20мс и длиной импульса 1-2мс? Неужели ардуино способна осилить эту задачу, в ней же 8-ми битный МК стоит. Я думал как минимум ДСП нужен.


Ну что вы опять за ересь несете?? :ROFL:
внимательно прочитав статью вы поймете что меня заинтерисовал принцип реализации PID регулятор на ардуине.
В моем коде я использую сервомашинки. Записываю повернутся на угол такой то и она отрабатывает. В ней уже есть схема с отрицательной обратной связью.
Код:
void loop()

{


  servo1.write(50);  // правая нога вперед
  servo3.write(150); // левая нога назад
  servo2.write(50);  // правое колено согнуть
  delay(100);

Но можно и так: ардуино получает данные на аналоговый вход с потенциометра и с помощью ШИМ управляет двигателем.
алгоритм такой: включается двигатель, когда данные с потенциометра совпадают с теми что нужны, он выключается.
Но такой код я сам написать пока не знаю как.
Если вы знаете то зачем глумится над тем кто не знает?
Я вот на форуме по моделизму такого не замечал. Если у человека есть проблема ее стараются решить все, и с радостью помогают в реализации проекта.
Тут же напротив сидят знатоки но помогать не спешат. Или может я в чем то оплошал, может нужно внятное ТЗ ? А то форумчане не понимают что я строю.

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Последний раз редактировалось robovan 31 июл 2015, 11:44, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 437 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9 ... 30  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO