Оглавление:

Чрезвычайно простой неоткалиброванный сервокомпас: 7 шагов
Чрезвычайно простой неоткалиброванный сервокомпас: 7 шагов

Видео: Чрезвычайно простой неоткалиброванный сервокомпас: 7 шагов

Видео: Чрезвычайно простой неоткалиброванный сервокомпас: 7 шагов
Видео: «Атмосферная коррекция снимков в ENVI на примере данных Landsat-8» 2024, Июль
Anonim
Чрезвычайно простой, неоткалиброванный сервокомпас
Чрезвычайно простой, неоткалиброванный сервокомпас

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

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

Запасы

  • Микро сервопривод (я использовал Микро сервопривод HXT900 от Hobby King)
  • Arduino (я использовал Uno)
  • LSM303DLHC - датчик
  • Кабели, припой и т. Д.
  • Макетная плата

Шаг 1. Соберите все

Собрать все
Собрать все
Собрать все
Собрать все

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

Шаг 2. Библиотеки кода

Библиотеки кода
Библиотеки кода
Библиотеки кода
Библиотеки кода

Убедитесь, что вы их загрузили.

Другие библиотеки, которые вы будете использовать, wire.h и servo.h, должны быть уже установлены по умолчанию.

Шаг 3: Код

Откройте библиотеку эскизов «Компас» из того, что вы только что скачали. Чтобы использовать сервопривод, вы хотите поместить в этот код сервокод. Я объединил его с кодом Хани Кианы отсюда. Оригинал написан Хани Киани, а не мной. Должно получиться вот так.

#включают

#include #include #include #include Adafruit_LSM303DLH_Mag_Unified mag = Adafruit_LSM303DLH_Mag_Unified (12345); int servoPin = 3; Серво Серво1; установка void (void) {Serial.begin (9600); Wire.begin (); Servo1.attach (servoPin); Serial.println («Тест магнитометра»); Serial.println (""); if (! mag.begin ()) {Serial.println («Ой, LSM303 не обнаружен… Проверьте проводку!»); в то время как (1); }} void loop (void) {/ * Получить новое событие датчика * / sensor_event_t event; mag.getEvent (& событие); поплавок Pi = 3,14159; // Вычислить угол вектора y, x float heading = (atan2 (event.mintage.y, event.mintage.x) * 180) / Pi; // Нормализуем до 0–360 if (заголовок <0) {заголовок = 360 + заголовок; } Serial.print ("Заголовок компаса:"); Serial.println (заголовок); Servo1.write (180-заголовок); задержка (10); }

Шаг 4: соедините все вместе

Подключите его вместе
Подключите его вместе

Вы хотите, чтобы крайний левый контакт SCL был подключен к входу данных A5.

Тот, что рядом - SDA - подключен к порту A4.

Земля переходит в Землю.

VIN идет на порт 5v.

Шаг 5: Добавьте сервопривод к проводке

Добавить сервопривод в проводку
Добавить сервопривод в проводку

Земля и напряжение говорят сами за себя, но вы хотите, чтобы вывод данных был ~ 3.

Шаг 6. Проверьте код

Проверить код
Проверить код

Если вы перемещаете магнитометр медленно, сервопривод должен двигаться вместе с ним. Вероятно, он не отличается точностью, но, по крайней мере, работает с кодом, поэтому первая часть завершена. Он еще не откалиброван, но работает.

Рекомендуемые: