Показано с 1 по 10 из 98

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Продвинутый
    Регистрация
    03.06.2008
    Возраст
    50
    Сообщений
    320
    Вес репутации
    341

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

    PHP код:
    void  int_on() 


    count++; //увеличить счетчик volatile
    if (count >=2//ждем 2 импульса  - 2имп=0,8м
      
    {
    speedtime micros()-time;  //время прихода 2 импульсов
    time micros(); //обнулить
    Speed=((0.8*3600000)/speedtime); //перевод в км/ч
    Serial.println(speedtime);
       
    Serial.println(Speed); 
     
    count 0;
      }  

    При скорости 5 км/ч., ты два импульса, целую вечность будешь ждать!!!
    Надо один импульс мерить (и то долго)!
    С диаметром колеса тоже не к чему заморачиваться, я взял скорость с GPS и корректировал числитель (650000).
    Убери лишнее вычисление Speed=((0.8*3600000)/speedtime); 0.8*3600000 = 2880000.
    Получится Speed = (2880000 / speedtime);
    И всю дьявольщину (Serial.println(speedtime); Serial.println(Speed); ) тоже убери из прерывания ))))))))))))
    PHP код:
    /////////////// СПИДОМЕТР//////////////////////////////////////
        
    dinaimpulsov pulseIn(3HIGH100000);  // Считывание длительности 
        
    ValSpCurr = (650000 dinaimpulsov); // Перевод в км/ч
      
    if (dinaimpulsov 120000 || ValSpCurr 350)
      {
        
    ValSpCurr 0;
      } 
      if (
    ValSpCurr peakspeed//pikspeed
      
    {  
        
    peakspeed ValSpCurr
    И функция pulseIn(); не очень подходит для этих целей, при низкой скорости авто она всю программу тормозит, пока ждёт конца импульса.

    Сделал на прерывании.

    PHP код:
    void  int_on() 
       { 
          
    spidometr micros()-time;  //время прихода  импульсa
          
    time micros(); //обнулить
          
    ValSpCurr = (1450000 spidometr);
        }
     } 
    А чтоб не было вот этого: (я с этим тоже столкнулся)
    Единственно бывает, что скорость отличается на 3-4 км между соседними срабатываниями таймера, например 39 и 36, на самом деле скорость ~40
    Я думаю надо при скорости свыше 20 км/ч. , брать три-четыре последних значения и выводить среднее арифметическое, тогда наверно не будет разброса.

    Сейчас проверить не могу, по причине поломки авто...
    А на столе всё круто работает))))))

    Вабще со скоростью запара, с оборотами всё проще гораздо))))))))

    PHP код:
    void loop() 
    //////////////////////////ТАХОМЕТР///////////////////////////////////////
    {
    if (
    taxometr 6000)
    {
     
    taxo = (80000000 taxometr);
    }
    else 
    {
      
    taxo 0;
    }  
    if (
    taxo peakrpm//pikrpm
      
    {  
        
    peakrpm taxo;
      }

    void  int_on() 

    count++; //увеличить счетчик volatile
    if (count >= 4)
        {
          
    taxometr micros()-time;  //время прихода 4-ти импульсов
          
    time micros(); //обнулить
          
    count 0;
        }  

    Последний раз редактировалось mebitek; 11.02.2012 в 07:05.

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

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

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

Ваши права

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