| Ваш IP: 100.26.179.251 | Online(32) - гости: 7, боты: 25 | Загрузка сервера: 0.3 ::::::::::::

Тахометр на Arduino

Тахометр на Arduino предназначен для измерения частоты вращения различных вращающихся деталей, таких как роторы, валы, диски и др. Принцип измерения основан на стробоскопическом эффекте, на деталь  наносят яркую белую метку, которая при вращении детали зрительно будет перемещаться или останавливаться когда частота вращения детали и частота пульсации светодиода тахометра будут одинаковые.

Схема тахометра достаточно простая, для сборки Вам понадобится 2 резистора 0,125 Вт, транзистор  КТ815, яркий светодиод, индикатор LCD1602 с модулем I2C, энкодер KY-040 и плата Arduino Nano.

Светодиод в моем случае использован от подсветки LED телевизора, с номинальным рабочим напряжением 3 В, мощностью 1 Вт, но Вы можете использовать любой другой светодиод белого свечения, мощностью не менее 1 Вт.

Диапазон измерения тахометра от 10 об/мин до 25000 об/мин, с шагом 0,1 об/мин. Частота пульсаций светодиода меняется при помощи энкодера, нажатие кнопки энкодера позволяет менять множитель изменения частоты (x0.1, x1.0,  x10.0, x100.0).

В верхней строке индикатора показана текущая частота в об/мин (при включении установлено 1000 об/мин), во второй сроке показан множитель и частота пульсаций светодиода (F = об/мин * 60).

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

Вид метки при синхронизации вала электродвигателя с частотой пульсаций светодиода.

Видео

#include <Encoder.h>  // https://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h> // https://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <LiquidCrystal_I2C.h> //Библиотека -  http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
   Encoder myEnc(5, 6);//CLK, DT
   LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей 
 
 
float f;
long en=10000;
unsigned long oldPosition  = -999,newPosition;
bool w;
byte hag;
int mn;
 
void setup(){
  Serial.begin(9600);
  MsTimer2::set(3, to_Timer);MsTimer2::start();
  Wire.begin();lcd.init();lcd.backlight();
 DDRB |= (1 << 1); // ВЫХОД ГЕНЕРАТОРА D9
  pinMode(7,INPUT);  // КНОПКА ЭНКОДЕРА D7
  setupFreq(f/60);
}
 
void loop(){
   if(digitalRead(7)==LOW){hag++;if(hag>3){hag=0;}delay(100);}
   switch(hag){
    case 0: mn=1;break;
    case 1: mn=10;break;
    case 2: mn=100;break;
    case 3: mn=1000;break;
    }
 
   if (newPosition != oldPosition){oldPosition = newPosition;
     en=en+newPosition*mn;myEnc.write(0);newPosition=0;if(en<100){en=100;}if(en>250000){en=250000;}w=1;f=(float)en;setupFreq(f/600);} 
  Serial.println(f,2);
  lcd.setCursor(1,0);lcd.print(f/10,1);lcd.print("  ");lcd.setCursor(10,0);lcd.print("rpm");
  lcd.setCursor(9,1);lcd.print("x");lcd.print((float)mn/10,1);lcd.print("   ");lcd.setCursor(1,1);lcd.print(f/600,3);lcd.print(" ");
  delay(100);
  }
 
void setupFreq(float freq){
 int prescallers[] = {0, 1, 8, 64, 256, 1024};
 unsigned long ocr;
  byte prescallerBits = 1; 
  int prescaller = prescallers[prescallerBits]; 
  if (freq) {  do  {
          ocr = 8000000 / freq  / prescaller - 1; 
          if (ocr < 65535){break;}
          prescallerBits += 1; prescaller = prescallers[prescallerBits]; 
      }
      while (prescallerBits < 6);                        
      if (ocr < 65535) {
            cli();                   
          TCCR1A = 0;             
          TCCR1B = 0;            
          TCCR1B = prescallerBits;
          OCR1A = ocr; 
          TCCR1B |= (1 << WGM12); 
           TIMSK1 |= (1 << OCIE1A);
           sei();   
          float freq = 8000000.00 / prescaller / (ocr + 1); 
    }
  } 
}
 
ISR(TIMER1_COMPA_vect){PORTB |= (1 << 1);delay(1);PORTB &= ~(1 << 1);}
 
 
void to_Timer(){newPosition = myEnc.read()/4;}

При провидении измерений стробоскопическим методом есть одна особенность, если Вы не знаете примерную частоту вращения вала двигателя, то при измерении метка зрительно может остановится  на меньшей кратной частоте. Например если частота вращения двигателя 1200 об/мин, то метка зрительно будет останавливаться при частоте пульсаций светодиода на 600 об/мин (кратно 2), 400 об/мин (кратно 3). Для того чтобы избежать ошибки во время измерения необходимо после синхронизации метки поднять частоту до момента следующей синхронизации, если при синхронизации Вы увидите 2 метки, то предыдущее измерение было верным.

 2460 об/мин  1230 об/мин

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=291

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Узел настройки УКВ-ЧМ приемника

    Узел настройки УКВ_ЧМ приемника представляет собой синтезатор напряжения для электронной настройки УКВ_ЧМ приемника и как дополнительное уст-во — электронную линейную шкалу напряжения для контроля напряжения подаваемого на варикапы приемника. Напряжение настройки приемника устанавливается при помощи полевого транзистора VT1, в его затворной цепи включен С1, при нажатии S1 или S2 С1 …Подробнее...
  • Стерео усилитель класса D 2*25Вт на базе TDA7490

    Стерео усилитель класса D 2*25Вт на базе TDA7490

    Микросхема TDA7490 имеет защиту от перенапряжения, тепловую и защиту от КЗ, так же микросхема имеет встроенные функции MUTE и STAND-BY. Усилитель на TDA7490 имеет следующие технические характеристики: Напряжение питания от +/-10В до +/-25В (номинальное напряжение +/-21В) Ток покоя от 70 до 120мА в зависимости от  напряжения питания Выходная мощность 25Вт …Подробнее...
  • Усилитель мощности звуковой частоты класса D на ИМС MAX9709

    Усилитель мощности звуковой частоты класса D на ИМС MAX9709

    Усилитель мощности звуковой частоты класса D на ИМС MAX9709 обеспечивает выходную мощность до 25Вт на канал (стерео) при нагрузке 8 Ом и 50Вт в режиме моно при нагрузке 4 Ом. ИМС MAX9709 обеспечивает высокую производительность (КПД 87%), при этом используется небольшой радиатор охлаждения. Напряжение питания усилителя от 10 до 22В. MAX9709  имеет …Подробнее...
  • Простой испытатель тиристоров

    Простой испытатель тиристоров

    Из подручных радиоэлементов можно собрать простой испытатель тиристоров, который состоит из трансформатора со вторичной обмоткой на 6,3В (0,5А), диода, конденсатора, лампы и трех переключателей. Выбор постоянного или переменного тока осуществляется переключателем SA2. Электроды тиристора подключаются при помощи зажимов, индикатор служит лампа накаливания 6,3Вх0,28А. Для проверки тиристора постоянным током переведите переключатель …Подробнее...
  • УМЗЧ на 50Вт на полевых MOSFET транзисторах

    УМЗЧ на 50Вт на полевых MOSFET транзисторах

    На рисунке показана схема 50 Вт усилителя с выходными полевыми MOSFET транзисторами. Первый каскад усилителя представляет собой дифференциальный усилитель на транзисторах VT1 VT2. Второй каскад усилителя состоит из транзисторов VT3 VT4. Оконечный каскад усилителя состоит из МОП-транзисторов IRF530 и IRF9530. Выход усилителя через катушку L1 соединен с нагрузкой 8 Ом. Цепь состоящий …Подробнее...