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   393 / 840
(#) csatti2 válasza berkesandor hozzászólására (») Nov 10, 2017 /
 
Különböző kristálysebességek mellett ellenőrizted az F_CPU beállítást? Ha 8MHz-es kristályt használsz át kell állítani 8000000-ra.
(#) berkesandor válasza csatti2 hozzászólására (») Nov 10, 2017 /
 
Hogyan tudom ellenőrizni?
(#) krauszkrisztian hozzászólása Nov 10, 2017 / 1
 
Üdv!
Vettem egy új Arduinot. Rádugtam a gépemre, és nem tudta a gép az illesztőszoftvert telepíteni.
Egy régi p4-es gépre rádugtam, és hibátlanul működött.
Megpróbáltam egy harmadik géppel, de azzal sem ment.
Valaki tudna segíteni, mi lehet a baja?
Előre is köszönöm!
(#) berkesandor válasza krauszkrisztian hozzászólására (») Nov 10, 2017 /
 
"A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)"
Hozzászólásod felett, a topik címe alatt, sárga részben lesz a megoldás.
(#) berkesandor válasza berkesandor hozzászólására (») Nov 10, 2017 /
 
Sim-et közvetlenül lítium celláról használom, ugyan az a jelenség.
(#) csatti2 válasza berkesandor hozzászólására (») Nov 10, 2017 /
 
A legegyszerűbb módszer, hogy delay-el villogtatsz egy LED-et (pl. 5 másodpercenként) és ellenőrzöd, hogy tényleg annyi ideig tart, mint amennyit beállítottál.
(#) berkesandor válasza csatti2 hozzászólására (») Nov 10, 2017 /
 
Annyit, próbáltam.
(#) csatti2 válasza krauszkrisztian hozzászólására (») Nov 10, 2017 /
 
A két gépen, amin nem működött viszonylag új operációs rendszer volt? Az egyik IC-n, ami az USB közelében van olvasható FT232 vagy hasonló szöveg?

Ha igen, akkor hamis soros-USB illesztő IC-t érzékelt a driver és letiltotta a működést, ez a "funkció" csak a frissebb driver-ekbe került beépítésre.
A hozzászólás módosítva: Nov 10, 2017
(#) csatti2 válasza berkesandor hozzászólására (») Nov 10, 2017 /
 
Akkor nem ez a gond.
(#) gerleimarci hozzászólása Nov 10, 2017 /
 
Sziasztok!
Egy kezdő kérdés következik. Eddig nem igazán volt suükségem pontos időzítésre, ez viszont most eljött.
  1. /*
  2.  * Arduino 101: timer and interrupts
  3.  * 2: Timer1 overflow interrupt example
  4.  * created by RobotFreak
  5.  */
  6.  
  7. #define ledPin 13
  8.  
  9. void setup()
  10. {
  11.   pinMode(ledPin, OUTPUT);
  12.  
  13.   // initialize timer1
  14.   noInterrupts();           // disable all interrupts
  15.   TCCR1A = 0;
  16.   TCCR1B = 0;
  17.  
  18.   TCNT1 = 34286;            // preload timer 65536-16MHz/256/2Hz
  19.   TCCR1B |= (1 << CS12);    // 256 prescaler
  20.   TIMSK1 |= (1 << TOIE1);   // enable timer overflow interrupt
  21.   interrupts();             // enable all interrupts
  22. }
  23.  
  24. ISR(TIMER1_OVF_vect)        // interrupt service routine that wraps a user defined function supplied by attachInterrupt
  25. {
  26.   TCNT1 = 34286;            // preload timer
  27.   digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
  28. }
  29.  
  30. void loop()
  31. {
  32.   // your program here...
  33. }


Van ez a példaprogram, ami a Timer1 túlcsordulásakor indít egy megszakítást. A kérdés igazából csak annyi lenne, hogy miután beállítjuk a kezdőértéket(34286) utána már el is kezd a leosztott órajelenként hozzáadogatni, vagy csak miután lefutott az utána lévő kód? Ez azért lenne fontos, mert utána szeretnék berakni egy elágazást és emiatt váltakozna a lefutás ideje és ha a kérdésem második fele az igaz, akkor borulna is a pontos időzítés.
Másik kérdés. Lehet-e olyat, hogy egy timert több konstans értékhez hasonlítunk, és minden érték elérésekor más programrészlet fusson le? Az utolsónál természtesen nullázódna az érték.
Vagy inkább konkretizálom a felhasználást. Két FETet kellene felváltva kapcsolni, és ezek között egy bizonyos holtidő lenne. És még egy feltételhez is kéne hasonlítani, hogyha egy változó nagyobb mint a megadott érték, akkor nem nyitná ki egyik fetet sem, "tiltana".
(#) csatti2 válasza gerleimarci hozzászólására (») Nov 10, 2017 / 1
 
Fontos, hogy ha regisztereket használó mintát írsz, mindig írd oda az Arduino típusát is, ugyanis a hagyományos arduino-s utasításokkal ellentétben a regiszterek mindig mikrokontroller függőek (tulajdonképpen ezt rejti el előletek az arduino keretrendszer).

Kérdéseidre a válasz:
Igen, elindul. Igazság szerint meg se állt...

Lehetséges 3 különböző megszakítást generálni. Van két közbenső pont, illetve amikor túlcsordul a számláló. A számlálót inicializálhatod egy kezdőértékkel is (a példában ezt használta, így jobban testre szabhatod az időket).
Ha csak időnként van erre szükség, akkor utána csak letiltod a megszakításokat így azok nem birizgálják majd a FET-eket. Amikor újra át akarod kapcsolni őket, akkor újra belövöd a kezdőértéket, majd engedélyezed a megszakításokat.

A kódhoz tehát a következőket teheted hozzá:
Setup-ba:
  1. void setup()
  2. {
  3.   pinMode(ledPin, OUTPUT);
  4.  
  5.   // initialize timer1
  6.   noInterrupts();           // disable all interrupts
  7.   TCCR1A = 0;
  8.   TCCR1B = 0;
  9.   TCCR1B |= (1 << CS12);    // 256 prescaler
  10.   OCR1A = xxx ; // Első megszakítási pont. xxx-et cseréld ki a megfelelő értékre
  11.   OCR1B = xxx ; // Második megszakítási pont
  12.   interrupts();             // enable all interrupts
  13. }


További megszakítások:
  1. ISR(TIMER1_COMPA_vect)
  2. {
  3.   // Első pont teendők
  4. }
  5.  
  6. ISR(TIMER1_COMPB_vect)
  7. {
  8.   // Második pont teendők
  9. }
  10.  
  11. ISR(TIMER1_OVF_vect)        
  12. {
  13.   TIMSK1 = 0; // Timer1 megszakítások kikapcsolása, ha ehelyett a TCNT1-et írod, újra indíthatod a ciklust egy kezdőoffszettel, ha kitörlöd csak akkor 0-ról indul az időzitő
  14.   // Harmadik pont
  15. }


Indítás.
  1. void start()
  2. {
  3.   cli();
  4.   TCNT1 = xxx ; // Kezdő offszet
  5.   TIFR1 = (1 << TOV1) | (1 << OCF1A) | (1 << OCF1B);   // Flag-ek törlése
  6.   TIMSK1 = (1 << TOIE1) | (1 << OCIE1A) | (1 << OCIE1B);   // Megszakítások engedélyezése
  7.   sei();
  8. }
A hozzászólás módosítva: Nov 10, 2017
(#) krauszkrisztian válasza csatti2 hozzászólására (») Nov 10, 2017 /
 
Nincsen rajta ilyen ic.
Minden ugyan úgy win7 volt.
(#) krauszkrisztian válasza berkesandor hozzászólására (») Nov 10, 2017 /
 
Nem vettem észre, és nem is gondoltam volna rá.
Holnap megpróbálom vele.
Gyors válaszát köszönöm!
(#) gerleimarci válasza csatti2 hozzászólására (») Nov 10, 2017 /
 
Pontosan erre lesz szükségem Most még 328P-vel kísérletezek, de amennyiben lehetséges Attiny24 lesz belőle. Adatlap alapján első ránézésre megvannak ezek abban is.

Valahol el kell kezdeni a hardverközeli programozást. De megmondom őszintén, ha a legelején regiszterekben kellett volna már gondolkodnom, szerintem hamar elment volna a kedvem. Sok ember Arduinoval kezdi a programozást és előbb azért nem árt valamiféle szemléletnek kialakulni.
(#) gazspe hozzászólása Nov 11, 2017 /
 
Sziasztok!
BLDC szabályzáshoz szeretném megfogni a tekercsek áramát. Szokásos soros ellenállás-komparátor kombináció kiegészítve kellően nagy FET-ekkel, jól leméretezve kivitelezhető egy megfelelő kóddal? Egész ESC-t építem, 12V, peak current ~18A, de nem szeretném 80W felé tolni tartósan. Illetve az UART interrupt beleszólhat a kimenetek vezérlésébe (alacsony baudrate, kis információ csomagok)? Esetleg tudtok más (fűtőtest nélküli) megoldási lehetőséget?
Köszönöm a válaszokat.
(#) gerleimarci válasza gazspe hozzászólására (») Nov 11, 2017 /
 
Egy kínai kis RC ESC miért nem jó neked? Olcsó, készen kapod...
Ha jól értem, akkor annak a működését szeretnéd leutánozni.
(#) berkesandor válasza berkesandor hozzászólására (») Nov 11, 2017 /
 
Tovább nyomozok az ügyben.
Tápfeszt kizárnám (amíg nincs mérés róla), próbáltam az arudino-t usb-ről táplálni, a sim-et litium celláról, ugyan az a jelenség.
Szintillesztőt csináltam, BC337 volt itthon azzal próbáltam, ugyan az a jelenség (hogy jó-e ez a tranzisztor abban nem vagyok biztos (biztosan nem tökéletes erre a célra, de hirtelen ez volt), hétfőig csak ez van, de valószínűleg jó, mert ugyanazt produkálja mint eddig).
Jelenleg D4-D5 lábról megy a kommunikáció, ezek a megfelelők erre a célra?
Mi különbség a 8 MHz-es és 16 MHz-es arduinio kommunikációja között?
(#) Kovidivi válasza gazspe hozzászólására (») Nov 11, 2017 /
 
Biztosan magad akarsz építeni egy ESC-t? Ehhez minimum interrupt szinten kellene a FET-eket meghajtanod, ide a digitalWrite meg a delay kevés. A soros kommunikációt akár el is felejthetnéd, de minden mást is, mert elsődlegesen a motorral szinkronban kell maradni, ezt nem korlátozhatja semmi! Se a delay miatt mS-ként lefutó timer0 interrupt, se semmi felesleges számítás.
(#) gazspe válasza Kovidivi hozzászólására (») Nov 11, 2017 /
 
Idézet:
„Egy kínai kis RC ESC miért nem jó neked? Olcsó, készen kapod...
Ha jól értem, akkor annak a működését szeretnéd leutánozni."”

Tanulási célzatú projektek, hobbi szinten. Ha olcsó kínai termékeket szeretnék vásárolni, akkor nem foglalkoznék arduinoval és nem írnék ide.
Kovidivi: digitalwrite-ot és delay-t elvből nem használok (ha LED-et villogtatok sem). DigitalWrite függvénye túlbiztosított, regiszterekkel állítom a kimeneteket. Delay helyett timerekkel dolgozok. Interrupt szinten vannak hiányosságaim, de többek között ez az oka annak, hogy ilyeneket csinálok.
A nem terhelt tekercset akarom hall szenzornak használni, tudom korrigálni az esetleges lépés kieséseket.
Uart interruptot ki tudom váltani egy illesztő attinyval, multiplexelt kimenettel 6-8 biten (6-8 arduino láb felhasználásával, de messze nem kell ekkora felbontás) figyeltetek bemeneti lábon értékeket.
Eredeti kérdésem továbbra is fennáll (ESC-től függetlenül), tudok e egyszerű áramgenerátort csinálni arduinoval (IRL2203-as meghajtó FET-ek, 7mohm-os Rdson, 116A), vagy hajtsam ki analóg módon?
És igen, ez egy fejlesztési projekt, a feladatot megfogalmaztam, most szeretném realizálni az elképzelést elméleti szinten.
A hozzászólás módosítva: Nov 11, 2017
(#) gazspe válasza gazspe hozzászólására (») Nov 11, 2017 /
 
Ui.: Max fordulaton 3.6 kHz-n kellene léptetnem, 20 MHz-en 5500 órajelenként.
A hozzászólás módosítva: Nov 11, 2017
(#) csatti2 válasza gazspe hozzászólására (») Nov 11, 2017 /
 
Egy fordulat az nem egy lépés. Egyébként oka van annak, hogy a legtöbb kapható ESC-ben vmilyen ARM alapú mikrokontroller van, ráadásul te ha jól értem BEMF-et akarsz használni, ami macerásabb mint a diszkrét Hall szenzoros megoldás. Én a helyedben nem arduinóval csinálnám meg a projektet, bár a kezdeti tapasztalatszerzéshez hasznos lehet.
(#) dokidoki válasza gazspe hozzászólására (») Nov 11, 2017 /
 
Én javasolnám, hogy mégis mielőtt majd nulláról akarnád megírni, tanulmányozd ezeket az ESC-ket, főleg a hozzájuk írt alternatív szoftvereket. Mint pld.: SimonK, KK, BLheli ... Ezekben megtalálod a univerzálisra és full konfigurálhatóra készített ASM nyelven írt forrást. Ennek az ismerkedésével és tesztelésével sokat lehet tanulni, ehhez meg jó alap lenne egy ismert gyári hardver, vagy annak az utánépítése.
(#) berkesandor válasza berkesandor hozzászólására (») Nov 12, 2017 /
 
Előrébb jutottam úgy gondolom.
A loop így néz ki:
  1. void loop()
  2. {
  3.  
  4.   LowPower.powerDown(SLEEP_500MS, ADC_OFF, BOD_OFF);
  5.  
  6.   if ( sms == 1)                      {
  7.     smsfogad();
  8.   }
  9. }


Ha nem altatok, 100%-an működik.
Ha növelem az altatási ciklus hosszát, csökken a jól olvasott sms-ek aránya.
Sajnos a legrövidebb ciklussal is (ami 30 ms ), sem 100%-os.
Könyvtár leírásában nem találom a parancsot ami bekapcsolja a chip minden funkcióját (felébreszti).
Valami ötlet, vagy kód amivel ezt megtehetem?
Low Power lib
(#) kegyetlen19 hozzászólása Nov 13, 2017 /
 
Sziasztok.
Egy kerti led világítás, RXB6 433MHz-es modullal történő ki-be kapcsolását (fényerő szabályozással) csinálom.
A rc-switch-master nevezetű libraries-t használom a távirányító gombjainak megfelelő „kódok - számsor „ beazonosítására . De sajnos elakadtam, mikor a programba be akartam vinni a többi távirányító „kódját” (több távirányító is használva lenne, (van ami egy gombos, van ami több gombos)).
A VAGY utasítással van problémám. A csatolt program részletben, az -1- jól működik (egy távirányító egy gombja). A -2- itt már van VAGY utasítás és felborul a program, nem jól működik, (valószínűleg a VAGY után nem jó ez ÉS ). A -3- ennél a verziónál működik a program, de bármely távirányító bármely gombjára reagál.
Tehát a kérdésem, hogy használjam a programban a VAGY utasítást? (Egy IF-ben többször is lehet a VAGY egymás után? Kb. 3db kellene) Válaszokat előre is köszönöm.
  1. #include <RCSwitch.h>
  2. RCSwitch mySwitch = RCSwitch();
  3.  
  4. void loop() {
  5.  
  6. if (mySwitch.available()) {
  7.     int value = mySwitch.getReceivedValue();
  8.     if (mySwitch.getReceivedValue() == 2819073 && raindit == 0 ) {   //-1- ez így jól működik !!!
  9.      
  10.   // if (mySwitch.getReceivedValue() == 2819073 || 10889298 && raindit==0 ) {    //-2- nem működik jól    
  11.   // if (raindit == 0 && mySwitch.getReceivedValue() == 2819073 || 10889298) {   //-3- működik, de bármelyik gombnyomásra
  12.        
  13.         led=5;            //2% fenyero
  14.         analogWrite(9, led);
  15.         feny=1;           //aktiv a fenyero felfele
  16.         raindit=1;        //nincs KI-kapcsolas es rainditas
  17.         delay(100);  
  18.         }
  19.     mySwitch.resetAvailable();
  20.     delay(50);
  21.     }
  22. }
(#) RoliNyh hozzászólása Nov 13, 2017 /
 
Helló!

Kapcsolástechnikailag hogy előnyösebb bekötni egy fényérzékelő ellenállást Attiny85 -re, és miért?

A séma szerint, pozitív ágba?
B séma szerint, test ágba?
(#) gerleimarci válasza RoliNyh hozzászólására (») Nov 13, 2017 /
 
Ahogy neked tetszik. Mind a kettővel működik.
(#) andyka válasza kegyetlen19 hozzászólására (») Nov 13, 2017 /
 
Ne sporold a gepelest.
A 10-es sor:

if ((mySwitch.getReceivedValue() == 2819073) || (mySwitch.getReceivedValue() == 10889298) && (raindit==0) ) { ....

Szerintem valahogy igy kellene ....
A hozzászólás módosítva: Nov 13, 2017
(#) RoliNyh válasza gerleimarci hozzászólására (») Nov 13, 2017 /
 
Igen azt tudom, csak arra volnék kíváncsi, (mivel a procit annyira nem ismerem),
hogy van -e valami előnye/hátránya az egyik sémának a másikkal szemben?
(#) Tasznka válasza kegyetlen19 hozzászólására (») Nov 13, 2017 /
 
Próbáld ki ezt,ez könnyen bővíthető:
  1. if (!raindit ){
  2.   switch(mySwitch.getReceivedValue()){
  3.     case 2819073:
  4.     case 10889298:   //ide jöhet amit csinálni szeretnél
  5.     break;//elég,ha csak a végén van break.
  6.   }
  7. }


vagy lehet még else-if is
(#) csatti2 válasza RoliNyh hozzászólására (») Nov 13, 2017 /
 
Semmi köze a procihoz. Ez egy ellenállásosztó így is úgy is, ahol csak annyit variálsz, hogy az analóg értéked csökken vagy nő majd a fotoellenállás növekedésével. Ha nagyon kukacoskodni akarnánk, akkor az analóg bemenet árama (van neki, mégha nagyon kicsi is) által okozott hibára optimalizálhatnánk, de igazándiból ez csak nagyon nagy ellenállásoknál játszik, egy szimpla 10bites ADC nem annyira érzékeny.
A hozzászólás módosítva: Nov 13, 2017
Következő: »»   393 / 840
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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