12.07.2010, 19:54
Узи аппарат миндрей mindray узи аппараты.
Проект выходного дня. Робот- морж. Именно так будет на английском языке слово
"walrus".
Этот проект я задумал давно, еще в июне, когда мы все обсуждали манипуляторы.
Я тогда заказал за бугром 10 сервок.
Вкратце о проекте. Это робот с двумя "руками", которыми он пользуется как
морж или пловец, который плывет "брасом" (не уверен, что правильно написал,
я в плаванье не разбираюсь сильно). Он, по сути, тащит свое "тело".
Реализация интересна не как конечный робот, а как проверка теории на практике.
Дело в том, что от начала и до конца работы прошло всего 2 часа.
Я спроектировал кинематику на бумаге, обмерил серву, на бумаге нарисовал основной
элемент "корпуса", 2 соединительных элемента, вырезал из бумаги, повертел в
руках и начал делать в металле.
Из инструментов использовал ножницы по металлу, дрель, сверло на 2.5 и 6 мм.
Крепеж М2.5, изолента (как без неё :-) ).
Контроллер использовал старый. В нем предусмотрены выходы на датчики, на которые
я поставил сервы. На контроллере осталось еще 4 свободных разъемов, один из
них- I2C, и длинный разъем для LCD.
Вот что получилось:
320х200, GIF-анимация: walrus_motion1.gif (270
кБ)
640x400, MPEG: walrus1.mpg (2.8
МБ)
Программу писал на Бейсике. Она получилась настолько маленькая, что можно
показать её здесь:
Config Servos = 4 , Servo1 = Portd.2 , Servo2 = Portd.3 , Servo3 = Portd.0
, Servo4 = Portd.4 , Reload = 10
Config Portd = Output
Dim Minimum As Byte
Dim Maximum As Byte
Dim N As Integer
Dim Center As Byte
Minimum = 80
Maximum = 180
Const Wait1 = 500
Center = Maximum - Minimum
Center = Center / 2
Center = Center + Minimum
Const Top = 50
Const Forward = 40
Const Back = 20
'finally we must turn on the global interrupt
Enable Interrupts
'the servo() array is created automatic. You can used it to set the
'time the servo must be on
' init
Servo(1) = Center
Servo(2) = Center
Servo(3) = Center
Servo(4) = Center
Waitms Wait1
Do
' top
N = Center - Top
Servo(1) = N
N = Center + Top
Servo(4) = N
Servo(2) = Center
Servo(3) = Center
Waitms Wait1
' forward
N = Center - Top
Servo(1) = N
N = Center + Top
Servo(4) = N
N = Center + Forward
Servo(2) = N
N = Center - Forward
Servo(3) = N
Waitms Wait1
' top
Servo(1) = Center
Servo(4) = Center
N = Center + Forward
Servo(2) = N
N = Center - Forward
Servo(3) = N
Waitms Wait1
Servo(1) = Center
Servo(2) = Center
N = Center - Back
Servo(2) = N
N = Center + Back
Servo(3) = N
Waitms Wait1
Loop
15.12.2005г.
|