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   635 / 849
(#) pipi válasza store92 hozzászólására (») Jún 14, 2020 /
 
Akkor Uno-n ugyanazt műveld mint a terminal progiban, ugyanazzal a baud rate-val küldj AT parancsot, és figyeld mit ad vissza. Ha nem megy akkor az UNO-t kösd a soros-usb átalakítóval a PC-re, és ellenőrizd mit ad... Utána kösd össze az UNO-t az ESP-el, próbáld a PC-ről csak az UNO TX-re a RX vonalat bekötni, így látod mit küld az UNO... Kösd át a PC RX vonalat az ESP TX vonalára akkor láthatod az ESP mit válaszol az UNO-nak...
A hozzászólás módosítva: Jún 14, 2020
(#) djusee válasza GPeti1977 hozzászólására (») Jún 15, 2020 /
 
Én nem szeretnék készíteni olyan áramkört, csak a vázolt problémára szerettem volna egy gondolatébresztő lehetséges megoldást.Sargarigo kolléga már itt leírta hogy mire kellene koncentrálnunk és nagyon helyesen írta szerintem.
Idézet:
„Béke!
(#) morgo hozzászólása Jún 16, 2020 /
 
Sziasztok!
Adott egy számláló áramkör, ami 8 digites led kijelzőn mutatja az értékeket, ami relatív nagy fogyasztást eredményez. Áramkimaradás esetén a belső eepromba szeretném menteni az aktuális értéket. Ez időnként működik, máskor random értéket kapok vissza induláskor. Feltételezem, hogy a nagy fogyasztás miatt nincs ideje a mentésre, ez okozza a hibás értékeket. Az arduino saját EEPROM.write funkcióját használom.
Az áramkör betápján van egy 1000 µF elkó, ami ad egy kis plusz időt az íráshoz. A loop elején mérem a feszültséget az egyik analóg porton, egy 10k/2,2k osztón keresztül, belső 2,5 V-os referencia használatával. A feszültség mérére egy avdweb_AnalogReadFast könyvtárat használok, ami sokkal gyorsabb mérést ígér az eredeti analogRead-től. Az járható út, hogy ha a mért feszültség a beállított érték alá csökken, először lekapcsolom a kijelzőket közvetlen porthozzáféréssel, utána irom az eepromot, így tovább tart az elkóban tárolt feszültség? Vagy van valami más ötletetek a problémámra? Az elkó értékének növelése nem igazán járható út helyhiány miatt.
A hozzászólás módosítva: Jún 16, 2020
(#) Kera_Will válasza morgo hozzászólására (») Jún 16, 2020 /
 
uC-el táp lábaival párhuzamosan még egy nagyobb elkó 2-300 uF?
(#) morgo válasza Kera_Will hozzászólására (») Jún 16, 2020 /
 
Nem igazán próbáltam még. Az viszont megfordult a fejemben, hogy a feszmérés osztóját az elkó elé kéne kötni, lehet az is a probléma oka, hogy a legközelebbi tápvonalra van kötve.
(#) Lamprologus válasza morgo hozzászólására (») Jún 16, 2020 /
 
Arduino táp ágába betenni egy diódát, utána a kondit, a kijelzőt meg a feszültség osztót a dióda előttről megtáplálni?
(#) morgo válasza Lamprologus hozzászólására (») Jún 16, 2020 /
 
Ezt ki is próbálom. Köszi az ötletet.
(#) asch válasza morgo hozzászólására (») Jún 16, 2020 /
 
Pont ugyanilyen áramkört én is tervezgettem már, aztán persze nem így lett megvalósítva, úgyhogy nem tudom, hogy működött volna-e... Ami trükköt még gondoltam bele az az, hogy a tápfeszt analóg komparátorral mértem volna, az azonnal jelez, amikor a tápfesz adott érték alá megy, nincs késleltetése.

Arra figyelni kell, hogy az EEPROM íráshoz magasabb a minimális tápfeszültség, mint simán a működéshez!

Lamprológushoz hasonlót terveztem, hogy a kondiról csak a CPU működik, és mindent leolt azonnal, amikor a _külső_ tápvonal (tehát a diódán kívüli) feszültsége egy érték alá csökkent. A "benti" akkor még alig rezzen, mivel a CPU csak logikai jeleket ad ki, a LED-ek egy meghajtóról mennek, amit viszont a külső forrás táplál. Így a végén még az is probléma lehetett volna, hogy a proci egyáltalán nem áll le egy rövid szünet alatt. Ezért azt is kitaláltam, hogy miután megvolt a mentés, akkor bekapcsol egy kis kisütő ellenállást a proci, hogy a saját tápja le tudjon esni.

Amit nem tudtam pontosan megtervezni az az, hogy nem történik-e meg az, hogy amikor a belső feszültség magasabb mint a külső, akkor a meghajtók adat lába "táppá válik", mert mondjuk a mikrokontrollerhez hasonlóan van benne egy védő-dióda a táp felé. Emiatt a jelenség miatt szerintem biztos ami biztos érdemes minden fogyasztót lekapcsolni a diódás leválasztás ellenére is.
(#) morgo válasza Lamprologus hozzászólására (») Jún 16, 2020 /
 
Ez sem működik. Pedig az elkót is kipótoltam még egy 2200 µF-al. Mostmár a kínai Mega128-ra gyanakszom. Az az érdekes, hogy Arduino Mega lappal már minden működött. Most kicsit átírva a kódot az eltérő bekötés miatt, már két napja szenvedek vele és csak nem akarja azt amit én. Az, hogy minden külön tápot kapjon, az egész áramkör újragondolását jelentené, mert a kijelzők multiplexálva vannak, közvetlenül az uC hajtja őket. A Megával ráadásul soros ellenállásokat sem használtam, már 100 Ohm esetén is túl halványan mentek a ledek. Most 47 Ohmok vannak áramkorlátnak. Tudom nem sok, de 50 ns. belapcsolt állapot mellett ettől több már sok lenne.
Lehet, hogy napi egy fix mentés lesz a vége, az is több mint 10 év élettartamot jelent ha a 100000 írást veszem figyelembe. Így a mentett érték megközelíti majd a valóságot.
A hozzászólás módosítva: Jún 16, 2020
(#) djusee válasza morgo hozzászólására (») Jún 16, 2020 /
 
Szia, nem ismerem a programod, de esetleg még az is lehet hogy alacsony feszültség esetén elindul a mentés, majd tovább fut a program és újra belefut a tápfigyelés részbe és újra ment egész addig amíg esetleg leáll az MCU és hibásan írja az EEPROM ot. Próbáld hogy amikor mentett az EEPROM -ba utána egy végtelen ciklusba fusson a program(esetleg eközben csak a tápot figyelje ha mégis visszajönne a táp mielőtt leáll teljesen, nehogy ez esetben a végtelen ciklusban ragadjon).
(#) morgo válasza djusee hozzászólására (») Jún 16, 2020 /
 
Mégiscsak összejött. A programban is volt egy elírás, meg a kijelzőt is lekapcsolom, utána mentek. Na meg a Lamprologus által javasolt dióda is benne van, (Schottky, a feszültségesés miatt) és előtte mérem a feszültséget. Így bőven elég az eredileg tervezett 1000 µF puffer.
Köszönöm az ötleteket!
(#) pipi válasza morgo hozzászólására (») Jún 16, 2020 /
 
A. Stabkocka előtti puffert mem tudod mérni?
(#) morgo válasza pipi hozzászólására (») Jún 16, 2020 /
 
Nincs stabilizátor ic. 5 V-os kapcsolóüzemű tápja van, az is kb. fél méterre egy másik dobozban. Védelemnek meg tettem a bemeneti elkóval párhuzamosan egy BZW06-5V8 supressor diódát.
A hozzászólás módosítva: Jún 16, 2020
(#) pipi válasza morgo hozzászólására (») Jún 16, 2020 /
 
Én lehet kicserélném a tápot nagyobb feszültségűre, és tennék egy stabkockát. A táp megszűnést a a stab előtt figyelném, így a pufferben nagyobb energia marad a mentő progihoz. atmegában nem vagyok túl otthon, van a procidban "brown out" funkció? akkor azt is lejjebb kellene állítani
(#) morgo válasza pipi hozzászólására (») Jún 16, 2020 /
 
Most már én is így csinálnám, de a tápok már megvannak. A panel is kész. A csatlakozók a táp és a nyák között megvannak. Az már túl nagy pluszköltség + idő lenne, ha egy csomó hozzávalót újra kéne rendelni.
Jelenleg működik, folyamatos a tesztelés. Majd kiderül hosszútávon is rendben lesz-e.
Igen van BOD. 2,7 V-ra állítottam.
(#) proba válasza morgo hozzászólására (») Jún 16, 2020 /
 
Az is kérdés a loop milyen hosszú... Nem lehetne inkább megszakításból figyelni a tápot?
(#) vargham hozzászólása Jún 17, 2020 /
 
Nekem ilyen célra az EERAM jött be.
(#) Rober_4 hozzászólása Jún 18, 2020 /
 
Sziasztok! Mostanában folyton feljön nekem ez a hirdetés.
Valaki már dolgozott ilyennek?
Elvileg Arduino periféria kompatibilis...
Sony Spresense
(#) Lacaboy hozzászólása Jún 19, 2020 /
 
Sziasztok!
Olyan stoppert szeretlen kesziteni ami ms ban mer.
A millis fuggvennyel probalkozom de nem okea dolog.
(#) szalamandra válasza Lacaboy hozzászólására (») Jún 19, 2020 /
 
(#) david10 hozzászólása Jún 19, 2020 /
 
Sziasztok,
Hogyan lehet DS18B20 szenzorokat gyorsan beolvasni?
Amelyik projekten most dolgozom azon a 7 szegmenses kijelzők multiplexálva vannak meghajtva és nagyon zavaró amikor az Arduino a szenzor beolvasásával tölti az időt.
A legkisebb felbontásra állítva kb. 200 msec idő ameddig beolvassa a 2 szenzort, az egyik weboldalon azt láttam hogy 5 msec alatt is lehetséges lenne beolvasni a mért értékeket.
A választ előre is köszönöm.
(#) GPeti1977 válasza david10 hozzászólására (») Jún 19, 2020 / 1
 
Először lel kell végeztetni a mérést majd kb egy másodperc mulva lekérdezed
(#) usane válasza david10 hozzászólására (») Jún 19, 2020 / 1
 
Az 5ms maximum a scratchpad kiolvasási ideje lehet. A konverziós idővel nem tudsz mit kezdeni.
A Legjobb megoldás az, ha mindenkinek kiadod a mérési parancsot, a konverziós időben elvégzed azt a feladatot amit tudsz, aztán egymás után kiolvasod belőlük az értékeket, majd visszatérhetsz ahhoz amit éppen csinált a vezérlő.
A hozzászólás módosítva: Jún 19, 2020
(#) david10 válasza GPeti1977 hozzászólására (») Jún 19, 2020 /
 
Köszönöm a válaszokat, igyekeztem a kezdetektől úgy megírni, de sajnos lassú úgy is.
  1. boolean oneWireMunka = false;
  2. const long interval = 1200;  
  3.  
  4. void loop(void)
  5. {
  6.   unsigned long currentMillis = millis();
  7.   if (currentMillis - previousMillis >= interval) {
  8.     previousMillis = currentMillis;
  9.     if (oneWireMunka == false) {
  10.       sensors.requestTemperatures();
  11.       oneWireMunka = true;
  12.     }
  13.     else {
  14.       float tempC = sensors.getTempC(turThermometer);
  15.       tur = tempC * 10;
  16.       tempC = sensors.getTempC(returThermometer);
  17.       retur = tempC * 10;
  18.       oneWireMunka = false;
  19.     }
  20.   }
  21. ...
  22. }
A hozzászólás módosítva: Jún 19, 2020
(#) GPeti1977 válasza david10 hozzászólására (») Jún 19, 2020 /
 
Nem így gondoltam. Azt sem tudom most alkalmas-e a felhasznált program így lekérdezni.
(#) david10 válasza GPeti1977 hozzászólására (») Jún 19, 2020 /
 
Ami a programot illeti, a loopban folyamatosan annyi fut le hogy a tur és retur értékeket multiplexálva kiírja a kijelzőre (tizedes pont nélkül, a kijelzőn a tizedes pont fixen van bekötve), semmi egyéb nincsen benne, szerintem átalakítható bármire.
A hozzászólás módosítva: Jún 19, 2020
(#) GPeti1977 válasza david10 hozzászólására (») Jún 19, 2020 / 1
 
ds.write(0x44,1); // start conversion, with parasite power on at the end
később
ds.write(0xBE); // Read Scratchpad
(#) david10 válasza GPeti1977 hozzászólására (») Jún 19, 2020 /
 
Tehát a sensors.requestTemperatures(); helyett legyen ds.write(0x44,1); ?
(#) GPeti1977 válasza david10 hozzászólására (») Jún 19, 2020 /
 
Nem, ennél bonyolultabb
(#) usane válasza david10 hozzászólására (») Jún 19, 2020 / 1
 
A dallas könyvtárat nem használom csak a onewire-t, mert nálam 7 szenzort kellett lekérdezni multiplexelve és nem használok szenzor címeket.

Itt ha egy szenzor van akkor:
sensors.reset();
sensors.skip();
sensors.write(0x44);
Konverziós időben elvégzed amit akarsz.
sensors.reset();
sensors.skip();
sensors.write(0xBE);
És én magam végzem a celsius-á alakítást.

A dallaskönyvtárban ez máshogy megy mert az címekkel dolgozik, ott előbb le kell kérni a címét azt hiszem aztán tudod megszólítani.
A hozzászólás módosítva: Jún 19, 2020
Következő: »»   635 / 849
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