Страница 5 из 10 ПерваяПервая 12345678910 ПоследняяПоследняя
Показано с 41 по 50 из 98
  1. #41
    Продвинутый
    Регистрация
    20.12.2011
    Сообщений
    336
    Вес репутации
    220

    По умолчанию Re: Датчик холла 12В использование с ардуино

    Считаю частоту выдачи сигнала датчиком холла (готовлюсь к замерам датчика скорости).
    Подключил эл. двигатель через реле, на двигатель насажена железка, которая вращаясь перекрывает датчик холла.
    При выводе через "Serial Monitor" - Serial.println(delta), показываются значения в милисекундах от включенного состояния датчика до выключенного. Все бы ничего, но проскакивают какие-то случайные значения (от наводок что-ли)...
    Как быть?

    Вот код:

    Код:
    int RelayPin = 14; // Connect Relay to input pin 2
    int HallPin = 3; // Connect Hall to input pin 3
    
    void setup() 
    {
    Serial.begin(9600);
    pinMode(RelayPin, OUTPUT); // declare Relay as output
    pinMode(HallPin, INPUT); // датчик холла
    digitalWrite(HallPin, HIGH); //внутренняя подтяжка 
    attachInterrupt(1, int_on, FALLING);  // настроить прерывание interrupt 1 на pin 3 
    }
    
    void  int_on() 
    { 
    delta = millis() - miliss;
    miliss = millis();
    Serial.println(delta);
    }  
    
    void loop()
    {
    RelayOn=HIGH;
    digitalWrite(RelayPin, RelayOn); // реле включить 
    }
    Последний раз редактировалось kadushkin; 04.01.2012 в 01:31.

  2. #42
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Датчик холла 12В использование с ардуино

    А реле ты как подключил? Возможно что помеха от него или магнитное поле не достаточное для датчика
    Нужно считать сами импульсы, а не их длительность
    На форуме есть много примеров , и код спидометра тоже кто то уже выкладывал
    Последний раз редактировалось Chip; 04.01.2012 в 02:09.

  3. #43
    Продвинутый
    Регистрация
    20.12.2011
    Сообщений
    336
    Вес репутации
    220

    По умолчанию Re: Датчик холла 12В использование с ардуино

    Реле для ардуино - RELAY


    Датчик холла уже с магнитом (встроенным), в прорезь между магнитом и датчиком железка входит...

    Код спидометра я смотрел...
    Код:
    dinaimpulsov = pulseIn(3, HIGH, 100000);
    Длина импульса почему-то не стабильно выдается...

    А как количество импульсов посчитать?

  4. #44
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Датчик холла 12В использование с ардуино

    Возьми за основу вот этот код

  5. #45
    Продвинутый
    Регистрация
    20.12.2011
    Сообщений
    336
    Вес репутации
    220

    По умолчанию Re: Датчик холла 12В использование с ардуино

    Все равно наводки...
    Попробую в машине, возможно помехи от привода идут...
    Вот такой код попробую:
    Код:
    int HallPin = 3; // Контакт для датчика скорости
    unsigned long speedtime = 0; 
    int count = 0; 
    unsigned long time; 
    float lkolesa; //длина окружности колеса
    float Speed;
    
    void setup() 
    {
    pinMode(HallPin, INPUT); // датчик холла
    digitalWrite(HallPin, HIGH); //внутренняя подтяжка входа датчика холла
    attachInterrupt(1, int_on, FALLING);
    Serial.begin(9600); 
    }
    
    void loop()
    {
    }
    
    void  int_on() 
    
    { 
    count++; //увеличить счетчик 
    
    if (count >=6)
      {
          speedtime = micros()-time;  //время прихода 6-ти импульсов
          time = micros(); //обнулить
       lkolesa=0.686; // длина окружности колеса 215/65 R16 = 686мм
       Speed=((lkolesa*3600000)/speedtime); // км/ч
    Serial.println(speedtime);  // длина между 6-ю импульсами
       Serial.println(Speed);  // км/ч
     count = 0;
      }  
    }
    Буду подключать вот так...

    Только никак не пойду как сигнал с цифрового входа дальше пойдет, ну пройдет он диод, а дальше-то что.... там же не земля, а выход с панели приборов (без нагрузки) +12В.
    Если смотреть наоборот то сигнал 12В, через диод не пройдет ....
    Объясните на пальцах...
    Последний раз редактировалось kadushkin; 04.01.2012 в 15:49.

  6. #46
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Датчик холла 12В использование с ардуино

    Я думаю что проблема в другом.
    В прерывании не стоит использовать такую медленную функцию как Serial.println да еще на такой медленной скорости.
    И я приводил пример кода , лучше использовать MSTimer2
    Последний раз редактировалось Chip; 04.01.2012 в 18:39.

  7. #47
    Продвинутый
    Регистрация
    20.12.2011
    Сообщений
    336
    Вес репутации
    220

    По умолчанию Re: Датчик холла 12В использование с ардуино

    Ну то есть:

    Код:
    void setup() 
     { 
    ...
    pinMode(HallPin, INPUT); // датчик холла
    digitalWrite(HallPin, HIGH); //внутренняя подтяжка входа датчика холла
      MsTimer2::set(30000, flash); // таймер будет срабатывать через каждые 500ms 
      MsTimer2::start();//запустить таймер 
    ...
    }
    
    void flash() //обработка прерывания таймера
    {
    
     if ((digitalread(HallPin)==HIGH)
    {
    обработка кода
    }
    
    }

  8. #48
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Датчик холла 12В использование с ардуино

    Примерно так
    Получишь число импульсов за пол секунды, рассчитай на их основе скорость
    PHP код:
    void setup() 

    attachInterrupt(1int_onRISING);
    Serial.begin(115200); 
    pinMode(HallPinINPUT); // датчик холла
    digitalWrite(HallPinHIGH); //внутренняя подтяжка входа датчика холла
      
    MsTimer2::set(500flash); // таймер будет срабатывать через каждые 500ms 
      
    MsTimer2::start();//запустить таймер 
    count=0;
    }

    void flash() //обработка прерывания таймера
    {
    count=0;
    Serial.println(speed);
    }

    void  int_on() 

    count++; //увеличить счетчик

    Последний раз редактировалось Chip; 04.01.2012 в 20:10.

  9. #49
    Продвинутый
    Регистрация
    20.12.2011
    Сообщений
    336
    Вес репутации
    220

    По умолчанию Re: Датчик холла 12В использование с ардуино

    В очередной раз спасибо за подсказку, код поправил...
    Последний раз редактировалось kadushkin; 04.01.2012 в 22:54.

  10. #50
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Датчик холла 12В использование с ардуино

    Я извиняюсь, сегодня все внимательно обдумал и получается сбил с правильного пути. Предложенный мной способ имеет недостатки.
    1-большая погрешность
    2-медленная скорость замера
    Чтобы делать быстрый и точный замер нужно измерять длительность импульса

    PHP код:
    #include <util/delay.h> 
    volatile unsigned long delta,micross;
    unsigned long temp;
    int RelayPin 14// Connect Relay to input pin 2
    int HallPin 3// Connect Hall to input pin 3

    void setup() 
    {
    Serial.begin(115200);
    pinMode(RelayPinOUTPUT); // declare Relay as output
    pinMode(HallPinINPUT); // датчик холла
    digitalWrite(HallPinHIGH); //внутренняя подтяжка 
    attachInterrupt(1int_onRISING);  // настроить прерывание interrupt 1 на pin 3
    digitalWrite(RelayPinHIGH); // реле включить  
    }

    void  int_on() 

      
    delta=3030*(micros()-micross);//получим время пробега 1 км
      
    micross micros(); //обнулить
    }  

    void loop()
    {
    temp=delta;
    Serial.println(temp);
    _delay_ms(500);

    что бы рассчитать коэффициент нужно знать размер колеса и число импульсов на 1 оборот. Для колеса размером 195/65 R15 и 6 импульсам на 1 оборот, пробег на 1 импульс будет составлять примерно 33см
    получаем 33см за время delta
    Последний раз редактировалось Chip; 05.01.2012 в 16:48.

Страница 5 из 10 ПерваяПервая 12345678910 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •