ВОПРОС Программирование датчика скорости вращения FC-03
- Войдите на сайт для отправки комментариев
Ср, 23/09/2020 - 09:50
Здравствуйте!
Я новичок в теме Arduino, не судите строго.
Не получается получить корректно частоту вращения колеса.
На малых оборотах все ок.
При увеличении оборотов показания срываются в 0.
Датчик FC-03. Arduino Nano.
Заранее Спасибо!!!
СКЕТЧ такой
int intensity = 0;
int last = 0;
int reading;
int sensorIni;
int encoder_pin = 2; // The pin the encoder is connected
unsigned int rpm; // rpm reading
volatile byte pulses; // number of pulses
unsigned long timeold;
unsigned int pulsesperturn = 20;
void counter()
{
//Update count
pulses++;
}
void setup()
{
Serial.begin(9600);
pinMode(encoder_pin, INPUT);
pulses = 0;
rpm = 0;
timeold = 0;
attachInterrupt(0, counter, FALLING);
}
void loop()
{
intensity = rpm;
if (millis() - timeold >= 100){ /*Uptade every one second, this will be equal to reading frecuency (Hz).*/
rpm = 2 * pulses;
timeold = millis();
pulses = 0;
//Write it out to serial port
Serial.print("RPM = ");
Serial.println(rpm,DEC);
}
}
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
Не мало byte для количества импульсов ?
if (millis() - timeold >= 100) - в секунде 1000 милисекунд
Я пробовал разные значения временного отрезка byte.
Мне нужно как можно быстрее измерять скорость вращения колеса. В идеале 20-50 мсек. И на малых оборотах все ОК.
Почему на больших оборотах происходит срыв?
Может Nano не успевает обрабатывать прерывания?
Большие обороты это сколько по вашему ?
Пока код правильно не вставишь, обсуждать нечего.
оригинальный скетч измеряет за 1000 миллисекунд:
Пока код правильно не вставишь, обсуждать нечего.
как нечего! мерять обороты ФАЛЛИНГАМИ это куда? А?
вот такое пробное устройство. если просто крутнуть пальцами происходит срыв который видно на следующей картинке
заменить и посмотреть
заменить и посмотреть
Спасибо! Не помогло
Мне не нужно мерить обороты в секунду.
Нужно померить кол-во импульсов за малый промежуток времени.
Далее я уже домножу до необходимого. или через map
Чтение переменной pulses неатомарно. См. ATOMIC_BLOCK
Спасибо! Не помогло
покажите код после исправления
а в датчике точно 393 микросхема?
и таки да, присваивать надо атомарно
393
393
должно работать, двигатель сколько оборотов даёт?
про атомарность первый раз слышу. нужно разобраться.
а как тогда будет выглядеть скетч?
спасибо!
не могу точно сказать обороты.
кручу пока пальцами
это будет midi контроллер. как на виолончели возюкаешь смычком. датчик измеряет скорость и посылает по миди значение громкости
не могу точно сказать обороты. кручу пока пальцами...
"берёшь чистый палец..." )))
PS из фильма
Добрый вечер
Посмотрел осциллографом выходы датчика FC-03
на аналоговом все ок
а на цифровом на высоких оборотах сигнал обрывается в 0.
т.е. дело не в програмной части
В чем может быть проблема?
Высокие - это сколько? Миллион? Миллиард? Какая частота на фотоэлементе?
период импульсов при быстром вращении 1-1,2 ms
и еще
на аналоговом выходе с оптопары сигнал зависит от частоты
при больших оборотах амплитуда уменьшается до 2 вольт
может быть компаратор в датчике не срабатывает на малую амплитуду?
как это исправить?
а на выходе датчика точно меандр, если нет то там не 393 компаратор, а что-то другое, у меня в генераторе к катушке Мишина частота до 400 килогерц и меандр изумительный
посмотрел схему датчика, сделан по этой говняной схеме, работать без переделки не будет, можно попробовать уменьшить ёмкость до 1000 пикофарад, но это всё равно костыли
точно 393. и до срыва меандр тоже хороший
Оптосенсор тормозной?
не думаю, он нагружен на ёмкость 100нан, тау одна миллисекунда, и как это должно работать?
спасибо попробую
уменьшить емкость помогло. Заработало так как необходимо
Спасибо ОГРОМНОЕ!!!!!!!!!
уменьшить емкость помогло. Заработало так как необходимо
Спасибо ОГРОМНОЕ!!!!!!!!!
Это ты так думаешь, на самом деле надо использовать второй компаратор, чего он там без дела валяется И, кто знает, с какой интенсивностью смычком шоркать будешь )))
а где можно схему найти?
а где можно схему найти?
она секретная, в интернете не видел )))