Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.01.2012, 14:57   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Частотомер

Среди измерительных приборов частотомеры занимают определенное положение. Частотомеры применяются для измерения частоты переменного или импульсного тока. А так же частотомер может быть полезен для отслеживания частоты переменного тока в составе умного дома. Принцип любого частотомера одинаков и состоит в подсчете количества колебания за одну секунду времени.
Предлагаю частотомер на Arduino, предел измерений мин. 250Гц макс. 500000Гц

PHP код:
#include <util/delay.h>

volatile unsigned int tachBuf;
unsigned long tachValue;

ISR(TIMER1_CAPT_vect)

    
TCNT1 0
    
tachBuf ICR1+120;
}
//********************************************************************
void setup()    
{  
   
pinMode(8INPUT);  //Вход частотомера для импульсов TTL
   
pinMode(6OUTPUT);//выход ШИМ для тестирования частотомера
   
TCCR0B TCCR0B 0b11111000 1;//частота ШИМ 62500Гц
   
analogWrite(6128);  //Запустить ШИМ
   
digitalWrite(8HIGH); // включить подтяжку входа
   
Serial.begin(115200);
   
TIM_Init();
  
_delay_ms(300);
}  
//********************************************************************
void loop()    
{
  
cli();  
  
tachValue =16000000/tachBuf;
  
Serial.print("freq=");
  
Serial.println(tachValue,DEC);
  
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)|(0<<CS11)|(1<<CS10); 
   
TCNT1 0;

Admin вне форума   Ответить с цитированием
 


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

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 13:21. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика