Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   357 / 845
(#) Kera_Will válasza Kovidivi hozzászólására (») Júl 5, 2017 /
 
Figyelembe kell venni azt is ,hogy csúcsok detektálása AD konverziót követő adatelemzésekkel terhelt időveszteséggel zajlik le.
Kérdéses az is hogy mennyi idő mérési hibát vihetünk be így a rendszerbe?
Igaz nem túl sűrűn vannak a csúcsok. Lehet processzor idő a konverzióra tárolásra feldolgozásra.
(max percenként nagyon extrém esetben kb.:200-300 csúcs impulzus(a Q-R-S szakaszból) érkezhet de ez is inkább azért mert az elektródok sok zavart szednek össze és nem a valós szívritmusból erednek)
A hozzászólás módosítva: Júl 5, 2017
(#) Kera_Will válasza akos328 hozzászólására (») Júl 5, 2017 /
 
Figyelembe kell venni azt is ,hogy csúcsok detektálása AD konverziót követő adatelemzésekkel terhelt időveszteséggel zajlik le.
Kérdéses az is hogy mennyi idő mérési hibát vihetünk be így a rendszerbe?
Igaz nem túl sűrűn vannak a csúcsok. Lehet processzor idő a konverzióra tárolásra feldolgozásra.
(max percenként nagyon extrém esetben kb.:200-300 csúcs impulzus(a Q-R-S szakaszból) érkezhet de ez is inkább azért mert az elektródok sok zavart szednek össze és nem a valós szívritmusból erednek)
Igazából ezek amolyan "börszt" szerűen jönnek létre van egy kisebb P hullám majd utána a nagy Q-R-S csúcs és végül a T hullám "huppli".
PQ QT szakaszok ideje meddig tart itt ? Itt kritikus a konverzió és DSP módja.

Lehet jobban járnánk ha valamiféle DSP (digitális jelfeldolgozó) algoritmusokkal próbálkoznánk az ARDU keretein belül megoldani.
Erre jó példa lehet a távíró dekódoló program megismerése ott is hasonló a műveletek zajlanak.
Időben változó hosszúságú jelek sokaságából kell értelmezhető mintákat keresni.
Úgy hogy az alapminták(rövid /hosszú 1:3, jelszünet 1:1, karakter/karakter 3 szünet stb. időarányokkal dolgoznak) egymáshoz viszonyított aránya is változhat (kézi távíró adás) , de azzal is jól boldogul a program (cw / morse decoder ).
Másik hasonló lehetőség a fény orgona kódok ahol softverből végzik el a bejövő hangfrekvenciás jelek különböző sávokra bontását.
(10-20KHzig is elég gyors az ARDU DSP képessége akkor pár 100Hzre is elég lesz )
A hozzászólás módosítva: Júl 5, 2017
(#) KoblogPerGyok válasza Kera_Will hozzászólására (») Júl 5, 2017 /
 
Szia!

Ha ugyanaz az algoritmus fut, hasonló, vagy éppen ugyanannyi adattal, akkor az idő shift minden esetben nagyon hasonló lesz. Így a különbség nagyon is a valóságot tükrözi.

Kérdés, hogy miért kell ennyire pontos időkülönbség?
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Júl 5, 2017 /
 
Valamint azt gondolom, hogy ha minden egyes AD konverzióból kapott adat mellé időpontot is mentesz rögtön a megkapott érték mellé, akkor utólag feldolgozva is annyi marad az időkülönbség.

A probléma ott lesz, hogy pl 0.01 másodpercenként mérsz adatot, akkor a feldolgozás tovább fog tartani, mint a mintavétel ideje. Itt lesz a gond, nem ott, hogy mennyi hibát viszünk a rendszerbe. Ez a kettő nem ugyan az.
(#) Kera_Will válasza KoblogPerGyok hozzászólására (») Júl 5, 2017 /
 
Ok ... igen lehet rosszul fogalmaztam , lényeget tekintve ebben igazad van feldolgozási időre akartam valóban utalni
(#) KoblogPerGyok válasza Kera_Will hozzászólására (») Júl 5, 2017 /
 
Többek között eszembe jutott az is, hogy a kérdező a jelkondicionálással hogy áll? Az ok? Tényleg nem tudom, hogy jó-e ide az arduino, szakdolgozathoz elég-e a probléma körül járása, rávilágít az arduino hiányosságaira stb. Gondolom igen. Szakdolgozatnak nem kell megváltania a világot!

A szakdoga következtetése épp lehet az, hogy ilyen feladatra nem elég egy ardu, vagy épp ellenkezőleg, ha az algoritmusok kellően kompaktak, gyorsak, hogy lám, lám erre is jó! (Ennek nagyon örülnék) External ram esetleg, vagy SD kártya, TFT kijelző, PC oldali kiértékelés is esetleg, E-mail küldéssel, PDF-el, stb... Azért az szép lenne! PC oldalt VB.Net alatt vállalom!

Azonban, ha pl egy teensy a maga 70MHz -ével már elég lenne (Ha az ardu nem), akkor azért az már nem semmi lenne! Ebből még pénz is befolyhat!
(#) tbarath válasza KoblogPerGyok hozzászólására (») Júl 5, 2017 /
 
Vagy mondjuk egy pi (zero?) egy megfelelő ADC-vel, vagy akár egy arduino-val összekötve. Pl. az arduino végzi az adatgyűjtést, abban jó a uC, és azt i2c-n áttolja a pi-re, ott pedig fut a kielemzés.
(#) KoblogPerGyok válasza tbarath hozzászólására (») Júl 5, 2017 /
 
Pi is jó. Sőt!

Gondolom ragaszkodnia kell az Arduino-hoz, az egyszerűbb, nem bonyolódik bele a PI oprendszerébe, így be is tudja fejezni a szakdolgozatot!
(#) Kera_Will válasza KoblogPerGyok hozzászólására (») Júl 5, 2017 /
 

Most próbálunk valami tényleges funkciót is hozzá gondolni.
Ezek megvalósíthatóságának a korlátait is körbe járni.
Sajna nem tudjuk mit szeretne, de azt nagyon szeretné.
Ez az amikor a kérdező "eltűnik" és lógunk a levegőbe ...
Remélhetőleg visszatér és bővebben is fog beszélni .
Kijelzés módja formája , ebből mért információk ?!
Lehet csak digitalizálni szeretné és a papír helyett kijelzőre és háttértárra vinné.
A hozzászólás módosítva: Júl 5, 2017
(#) mateatek válasza Kovidivi hozzászólására (») Júl 5, 2017 /
 
Nem 8 MHz a maximum egy timernél?
(#) Kovidivi válasza mateatek hozzászólására (») Júl 5, 2017 /
 
A kvarc adja a maximumot, előosztás nélkül. Adatlapba kukkats bele.
Bővebben: Link - no Prescaling rész.
A hozzászólás módosítva: Júl 5, 2017
(#) tbarath válasza KoblogPerGyok hozzászólására (») Júl 5, 2017 /
 
Az már az ő dolga, mi most csak ötletelünk.
(#) mateatek válasza Kovidivi hozzászólására (») Júl 5, 2017 /
 
Értem, de meg kell adni az osztást és a kitöltést is.

TCCR1A = _BV(WGM11) | _BV(COM1A1);
TCCR1B = _BV(WGM13) | _BV(CS10) | _BV(WGM12);
ICR1 = 1;
OCR1A = 0;

Ennél gyorsabbra nem sikerült állítanom. Ez pedig 8 MHz.
(#) KoblogPerGyok válasza mateatek hozzászólására (») Júl 5, 2017 /
 
Ha jól értettem, akkor tényleg ennyi a max.
(#) Kovidivi válasza mateatek hozzászólására (») Júl 5, 2017 /
 
Nem kell 0.12uS-ként (2 órajel (tick)) interruptot hívni, főleg hogy az interrupt 10-12 órajelet igényel, mire bele lépsz. Pörög a számláló 16MHz-el, ha 8 biteset használsz, akkor interruptnál növelned kell egy számlálót. Bármikor lekérdezheted a pontos "időt", vagy amit akarsz. Ehhez kell a változó, és ehhez hozzá kell adni a részidőt, tehát a timer aktuális állását. Így megkaptad pl. a mért időt 0.0625uS (vagy mennyi) felbontással.
Valamit te máshogy gondolsz. Amit te írsz, ott 8MHz-ként jön egy interrupt. Nekem ez szükségtelen, csak az a fontos, hogy a timert a 16MHz-es órajel hajtsa. Az interrupt ennél sokkal ritkábban jön. Ha 8MHz-cel jönne interrupt, nem lenne időd növelni a változót sem. Azt megteszi helyetted a timer a regiszterében, aztán néha túlcsordul.
(#) mateatek válasza Kovidivi hozzászólására (») Júl 6, 2017 /
 
Igen, valamit én másként gondoltam. Az előző hozzászólásodat félreértelmeztem.

Idézet:
„16MHz-es kvarccal 0.0625uS-ként jön egy órajel. Ha erre ráállítasz egy timert, akkor ilyen gyorsan fog számolni, és 0.0625uS lesz a felbontásod is.”


Ezt úgy értettem, hogy a timer 16 MHz-es jelet szolgáltat. Miközben a timer órajeléről írtál.
(#) marlan hozzászólása Júl 6, 2017 /
 
Használhatok más frekvenciájú 32.768KHz-es kristály oszcillátort is, mint például itt: https://circuitdigest.com/microcontroller-projects/arduino-alarm-clock vagy 16Mhz-hez kell ragaszkodnom. Kérem, segítsen, zavaros vagyok.
(#) andyka hozzászólása Júl 6, 2017 /
 
Sziasztok,
Egy kis segitsegre lenne szuksegem, nem tudnam integralni a kovetkezo kodba a String-ek is.
Ez igy integerrel, booleannal mukodik, de sehogy sem jon ossze ebbe integralni a legalabb egy String irasat es olvasasat.
Koszonom
  1. #include <EEPROM.h>
  2.  const byte EEPROM_VALIDATOR = 14; //random number
  3.  const byte EEPROM_CONFIGADDRESS = 1;
  4.  struct config_t { byte Validator;
  5.                    int az_ido, az_h,az_m;
  6.                    byte ValidatorX2; } EEPROM_DATA;
  7. -----------------------------------------------------------
  8. // eeprom tarolas
  9. int EEPROM_writeConf() {
  10.     byte Address = EEPROM_CONFIGADDRESS;
  11.     const byte* p = (const byte*) (const void*) &EEPROM_DATA;
  12.     int i; for (i = 0; i < sizeof(EEPROM_DATA); i++) EEPROM.write(Address++, *p++); EEPROM.commit();
  13.     return i;  }
  14.      
  15. // ertekek mentese
  16. void saveConfiguration() {
  17.       EEPROM_DATA.az_ido         != az_ido         ||
  18.       EEPROM_DATA.az_h           != az_h           ||
  19.       EEPROM_DATA.az_m           != az_m           ||
  20.       ) {  
  21.     //copy validators
  22.       EEPROM_DATA.Validator   = EEPROM_VALIDATOR;
  23.       EEPROM_DATA.ValidatorX2 = EEPROM_VALIDATOR*2;
  24.     //copy data
  25.      EEPROM_DATA.az_h           = az_h;
  26.      EEPROM_DATA.az_m           = az_m;
  27.       //save data to eeprom
  28.       EEPROM_writeConf();
  29.  
  30.     Serial.println("eeprom megirva"); } else { Serial.println("eeprom iras NEM");  } }
  31.  
  32. // eeprom olvasas
  33. int EEPROM_readConf() {
  34.     byte Address = EEPROM_CONFIGADDRESS;
  35.     byte* p = (byte*) (void*) &EEPROM_DATA;
  36.     int i;
  37.     for (i = 0; i < sizeof(EEPROM_DATA); i++){
  38.     *p++ = EEPROM.read(Address++);}
  39.     return i;      }
  40.  
  41. // ertekek betoltese
  42. void loadConfiguration() {
  43.   //read data from eeprom
  44.   EEPROM_readConf();
  45.   //verify validators
  46.   if (EEPROM_DATA.Validator == EEPROM_VALIDATOR && EEPROM_DATA.ValidatorX2 == EEPROM_VALIDATOR*2) {
  47.              //copy data
  48.                 az_ido         = EEPROM_DATA.az_ido;
  49.                 az_h           = EEPROM_DATA.az_h;
  50.                 az_m           = EEPROM_DATA.az_m;
  51.                   } }
A hozzászólás módosítva: Júl 6, 2017
(#) kapu48 válasza marlan hozzászólására (») Júl 6, 2017 /
 
Konkrétan mihez kellene másik kvarc?

Mert az DS1307 óra modul csak 32.768KHz-el jár pontosan!
Az Arduino időzítései pedig 16MHz-re vannak beállítva.
(#) tbarath válasza marlan hozzászólására (») Júl 6, 2017 /
 
Szerintem érdemes modult venni ds1307-ből, azon már rajta van a kvarc is. Ha többet rendelsz Csájnából akkor 100 Ft körül kapsz egy modult. De én inkább ds3231-et vennék akkor már, igaz kicsit drágább, de sokkal pontosabb.

Már ha ez volt a kérdés, mert elég érthetetlen amit írtál, szóval lehet h félreértelek.
(#) kapu48 válasza andyka hozzászólására (») Júl 6, 2017 /
 
Inkább karakter tömböt használj, string helyett.
Valahogy igy:
  1. struct config_t { byte Validator;
  2.                    int az_ido, az_h,az_m;
  3.                    char myString[hossz];
  4.                    byte ValidatorX2; } EEPROM_DATA;
  5.  
  6. ...
  7. EEPROM_DATA.myString= {"myString"};
  8. ...
(#) orifab hozzászólása Júl 8, 2017 /
 
Sziasztok!

Valaki használt már SPI Serial 128X64 White OLED LCD LED Display Module for Arduino kijelséhez? Észrevételek, vélemények? Vagy valakinek van jobb ötlete?
(#) Bakman válasza orifab hozzászólására (») Júl 8, 2017 /
 
Szép, jó, de nagyon pici. Igaz, ha ez a cél, akár jó is lehet.
(#) orifab válasza Bakman hozzászólására (») Júl 8, 2017 /
 
Mennyire bonyolult a "vezérlése" program téren? Ha ráküldök valamit, azt addig jeleníti meg, amíg meg nem változtatom? esetleg egy program részletet kérhetek?
(#) vargham válasza akos328 hozzászólására (») Júl 8, 2017 /
 
Arduino alatt melyik mikrokontrollert érted?
Ha nincs kikötve a 8 bit Atmel, akkor én erre a célra egy STM32-t használnék. Van hozzá hivatalos Arduino támogatás, valamint mbed támogatás is. Mindkét környezetben magas szinten, barátságos C++ API-n keresztül éred el a hardvert. Az mbed-ben ráadásul alap az RTOS.

Azt szabad tudni, hogy hol és mikor diplomázol?
(#) orifab válasza vargham hozzászólására (») Júl 8, 2017 /
 
A NANO-t használom. Nem vagyok nagyon jártas a programozásban, így a könnyebb kezelhetőség előny.
(#) orifab válasza vargham hozzászólására (») Júl 8, 2017 /
 
(Már lediplomáztam 2x, és 13 éve dolgozom... ezt csak hobbiból kezdtem)
(#) Bakman válasza orifab hozzászólására (») Júl 8, 2017 /
 
Erre passzolok, PIC kontrollerrel használtam amíg meg nem untam.
(#) vargham válasza orifab hozzászólására (») Júl 8, 2017 /
 
Ha ráklikkelsz a >> jelre, akkor látod, hogy egy egészen más kérdésre válaszoltam.
(#) berkesandor hozzászólása Júl 8, 2017 /
 
Kezdő vagyok a programozásban, ezért egy kis segítséget szeretnék kérni.
Súlyt szeretnék mérni egy HX711 modul segítségével. A mérés eredményét pedig SMS szeretném elküldeni. (SIM 800L-as modullal).
Ott akadtam el, hogy a HX711 könyvtára a mérés eredményét float-ban adja vissza, de a SIM900 könyvtárával csak szöveget tudok küldeni.
Hogyan tudom átalakítani a float-tot? (0-100 kilóig akarok mérni, egy tizedes pontossággal)
Megköszönnék, minden segítséget és ötletet.
Következő: »»   357 / 845
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem