Arduino Uno + фотодатчик на станке

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем PushKeeN, 2 фев 2016.

  1. PushKeeN

    PushKeeN Нуб

    Здравствуйте, господа!

    Сразу оговорюсь, что я не большой специалист в программировании, конструировании и электронике, потому прошу за глупые вопросы не пинать.
    Ситуация такая: есть некий станок, основная задача которого - вращение. У этого станка была система управления, построенная в 90е годы и совершенно мне не понятная.
    Передо мной стоит задача синхронизировать вращение этого станка и шагового двигателя.
    Что бы эту задачу решить, мне нужно знать скорость вращения двигателя станка, что бы задать необходимую скорость шаговому двигателю. На валу станка стоит фотодатчик. У меня получилось к нему подключить ардуино и считать с него данные в ардуино.
    Но они считываются как-то странно.
    Код (C++):
    float rounds = 0.0;

    void setup() {
      pinMode(13, OUTPUT);
      attachInterrupt(INT0, rpm_count, FALLING);
      Serial.begin(9600);
    }

    void loop() {
      Serial.println(rounds);
    }
    void rpm_count()
    {
      rounds = rounds + 0.1;
      digitalWrite(13, !digitalRead(13));
    }
     
    Если достаточно быстро крутить вал (ну 1000 об/мин), к примеру, то значение rounds в какой-то момент начинает приобретать еще и сотые доли.
    Ну т.е. вот часть данных из сериал монитора:
    Объясните нубу, пожалуйста, почему если я прибавляю только десятые, вылезают сотые? :)
    Заранее спасибо!
     
    Последнее редактирование: 3 фев 2016
  2. PushKeeN

    PushKeeN Нуб

    Вчера еще поэкспериментировал и выяснил, что это не зависит от скорости вращения. При любой скорости, когда счетчик переваливает за 232.0 появляются сотые.