Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Köszi, azt hiszem teljesen igazad van.
A timerhajtotta belső megszakításos modul programja kész, működik, írok rá egy fapados digitalwrite - analogread programot, és összehasonlítom, mekkora a fáziszaj különbség kettejük között és melyik javára. Köszi!
Így nem fordul le
Bocsi, kicsit elúsztam... Ha nagyon pontosan kell időzítve mérni, akkor én mindenképp betennék egy S/H-t és akkor a timer HW kimenő jele zárja, akkor meg majd megmérem, amikor akarom, amikor odaérek. lehet, a konkrét feladatot tudni jobb lenne nekünk is. Anno, amikor ívhúzást kellett előre detektálnom, akkor szaladtam bele ilyen elvetemült dolgokba (ps-es komparátorok meg ilyenek...brrr)
Probálkoz:
Így sikerült :
Köszi!
De ez a terület foglalás nagyon kevés:
A hozzászólás módosítva: Júl 26, 2017
Igaz. Ha jól számolom, akkor 9 Byte, ha 1 karakter=1 Byte. Vagy hagyni kell rá?
Szerintem: 5+3+1+1=10
Különben mindig felfele kerekítünk páros számra, a terület foglalásnál. Mert az AVR mindig 2 vel osztható cimre tasszi a változókat. A hozzászólás módosítva: Júl 26, 2017
OK, így már világos.
Még egyszer, köszi!
Hali Mindenkinek!
Az lenne a kérdésem hogy az normális ha az alap veszültség mérő programmal 1.4V értéket mutat a program? Teljesen "üresen" fut azaz semmi sincs rá csatlakoztatva a bemenetre.
Ne haragudj, és off, de "báncsa" a szememet. Nincs se SoftWer se HardWer, de van software és hardware
Ez egy microcontroller, minden ASM utasítás ismert x idő alatt fut le. Ha kikapcsolod az interrupt-okat, akkor elvileg semmi se zavarhat be, már csak a megfelelő kódot kell megírnod.
Már ha az elvárt töredék us precizitás elérhető...
"request for member 'available' in 'src', which is of non-class type 'char [20]'"
egy char[20]-nak akarsz átadni egy nem char[20] értéket.
Teljesen normális is lehet egy specifikálatlan esetben, márpedig ez az.
A bemenet amúgy simán lebeghet...
Ne haragudj, és off, de a "báncsa" bántja a magyart!
Esetleg a „bántsa, bántja” forma megfelelőbb lenne!
Sziasztok!
Segítségeteket kérném egy feladat megoldásában. Adott egy 12V dc motor H híddal hajtva, arduino pro minivel vezérelve. Fel szereltem egy hall szenzort a motor ékszíjtárcsa mellé, a tárcsán van 4db neo mágnes 90°-onként. A feladat az lenne, hogy ha a programban megadok egy fordulat értéket, akkor pwm jellel állítsa be a fordulatot, és figyelje a szenzoron keresztül. Ha terhelés hatására változik a fordulat, akkor koorigálja. Kérem aki tud segítsen, mert beletört a fogam, nem hajlandó 3000 alá menni a fordulat, hiába határozom meg azt, hogy ha 450 rpm-nél több, akkor csökkentse a pwm jelet.. Előre is köszönöm!
Add itt meg a kódot, anélkül nem megy.
Vagy kapcsolási rajzot, mert az is gond lehet. Valamint 3000*4= 12 000 impulzus az arduino felé. 1/12 milisec() a kód maximális futási ideje, szerintem az gond. Ha csak 1 mágnes, akkor is 1/3 milisec, ami nagyon kevés, az arduino nem ilyen gyors szerintem. (Persze lehet, hogy valami trükkel lehet gyorsítani a kódot.) A másik, hogy ekkora tempónál mit ad ki a Hall szenzor? A hozzászólás módosítva: Júl 28, 2017
Abba bele sem merek gondolni, mi van ha 3000-nél elszáll a tárcsáról az egyik mágnes!
3000 fordulat/perc nem a világ vége
ÁÁÁ!
Nekem az 1/s ugrott be a 3000-ről! De igaz, az rpm beszédes! ok, 60x több idő, de ekkor is 5 milisec. Talán elég, ha kompakt a kód.
A 3000 a hiba, nekem max 150-es fordulat kéne.
A problémára most a netet bogarászva találtam működő megoldást, de nem jó.. mivel módosítanom kell a pwm frekit, hogy ne visítson a motor, ezért nem akar dolgozni a millis() függvénnyel való számolgatás. Picit faragom a dolgot, utána feldobom amire jutottam.
Kérdés, milyen gyors válaszidőt akarsz, tehát milyen gyorsan és mértékben változhat a terhelés. Vontatórendszernél sima P-szabályozót csináltam, azóta is megy, ott van idő, nem kell gyors szabályozás. Mondjuk egy plotternél meg olyan PID kell, hogy...nem is értem. Pedig a HP mérnökei 30 éve is megoldották. (1MHz-es 6502 proccal)
ok!
150 menni fog simán! ( Ha kevesebb mint 100 milisec a kód futásigénye. )
Pergető vezérlő lesz, nem veszett gyors a terhelés változás. 1-2 másodperc válaszidő lehet.
Első lépésben határozd meg, hogy a bejövő sebesség értéked kb. milyen tartományba esik (ha gyors, akkor érdemes frekvenciát mérni, ha aránylag lassú, akkor periódusidőt, ez függ a jeladódtól is). Kényelmesen átszámolod mondjuk fordulatszámra (ezt a részt lehet optimalizálni, de maradjunk az olvashatóságnál). Próbaképp csak annyi, hogy ha a fordulatszám kisebb, mint ami kell, akkor PWM+1, ha nagyobb, PWM-1. (elég lesz 1 byte-os PWM is) Ha lassú a szabályozás, akkor szétválasztod pl. ha Sebesség-Elvárt> 10, akkor PWM+6. Igazából ilyenkor egy szabályozó idő/meredekség értékét állítod (akár több részbe is szét lehet szedni, ha különbség> 30, akkor PWM=PWM+23 pl.) Ez nagyon faék megoldás, de egyszerűen behangolható. Lehet ragozni, hogy pl. induláskor az alap PWM érték mindig 25-ről indul (hogy megmozduljon a motor). Ez a szenvedés azért kell, mert nem ismerjük a válaszidőket, tehát mekkora változásra, mennyi idő múlva, mennyit változik a rendszer.
Amikor belőtted, akkor végül,is csináltál egy PID szabályozót a rendszeredhez. Nekem rémlik, hogy Arduino alá mint ha lenne komplett PID...(nem foglalkozom vele, csak beugrott) Még arra kell figyelni, hogy ha a bejövő jelsorozat nagyon ritka, akkor STOP-nak vesszük (megszorult, nem indul) Nálam úgy volt, hogy a TIMER mérte a periódusidőt, ha átfordult, akkor STOP-nak vettem, mert nagyon ritkán jött (1 impulzusból nem tudhatjuk, mi az eredmény, mert a következő jöhet 1usec múlva vagy a jövő héten).
Köszönöm segítséged!
Sikeredett megoldani. Picit még ugrál, mert másodpercenként mér sebességet, és 500ms-onként állít pwm értéket, emiatt van egy 15rpm-es szórás. De már túl fáradt vagyok befejezni..
Fáradt? Most kezdődik az élet
Próbálj periódusidőt mérni, az sűrűbb eredményt ad.
Hali ismét!
Egy kis segítség kellene. Arduino Uno-hoz kötöttem egy IR LED-et és egy vevőt hozzá. A vevő jelét akarom mérni az analog bemeneten de az feszültséget tud mérni. Ebben tudna nekem segíteni valaki?
Mi a cél?
Ha távirányító jelét akarod venni, akkor inkább digit bemeneten próbáld, és van lib is hozzá. |
Bejelentkezés
Hirdetés |