Инструменты пользователя

Инструменты сайта


doc:1602:mgul.160021.002

Это старая версия документа!


Отработка движения

Описание от 14 января 2018 года

Описание от 14 января 2018 года

- В движение платформу приводит двигатель мощностью 225w, прямая передача, соотношение зубов 21/64.
- Поворот рулевых колёс происходит с помощью простого механизма тяги, сервопривод вращает 15 мм плечо , которое прикреплено к регулируемому рычагу, который в свою очередь прикрепляется к тяге рулевых колёс.
- Точность поворота зависит от текущего веса робота, чем тяжелее, тем больше раз нужно подать команду поворота на сервопривод, существуют разумные границы поворота, чтобы не вывести из строя тягу или сервопривод.

Текст программы от 14 января 2018 года

Текст программы от 14 января 2018 года

#include <Servo.h>
#define Engine 7
#define RPWM 3
#define LPWM 4
#define Steering_Pin 5
#define Steering_Angle 5
int Engine_Speed_Now = 50;
int Steering_Pos = 45;
Servo Steering_Serv; 
void Engine_Parking_without_brake() { // отключение питания двигателя, остановка за счёт трения
  Serial.println("Engine_Parking_without_brake");
  digitalWrite(RPWM, LOW);
  digitalWrite(LPWM, LOW);
  delay(1000);
}
void Engine_Forward(){      // прямое вращение двигателя
  Serial.println("En_Forward");
  digitalWrite(RPWM, LOW);
  digitalWrite(LPWM, HIGH);
  for(int i=0;i<=Engine_Speed_Now;i++){ 
  analogWrite(Engine, Engine_Speed_Now);
  delay(10);
  }
}
void Engine_Back(){ //  обратное вращение двигателя
  Serial.println("Engine_Back");
  digitalWrite(LPWM, LOW);
  digitalWrite(RPWM, HIGH);
  for(int i=0;i<=Engine_Speed_Now;i++){
  analogWrite(Engine, Engine_Speed_Now);
  delay(10);
  }
}
void Steering_Forward(){      // рулевая прямо, требуется выравнивание поворотами левво\право, если нагрузна большая
  Steering_Pos = 45;
  Serial.println(" Steering_Forward(45) ");
  Steering_Serv.write(Steering_Pos);
}
void Steering_Left(){        // при нажатии рулевая немного налево, в зависимости от нагрузки платформы
  Serial.print("  Steering_Left  ");
  if(Steering_Pos > 15){
  Steering_Pos -= Steering_Angle;
  Serial.println(Steering_Pos);
  Steering_Serv.write(Steering_Pos);
}
}
void Steering_Right(){      // при нажатии рулевая немного направо, в зависимости от нагрузки платформы
  Serial.print("  Steering_Right  ");  
  if(Steering_Pos < 75){
  Steering_Pos += Steering_Angle;
  Serial.println(Steering_Pos);
  Steering_Serv.write(Steering_Pos);
}
}
void Engine_Speed_Up(){
  if(Engine_Speed_Now<254){
  Engine_Speed_Now+=10;
  Serial.print(Engine_Speed_Now);
  Serial.println("  Engine_Speed_Up  ");
}
 else
 Engine_Speed_Now=255;
}
void Engine_Speed_Down(){
  if(Engine_Speed_Now>50){
  Engine_Speed_Now-=10;
  Serial.print(Engine_Speed_Now); 
  Serial.println("  Engine_Speed_Down  ");
}
 else
 Engine_Speed_Now=50;
}
void setup() {
Serial.begin(38400);
Steering_Serv.attach(Steering_Pin);
pinMode(Engine, OUTPUT);
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
}
void loop() {
 
char key;
  if (Serial.available()> 0)
  key = Serial.read();
  switch(key){
    case 'W':
    Engine_Parking_without_brake();
    Engine_Forward();
    break;
    case 'A':
    Steering_Left();
    break;
    case 'S':
    Engine_Parking_without_brake();
    break;
    case 'D':
    Steering_Right();
    break;
    case 'Q':
    Engine_Speed_Down();
    break;
    case 'E':
    Engine_Speed_Up();
    break;
    case 'X':
    Engine_Parking_without_brake();
    Engine_Back();
    break;
    case 'F':
    Steering_Forward();
    break;
  }
}


Разработка необходимой телеметрии

Описание от 25 января 2018 года

Описание от 25 января 2018 года

Так как на платформе будут установлено 3 аккумулятора (7.2V 6Ah на всю логику; 14.8V 10,8Аh двигатель , пневматика и манипулятор; 14,8V 3,4Ah резерв для двигателя,подключаемый)
- 5 Вольтметров с пиком в 25V
- 4 Амперметра ACS712-30A
- 10-осевой датчик от «Amperka.ru» (гироскоп,акселерометр,магнитометр,датчик давления)
- Датчик давления BPM180(внутри воздушного резервуара)
- Датчик давления и влажности BME280(внешний)
- 8 Датчиков температуры(двигатель,драйвер двигателя,сервопривод на рулевой,3 на аккумуляторы, 1 на бортовую эмв, 2 контрольный)
- 2 Датчика влажности DHT22
Данные будут записываться на постоянной основе в бортовую эвм, а при утере сигнала Wi-fi будут передаваться по запросу оператору с помощью NRF20L01.


Разработка,конструирование и отладка системы пневматических стоек

Описание от 14 января 2018 года

Описание от 14 января 2018 года

Данная система разрабатывается для стабилизации положения робота при работе с манипулятором.
В данной системе используются следующие элементы:

НаименованиеКоличество
Пневматический цилиндр CDJ2B16 4
Штуцер М5х0,8 8
Коннектор на Х6 2
Шланг 3/5мм ?
Биполярный электромагнитный клапан 1
Электромагнитный клапан 2
Воздушный насос 1
Механический обратный клапан 1

Текст программы от 15 января 2018 года(наброски)

Текст программы от 15 января 2018 года(наброски)

#define Pump_Engine 24 // насос
#define Valve_Out 25 // впускной клапан обратный ход
#define Valve_Input 26 // выпускной клапан выдвижение
#define Valve_way_1 27 // направление на выдвижение поршня
#define Valve_way_2 28 // направление на задвиг поршня
void upload_air(){
  digitalWrite(Valve_way_1,LOW); // открытие направления на выдвижение
  digitalWrite(Valve_way_2,HIGH);// открытие направления на выдвижение
  digitalWrite(Valve_Input,HIGH);// закр вып кл на выд,поршнешь в рабочем положении
  digitalWrite(Valve_Output,LOW); 
  digitalWrite(Pump_Engine,HIGH); // включение воздушного насоса 
}
void Pump_Out_air(){
  digitalWrite(Valve_way_1,HIGH); // открытие направления на выдвижение
  digitalWrite(Valve_way_2,LOW);  // открытие направления на выдвижение
  digitalWrite(Valve_Input,LOW);  
  digitalWrite(Valve_Output,HIGH); // зак вып кл на задв,поршень в начальном положении
  digitalWrite(Pump_Engine,HIGH); // включение воздушного насоса 
}
void Off_pump_system(){
  digitalWrite(Valve_way_1,LOW);
  digitalWrite(Valve_way_2,LOW);
  digitalWrite(Valve_Input,LOW);
  digitalWrite(Valve_Output,LOW); 
  digitalWrite(Pump_Engine,LOW);
}
void setup() {
  Serial.begin(38400);
  pinMode(Valve_Out, OUTPUT);
  pinMode(Valve_Input, OUTPUT);
  pinMode(Valve_way_1, OUTPUT);
  pinMode(Valve_way_2, OUTPUT);
}
/* требуется прописать гистерезис для включения двигателя( по данным датчика давления внутри резервуара )
 *  для поддержания нужного уровня давления в рабочем положении,а так же команды по которым 
 *  будут производиться какие-либо манипуляции с системой пневмо-стоек
 *  Требуется нарисовать схему работы данной системы для более подробного описания
 */
void loop() {
}


Разработка и отладка управления при помощи модуля приёмопередатчика NRF24L01

Отработка получения телеметрии по запросу при помощи модуля приёмопередатчика NRF24L01

Разработка и конструирования собственного 6-осевого манипулятора

Сборка всех элементов

doc/1602/mgul.160021.002.1516846267.txt.gz · Последние изменения: 2018/04/28 23:47 (внешнее изменение)