Сортировщик Распаковщик Вкусностей

Материал из Department of Theoretical and Applied Mechanics
Версия от 02:40, 31 мая 2018; Flyingcookie (обсуждение | вклад) (Результаты по проекту)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Описание

Актуальность

Данный проект был интересен с точки зрения реализации (опробовать оборудование в Фаб-Лабе и поработать с микроконтроллерами).

Проектная команда

Поставленные цели

Создать полуавтоматическую машину, которая будет открывать упаковки с вкусностями и делить поровну на заданное количество человек.

Работа по проекту

Срок Задача Возникающие проблемы Что сделано к сроку
23.03.18 Ознакомление с Arduino На данном этапе проблем не возникло Собран "скелет" Arduino и написана прошивка
30.04.18 Работа с 3D принтером На данном этапе проблем не возникло Смоделированы две шестеренки
07.05.18 Сборка механического каркаса Выяснилось, что мощности имеющегося двигателя не хватает для того, чтобы крутить шестеренки с натянутой лентой Решено отказаться от использования двигателя постоянного тока (в связи с дороговизной более мощного)
14.05.18 - 28.05.18 Сборка корпуса со всеми составляющими Вместо автоматического "открытия" упаковки было решено использовать механическое Корпус собран

Результаты по проекту

Наблюдается выполнение основных функций установкой. Для большего эффекта требуется увеличить количество тестирований с целью выявления мест конструкции, требующих усовершенствований. Например, более рациональным и зрелищным способом вскрытия упаковки может оказаться её сдавливание и дальнейшее расхождение по швам, вероятность которого возможно увеличить путём расчёта места приложения усилия. Проблем, связанных с написанным скетчем к Arduino не обнаружено, сама программа не занимает много места в памяти Arduino UNO и обрабатывается быстро. Таким образом, использование микроконтроллера Arduino отлично подходит для реализации проекта такого рода.

Arduino прошивка

 1 #include <Servo.h>          // Библиотека для сервопривода
 2 Servo servo1;               // Объявление переменных
 3 int timestep;
 4 int timestep1;
 5 boolean flag = 0;
 6 boolean flag1 = 0;
 7 boolean battle;
 8 byte i;
 9 byte j;
10 byte v;
11 byte c;
12 void setup() {
13   servo1.attach(4);         // Задание пинов на вход и выход
14   pinMode(3,INPUT_PULLUP);
15   pinMode(2,INPUT);
16   pinMode(9,OUTPUT);
17   Serial.begin(9600);
18   servo1.write(0);
19   // digitalWrite(9,LOW);  
20 }
21 
22 void loop() {
23   v = !digitalRead(2);
24   battle = !digitalRead(3);
25   if (battle==1 && flag==0 && (millis()-timestep)>300){  // Отрабатываем нажатие кнопки..
26     flag = 1;
27     i++;
28     Serial.println(i);
29     timestep = millis();
30   }
31   if (battle==0 && flag==1){  // ..и отжатие
32     flag = 0;
33   }
34   if ((millis()-timestep)>2500 && i>1){ // Через 2.5 секунды после последнего нажатия кнопки запускается дальнейший скрипт
35     j = i;
36   }
37   //if (j>0 && (millis()-timestep)>5000 && (millis()-timestep)<6000){    Прошивка для двигателя (не использовалась)
38   //  digitalWrite(9,HIGH);
39   //} else {
40   //  digitalWrite(9,LOW);
41   //}
42   if (j>0 && v==HIGH && flag1==0 && c<180 && (millis()-timestep1)>1000){ // Снятие показания с датчика препятствий и 
43     flag1 = 1;
44     timestep1 = millis();
45     c += 180/j;
46     servo1.write(c);                                                     // подача сигнала на сервопривод
47   }
48   if (j>0 && v==LOW && flag1==1 && (millis()-timestep1)>300){
49     flag1 = 0;
50     timestep1 = millis();
51   }
52 
53 }

Литература и ссылки

1. Видео уроки по Arduino:

http://alexgyver.ru/arduino_lessons/

2. Итернет-класс обучения работы с Arduino:

http://robotclass.ru

3. Лекции по Arduino:

http://boteon.com/blogs/obuchayuschie-lekcii-po-arduino