Online video hd

Смотреть гиг видео

Официальный сайт all-remont 24/7/365

Смотреть видео бесплатно

Shihad 24.04.2011 07:23

Шаловливые ручкиРадиоуправляемый дирижабль своими руками.

Эй, моделисты, роботехи и сочувствующие! Хотите попробовать что-нибудь по-настоящему большое? Сегодня в домашних условиях из подручных материалов мы построим дирижабль!



Для постройки дирижабля Sverdlov Airship v 0.5 нам потребуется:


1.Ардуино-совместимый контроллер. Мы изготовили MRC28 по материалам сайта robozone.su.

2.Радиомодем с интерфейсом UART. Впрочем, можно летать на проводе RS-232 или USB. Мы купили Aurel-wiz-434. Две штуки - как приемник и передатчик.

3.Оболочка и гелий. В качестве оболочки возьмите радиозонды метеорологические. Поищите в своем городе - в Екб их продает ОАО "Метео" на Студенческой. Если нет - купите на Ебае. Нужны радиозондовые оболочки на 650 грамм - раздуются и поднимут больше. Гелий нужен марки "Б", у нас он продается на техгазе, баллон за 2000 + аренда\покупка баллона.

4.Винты, движки и драйверы к ним. От старых коллекторных помощнее - потянут в тихом помещении без сквозняков. До бесколлекторных, тянущих по 500 грамм.

В нашей альфа-версии стояли движки от советского магнитофона и драйвер к ним с того же робозона. В нынешней - бесколлекторные движки на 7А каждый и соответствующие драйверы к ним, купленные в магазине Пилотаж-RC. Как мы намаялись с подключением драйверов!

5.Сервомотор. Нужен для изменения вектора тяги. Наш выбор Hitec HS-49B, но можете взять любой подходящий.

6.Аккумулятор\батарея. Определитесь по движку. Можно использовать новый литий-полимерный аккум из магазина моделей, можно - 8-16 штук "Крон". Мы брали и то, и другое.

7.Рама. Алюминиевый уголок, полосу и трубу поищите в магазине стройматеиалов. Если кто умеет - может выклеить гондолу из углепластика.

8. Джойстик. Рулить будем именно им.

Изготовьте раму - нарежьте алюминиевый уголок ножовкой и склепайте каркас. Можете свинтить, но пользуйтесь гроверами - двигатели при нашей точности могут дать вибрацию, которая развинтит все крепления. Предусмотрите крепления для серводвигателя, место под вал, опору для электронных компонентов. Не забывайте, что драйверы двигателей нужно охлаждать. Разместите все на отведенных местах.

При достаточной аккуратности, в итоге получится нечто вроде этого:

В верхней половине укреплены батареи и драйвер двигателей (прикручен к раме, как к радиатору). Усилие с сервопривода шестерни передают на вал с закрепленными двигателями. Снизу - контроллер и отдельно лежит радиомодем.

Драйверы двигателей, радиомодем и сервомашинку подключите в соответствующие выходы ардуино.

Залейте прошивку.
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 #include <servo.h>  // Серва для управления вертикального направления дирижабля
// ServoDirigable
Servo serDir; // Номер устройства num = 0
int pinSerDir = 2;
struct Motor {
int dir; // Направление
int enable; // Скорость
};
Motor motorLeft = {7, 6}; // Номер устройства num = 1
Motor motorRight = {4, 5}; // Номер устройства num = 2
void setup()
{
//Servo
serDir.attach(pinSerDir);
//MotorLeft
pinMode(motorLeft.dir, OUTPUT);
pinMode(motorLeft.enable, OUTPUT);
//MotorRight
pinMode(motorRight.dir, OUTPUT);
pinMode(motorRight.enable, OUTPUT);
//Serial
Serial.begin(9600);
// Выставляем все устройства на исходную позицию
serDir.write(90);
}
void loop()
{
int num;
int pos;
if (Serial.available() > 1) {
// Считываем номер устройства
num = Serial.read();
// Считываем позицию для движения устройства
pos = Serial.read();
if(num==0){writeServo(serDir, pos);}
if(num==1){writeMotor(motorLeft, pos);}
if(num==2){writeMotor(motorRight, pos);}
}
}
void writeServo(Servo ser, int pos) {
if(pos>180) {pos = 180;}
if(pos<0) {pos=0;}
ser.write(pos);
}
void writeMotor(struct Motor mot, int pos) {
if(pos<0){pos=0;}
if(pos>255){pos=255;}
digitalWrite(mot.dir, HIGH);
analogWrite(mot.enable, pos);
}
int SWread()
{
byte val = 0;
while (digitalRead(rx));
//wait for start bit
if (digitalRead(rx) == LOW) {
delayMicroseconds(halfBit9600Delay);
for (int offset = 0; offset < 8; offset++) {
delayMicroseconds(bit9600Delay);
val |= digitalRead(rx) << offset;
}
//wait for stop bit + extra
delayMicroseconds(bit9600Delay);
delayMicroseconds(bit9600Delay);
return val;
}
}
</servo.h>



