программирование Холл эффект сенсоров

tor-zireal
Offline
Зарегистрирован: 09.03.2015

Привет, ребят!

Я новичок по программированию. Можете, пожалуйста помочь? Мне нужно найти время за которое машина с магнитом проезжает через два холл эффект сенсора. 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

проезд первого датчика - старт, второго стоп секундомера ( миллисСекМера )

водитель сможет рулить так, чтобы проехать магнитиком в 5-ти миллиметрах от датчика Холла ? :)

расстояние между датчиками ?

чем не устраивает прерывание инфракрасного ( или видимого диапазона ) луча ?

короче, вопрос ваш не ясен :(

tor-zireal
Offline
Зарегистрирован: 09.03.2015

Извиняюсь за такую скудную информацию) Нам дали проект: придумать устройство, которое могло бы определить быстро ли движется игрушечная машинка с магнитиком или медленно,  и относительно этого, либо ускорить ее, либо остановить.  Дело в том, что прграмма выдает разность потенциалов. А как можно узнать время между сигналами сенсоров?

Нас снабдили сенсорами, двумя моторами и микроконтроллером)

Сама я никогда не программировала) да и в школе не так сильн была в этом. Вы уж простите :33

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

игрушечная машинка по кольцевому треку ? как и где расположены датчики Холла ?

прграмма выдает разность потенциалов - она такого не сможет

Нас снабдили сенсорами - что за сенсоры ?

tor-zireal
Offline
Зарегистрирован: 09.03.2015

Hall effect sensors, light sensor, touch sensor. Нет, по прямой. Она изначально катится по наклонной плоскости, а затем по прямой. Сенсоры будут расположены у прямой дороги. Расстояние между сенсорамиЖ 15 см

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

фотки датчиков желательно...

ваш "скрытый" вопрос - КАК с них снять сигнал ?

.....как измерить скорость - это потом :)

tor-zireal
Offline
Зарегистрирован: 09.03.2015

Я же написала " как узнать время между сигналами" х)   

На фото только hall effect sensor, 2 мотора, машинка

Здесь моторы, машинка и hall efect sensor

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Не знаю какие именно сенсоры, но как правило если сенсор не в магнитном поле то он выдает половину "своего" напряжения. Если появляется поле, то в зависимости от направления магнитного потока сенсор начинает выдавать напряжение либо ниже половины либо выше половины. Отлавливаем наличие магнитного поля на первом датчике и присваиваем переменной start_time = millis. Тоже самое со вторрым датчиком. Потом вычитаем значения и получаем время проезда машинки. Чтобы время взялось только один раз для каждого датчика написать условия вида "Если старт_тайм==0 и сработал_датчик тогда запоминаем время." Как только срабатывает второй датчик делаем millis() - старт_тайм и получаем искомое.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013
volatile unsigned long time1 = 0;
volatile unsigned long time2 = 0;
#define dlina 100 // расстояние между датчиками в миллиметрах

void setup(){
  Serial.begin(9600);
  attachInterrupt(0, Start, RISING); //первый датчик подцепить к 2 пину
  attachInterrupt(1, End, RISING);   //первый датчик подцепить к 3 пину
}

void loop(){
  if (time2 != 0){
    Serial.print(dlina*10000/(time2-time1));   //вычисляем задержку
    Serial.println(" m/s");
    delay(100);
    time2 = 0;
  }
}

void Start(){                  // 1 прерывание
  time1=micros();
}
void End(){
  time2=micros();              // 2 прерывание
}

в uart придет скорость в метрах в секунду. можно вместо 10000 в формуле заменить на 36000 и будет в километрах в час. вроде так

только с датчиками сам разбирайся

tor-zireal
Offline
Зарегистрирован: 09.03.2015

Спасибо огромное всем! Вроде поняла

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
// куда и как подключить датчики Холла ( на прерывание 0 и 1 )
byte startStop=0;
unsigned long time;
//=============================================================
void setup()
{               
  Serial.begin( 9600 );
  // как сконфигурировать датчики Холла и прерывания от них
}
//=============================================================
ISR_0
{
  // обработчик прерывания от первого датчика
  startStop=1;
}
//=============================================================
ISR_1
{
  // обработчик прерывания от второго датчика
  startStop=2;
}
//=============================================================
void loop()
{
  if(startStop==1)
  {
    time=millis();
  }
  if(startStop==2)
  {
    time=millis()-time;
    startStop=0;
    Serial.println(time);     // время в миллисекундах
  }
  delay(5000);                // ждём 5 сек след.заезда
}
//=============================================================

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

tor-zireal пишет:

Спасибо огромное всем! Вроде поняла

с прошедшим Праздником ! ( он длится у русских 2....5 дней ) :)

tor-zireal
Offline
Зарегистрирован: 09.03.2015

Спасибо :33
Повезло же вашим девушкам хд

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

в бывшей Прибалтике - по другому ? :(

tor-zireal
Offline
Зарегистрирован: 09.03.2015

в другой части света хд