Arduino schéma - arduino.sk

Meranie frekvencie

Kompletné projekty s návodom a zdrojovým kódom
Príspevky: 74
Registrovaný: Štv 04. Dec 2014 22:15:58
Bydlisko: Banská Bystrica

Meranie frekvencie

Poslaťod Robo Ulbricht » Štv 04. Dec 2014 22:49:25

Pomocou Arduina možno bez problémov merať pomerne presne frekvencie obdĺžnikových signálov. Dá sa merať od 0 Hz do 8 MHz. Na stránke https://sites.google.com/site/arduinoslovakia/meranie-pomocou-arduina/meranie-frekvencie je popis, ako takýto merač postaviť.
Prvá verzia bola len prevzatý program, ktorý vypisoval frekvenciu na sériovom porte. Druhá verzia bola postavená už podľa schémy, čisto z Arduina UNO, level shiftera a displeja Nokia 5110. Tam bol aj otestovaný celý program. Tretia verzia je popisovaná v článku. Je to v podstate len ATmega328P na veroboarde, napájaná na 5 V, ktorá pomocou level shiftera zobrazuje údaje na displeji, ktorý potrebuje 3,3 V.
Obrázok
Linky:

Obrázok užívateľa
Príspevky: 300
Registrovaný: Pon 19. Nov 2012 12:01:08
Bydlisko: HC/BA

Re: Meranie frekvencie

Poslaťod tomXX » Pia 05. Dec 2014 9:24:26

Chválim web, takže nie som sám koho to napadlo ;) Len sa tam nedá komentovať...
blog.sitepoint.sk - zaujímavé riešenia okolo Arduina

Príspevky: 74
Registrovaný: Štv 04. Dec 2014 22:15:58
Bydlisko: Banská Bystrica

Re: Meranie frekvencie

Poslaťod Robo Ulbricht » Pon 08. Dec 2014 22:55:19

Google usúdil, že nám musí stačiť, keď tam vieme ľahko vytvárať stránky a komentáre vypol úplne. :)

Obrázok užívateľa
Príspevky: 133
Registrovaný: Štv 06. Nov 2014 12:06:09

Re: Meranie frekvencie

Poslaťod budvar10 » Uto 09. Dec 2014 12:15:41

Pekná práca. Nad niečim takým som uvažoval, ale ešte som sa k tomu nedostal. Ty si to doviedol do úspešného konca. :)
EDIT: Teraz pozerám, že tam máš celkom slušnú zbierku zaujímavých projektov.

Príspevky: 89
Registrovaný: Uto 03. Jún 2014 21:48:35
Bydlisko: Košice Slovakia

Re: Meranie frekvencie

Poslaťod kosice4 » Štv 25. Jún 2015 12:15:59

p. Ulbricht super projekt :)
Čo by som mal zmeniť ak by som chcel merať frekvenciu na pine D3 miesto pinu D5.
Ďakujem.
Ďakujem za pomoc posjirka, Diego, Xeram a barado :)

Príspevky: 89
Registrovaný: Uto 03. Jún 2014 21:48:35
Bydlisko: Košice Slovakia

Re: Meranie frekvencie

Poslaťod kosice4 » Pia 26. Jún 2015 10:41:15

Na stránke Nick Gammon http://www.gammon.com.au/forum/?id=11504
máme skript na meranie frekvencie pomocou pinu D2.
Trošku som skript upravil na 2*16 LCD cez i2c.

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <Wire.h>

volatile boolean first;
volatile boolean triggered;
volatile unsigned long overflowCount;
volatile unsigned long startTime;
volatile unsigned long finishTime;

void isr ()
{
unsigned int counter = TCNT1;

if (triggered)
return;

if (first)
{
startTime = (overflowCount << 16) + counter;
first = false;
return;
}

finishTime = (overflowCount << 16) + counter;
triggered = true;
detachInterrupt(0);
}

ISR (TIMER1_OVF_vect)
{
overflowCount++;
}

void prepareForInterrupts ()
{

EIFR = bit (INTF0);
first = true;
triggered = false;
attachInterrupt(0, isr, RISING);
}

void setup ()
{

lcd.init();
lcd.backlight();

Serial.begin(115200);
Serial.println("Frequency Counter");

TCCR1A = 0;
TCCR1B = 0;
TIMSK1 = bit (TOIE1);
TCNT1 = 0;
overflowCount = 0;
TCCR1B = bit (CS10);

prepareForInterrupts ();
}

void loop ()
{

unsigned long elapsedTime = finishTime - startTime;
float freq = F_CPU / float (elapsedTime);

lcd.setCursor(0,0);
lcd.print("Frekvencia ....");

lcd.setCursor(0,1);
lcd.print(freq);
lcd.print(" Hz ");

delay (500);

prepareForInterrupts ();
}
Ďakujem za pomoc posjirka, Diego, Xeram a barado :)

Príspevky: 74
Registrovaný: Štv 04. Dec 2014 22:15:58
Bydlisko: Banská Bystrica

Re: Meranie frekvencie

Poslaťod Robo Ulbricht » Pia 26. Jún 2015 12:39:34

kosice4 píše:p. Ulbricht super projekt :)
Čo by som mal zmeniť ak by som chcel merať frekvenciu na pine D3 miesto pinu D5.
Ďakujem.


Ten existujúci kód nie je na to vhodný. Pin D5 je T1 vstup pre Timer 1. Čo preložené do ľudskej reči znamená, že iba na tom pine vie ATmega328P používať externý digitálny signál ako hodinový, podľa ktorého to vlastne meria frekvenciu. Ešte je tu teoreticky D4, čo by mal byť T0 pre timer 0, ale ten je len 8 bitový čítač, takže by sa museli poupravovať prerušenia úplne inak.

Späť na Hotové projekty