Подключите к компу джойстик и второй радиомодем. Запустите управляющую программу на питоне.
  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 '''
Created on 24.02.2011
@author: pankratov.vs
'''
import pygame
import serial
ser = serial.Serial(port = '/dev/ttyUSB0', baudrate = 9600)
motor = 0
turn = 0
def handleJoyEvent(e):
global motor
global turn
if e.type == pygame.JOYAXISMOTION:
#X
if (e.dict['axis'] == 0):
turn = e.dict['value']
motorSpeed = chr(calcSpeed())
if(turn<0):
ser.write(chr(1))
ser.write(motorSpeed)
ser.write(chr(255))
else:
ser.write(chr(2))
ser.write(motorSpeed)
ser.write(chr(255))
#Y
if (e.dict['axis'] == 1):
pos = e.dict['value']
move = round(pos * 90, 0)
if (move < 0):
servo = int(90 - abs(move))
else:
servo = int(move + 90)
servoPosition = chr(servo)
ser.write(chr(0))
ser.write(servoPosition)
ser.write(chr(255))
#uncomment to debug
#print servo, servoPosition
#Z
if (e.dict['axis'] == 2):
pos = e.dict['value']
motor = int(round((1-pos)*90))
motorSpeed = chr(calcSpeed())
if(turn==0):
lmotor = chr(motor)
rmotor = chr(motor)
else:
if(turn<0):
lmotor = chr(calcSpeed())
rmotor = chr(motor)
else:
lmotor = chr(motor)
rmotor = chr(calcSpeed())
ser.write(chr(1))
ser.write(lmotor)
ser.write(chr(255))
ser.write(chr(2))
ser.write(rmotor)
ser.write(chr(255))
#uncomment to debug
#print motorSpeed
#Throttle
if (e.dict['axis'] == 3):
pass
elif e.type == pygame.JOYBUTTONDOWN:
# uncomment to debug
#str = "Button: %d" % (e.dict['button'])
#output(str, e.dict['joy'])
if (e.dict['button'] == 0):
print "Bye!\n"
ser.close()
quit()
def output(line, stick):
print "Joystick: %d; %s" % (stick, line)
def calcSpeed ():
global motor
global turn
curTurn = int(round(motor * abs(turn)))
curSpeed = motor - curTurn
return curSpeed
def joystickControl():
while True:
e = pygame.event.wait()
if (e.type == pygame.JOYAXISMOTION or e.type == pygame.JOYBUTTONDOWN):
handleJoyEvent(e)
def main():
ser.open()
ser.isOpen()
pygame.joystick.init()
pygame.display.init()
if not pygame.joystick.get_count():
print "\nPlease connect a joystick and run again.\n"
quit()
print "\n%d joystick(s) detected." % pygame.joystick.get_count()
print chr(1)
myjoy = pygame.joystick.Joystick(0)
myjoy.init()
joystickControl()
if __name__ == "__main__":
main()



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

Прикрепите зонды к раме. Ваша цель - добиться минимальной плавучести аппарата. Тогла его можно будет посадить на землю тягой двигателей.

Теперь выведите ваш дирижабль в открытое безветренное пространство - от школьного спортзала до тихого пустыря. А теперь - кораблю - взлет! От винта!



В чем отличия от предыдущей версии?
1.Поставлены бесколлекторные движки с тягой до 600 грамм и драйверы к ним. Теперь он летает быстро.
2.Установлен мощный аккумулятор. Теперь он летает долго.
3.Шары прикреплены к дирижаблю достаточно жестко - с помощью опорной рамы и тесьмы.
4.Управление выведено на джойстик.
5.Наконец, подключен радиомодем.

Над чем работать? Стабилизация движения, повороты, понизить чувствительность управления, научить избегать препятствия.

Опубликовано в журнале сообщества uralrobot.ru


Тэги:
+ 5 -
Похожие Поделиться

Shihad 24.04.2011 14:25 #
+ 0 -
http://www.youtube.com/user/EurasiaCB - видео
digiwhite 24.04.2011 15:15 #
+ 1 -
Чего-то код запостился как каша. Читать невозможно.
Shihad 24.04.2011 18:54 #
+ 0 -
Я б его лучше отдельными файлами приложил. Попробовал вложить код в спойлеры - не сохранился.
digiwhite 24.04.2011 20:27 #
+ 0 -
Есть же тэг code с возможностью указания языка.
Shihad 24.04.2011 20:30 #
+ 0 -
А это он и есть. И язык указан.
digiwhite 24.04.2011 20:43 #
+ 0 -
Видимо подсветка не работает.
kstep 26.04.2011 04:02 #
+ 1 -
Баг движка?
Ладно Си, его хотя бы скомпилить в таком виде можно, но вот питон уже в пролёте =(
zhevak 24.04.2011 21:11 #
+ 1 -
УПИ -- так держать!
Nikisch 26.04.2011 13:27 #
+ 0 -
На видео оно только дрейфует в произвольном напрвлении и постоянно норовит грохнуться с шумом пикирующего бомбардировщика. Так и задумано?
Shihad 26.04.2011 13:35 #
+ 1 -
Налет пилотов - десять минут. Стабилизатора нет. Управление сверхчувствительно. Инерция и сопротивление воздуха огромны. Неучтенные сквозняки по залу. И опять же, налет пилотов - десять минут.

При этом избирательная глухота, блин. Если прислушаться - я им ору, чтоб сначала попробовали пролететь весь зал по прямой. Нет, повороты отрабатывают.

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн