Impulzusszámlálás

A meglévő hardware eszközök fejlesztési lehetőségei, módosítások, illetve új eszközök bevezetése
Válasz küldése
rg76
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2020. március 17. kedd, 12:36

Impulzusszámlálás

Hozzászólás Szerző: rg76 »

Bejövő impulzusok megszámlálása megszakítással.
Szeretnék segítséget kérni, eredetileg egy fordulatszám mérőt szerettem volna készíteni, de a tesztek során kiderült, hogy az impulzusok megszámlálása sem pontos. Ezért csináltam egy tesztet egyik arduino mint impulzusszámláló a másik impulzusadó. A rendszer így is pontatlan volt 1000 impulzust adtam le egy for ciklus segítségével és csak 907 érkezett meg. Más beállításoknál mint felfutó, lefutó él magas szint ,stb más értékeket kaptam néha többet néha kevesebbet. Tud valaki segíteni, hogy mi okozhatja a problémát?
rg76
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2020. március 17. kedd, 12:36

Re: Impulzusszámlálás

Hozzászólás Szerző: rg76 »

Megoldódott a probléma: Nem tettem lehúzó ellenállást .Ezután teljesen jól működik.
rg76
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2020. március 17. kedd, 12:36

Re: Impulzusszámlálás

Hozzászólás Szerző: rg76 »

Sajnos még mindig nem jó, az előbbi probléma még mindig meg van a soros monitorral jó, viszont TM1637 7-segmenses kijelzővel nem. 2-es pin van használatban megszakításra és RISING beállítással ,a HIGH beállítás duplán számolt a soros monitornál is.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Impulzusszámlálás

Hozzászólás Szerző: Robert »

Azért egy programkód sokat segítene :(

- INT rutinban mi történik?
- kijelzőt hogy kezeled?
- mi van még a programban?
http://www.tavir.hu - a gazda :)
rg76
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2020. március 17. kedd, 12:36

Re: Impulzusszámlálás

Hozzászólás Szerző: rg76 »

Úgy néz ki megoldódott a probléma. Valószínű a sok próbálkozás miatt túlbonyolítottam a programot és ez volt a hiba. Már sok mindennel próbálkoztam , de az egyszerűbb ugynézki jobb. Megmutatom a programot a rossz változat ki van kommentezve,a jó működőképes pedig ami meg van hagyva.

Adó oldalon:

void setup() {
pinMode(5,OUTPUT);
delay(5000);


for (int t=0;t<1000;t++) {
digitalWrite(5,HIGH);
delay(10);
digitalWrite(5,LOW);
delay(10);
}
}
void loop() {
}


Vevő oldalon:

#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 4
#define DIO 5
TM1637Display display(CLK, DIO);
volatile int szamol=0;
//volatile boolean imp=false;
void setup() {
//Serial.begin(115200);
pinMode(2, INPUT);
attachInterrupt(digitalPinToInterrupt(2), plussz,RISING);
display.setBrightness(7, true);
}
void loop() {


/*if (imp==true)
{
szamol++;
imp=false;
}
*/
display.showNumberDec(szamol,false);

//Serial.println(szamol);
}

void plussz() {
szamol++;
//imp=true;
}
Válasz küldése