- •Использование автоматизации в картографировании
- •Оглавление
- •III.4. Эксперимент. 15
- •Введение
- •Глава I.
- •Глава II. Arduino
- •III.1. Эксперимент.
- •III.2. Эксперимент.
- •III.3. Эксперимент.
- •III.4. Эксперимент.
- •В данной работе мы рассмотрели эхолокацию как явление в технике, медицине и животного мира. Изучили историю данного явления.
- •Список литературы и Интернет-источников
III.3. Эксперимент.
В данном эксперименте мы смогли измерять расстояние с помощью особых датчиков замеряющих обороты колёс. Пример программы найдёте в приложении 2. Данный способ измерения лучше, так-как основан на более точных данных. Датчик оборотов вы найдёте в приложении 6. Этот датчик позволяет считывать обороты, пройденные колесом за время работы программы. С помощью только этих данных мы можем уже найти не только расстояние, пройденное роботом, но и измерить скорость и время вращения того или иного двигателя. Этот способ не самый надёжный т.к. при повороте один из двигателей перестаёт работать и датчик замеряет показания с другого колеса, из-за этого расстояние, пройденное ботом, увеличивается, хотя он ни проходит многим меньше, особенно в пространстве где нужно много поворачивать. Но эту проблему можно исправить, посчитав среднее значение замеров. Правда придётся сделать несколько заходов. Также в отличии от УЗ-датчиков для датчика оборотов не существует помех, которые могли бы повредить измерениям.
III.4. Эксперимент.
В данном эксперименте мы добились того, что наш бот смог наконец рисовать планы территории. Для этого пришлось написать две программы, которые вы найдёте в приложении 8, одна для бота, другая для считывания информации с него. Первая часть программы — это программное обеспечение бота. Мы использовали все выше перечисленные программы, соединили их в мести и добавили функцию записи координат. Во время включения бот запоминает свою координату как начальную и стремится, проверив комнату, вернутся обратно. По ходу движения бот посылает сигналы с боковых датчиков и ищет все неровности поверхности записываю в память координаты мест смещения. После возврата в начальную координату бот делает ещё несколько заходов, корректируя свои данные, затем он обрабатывает информацию и высчитывает положение по отношению к экватору и вычисляет площадь. Вторая часть программы в свою очередь при подключении бота к компьютеру считывает с него информацию и по данным координатам чертит план территории и распечатывает его. Повторные заходы нужны для более точных замеров (проблемы и потребность датчиков в сравнении данных описано в эксперименте №2).
Заключение
В данной работе мы рассмотрели эхолокацию как явление в технике, медицине и животного мира. Изучили историю данного явления.
Так же изучили устройство аппаратной платформы Arduino и ознакомились с её программным обеспечением. С помощью него мы создали установку способную ориентироваться в пространстве и рисовать простейшие планы комнат. Эта установка не требует особых затрат и проста в сборке. Программирование на Arduino просто и его может освоить любой человек. В дальнейшем установка будет доработана и сможет составлять полноценные карты. Протестировав эту установку, мы можем сказать, что она может помочь многим людям в будущем, ведь установка может проникать в те места в которые люди не могут добраться. Также он поможет автоматизировать процесс картографии и разведки.
Список литературы и Интернет-источников
Ультразвук. Маленькая энциклопедия / Под. ред. И.П. Голяминой. М.: Советская Энциклопедия, 1979.
Применение ультразвука в медицине. Физические основы / Пер. с англ.; под ред. К. Хилла. М.: Мир, 1989.
Клиническая ультразвуковая диагностика: руководство для врачей: в 2 т. / Под ред. Н.М. Мухарлямова. М.: Медицина, 1987.
Рейман А.М. Ультразвуковой жиромер // Физика-ПС. 2007. № 1. с. 37–38. (Издат. дом «Первое сентября»).
Рейман А.М. Ежедневно вместо мыла... // Физика-ПС. 2007. № 24. с. 33–34. (Издат. дом «Первое сентября»).
Hielscher – Ultrasound Technology [Электронный ресурс] URL: http://www.hielscher.com/ultrasonics/nano_03.htm (дата обращения 23.11.2009).
Мякишев Г.Я., Синяков А.З., Слободской Б.А. Физика. Электродинамика. 10–11 кл. учеб. для общеобразоват. учреждений. М.: Дрофа, 2002. с. 111–112.
Nuclear Emissions during Self-Nucleated Cavitation / R.P. Taleyarkhan [et al.] // Phys. Rev. Letts, 96, 034301, 2006.
Сб. трудов XIX сессии РАО: в 3 т. М.: ГЕОС, 2007.
Официальный сайт Arduino в России, http://arduino.ru/About
П
#define PinA 2
static
boolean output = HIGH;
void
setup()
{
pinMode(PinA, INPUT);
digitalWrite(PinA, HIGH); attachInterrupt(0, int_on, CHANGE);
}
void
loop()
{
}
void
int_on()
{
digitalWrite(13,
(output==HIGH) ? output=LOW : output=HIGH);
}
char k; char
val1; char
val2; char
power; int
i; void
setup() {
Serial.begin(9600); //скорость работы с
последовательным поротом
pinMode(11, OUTPUT); //выводы устанавливаюся
в режим выхода
digitalWrite(11, LOW); //на выходе низкий
уровень
pinMode(9, OUTPUT);
digitalWrite(9, LOW);
power=EEPROM.read(1); }
void loop() { if
(Serial.available() > 0)
{k = Serial.read();
if
(k=='1')
{val1=HIGH;
val2=HIGH;
}
else if (k=='+')
{
power=power+10; Serial.println(power, DEC);
EEPROM.write(1,power);
}
else if (k=='-')
{power=power-10; Serial.println(power,
DEC); EEPROM.write(1,power); }
else
{val1=LOW;
val2=LOW;
}
}
analogWrite(11, val1*power);
analogWrite(9, val2*power);}
#include <EEPROM.h
const
int TRIG_PIN = 12; const
int ECHO_PIN = 13; char
val1; char
val2; char
power;
int va10;
int va7;
int ledPin = 10;
int
inPin = 7;
int
i;
void
setup() {
Serial.begin(9600);
pinMode(TRIG_PIN,OUTPUT);
pinMode(ECHO_PIN,INPUT); } void
loop() {
long duration, distanceCm, distanceIn;
pinMode(11, OUTPUT); digitalWrite(11, LOW);
pinMode(9, OUTPUT);
digitalWrite(9, LOW);
power=EEPROM.read(1);
digitalWrite(TRIG_PIN, LOW);
digitalWrite(TRIG_PIN, HIGH);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN,HIGH);
distanceCm = duration / 29.1 / 2 ;
distanceIn = duration / 74 / 2;
if (distanceCm <= 30) {
analogWrite(11, val1*power);
analogWrite(9, val2*power);
val1=LOW;
val2=LOW;
pinMode(ledPin, INPUT);
pinMode(inPin, INPUT);
va10 = digitalRead(inPin);
va7 = digitalRead(ledPin);
analogWrite(11, val1*power);
analogWrite(9, val2*power);
val1=HIGH; val2=LOW;
pinMode(ledPin, INPUT
pinMode(inPin, INPUT);
va10 = digitalRead(inPin);
va7 = digitalRead(ledPin);
analogWrite(11, val1*power);
analogWrite(9, val2*power);
val1=HIGH; val2=LOW;
}
else
{
analogWrite(11, val1*power);
analogWrite(9, val2*power);
val1=HIGH;
val2=HIGH;}
delay(1000);
if (distanceCm <= 0){
Serial.println("Out of range"); }
else {
Serial.print(distanceIn);
Serial.print("in, ");
Serial.print(distanceCm);
Serial.print("cm");
Serial.println();
}
delay(1000);
}
