Пояснительная записка (1228669), страница 6
Текст из файла (страница 6)
Алгоритм №2 подразумевает движение по координатам. В данном алгоритме после запуска, происходит поочередное считывание сигналов с датчиков начального положения, если считываемы сигнал подтверждает нахождение привода в нулевом положении, то контроллер переходит к считыванию информации с датчика следующего звена. Если же датчик передаёт сигнал об отсутствии привода в нулевом положении, то контроллер отправляет на драйвер сигнал о начале работе. Драйвер в свою очередь начинает подавать на двигатель воздействующий сигнал о направлении движения и небольшом импульсе, цикл будет работать до тех пор пока двигатель не придёт в нулевое положение, нулевое положение подразумевает расположение звеньев в вертикальном положении, так как для этого случая направление движения всегда буде одно и тоже (вверх).
После того как манипулятор принял нулевое положение, контроллер просчитал заданные координаты в необходимые углы, затем перевёл углы в эквивалентное число импульсов и поочередно послал значение на каждый из драйверов.
ЗАКЛЮЧЕНИЕ
В первой главе рассматриваются разнообразие роботов по назначению, виды их исполнительных органов и преимущества использования.
Во второй главе приводится описание лабораторных работ, которые будет возможно выполнить на проектируемом учебном манипуляторе.
Третья глава посвящена расчёту узлов манипулятора.
В четвёртой главе разработан алгоритм управления и программы управления манипулятором, позволяющие выполнить список лабораторных работ предложенных во второй главе.
При выполнении дипломной работы были достигнуты следующие результаты:
1. составлен список предлагаемых лабораторных работ, с кратким обзором теоретического материала.
2. сделан расчёт и подбор основных узлов манипулятора и его системы управления;
3. разработаны схемы, алгоритм и программа для реализации лабораторного стенда.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ:
-
Егоров, О.Д. Конструирование механизмов роботов. Учебник/О.Д. Егоров. - М.: Абрис, 2012. - 444 с.: ил.
-
Я. Н. Отений, П. В. Ольштынский, Выбор и расчёт захватных устройств промышленных роботов: учебное пособие/ ВолгГТУ, Волгоград, 2000 – 64 с.
-
Шаговые двигатели: учеб. пособие/ А. В. Емельянов, А. Н. Шилин/ ВолгГТУ.–Волгоград, 2005. – 48с.
-
Элементы расчетов на устойчивость : учеб.пособие / В. П. Багмутов, А. А. Белов, А. С. Столярчук. – Волгоград : ИУНЛ ВолгГТУ, 2010. – 56с
-
Н. Ф. Руденко, М. П. Александров Курсовое проектирование грузоподъёмных машин. – М.: Машиностроение, 1966. – 304с.
-
Каталог шаговых двигателей [Электронный ресурс]. – Режим доступа: http://www.npoatom.ru/katalog /
-
Контроллеры Arduino [Электронный ресурс]. – Режим доступа: http://arduino.ru/Hardware/ArduinoBoardUno
-
Каталог драйвера шагового двигателя [Электронный ресурс]. – Режим доступа: http://darxton.ru/catalog_item/
-
Кормен, Томас Х. и др. Алгоритмы: построение и анализ, 3 –е изд. : Пер. с англ. – М. :ООО «И. Д. Вильямс», 2013. – 1328 с. : ил. – Парал. тит. Англ
-
Петин В. А. Проекты с использованием контроллера Arduino. — СПб.: БХВ-Петербург, 2014. — 400 с.: ил.
ПРИЛОЖЕНИЕ А
Главное окно программы
#define VELOCIDAD 3000
intincomingByte = 0; // переменная для хранения полученного байта
int P = 200;
int L = 200;
int Pw = 200;
intLw = 200;
int steps = 8;//Z
int steps2 = 9;// Y
int steps3 = 10;// X
int steps4 = 12;// Захват
intdireccion = 11;
void setup(){
// initialize the digital pin as an output.
pinMode(steps, OUTPUT);
pinMode(steps2, OUTPUT);
pinMode(steps3, OUTPUT);
pinMode(steps4, OUTPUT);
pinMode(direccion, OUTPUT);
Serial.begin(9600);// устанавливаем последовательное соединение
//pinMode(led, OUTPUT);
}
void loop() {
if (Serial.available() > 0) { //еслиестьдоступныеданные
// считываембайт
incomingByte = Serial.read();
Serial.print("I received: ");
Продолжение приложения А
Serial.println(incomingByte, DEC);
if (incomingByte == 49){
for (inti=0; i<= P; i++){
digitalWrite(direccion, HIGH);
digitalWrite(steps, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps, LOW);
delayMicroseconds(VELOCIDAD);
}}
if (incomingByte == 50){
for (inti=0; i<= L; i++){
digitalWrite(direccion, LOW);
digitalWrite(steps, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps, LOW);
delayMicroseconds(VELOCIDAD);
}}
if (incomingByte == 51){
for (inti=0; i<= P; i++){
digitalWrite(direccion, HIGH);
digitalWrite(steps2, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps2, LOW);
delayMicroseconds(VELOCIDAD);
}}
if (incomingByte == 52){
for (inti=0; i<= L; i++){
digitalWrite(direccion, LOW);
digitalWrite(steps2, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps2, LOW);
delayMicroseconds(VELOCIDAD);
}}
Конец приложения А
if (incomingByte == 53){
for (inti=0; i<= P; i++){ digitalWrite(direccion, HIGH);
digitalWrite(steps3, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps3, LOW);
delayMicroseconds(VELOCIDAD);
}}
if (incomingByte == 54){
for (inti=0; i<= L; i++){
digitalWrite(direccion, LOW);
digitalWrite(steps3, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps3, LOW);
delayMicroseconds(VELOCIDAD);
}}
if (incomingByte == 55){
for (inti=0; i<= Pw; i++){
digitalWrite(direccion, HIGH);
digitalWrite(steps4, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps4, LOW);
delayMicroseconds(VELOCIDAD);
}}
if (incomingByte == 56){
for (inti=0; i<= Lw; i++){
digitalWrite(direccion, LOW);
digitalWrite(steps4, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps4, LOW);
delayMicroseconds(VELOCIDAD);
47













