Hirdetés
- Ne várj sokat a vásárlással: drágulás a láthatáron
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Sony MILC fényképezőgépcsalád
- Milyen széket vegyek?
- Kormányok / autós szimulátorok topikja
- Mini PC
- Kompakt vízhűtés
- Újra nekifeszül az asztali konzolok piacának a Valve
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- OLED TV topic
-
PROHARDVER!
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Gergosz2
veterán
válasz
JozsBiker
#19090
üzenetére
Nos, nem kell feladni, szoftversen is lehet rajta szűrni:
#include <Arduino.h>
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define ADC_BUFFER_SIZE 20
#define ADC_PIN A0
#define ADC_OFFSET 512.0f
#define ADC_GAIN 0.0f // be kell állítani
#define RMS_GAIN 0.05f // delta_T/T
volatile uint8_t bufferIterator = 0;
volatile uint16_t ADC_BUFFER[ADC_BUFFER_SIZE];
volatile bool CalcRMS = false;
volatile uint16_t FilterCoeffInv = 5u;
uint16_t ADC_BUFFER_CALC[ADC_BUFFER_SIZE];
float RMS_Current;
unsigned long SerialTimer = 0u;
unsigned long SerialPrintTimeout = 1000;
void setup()
{
//Gergosz2 2023
Serial.begin(51200);
bufferIterator = 0;
SerialTimer = millis();
memset(ADC_BUFFER, (uint16_t)0, ADC_BUFFER_SIZE*sizeof(uint16_t));
setupPWMInterrupt();
}
void loop()
{
if (true == CalcRMS)
{
CalcRMS = false;
memcpy(ADC_BUFFER_CALC, ADC_BUFFER, ADC_BUFFER_SIZE*sizeof(uint16_t));
RMS_Current = 0.0f;
int iterator = 0;
for (iterator = 0; iterator < ADC_BUFFER_SIZE; iterator++)
{
float SI_val = (((float)ADC_BUFFER_CALC[iterator] - ADC_OFFSET)*ADC_GAIN);
RMS_Current = RMS_Current + SI_val*SI_val* RMS_GAIN;
}
RMS_Current = sqrt(RMS_Current);
}
if ((millis() - SerialTimer) > SerialPrintTimeout)
{
SerialTimer = millis();
Serial.println(RMS_Current);
}
}
void setupPWMInterrupt()
{
noInterrupts(); // disable all interrupts
TCCR2A = 0; // set entire TCCR2A register to 0
TCCR2B = 0; // same for TCCR2B
TCNT2 = 0; //initialize counter value to 0
// set compare match register for 1khz increments
OCR2A = 124; // = (16*10^6) / (2*1000*64) - 1 (must be <256)
TCCR2A |= (1 << WGM21); // turn on CTC mode
TCCR2B |= (1 << CS22); // Set CS01 and CS00 bits for 64 prescaler
sbi(TIMSK2, OCIE2A); // enable timer compare interrupt
interrupts(); // enable all interrupts
}
ISR(TIMER2_COMPA_vect)
{
uint16_t prevSample = 0u;
if(bufferIterator == 0u)
{
prevSample = ADC_BUFFER_SIZE - 1u;
}
else
{
prevSample = bufferIterator - 1u;
}
ADC_BUFFER[bufferIterator] = ADC_BUFFER[prevSample] - (uint16_t)(ADC_BUFFER[prevSample]/FilterCoeffInv) + (uint16_t)(analogRead(ADC_PIN)/FilterCoeffInv);
bufferIterator ++;
if (bufferIterator > ( ADC_BUFFER_SIZE - 1u) )
{
CalcRMS = true;
bufferIterator = 0u;
}
}Gaineket ne felejts beírni
Új hozzászólás Aktív témák
- Linux Mint
- Assetto Corsa Rally
- One otthoni szolgáltatások (TV, internet, telefon)
- Építő/felújító topik
- Mibe tegyem a megtakarításaimat?
- Ne várj sokat a vásárlással: drágulás a láthatáron
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Bittorrent topik
- Sony MILC fényképezőgépcsalád
- Milyen széket vegyek?
- További aktív témák...
- Precision 7560 27% 15.6" FHD IPS i7-11850H RTX A3000 32GB 1TB NVMe ujjlolv IR kam gar
- HP ZBook Studio G8 i7 32GB RAM 1TB SSD RTX A3000/Garancia
- Precision 5560 27% 15.6" FHD+ IPS i7-11800H T1200 32GB 512GB NVMe ujjlolv IR kam gar
- ELADÓ iPad 9th cellular 64 GB space gray - "láthatatlan" karc a kijelzőn, képeket csatoltam
- T14 Gen2i 27% 14" FHD IPS i7-1185G7 16GB 512GB NVMe ujjolv IR kam gar
- HIBÁTLAN iPhone 14 256GB Starlight -1 ÉV GARANCIA - Kártyafüggetlen, MS3799, 100% Akksi
- Honor Pad X8 / 4/64GB / Wi-Fi / 12 Hó Garancia
- Apple iPhone 12 Pro 128 GB Arany 1 év Garancia Beszámítás Házhozszállítás
- HIBÁTLAN iPhone 13 mini 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3846, 100% Akkumulátor
- iKing.Hu - Apple iPhone 14 Stílusos megjelenés, megbízható teljesítmény
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
ekkold

