цифровая электроника
вычислительная техника
встраиваемые системы

 

Курвиметр на Arduino своими руками

Автор: Mike(admin) от 12-03-2020, 13:55

Колесо для измерения расстояния своими руками


Измерительное колесо или курвиметр – это строительный измерительный инструмент для измерения расстояния. Принцип его работы прост – колесо вращается и, используя базовую вращательную кинематику, вы можете определить расстояние между двумя точками.


Курвиметр на Arduino своими руками

В этом проекте мы соберем электронный курвиметр на основе Arduino.


Принцип его работы заключается в следующем. Вращающийся датчик измеряет число оборотов, но мы должны преобразовать вращение в пройденное расстояние. Пройденное расстояние зависит от диаметра колеса. Вращающийся датчик совершает N шагов за один полный оборот (360 градусов). Количество шагов на оборот зависит от поворотного энкодера, который можно изменить от 8 до 48. Предположим, N – количество шагов на оборот, а R – радиус колеса. Тогда пройденное расстояние за один оборот составляет 2xπxR, а пройденное расстояние за один шаг = 2xπxR/N.


В нашем проекте пройденное расстояние отображается на ЖК-экране в сантиметрах. В зависимости от компонентов, используемых в коде, мы меняем значения «N» и «R». В данном случае колесо напечатано на 3D-принтере, а вся сборка установлена на алюминиевом стержне.


Курвиметр на Arduino своими руками

Схема подключения компонентов курвиметра показана на следующем изображении.


Курвиметр на Arduino своими руками

Код программы для работы электронного курвиметра следующий.



#include <LiquidCrystal.h>

LiquidCrystal lcd(5, 6, 7, 8, 9, 10);

int pin1 = 2;
int pin2 = 3;

int Pos = 0; 
int State;
int LastState;  

const float pi = 3.14;

const float R = 3.25;
const int N = 40;

float distance = 0;

void setup() { 
  pinMode (pin1 ,INPUT_PULLUP);
  pinMode (pin2 ,INPUT_PULLUP);

  lcd.begin(16, 2);
  lcd.print("MEASURNING WHEEL");
  
  LastState = digitalRead(pin1);    
} 

void loop() { 
  State = digitalRead(pin1);
   if (State != LastState){     
     if (digitalRead(pin2) != State) { 
       Pos ++;
     } 
     
     else {
       Pos --;
     }
   } 

  distance = ((2*pi*R)/N) * Pos ;

  lcd.setCursor(0, 1);
  lcd.print( distance);

  lcd.setCursor(5, 1);
  lcd.print("cm  ");
   
  LastState = State;
 }



© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий