Подсчет импульсов

RimaNTSS
Offline
Зарегистрирован: 07.06.2017

Здравствуйте Гуру! Я тут первый день и всего пару месяцев назад мне подарили Ардуино, так что просьба не пинать сразу.

Мне надо посчитать импульсы которые при помощи датчика холла генерируются при вращении закрепленного на оси двигателя постоянного тока магнитного диска. Как посчитать импульсы я уже нашел. Но мне надо чтобы при вращении мотора в одну сторону импульсы складывались, а затем, когда помеялась полярность питания двигателя и тот начал вращение в обратную сторону, то число импульсов стало бы уменьшаться. Например: счетчик на нуле, после подачи питания на двигатель, он досчитал до 1500. Запустили двигатель в обратную сторону и число стало уменьшаться пока опять не стало 0.

Возможно ли научить ардуино такой логике?

Спасибо заранее.

Araris
Offline
Зарегистрирован: 09.11.2012

RimaNTSS пишет:

Возможно ли научить ардуино такой логике?

Возможно, если Вы научите Ардуино узнавать направление вращения оси двигателя. Это тоже возможно.

RimaNTSS
Offline
Зарегистрирован: 07.06.2017

Araris пишет:
если Вы научите Ардуино узнавать направление вращения оси двигателя.
Ну, в принципе, это и есть мой вопрос. Только, навскидку, подумал что изменение напряжения с + на - зафиксировать попроще будет.

Araris
Offline
Зарегистрирован: 09.11.2012

Ну вот, например, http://robocraft.ru/blog/electronics/594.html Там и про направление вращения есть.

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

То смотря какой у вас датчик холла. 

Если тот который аналоговый то думаю можно как вы и написали выше фиксируюя изменение напряжения.

RimaNTSS
Offline
Зарегистрирован: 07.06.2017

У меня есть цыфровые, вот такие [url=http://en.imagesia.com/img-20170607-180425_1e7fs][img]http://pimg.imagesia.com/fichiers/1e7/img-20170607-180425_imagesia-com_1e7fs_small.jpg[/img][/url]  Но если бы я был уверен что аналоговый спасет ситуацию, то небыло бы особых проблем таких прикупить.

Статью прочитал, но дальше того пока незнаю как идти.

На данный момент считаю импульсы при таком скетче


#include <LiquidCrystal.h>
LiquidCrystal lcd( 9,10,4, 5, 6, 7); 
int HollPin = 8;
boolean lastButton = LOW;
int pulses = 0;
void setup()
{
 pinMode(HollPin, INPUT);
  lcd.begin(16, 2);
  lcd.print("count pulses");
  }
void loop()
{
   lcd.setCursor(2,1);
 lcd.print(pulses);    
  if (digitalRead(HollPin) == HIGH && lastButton == LOW)
 {
   pulses = pulses + 1;
    lastButton = HIGH;
  }
  else
  {
    //lastButton = LOW;
    lastButton = digitalRead(HollPin);
  }
}

 

bargundabal
Offline
Зарегистрирован: 08.06.2017

Добавь второй датчик на удалении градусов в 90 от первого - и смотри, какой раньше замечает поле, из взаимного расположения делай вывод о направлении вращения.