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   68 / 847
(#) ficko válasza TavIR-AVR hozzászólására (») Dec 20, 2014 / 1
 
Köszi a kiegészítést.A válaszom kérdésedre:

-nem vagyok biztos, hogy megfog az arduino, lehet hogy megy az egész a fiókba,
-a kész vásárlása nem ösztönöz részletesebb után olvasásra,
-nincs itthon usb-rs232 átalakítóm, viszont van max232-m és soros portom a PC-n,
fiókból meg tudom építeni,
-van több mega8-m (bár van 328-am is).
Az egész project ötletét az adta, hogy sikerült már 2db atmega8-t is kinyirní részlegesen a korábban megépített tranzisztor (alkatrész) teszteremben, vélhetően
nem jól kisütött elko mérésével.Az Ic-k programozhatóak, várhatóan egy vagy több port pusztult ki, kiváncsí vagyok hogy melyik, esetleg melyik funkciója.
Az arduino mintaprogramokat olvasva ez a tesz sokkal gyorsabban elvégezhető.
A tesztelés Avrstúdió alatt sokkal hosszadalmasabb, program megírása asm-ben, fordítás, külön égetés, mivel nincs a stúdió alól működő égetőm (nem is kívánok beszerezni), C, C++ ellen meg be vagyok oltva.
Természetesen ha megfog az arduino és kinövöm a mega8-at beszerzek egy uno-t
az ebay-röl.
(#) erdeidominik1999 hozzászólása Dec 20, 2014 /
 
Sziasztok! Szeretnék csinálni arduinoból egy autómata akkutöltőt, amivel 12v os aksit töltenék (7 ah-sat). A töltésre egy 14 v-os tápot szánok, én úgy gondoltam megoldani, hogy analgRead-en olvasom az aksit, van egy adott időköz (pl 1 óra), amikor lekapcsolja a töltést és ellenőrzi az aksi feszültségét(mert ugye töltés alatt csak a töltőfeszültséget tudja nézni), ha még nincs 12 volt, akkor folytatja, ellenkező esetben lekapcsolja a töltést. Hogyan lehetne ezt jobban megoldani, hogy ne kelljen kapcsolgatnia mert ugye az nem tesz túl jót az aksinak.
(#) KBal76 válasza erdeidominik1999 hozzászólására (») Dec 20, 2014 /
 
Ez ágyúval verébre.
A 14V stabil tápegységre tennék egy korlátozó ellenállást (5W minimum, pártíz-száz ohm) és egy diódát (Schottky) ami lekap pár tizedet, a fogyasztót amit el kell lásson (gondolom alapból minimális fogyasztással bír) közvetlen az akkura tenném. Ha hirtelen sokat akarna enni (lámpa vagy sziréna?) akkor azt a pár perc fogyasztást az akku fogja viselni, amit utána visszatölt a tápegység.
(#) erdeidominik1999 válasza KBal76 hozzászólására (») Dec 20, 2014 /
 
És akkor az arduino ne is vezérelje a töltést? Mert az aksi magát azt az arduinot látná el ami a töltést is vezérelné és én is úgy gondoltam, hogy akkor az aksira lenne kötve.
A hozzászólás módosítva: Dec 20, 2014
(#) KBal76 válasza erdeidominik1999 hozzászólására (») Dec 20, 2014 /
 
Mindenáron kell hogy vezérelje? Nincs jobb dolga? Minek túlbonyolítani azt, amit lehet kavics egyszerűséggel is?
(#) erdeidominik1999 válasza KBal76 hozzászólására (») Dec 20, 2014 /
 
Csak azt nem szeretném, hogy az történjen, mint ami pl a riasztókban is, hogy egyfolytában tölt és 1-2 év alatt tönkreteszi az aksit.
(#) KBal76 válasza erdeidominik1999 hozzászólására (») Dec 20, 2014 /
 
Mi kell az akkunak? Hogy a kapocsfeszültsége 13.6V -on maradjon.
Ez ha teljesül, akkor tönkremegy? Nem tudom, nincs ez irányú tapasztalatom, én így csináltam ahogy leírtam a sajátomat, rámértem töltés alatt sarukra hetente, (több héten át) 13.6V, bízok benne hogy a szakirodalom nem téved, és így nem megy tönkre. Te ugyanezt tennéd Arduval.
(#) erdeidominik1999 válasza KBal76 hozzászólására (») Dec 20, 2014 /
 
Kipróbáltam, amit mondtál, egy 5a-es diódával, és kb 3 perc alatt tök forró lett a dióda.
(#) ronin75 válasza erdeidominik1999 hozzászólására (») Dec 20, 2014 /
 
Ezek az akkuk ennyit bírnak, gyártója válogatja. Az oldalán rajta van, hogy standby-ba (állandó töltés) mekkora feszültséget kell rákapcsolnod. Ennyi a feladatod, ehhez nem kell Arduino.

Próbáld nagyobb diódával. Csak az akksi volt a táp kimenetén?
A hozzászólás módosítva: Dec 20, 2014
(#) KBal76 válasza erdeidominik1999 hozzászólására (») Dec 20, 2014 /
 
És mekkora soros ellenállást tettél rá?
(számold ki mekkora max áramot akarsz-tudsz kivenni a tápból, ill. az akkuba mennyit akarsz beletolni)
A hozzászólás módosítva: Dec 20, 2014
(#) erdeidominik1999 válasza KBal76 hozzászólására (») Dec 20, 2014 /
 
20 ohm-osat (az volt itthon)
(#) KBal76 válasza erdeidominik1999 hozzászólására (») Dec 20, 2014 /
 
Valamit elrontottál. 20 ohm ellenálláson, ha teljesen lemerült akkut veszel, akkor is csak 2V a 14V-os tápodig, azaz 100mA folyhatna az akku felé a tápból, az meg nem melegít fel egy 5A diódát, az csak 200mW ha jól nézem.
Holnap folyt. De ez itt az Ardu topikban eléggé off már
A hozzászólás módosítva: Dec 20, 2014
(#) erdeidominik1999 válasza KBal76 hozzászólására (») Dec 20, 2014 /
 
Majd megpróbálom újra, még 2 kérdésem lenne, és akkor nem kell másik topik sem... Az egyik, hogy a 14v 300mA-es táp jó-e (vagy lehet 12 is, mert az jobb lenne a többi cucc szempontjából, csak nem-e lesz túl kicsi) és, hogy vegyek-e másik ellenállást, és ha igen, mekkorát? Illetve, hogy kell-e az 5 amperes dióda, nem-e elég egy 1A-es?
(#) Koleus hozzászólása Dec 20, 2014 /
 
Sziasztok.
Egy elég amatőr kérdés:
írtam egy időzítő függvényt:
  1. int idozito1(long interv){
  2.    
  3.   unsigned long c_Millis = millis();
  4.   static unsigned long p_Millis;
  5.   int lejart;
  6.  
  7.   if(p_Millis == 0) p_Millis = c_Millis + interv;
  8.   (c_Millis < p_Millis)?(lejart = LOW):(lejart = HIGH);
  9.   return lejart;  
  10. }


Ha ezt a függvényt többször használom a loop()-ban, pl.:
ki0 = idozito1(1000);
ki1 = idozito(3000);
a két kimenet egyszerre aktiválódik, nem példányosítsa magát.
(#) KBal76 válasza erdeidominik1999 hozzászólására (») Dec 20, 2014 /
 
Ohm törvényt alkalmazd, megtudod mekkora ellenálás kell.
Ha 13.6V kell az akku feltöltéséhez, vajon 12V tápegységet használhatsz-e? Hm?
Lehet korai még Arduinoval foglalkoznod?
(#) KBal76 válasza Koleus hozzászólására (») Dec 20, 2014 /
 
Mi a kérdésed? Tedd fel.
(#) Koleus válasza KBal76 hozzászólására (») Dec 20, 2014 /
 
A kérdésem az lenne, miért nem történik meg a függvény példányosítása?
Ha ugyanazt a funkciót meghívom többször is, de más paraméterekkel, többszö is kéne végrehajtódnia. Nem?
(#) Kovidivi válasza Koleus hozzászólására (») Dec 20, 2014 /
 
Szia.
Mire akarod ezt egyáltalán használni? Meghívod egyszer, a visszatérési érték pedig LOW vagy HIGH lesz, amit eltárolsz egy változóban. És ezután? A p_Millis hol kap értéket? Mert az if-ben vizsgálod meg, de pont előtte hozod létre a változót, tehát 0 az értéke. Ezután megnézed, nulla-e. Hát persze hogy az, hiszen még nincs értéke. Ez a függvény, bármilyen értékkel is hívod meg, ugyanolyan gyorsan fog lefutni, nem időzít semmit. Esetleg ha meghívná a magát (stack túlcsordulás), vagy legalább lenne benne egy while, akkor művelne valamit. Mit jelent neked a példányosítás szó? Elmagyarázod kérlek?
A hozzászólás módosítva: Dec 20, 2014
(#) Kovidivi válasza ficko hozzászólására (») Dec 20, 2014 /
 
Szia. Neked ez kell: Standalone Arduino.
(#) Kovidivi válasza erdeidominik1999 hozzászólására (») Dec 20, 2014 /
 
Szia.
Ezek a témák közül válassz egyet: Bővebben: Link.
Akkumulátor töltésnek az Arudinohoz semmi köze sincs. Keresd meg a megfelelő módszert. Ha pedig megvan a töltő áramkör, akkor Arduinoval kapcsolsz egy relét, ha az akku feszültsége 12V alá csökken, és kész. De ne Arduinoval akarj tölteni, ahhoz keress töltőáramkört! További infókat a töltős témákban találsz.
(#) Koleus válasza Kovidivi hozzászólására (») Dec 20, 2014 /
 
Ez egy egyszerű időzítő, késleltetés bekapcsoláskor/meghíváskor. Meghívod egy megadott idővel (ms megadva), és a visszatérési érték HIGH lesz ha idő eltelt. Maga a funkció működik.
Viszont, ha meghívom még egyszer más idővel, a rövidebb idő már aktiválta a kimenetet.
(#) Kovidivi válasza Koleus hozzászólására (») Dec 20, 2014 / 1
 
Értem már. Szerintem egyszerűbb lenne, ha olyan függvényt készítenél, hogy pl: var2000ms(); var3000ms(); , stb. és azt hívod meg, amennyit várni akarsz. De miért nem használod simán a millis()-t, ahogy a nagy könyvben meg van írva? Függvény nélkül. Szépen összeszeded, hogy minek mikor kell lefutnia, és készítesz egy "forgatókönyvet". Előző oldalakon volt erre példa is.
Amit Te szeretnél, az szerintem nem megoldható. Mi történik, ha azonos értékkel hívod meg, mi legyen, ha másik értékkel hívod meg, mi lesz, ha pont letelt az idő, akkor pont újraindul az időzítés? Nem logikus számomra. Sokkal egyszerűbb, ha megvizsgálod, hogy (előzőmillis+intervallum) < millis() ? Ha igen, akkor letelt az intervallum és előzőmillis=millis(), ha nem, akkor várni kell még, semmit nem csinálunk.
(#) Koleus válasza Kovidivi hozzászólására (») Dec 20, 2014 / 1
 
Egy vegyestüzelésű kazán vezérlésén gondolkozom. A keringető szivattyút vezérelném a kazán hőfokának függvényében. Próbáltam a kazán beépített termosztátját használni (65 C bekapcs - kb 57 C kikapcs), de lakás felfűtésénél ki-be kapcsolgatja a pumpát, ami nem tesz igazán jót neki, meg az UPS is kiakad.
Ezt szeretném átdobni AVR/Arduino-ra (hőmérséklet mérés + pumpavezérlés), és beépítenék egy késleltetést a szivattyú indítására. Ezzel akadályoznám meg a sűrű ki-be kapcsolgatást.
Nem idővezérlésről van szó, hanem eseményvezérlésről, ezért nem tudok forgatókönyvet készíteni.
Úgy gondoltam, ha megírok egy függvényt, azt számtalanszor felhasználhatom.
De ez ebben az esetben nem teljesül, vagy a millis(), vagy az optimizáció miatt...
Vagy én fogtam hozzá rosszul...
(#) Kovidivi válasza Koleus hozzászólására (») Dec 21, 2014 / 1
 
A függvény a hibás. Fent leírtam, hogy sok esetet nem kezel le.
A hozzászólás módosítva: Dec 21, 2014
(#) Koleus válasza Kovidivi hozzászólására (») Dec 21, 2014 /
 
Megoldottam a problémát, átírtam a függvényt. Először is, létrehoztam egy új tipust
  1. typedef struct {
  2.         char EN,Q;
  3.         long PV,real_EV;
  4. }TIMER;


A függvényt pedig átírtam:

  1. void tim_block(TIMER *param){
  2.  
  3.   unsigned long c_Mil = millis();
  4.   if(param->EN)
  5.   {
  6.     if(param->real_EV == 0) param->real_EV = c_Mil + param->PT;
  7.     (c_Mil < param->real_EV)?(param->Q = LOW):(param->Q = HIGH);
  8.   }
  9.   else
  10.   {
  11.     param->real_EV = 0;
  12.     param->Q = LOW;
  13.   }  
  14.   return;
  15. }


Ezután annyi időzítőt hozok létre, ahányat akarok, és mind teljesen önnálló.

TIMER T0 = {0,0,3000,0};
TIMER T1 = {0,0,5000,0};

A loop()-ban akárhanyszor meghívhatom.

tim_block(&T0);
tim_block(&T1);

Ha Tx.EN = 1, az eltelt idő után a Tx.Q = 1. Ha Tx.EN = 0, akkor Tx.Q = 0.

Ez elég PLC-sre sikeredett, de működik.
(#) erdeidominik1999 hozzászólása Dec 21, 2014 /
 
Szasztok! Lenne egy elég amatőr kérdésem: azt hogyan lehet megoldani egy webszervernél, hogy pl. van egy gomb az oldalon, és amikor rákattintok, akkor ami szöveg eddig volt az oldalon, az letörlődjön és utána egy másik kerüljön oda, mert ha csak simán kiiratok egy új szöveget, akkor a régi is megmarad, csak mellé írja az újat.
(#) kapu48 válasza Koleus hozzászólására (») Dec 21, 2014 /
 
Már csak azt nem értem mi a függvényedben a „… + param->PT;” PT? szerepe?
(#) icserny válasza erdeidominik1999 hozzászólására (») Dec 21, 2014 /
 
Muszáj ezt a webszervernél forszírozni? Javascript a böngészőben elintézheti.
Az alábbi példában szereplő kód például a gomb megnyomására lecseréli a "demo" azonosítójú dokumentum-elem szövegét. Példa linkje
JavaScript bővebben: Link
(#) erdeidominik1999 válasza icserny hozzászólására (») Dec 21, 2014 /
 
Köszi a választ, sokat segítettél, még azt szeretném kérdezni, hogy ha megcsinálom a weboldalt Javascript-el, egy sd kártyáról lefuttatom webszerverként az arduinoban, akkor pl. ha valamit állítok a weboldalon, azt hogyan tudom megcsinálni, hogy az az adat visszajusson az arduinohoz?
(#) pepe1125 hozzászólása Dec 21, 2014 /
 
Arduino Due -nál a Due Timer könyvtárat szeretném használni. Viszont még a példa programok sem fordulnak le.

Hiba:

  1. Arduino: 1.5.8 (Windows 8), Board: "Arduino Due (Programming Port)"
  2.  
  3. Using library DueTimer in folder: C:\Program Files (x86)\Arduino\libraries\DueTimer (legacy)
  4.  
  5.  
  6.  
  7. C:\Program Files (x86)\Arduino/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=158 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\system/libsam -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\system/CMSIS/CMSIS/Include/ -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\system/CMSIS/Device/ATMEL/ -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_due_x -IC:\Program Files (x86)\Arduino\libraries\DueTimer C:\Users\SNDOR~1\AppData\Local\Temp\build4703872252833846753.tmp\AvaliableTimer.cpp -o C:\Users\SNDOR~1\AppData\Local\Temp\build4703872252833846753.tmp\AvaliableTimer.cpp.o
  8.  
  9. C:\Program Files (x86)\Arduino/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=158 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due" -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\system/libsam -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\system/CMSIS/CMSIS/Include/ -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\system/CMSIS/Device/ATMEL/ -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_due_x -IC:\Program Files (x86)\Arduino\libraries\DueTimer -IC:\Program Files (x86)\Arduino\libraries\DueTimer\utility C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.cpp -o C:\Users\SNDOR~1\AppData\Local\Temp\build4703872252833846753.tmp\DueTimer\DueTimer.cpp.o
  10.  
  11. C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.cpp:163:3: error: stray '\226' in program
  12.    error = clockConfig[clkId].divisor * abs(ticks – round(ticks)); // Error comparison needs scaling
  13.    ^
  14. C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.cpp:163:3: error: stray '\226' in program
  15. C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.cpp:163:3: error: stray '\226' in program
  16. In file included from C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/Arduino.h:44:0,
  17.                  from C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.h:15,
  18.                  from C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.cpp:11:
  19. C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.cpp: In static member function 'static uint8_t DueTimer::bestClock(double, uint32_t&)':
  20. C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/wiring_constants.h:75:61: error: 'ticks' cannot be used as a function
  21.  #define round(x)     ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
  22.                                                              ^
  23. C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/wiring_constants.h:73:18: note: in definition of macro 'abs'
  24.  #define abs(x) ((x)>0?(x):-(x))
  25.                   ^
  26. C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.cpp:163:52: note: in expansion of macro 'round'
  27.    error = clockConfig[clkId].divisor * abs(ticks – round(ticks)); // Error comparison needs scaling
  28.                                                     ^
  29. C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/wiring_constants.h:75:61: error: 'ticks' cannot be used as a function
  30.  #define round(x)     ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
  31.                                                              ^
  32. C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/wiring_constants.h:73:24: note: in definition of macro 'abs'
  33.  #define abs(x) ((x)>0?(x):-(x))
  34.                         ^
  35. C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.cpp:163:52: note: in expansion of macro 'round'
  36.    error = clockConfig[clkId].divisor * abs(ticks – round(ticks)); // Error comparison needs scaling
  37.                                                     ^
  38. C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/wiring_constants.h:75:61: error: 'ticks' cannot be used as a function
  39.  #define round(x)     ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
  40.                                                              ^
  41. C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/wiring_constants.h:73:29: note: in definition of macro 'abs'
  42.  #define abs(x) ((x)>0?(x):-(x))
  43.                              ^
  44. C:\Program Files (x86)\Arduino\libraries\DueTimer\DueTimer.cpp:163:52: note: in expansion of macro 'round'
  45.    error = clockConfig[clkId].divisor * abs(ticks – round(ticks)); // Error comparison needs scaling
  46.                                                     ^
  47. Error compiling.
Következő: »»   68 / 847
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