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   399 / 853
(#) tbarath válasza csatti2 hozzászólására (») Nov 30, 2017 /
 
Ha ezt így lehet akkor tényleg nem kell semmi más
Köszi!
(#) csatti2 válasza tbarath hozzászólására (») Nov 30, 2017 /
 
Lehet. Már csináltam.

Itt pl. az elem feszét mértem így: Bővebben: Link
A hozzászólás módosítva: Nov 30, 2017
(#) berkesandor válasza csatti2 hozzászólására (») Nov 30, 2017 /
 
Most lehet hogy baromságot kérdezek, de a mai napnak már úgy is mindegy.
Nálam, 6 V akkuról megy rendszer, az arduino-nak, van egy 3,3 V saját tápja, A2 láb előtt van egy ellenállás osztó. Simán ADC-vel megmérem a lábat és abból kiszámolom az akku feszt.
Van ennél egyszerűbb ?
Akkor jobb (kell) használni a belső referencia feszültséget, ha az rendszert pl. direktben táplálja egy elem vagy akku?
(#) csatti2 válasza berkesandor hozzászólására (») Nov 30, 2017 /
 
Ha direktben táplálod a mikrokontrollert (amit 6V-ról nem tehetsz meg), akkor nincs állandó referenciafeszültséged hisz az a folyamatosan változó tápfesz lesz. Ilyenkor működik az általam vázolt mód.
A te esetedben két lehetőség van. Ha jobb fajta regulátort használsz (kicsi hőmérséklet drift, stabil pontos kimenet, pl. MCP1702-es sorozat) akkor a regulátortól jövő tápfeszt használhatod referenciaként, majd ellenállásosztóval leoszthatod a mérni kívánt jelet biztonságos szintre, két schottky diódával (pl. BAT54S) pedig védheted az analóg bemenetet hülyeség ellen. A másik lehetőség, hogy a belső 1.1V-os referenciát használod és jobban leosztod a bejövő jelet (ki kell mérni az 1V1-es referencia valódi értékét, nagyon szór ugyanis), diódákkal ugyanúgy javasolt védeni. Diódás védelem esetén nem szabad nagyon nagy értékű ellenállásokat használni a feszosztókhoz, mert megnöveli a szivárgó áram okozta hibaofszetet.
(#) berkesandor válasza csatti2 hozzászólására (») Nov 30, 2017 /
 
MP2315 használok most tápnak.
Dióda nincs a mérőkörben, és viszonylag nagy értékű ellenállásokat használok, mert úgy tudom azok kevesebbet fogyasztanak, és nekem minden uA számít(hat) . Inkább a mérési pontosságból áldozok be.
(#) csatti2 válasza berkesandor hozzászólására (») Nov 30, 2017 /
 
A diódák védelmi szerepet töltenek be. Ha nem használod őket, akkor mehetnek a nagyobb ellenállások, az MCU analóg bemenetén csak nagyon kis áram folyik.

A DC/DC táp nem igazán használható referenciának (elég szép Vpp-jük szokott lenni). Használd a beépített 1V1-et.
A hozzászólás módosítva: Nov 30, 2017
(#) berkesandor válasza csatti2 hozzászólására (») Nov 30, 2017 /
 
Magyarul, ha szórt mérési eredményt kapok akkor (ezt nem vettem észre), táp lehet a ludas?
Vagy mindenképpen használjam az 1V1-t?
(#) csatti2 válasza berkesandor hozzászólására (») Nov 30, 2017 /
 
Az 1V1 pontosabb eredményt fog ilyenkor adni.
(#) berkesandor válasza csatti2 hozzászólására (») Nov 30, 2017 /
 
Bővebben: Link
El alapján csináltam, de ezt hogyan tudom átvariálni, hogy 1V1 referenciával mérje az A2 lábat?
(#) csatti2 válasza berkesandor hozzászólására (») Nov 30, 2017 /
 
Nem kell átvariálni (ha a végeredmény belefér 1.1V-ba persze). Csak ki kell a konverzió előtt választani az 1V1 referenciát.
(#) Scooter1986 hozzászólása Nov 30, 2017 /
 
Sziasztok , azzal a kéréssel fordulnek hozzátok hogy egy 1307 óra modul adott , ami kiirja a datumot napokat viszont szeretnék vele minden napra egy nevnapot is kiiratni , csak sehogy nem tudom ezt megcsinalni , vagyis egyfelekeppen működött úgy hogy if honap == 1 & nap==1 akkor irjon nevet es igy tovább de igy attól félek rengeteg memoriat fog követelni ha mind a 365 re végig irkalom , valaki erre esetleg nincs egy példa programja mert en mashogy nehezen fogom tudni ..
Nagyon köszönöm elore is ..
(#) berkesandor válasza csatti2 hozzászólására (») Nov 30, 2017 /
 
Úgy kell méreteznem az osztót, hogy 1,1 V alá kerüljek? (bocs, ha hülyéket kérdezek).
(#) csatti2 válasza Scooter1986 hozzászólására (») Nov 30, 2017 / 1
 
Ez egy kicsit trükkösebb de megoldható. Elöljáróként egy kis elmélet.

Az AVR-ek hardvard architektúrájú 8-bites mikrokontrollerek, amelyek 64k memóriaterületet tudnak a 16bites címzésükkel megcímezni. Ez ugye elég kevés ezért trükkökkel élnek. Az egyik az, hogy a flash, az sram, az eeprom nem ugyanabban a címtartományban van, a C és a C++ viszont ezt nem szereti ezért különleges csak AVR alatt működő eljárásokra, makrókra, stb. van szükség, hogy mégis programozhassuk őket C-ben. Ennek hátulütője, hogy ha nem használjuk ezeket a makrókat, akkor a rendszer elkezdi pazarolni a memóriánkat és betölti az SRAM-ba is a szövegkonstansainkat, hogy a sima C-ből fordított program elérje (pl. csak 2kB SRAM van egy UNO-ban, miközben a flash-ben is tároljuk a neveket, abból pedig már 32kB van).

Na akkor a bevezető után nézzük meg mit is tehetünk.

Első lépésként definiáljuk az összes nevet oly módon, hogy azok csak a flash-ben legyenek eltárolva.

pl.:
  1. static const char PROGMEM DAY_1[]                       = "Fruzsina";
  2. static const char PROGMEM DAY_2[]                       = "Ábel";
  3. ...


Ezután összefogjuk őket egy tömbbe:
  1. static const char* NAMES[] PROGMEM = {
  2.         DAY_1,
  3.         DAY_2,
  4. ...
  5.         DAY365
  6. };


Ezután ha ki akarunk olvasni egy nevet, némi trükközésre van szükség hisz azok nem elérhetőek a normál címtérben (PROGMEM attribútum!).
  1. char _buffer[30];    // String buffer
  2.  
  3. strcpy_P(_buffer, (char*)pgm_read_word(&(NAMES[day - 1])));


A _buffer változó tartalmazza majd a nevet.
A hozzászólás módosítva: Nov 30, 2017
(#) csatti2 válasza berkesandor hozzászólására (») Nov 30, 2017 /
 
Pontosan.
(#) berkesandor válasza csatti2 hozzászólására (») Nov 30, 2017 /
 
  1. long readVcc() {
  2.   long result;
  3.   // 1.1V referenciafeszültség mérése, a max. referencia: AVcc
  4.   ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  5.   delay(2); // Vref beállási idő
  6.   ADCSRA |= _BV(ADSC); // Mérés
  7.   while (bit_is_set(ADCSRA,ADSC));
  8.   result = ADCL;
  9.   result |= ADCH<<8;
  10.   result = 1100L * 1024L / result; // AVcc kiszámítása [mV]
  11.   //1100 mV Vref * 1024 ADC felbontás
  12.   return result;
  13. }
  14.  
  15. void setup() {
  16.   Serial.begin(9600);
  17. }
  18.  
  19. void loop() {
  20.   Serial.println( readVcc(), DEC ); //Eredmény kiírás
  21.   delay(1000);
  22. }


És ez a kód hol tartalmazza, hogy melyik bemenetet mérem?
(#) csatti2 válasza berkesandor hozzászólására (») Nov 30, 2017 /
 
Ez a sor hibás:
result = 1100L * 1024L / result; // AVcc kiszámítása [mV]

Inkább így:
result = 1100L * result / 1024L; // AVcc kiszámítása [mV]
result *= ellenallasosztokonstansa;

És a válasz:
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
A MUX1 + MUX2 + MUX3 az ADC 7-re utal, ami pedig az analog input 7-re, azt viszont nem vezették ki az Arduinora (csak az SMD-s verzióban elérhető ugyanis). A nagyobbik probléma, hogy nem az 1.1V-os refet választottad ki.

ADMUX = _BV(REFS0) | _BV(REFS1) | _BV(MUX2) | _BV(MUX1); // ez már okésabb, 3-as bemenet, 1,1V-os reffel
(#) berkesandor válasza csatti2 hozzászólására (») Nov 30, 2017 /
 
Programot nem én írtam, a korábban linket oldalról származik.
Kiokoskodom, hogy mérhetem a D2 lábat, mert a nyák adott, és átvariálom az osztót.

Köszönöm, a válaszod !
(#) berkesandor válasza berkesandor hozzászólására (») Nov 30, 2017 /
 
D2 az A2 . Bocs.
(#) Kovidivi válasza gammabuta hozzászólására (») Nov 30, 2017 / 1
 
Ha lehetséges, én minden fv-be, ahol nincs timeout, és vár valamire, kijavítanám. Így nem tud megakadni a program soha. Számomra dühítő a timeout nélküli fv., hiszen bármi közbe jöhet, akármilyen zavar.
(#) gammabuta válasza Kovidivi hozzászólására (») Nov 30, 2017 /
 
Azt nem tudom, hogy ha a while-ban vizsgálgatok valamit akkor az mennyire terheli le a rendszert és nem-e lesz csak még több adat az i2c buszon mire olvasom.
Ennek ellenére betehetnék egy számlálót vagy millis-t nézve hogy ne tartson mondjuk 50msecnél tovább a ciklus.

A másik probléma pedig, hogy hogy resetelen a szenzort hisz az is read/write és azzal is lehet interferencia... de persze meg kell próbálni.
(#) csatti2 válasza berkesandor hozzászólására (») Nov 30, 2017 /
 
Bármely analóg lábat használhatod. Én csak adtam egy példát.
(#) berkesandor válasza csatti2 hozzászólására (») Nov 30, 2017 /
 
A nyákon A2-van tervezve a mérés, azon kell megvalósítanom, A3 -n más megy.
(#) Kovidivi válasza gammabuta hozzászólására (») Nov 30, 2017 /
 
Egy mindentől független megoldást használnék timeout-hoz. A millis függ az interruptoktól. Fognék egy változót, a várakozó ciklusba beraknék egy fix minimális delay-t, a változót közbe növelném. Várhatsz akár 100mS-ig is, elvileg csak nagyon ritkán következik be hiba.
(#) berkesandor hozzászólása Dec 1, 2017 /
 
Nem teljesen ide kapcsolódik a téma, SIM800 modulom szeretném kipróbálni lítium akkuról is. De a SIM minimális feszültségére 3,4 V-t írnak, de ez a feszültség alatt még van bőven kihasználható kapacitása litium-os cellának. Van valami okos kapcsolás amivel, kit tudnám használni azt a kapacitás rész? Elég volna ha 0,3 V -t emelne a fezsültségen, minimális veszteséggel. Akkor még a teljesen feltöltött akkut is elviselné a SIM, és sok akku kapacitást ki tudnék használni.
(#) vargham válasza berkesandor hozzászólására (») Dec 1, 2017 /
 
DC-DC step up. Én ilyet használok ezekre a feladatokra.
A hozzászólás módosítva: Dec 1, 2017
(#) csatti2 válasza berkesandor hozzászólására (») Dec 1, 2017 /
 
Attól függ. Ha a terhelés kicsi (mondjuk 0,1C, az is 280mA egy normálisabb cellánál), illetve szobahőmérsékleten tervezed használni, akkor 3,4V-on már csak kis kapacitás lesz a cellában és nem érdemes vele vesződni (ha folyamatosan step-upon keresztül táplálod az áramkört, többet vesztesz mint nyersz).
(#) berkesandor válasza csatti2 hozzászólására (») Dec 1, 2017 /
 
Ez el kültéri szerkezet.
Step-up-t próbáltam több félét is, de több a veszteség, mint a haszon.
Azt meg lehet oldani, hogy csak 3,4 V felett direktben táplálja a rendszert, és után kapcsoljon át a step-up-ra?
Megpróbálom, egy 18650-el mennyi ideig bírja, aztán vagy beválik, vagy marad a 6V riasztó akku. Csak annál meg az önkisülés aggaszt kicsit, most kb. 2 mA/h a fogyasztás, hosszú ideig bírja riasztó akkuval is, de hosszú idő alatt nagyobb az önkisülés.
Köszönöm a választ, beszámolok majd az eredményről.
A hozzászólás módosítva: Dec 1, 2017
(#) csatti2 válasza berkesandor hozzászólására (») Dec 1, 2017 /
 
Ha kint lesz, akkor mindenképpen kell step-up, mivel télen a hidegben nagyon leesik a cellafeszültség. A képen egy tipikus 18650-es karakterisztikája különböző hőmérsékleteken.

hrt.jpg
    
(#) berkesandor válasza csatti2 hozzászólására (») Dec 1, 2017 /
 
Márciustól szeptemberig lesz kint, méhészei dolog ez.
(#) csatti2 válasza berkesandor hozzászólására (») Dec 1, 2017 /
 
Meg lehet, kell hozzá két kis belső ellenállású P-MOS, és egy schottky dióda. Az alábbi képen is látható egy hasonló tápválasztás. Az USB betápot leválasztja a DC/DC konverter ha van 12V-os táp (a mintában step-down van). A te esetedben egy másik mosfet kapcsolná be a step-up konvertert ha az MCU túl alacsony tápfeszt mér (de csak akkor, amikor kommunikálni akarsz), amikor felpörgött a step-up, a mosfet automatkusan lezár és a step-up felől jön majd a delej egy diódán keresztül.
A hozzászólás módosítva: Dec 1, 2017
Következő: »»   399 / 853
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