Показано с 1 по 7 из 7
  1. #1
    Новичок
    Регистрация
    28.01.2012
    Возраст
    37
    Сообщений
    13
    Вес репутации
    161

    По умолчанию Цифровой тахометр с LED индикацией

    Добрый Всем день !!! МК и в частности Arduino увлёкся недавно ( Arduino тольуо жду с Китая).

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

    Данные по оборотам есть, может не совсем точные но приблизительные.

    Задачи:

    1)Нужно симитировать П-образный сигнал, с постоянной скважностью 25% и разной частотой от 0 до 6750 Гц. Регулировку частоты вывести на Потенциометр.

    2)Считать сигнал, и перевести его в поочередное загорание Светодиодов с увеличения частоты.

    По первому вопросу идей пока "0", видел чтото подобное вот здесь http://sites.google.com/site/vanyamb...rator-signalov но не разобрался, точнее вроде понятно, но не смог смоделировать в Протеусе (потенциометр не работает), и не понятно как интерпритировать это к себе.

    По второму вопросу видел тут : http://www.compcar.ru/forum/showthre...?t=8169&page=4 но тоже пока не всё понятно...

    Вообщем помогите чем сможете пожалуйста !!!

    Заранее благодарен всем откликнувшимся

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

    По умолчанию Re: Цифровой тахометр с LED индикацией

    потенциометр подключить к аналоговому входу , на основе его данных изменять частоту софтового ШИМ.
    Софтовый ШИМ на требуемую частоту можно написать , но на чистом avr cи
    вот тебе код готового частотомера
    PHP код:
    #include <util/delay.h>  

    volatile unsigned int tachBuf;  
    unsigned long tachValue;  

    ISR(TIMER1_CAPT_vect)  
    {   
        
    TCNT1 0;    
        
    tachBuf ICR1+2;  
    }  
    //********************************************************************  
    void setup()      
    {    
       
    pinMode(8INPUT);  //Вход для импульсов спидометра  
       
    pinMode(6OUTPUT);//выход ШИМ  
       
    TCCR0B TCCR0B 0b11111000 5;//частота ШИМ   
       
    analogWrite(6128);  //Запустить ШИМ  
       
    digitalWrite(8HIGH); // включить подтяжку входа  
       
    Serial.begin(115200);  
       
    TIM_Init();//инициализация таймера  
      
    _delay_ms(300);  
    }    
    //********************************************************************  
    void loop()      
    {  
      
    cli();    
      
    tachValue =250000/tachBuf;  
      
    Serial.print("freq=");  
      
    Serial.println(tachValue,DEC);  
      
    tachBuf=1;  
      
    sei();  
      
    _delay_ms(300);  
    }     
    //********************************************************************  
    void TIM_Init(void)  
    {  
       
    TIMSK1=(1<<ICIE1);   
       
    TCCR1A=(0<<COM1A1)|(0<<COM1A0)|(0<<WGM11)|(0<<WGM10);    
       
    TCCR1B=(1<<ICNC1)|(1<<ICES1)|(0<<WGM13)|(0<<WGM12)|(0<<CS12)|(1<<CS11)|(1<<CS10);  
       
    TCNT1 0;                                             

    Последний раз редактировалось Chip; 30.01.2012 в 16:35.

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

    По умолчанию Re: Цифровой тахометр с LED индикацией

    Изменяя в обработчике прерывания значение TCNT1 можно получить частоту от 15Гц до 146кГц.
    PHP код:
    #define  D4_High PORTD |=B00010000   
    #define  D4_LOW PORTD &= B11101111 
    volatile boolean Counter;      
    //*************************************************************************   
    ISR(TIMER1_OVF_vect)   
    {  
    TCNT1=50000;  //от 15Гц(0) до 145600Гц(65534) 
    Counter=~Counter;
     if(
    CounterD4_LOW; else D4_High;
    }     
    ////*************************************************************************   
    void setup()       
    {          
       
    pinMode(4OUTPUT);  //выход спидометра    
       
    Init_Timer1();        
    }   
    //*************************************************************************   
    void loop()       

    }    
    //*************************************************************************    
    void Init_Timer1()   
    {   
        
    TCCR1A 0;         
        
    TCCR1B = (1<<CS11);    
        
    TCNT1 0;           
        
    TIMSK1 _BV(TOIE1);    
        
    sei();              

    Последний раз редактировалось Chip; 31.01.2012 в 00:54.

  4. #4
    Новичок
    Регистрация
    28.01.2012
    Возраст
    37
    Сообщений
    13
    Вес репутации
    161

    По умолчанию Re: Цифровой тахометр с LED индикацией

    Цитата Сообщение от Chip Посмотреть сообщение
    потенциометр подключить к аналоговому входу , на основе его данных изменять частоту софтового ШИМ.
    Софтовый ШИМ на требуемую частоту можно написать , но на чистом avr cи
    вот тебе код готового частотомера

    1) Что значит, на чистом Си ? Всмысле написать в avr studio для данного МК (которое используется в моём Arduino), скомпилировать, и подключить в начале Кода как Delay.h ? Или написать на си в Arduino IDE как подпрограмму?

    2)Скетч для вывода на LCD ? (как я понял) (требует детального разбора, и правки под нужный диапазон частот?)

    3)Одновременная многозадачность :

    Вообщем эта ардуинка будет выполнять несколько функций :

    1) В приборную панель Nissan Note планируется изготовить подложку с светодиодами:
    1.1 По шкале тахометра, от 0 до 6000 об/мин будут полукругом распологатся SMD светодиоды. Цель : Когда стрелка будет подыматся в направлении от 0 до 6000, постепенно друг, за другом будут загоратся светодиоды (шкала тахометра не подсвечмвается, стрелоска подсвечивается)
    1.2 Тоже самое со спидометром (тут всё намного сложнее, даже идей нет как реализвовать, дело в том что датчика скорости на данном автомобиле нет, скорость вычисляется от ABS, который передаёт данные на ECM по CAN шине, как с неё считать скорость ума не приложу)
    1.3 Тоже и для шкалы уровня топлива
    1.4 Индикатор отсечки по показаниям тахометра, smd белого цвета начинающий моргать когда достигаются определёные обороты двигателя
    1.5 Цвет свечения стрелочек плавно изменяется в зависимости от скорости, тахометра, показателя уровня топлива соответственно

    Вообщем планы Бонопардовские, а знания почти нулевые.....

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

    По умолчанию Re: Цифровой тахометр с LED индикацией

    1-Уже выложил пример выше, можно через Serial monitor отправлять значения для изменения частоты
    2-смотря что за LCD
    3-Ранее выложенный скетч частотомера работает в фоновом режиме.
    Последний раз редактировалось Chip; 30.01.2012 в 18:42.

  6. #6
    Новичок
    Регистрация
    28.01.2012
    Возраст
    37
    Сообщений
    13
    Вес репутации
    161

    По умолчанию Re: Цифровой тахометр с LED индикацией

    Цитата Сообщение от Chip Посмотреть сообщение
    1-Уже выложил пример выше, можно через Serial monitor отправлять значения для изменения частоты
    2-смотря что за LCD
    3-Ранее выложенный скетч частотомера работает в фоновом режиме.
    1.Спасибо, долго писал сообщение, поэтому не увидел

    2. Про LCD я напутал ввиду своей "чайниковости" подумал что :
    "void loop()
    {
    cli();
    tachValue =250000/tachBuf;
    Serial.print("freq=");
    Serial.println(tachValue,DEC);
    tachBuf=1;
    sei();
    _delay_ms(300);
    } "

    Что то связаное с LCD

    Ну нету знаний пока, нету...

    3.Где то ранее читал, что использование функции delay тормозит выполнение всех функций на заданное время....

    Извините если чушь какую то несу.... надо еще много учится.... Может дадите пару ссылок, почитать про многозадачность и Arduino, желательно с примерами....

    За скетчи большое, спасибо буду в них разбиратся ))

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

    По умолчанию Re: Цифровой тахометр с LED индикацией

    Многозадачность это скорее не к железке , а к операционке.
    У ардуины нет операционки.
    Копать нужно в сторону прерываний, все что связано с прерываниями будет работать в фоновом режиме

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

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

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

Ваши права

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