|
Szervó vezérlés
|
Témaindító: Frankye, idő: Júl 1, 2014
Témakörök:
|
|
(#59742) proba válasza Lazsi hozzászólására (#59741)
|
Válasz •
|
Jún 13, 2018 |
|
Az SG90 szervót szétszedtem, abban egy analóg IC volt, néhány elektrolit kondenzátorral megtámogatva. Ettől kezdve az áramszünet utáni nyugton maradás nem garantálható, az elkók töltötségi szintjén múlik az indulás. Ha bonyolult kapcsolás kell hozzá, akkor meg egyszerűbb motornak, meg áttételnek használni, a benne lévő elektronika meg hulladék. Először azt akartam motor vezérlésre használni, de a szép lassú menethez csökkentett táp kell, azt meg nem tudta az IC. |
(#59743) etwg válasza Lazsi hozzászólására (#59741)
|
Válasz •
|
Jún 13, 2018 |
|
Elvben ugyanez volt az én megoldásom is, csak nem külön áramkör vezérelte a FETet, hanem a proci portja. Az meg tudta, hogy mikor kell be vagy kikapcsolni a tápot. Persze a szervohoz ugyanaz a 3 ér kell, csak a pluszt is minden szervohoz külön kell vezetni, mig normális esetben 4-5 szervo + és GND-jét közösitheted és a vezérléstöl csak a 3. vezetéket kell minden szervohoz huzni. |
(#59744) etwg válasza proba hozzászólására (#59742)
|
Válasz •
|
Jún 13, 2018 |
|
Sajnos ez van és innen ered a gondok alapja is.
|
(#59745) diginewl válasza etwg hozzászólására (#59738)
|
Válasz •
|
Jún 13, 2018 |
|
Köszönöm! Sajnos a hibákkal tisztában vagyok. Viszont piszok megbízható szerkezetek. Több éve a vitrinben megy le/fel a két sorompó, egy-egy szervóról. Ezért is foglalkoztat ez az egész ügy. |
(#59746) diginewl válasza Lazsi hozzászólására (#59741)
|
Válasz •
|
Jún 13, 2018 |
|
Üdv Lazsi!
Te arra gondolsz, ha amúgy is elindul a PWM a szervó felé (amit a PIC/AVR/akármi tud, hogy hol állt előtte) akkor kapcsol be a táp is?
A PWM jel jelenléte hajtja meg a tápot? Mennyire bonyolult egy ilyen felépítése?
Ezzel tulajdonképpen csak az a szervó vesz fel áramot amelyik éppen mozog is. |
(#59747) etwg válasza diginewl hozzászólására (#59746)
|
Válasz •
|
Jún 13, 2018 |
|
Ez azért nem olyan egyszerü dolog, mert a PWM jellemzöje ( szélessége ) határozza meg a szervokar helyzetét és alapbol mindig mennie kell. Nem tudni pontosan mit tesz melyik szervo, ha nem kap PWM jelet. Van amelyik alaphelyzetbe megy ( középre) , van amelyik csak egyet ránt majd nyugton marad. Szoval az impulzusok detektálása nem biztos, hogy célba vezet. Ezt meg lehet tenni a procin, de nem biztos, hogy a külsö áramkör ezt meg tudja tenni. |
(#59748) diginewl válasza etwg hozzászólására (#59747)
|
Válasz •
|
Jún 13, 2018 |
|
Olyan egysíkuan gondolkodom: Amit eddig láttam szervóvezérlőt (vett/saját) az mind lekapcsolja a pwm-et amikor eléri a célt. Eddig egy volt ami nem kapcsolta le, az kb 2 hónapig bírta a vitrinben, aztán megdöglött...
Érdekel Lazsi ötlete, főleg ha valami egyszerű áramkört mutat, amit meg tudok építeni. Én valami egyszerű tranyós dologra gondoltam, az R, és C közé, ami kapcsolja a szervót. Egyet kell csak tudnia kezelni max 1 A-ig.
|
(#59749) etwg válasza diginewl hozzászólására (#59748)
|
Válasz •
|
Jún 14, 2018 |
|
Egy kicsit szkeptikus vagyok az ilyen megoldásokhoz.
- az ilyen áramkör mindig késleltet, azaz több impulzusnak kell megjelennie mire kapcsol. Ezek az "indito" impulzusok elvesznek, azaz azokat a szervo nem kapja meg.
- a szervo PWM impulzusok jellegzetessége, hogy nagyon rövidek és "negativak" a pluszhoz képest, azaz a komparátor bonyolultabb mint 1-2 R-C elem meg egy tranziszror. A vezérlési bemeneten a plusz 5 Volt dominál ami aktiv idö alatt pár ms idöre megszakad ( lemegy 0 V-ra). Erre kell a detektornak reagálni minél gyorsabban.
- ha olyan a vezérlés, hogy lassan forditsa a szervot, akkor szinte minden impulzus számit hiszen ez okozza, hogy a szervo lassan mozdul az egyik állásbol a másikba. Ha ebböl elveszik néhány impulzus ( a komparátor miatt), akkor megint ugrani fog a szervo, aminek a kiküszöbölése volt a fö cél.
- miután a komparátor alapbol egy ujabb analog fokozat a láncban, ugyanugy ki van téve a zavaroknak, s miután a fennt leirtakbol következöen a gyors negativ élekre kell reagálnia, ami a zavaroknál is elöfordul, igy a komparátort is indithatja a zavarjel.
Szoval ki kellene laborálni, hogy meddig lehet elmenni az ilyen megoldás jellemzöiben. |
(#59750) Lazsi hozzászólása
|
Válasz •
|
Jún 14, 2018 |
|
Nem tudom, mennyire "szabvány" vagy mennyire "csak szokás" kérdése a szervok vezérlése. Vagyis az, hogy a két szélső pozícióhoz tartozó érték 1ms és 2ms széles impulzussal érhető el, és az ismétlésnek 8ms és 20 ms közöttinek kell lennie.
- Ha kimarad 5 db impulzus (5 x 20ms = 100ms) az 0.1 másodperc, mondjuk, hogy ennyit késleltet az áramkör (vagy kevesebbet, ha az ismétlődés nem 20ms-onként, hanem gyakrabban van).
- A neten keresve a szervo vezérlőjelek pozitív impulzusok. Vagyis alaphelyzetben 0 V, 1÷2 ms széles pozitív impulzus, 10-20 ms-onként megismételve.
- A lassú mozgás esetén sem okoz gondot a kimaradó 3-5 impulzus. Ha 1 másodperc alatt történik meg a teljes mozdulat, akkor kb. az 1/10-e marad ki. Mondjuk olyan lesz a hatásában, mintha kicsit "szorulna" az eszköz. Ha mondjuk egy sorompóról van szó, ami 5 másodperc alatt vált át, akkor kb. 2% esik ki.
- Nem az élekre kell reagálni, hanem adott szélességű impulzusok meglétére. Azért írtam R-C tagot. Az időállandóját úgy kell megválasztani, hogy a legkeskenyebb impulzus (1ms) és a legritkább ismétlődés (20ms) esetén is elinduljon az áramkör maximum 5 cikluson belül.
Tehát kell a bemeneten egy R-C tag, ami csak az 1ms-nál (biztonság kedvéért 0.5ms-nál) szélesebb impulzusokat engedi tovább. Ez lesz a zavarszűrés. Kell egy újraindítható monostabil multivibrátor (2 db. tranzisztor + pár R-C elemből megoldható), aminek az időállandója 20 ms, így a következő impulzus bekapcsolva tartja. Ennek a kimenetén van a kapcsolótranzisztor, ami tipikusan egy FET, mert azon esik elég kis feszültség nagyobb áram (1A) esetén. A monostabil időállandója legyen nagyobb, mint 20 ms, hogy egy lassabban működő vezérlővel is garantáltan bekapcsolva maradjon. Mivel kimaradhat (nem érkezik meg az áramkörhöz) 1-2 impulzus, a biztonság kedvéért legyen 50-100 ms. Ekkor a lekapcsolásnál van egy ekkora késleltetés, vagyis még ennyi ideig kap tápfeszültséget a szervo vezérlőjel nélkül.
Ja, és ebben az esetben a bekapcsolásnál legfeljebb az első impulzus veszik el. Mert az első impulzus elindítja a monostabilt, és mire bekapcsolja a FET-et, addigra az már "elmúlt", de mire a második impulzus érkezik, a FET már be van kapcsolva, vagyis a továbbiak a szervo lelkivilágán múlik, hogy mennyi idő alatt lesz üzemkész a tápfeszültség és vezérlés megérkezése után.
Természetesen ezt az egészet ki kellene próbálni a gyakorlatban, lehetőleg minél több különböző szervo és vezérlő esetében...
Ha van érdeklődés, megtervezem a konkrét kapcsolást, de kísérletezni kell majd vele, amire nekem nincs lehetőségem. |
(#59751) etwg válasza Lazsi hozzászólására (#59750)
|
Válasz •
|
Jún 14, 2018 |
|
Valoban alig van általánosan elfogadott szabvány a szervokra és még közöttük is, két rendszer uralkodik.
Ami pillanagnyilag fixnek látszik az az impulzus szélesség 1-2 ms, a középhelyzet 1,5 ms. Az ismétlödési frekvencia 40-200 Hz.
Én már eleget kisérleteztem velük, nem hiszem, hogy többet megér ez a nem éppen high-tech technologia.
Szoval lehet, hogy majd diginewl kolléga megprobál ezt azt.
Arra amire eredetileg tervezték ( modelltávirányitás) arra a mai állapotukban is megfelelnek, a modellvasuton azonban más a helyzet igy itt mindenképpen kisérletezni, ügyeskedni kell, hogy ugy müködjön, ahogy elvárjuk.
Én már belenyugodtam a zizegésbe és az enyhe zavarokba.
Olyasmire mint jelzö vagy sorompo stb tökéletesen megfelel. A váltokhoz csak feltételesen jo. (Van egy sereg a terepasztalomon). |
(#59753) diginewl válasza Lazsi hozzászólására (#59750)
|
Válasz •
|
Jún 14, 2018 |
|
Idézet: „Szoval lehet, hogy majd diginewl kolléga megprobál ezt azt. ”
Igen! Igen.
Lazsi! Valami olyasmire gondoltam még -(saját eszemmel), hogy egy 555 ic-t indítana el az első impulzus, ami be van lőve kb 2 másodpercre. Addig bekapcsol egy fet-et (azt sem tudom mi az), vagy egy tranyót. Azaz az utolsó jel megszűnés után még biztosan kap áramot a szervó 2 másodpercig, viszont nem kellene belenyúlni semmilyen R/C taggal a jelbe, csak figyelni. (555-ös ic van itthon )
Ha valami egyszerű dolgot kitalálsz, igyekszem megcsinálni, kipróbálni. Érdekel a dolog.
Nekem nem tetszenek a sok amperek még 5 voltnál sem. Nem tartom jónak, ha ennyi szalagdál ott. Ha van 15 szervó egy asztalon, akkor annak 15A kell induláskor, és ez csak a szervó.... 15A
Látom a vitrinben a 2, azaz KETTŐ szervó mit művel, a 3A-es táppal. Az egész kóceráj mozdonyostul 100db Led-estül fogyaszt 400mA-t.... |
(#59754) diginewl válasza diginewl hozzászólására (#59753)
|
Válasz •
|
Jún 14, 2018 |
|
Mégy annyi ehhez - hogy lássátok dolgoztam vele: Már terveztem egy késleltető áramkört egy komparátorral, és egy RC körrel, melyben a 10K-s poti állítható. Így el tudtam érni, hogy 1-10 másodperc között kapcsoljon be a relé, ezzel indítva a rá kötött szervókat. Ez megvan működik.
Ha ez a PWM jelről lehozott tápkapcsolás nem megy, akkor marad a kis komparátorom+relém. Ha csak 4-4 szervót tudok így külön kapcsolgatni, az is jó, mert kb 5 A elég a teljes terepasztalhoz. Ez kicsit megnyugtatóbb, mint a 15A... |
(#59755) diginewl válasza diginewl hozzászólására (#59718)
|
Válasz •
|
Jún 14, 2018 |
|
Az előzményekhez: sikerült működésre bírni a közvetlenül dcc-ről működő 16 szervót, és 16 kimenetet kezelő programot is.
Tökéletesen működik! Megy xpress-net-tel is.
Kicsit takarékra teszem magam itt. Elnézést, csak velem van tele a topik. |
(#59756) Frankye válasza diginewl hozzászólására (#59755)
|
Válasz •
|
Jún 15, 2018 |
|
Semmi gond. Én - személy szerint - élvezettel olvasom az itt folyó eszmecserét. |
(#59758) diginewl válasza Frankye hozzászólására (#59756)
|
Válasz •
|
Jún 15, 2018 |
|
OK. |
(#59759) etwg válasza Frankye hozzászólására (#59756)
|
Válasz •
|
Jún 15, 2018 |
|
|
(#59761) diginewl hozzászólása
|
Válasz •
|
Jún 15, 2018 |
|
Újabb fejleményeim - sajnos hibák.
Írtam az eredeti ötletgazdának is, de nem hiszem, hogy izgatja egy magyar patikus problémája ott Hollandiában.
A pic16F887-es szervózerérőből az analóg tökéletesen működik, az megjegyzi a beállításokat is áramtalanítás után is (kiolvashatók epromból az újabb adatok)
A DCC rendszerű működik, kicsit el van szúrva a lábkiosztás, de ez nem nagy gond.
RD7 30 | Puls Servo 9 *16
RD6 29 | Puls Servo 10 *15
RD5 28 | Puls Servo 11 *14
RD4 27 | Puls Servo 12 *13
RC7 26 | Puls Servo 13 *12
RC6 25 | Puls Servo 14 *11
RC5 24 | Puls Servo 15 *10
RC4 23 | Puls Servo 16 *9
RD3 22 | Puls Servo 8 *8
RD2 21 | Puls Servo 7 *7
A csillag utániak a valósak.
A nagyobb baj, az hogy valami miatt nem tárolja le valami fix memóriába a beállított értékeket. Amíg nincs lekapcsolva, addig szépen állítgathatók a szervók új pozícióba. (ez amúgy nagyon tetszik, mert potméterrel lehet beállítani, és ahol OK a pozíció, ott nyom az ember arra a szervóra egy váltóállítási parancsot - és letárolta). De elfelejti, ha kikapcsolom.
Ha a pickit íróval átírom az epromban az értékeket, akkor az szerint fog a szervó működni. Mondjuk ez sem rossz, de jobb lenne ha számítógép gép nélkül lehetne programozni az új értékekre a PIC-et.
Csatoltam az asm-et, ha esetleg valaki belenéz.
További hibája a kódnak, hogy bekapcsoláskor a relé kimenetek (a másik 16) mindig felhúzva vannak, függetlenül attól, hogy miként volt leállítva. Azaz ezt elfelejti a PIC nullára húzni azt a kimenetet, ami előző lekapcsoláskor aktív volt.
Mivel az asm kódot átírni/értelmezni nem tudom, itt van a megállj.
Ide beteszem az analóg szervóvezérlő kódját is. Érdekes, mert mind kettőben a letárolós parancsok ugyanazok. Nem értem miért felejt a DCC változat |
|
(#59762) etwg válasza diginewl hozzászólására (#59761)
|
Válasz •
|
Jún 15, 2018 |
|
A DCC változat valoszinüleg azért felejt mert az volt az elgondolás, hogy ezt a beállitást a központbol kapja, illetve onnan kaphatja az elmentéshez szolgálo parancsot. Probáltad valami egérrel beállitani a szervokat és onnan elmenteni? |
(#59763) diginewl válasza etwg hozzászólására (#59762)
|
Válasz •
|
Jún 15, 2018 |
|
Nem. Az elv ugyanaz, mint az analógnál. Idézet: „A beállítás MIN-MAX tartománya a szervo és a keringési idő ugyanaz, mint a kapcsolók által vezérelt. (lásd fent) Csak gondoskodni kell arról, hogy az összes szervó a MIN impulzus állapotban legyen, és kiválasztja a szervo beállítást a MAX impulzus kiválasztásával.” Googli a barátom Hollandról.
A PIC csak asm-ből írható át. Még a címe is. Eléggé DIY. |
(#59764) etwg válasza diginewl hozzászólására (#59763)
|
Válasz •
|
Jún 15, 2018 |
|
A ha analogban beállitod (elmented) amikor bedugod a DCC csatit elveszti ezeket a beállitásokat elveszted?
|
(#59765) diginewl válasza etwg hozzászólására (#59764)
|
Válasz •
|
Jún 16, 2018 |
|
Jumpert rátesz poti forgat. Közben a szervó követi a poti állását (ha az összes szervó rá van dugva a PIC-re akkor mind a 16 egyszerre mozog, ahogy a potméter forgatva van - ezért programozásnál csak azt a szervót csatlakoztatom a PIC-hez, amit éppen beállítani szeretnék). Ahol megfelelő a pozíció, ott kell adni DCC-n keresztül arra szervókimenetre egy váltóállítási parancsot. Ekkor tárolja le ehhez a kimenethez ezt a pozíciót. Ezt megtartja, programozhatok másik kimeneten más pozíciót. Az is megmarad. Akkor vész el minden, ha nincs áram.... (Nem tudom milyen átmeneti tár van ezekben a PIC-ekben) |
(#59766) etwg válasza diginewl hozzászólására (#59765)
|
Válasz •
|
Jún 16, 2018 |
|
Ha nem kapcsolod DCC-re akkor nem veszti el a beállitást (áram nélkül)? Probáld kideriteni mikor mi történik, mert igy egy kicsit zavaros.
A belsö eepromok kezelése lehet nagyon szabatos, ezért lépésröl lépésre kell kideriteni mikor mi történik.
A multkor azt irtad, hogy DCC nélkül megtartja a beállitott értékeket. Ezt kellene pontosan kideriteni mikor mi történik ha lekapcsolod a táprol. |
(#59767) diginewl válasza etwg hozzászólására (#59766)
|
Válasz •
|
Jún 16, 2018 |
|
Kétféle ASM kód van ugyanarra a PIC-re.
1; Az egyik analóg. Azaz te kapcsolgatod a PIC lábait, ő irányítja a szervót. Ez megtartja a beállításokat.
2; A másik DCC-re. Itt váltóállító paranccsal lehet a szervókat irányítani. Ez a szenilis |
(#59768) etwg válasza diginewl hozzászólására (#59767)
|
Válasz •
|
Jún 16, 2018 |
|
Ha igy van, akkor két különbözö dologrol van szo (ugyanabban a flaskoban ).
Ehhez át kellene dolgozni az egész kodot. Az nem olyan egyszerü, hogy egy két sorral meg lehessen változtatni a programot..
Az sem biztos, hogy a DCC verzioban ezzel egyáltalán foglalkozott a tervezö. (Abban csak valoszinüleg a RAM-t kezeli s nem az EEPROM-t. )
|
(#59774) etwg válasza diginewl hozzászólására (#59772)
|
Válasz •
|
Jún 16, 2018 |
|
Ha tudtál ilyesmit akkor akár most is nekifuthatsz. Akkor már van némi alap.
Amugy valoszinp, hogy ezek a kodot ugy vannak összerakva mint a Lego, igy elvben nagy az esély hogy találsz hozzá más alprogramot.
Sajnos a PICben nem vagyok járatos, igy konkréten nem tudok segiteni. |
(#59775) diginewl válasza etwg hozzászólására (#59774)
|
Válasz •
|
Jún 16, 2018 |
|
Azért ez valahol jóval bonyolultabb, mint négyzeteket, köröket rajzoltatni a monitorra, meg összeadó progikat írni C64-en. Mondjuk az Excel makrók írogatásához jól jött egy ilyen ismeretség. Itt még gondolkodom, mi lehet a hiba oka. Geert Úr eddig egyik ASM-ben sem hibázott. |
(#59781) etwg válasza diginewl hozzászólására (#59775)
|
Válasz •
|
Jún 16, 2018 |
|
Itt szerintem nincs hiba, csak egyszerüen kikerülte az eepromokat. Biztos volt rá valamilyen oka, amit mi nem tudunk. |
(#59782) diginewl válasza etwg hozzászólására (#59781)
|
Válasz •
|
Jún 17, 2018 |
|
Szerintem nem. Csak valami fixáló parancs nem úgy megy át, ahogy az analóg ams kódban.
Ez mind a kettőben benne van. A DCC vezrióban, mivel az bonyolultabb, lehet rossz helyre mutat, vagy nem kapja meg azt a parancsot, amivel a pic rögzítené az eepromba.
;****************************************************
;* Opvragen MIN, MAX, en VERTRAGING SERVO uit EEPROM*
;****************************************************
banksel HULPREG
movlw 0x30 ;startpositie HULPREG (aantal in te lezen data uit EEPROM)
movwf HULPREG
movlw 0x20 ;startpositie FSR indirect register (adres in RAM van var MINSERVO en in EEPROM)
movwf FSR
I_LOOP
banksel EEADR
MOVF FSR,w
MOVWF EEADR ;Data Memory
banksel EECON1
BCF EECON1, EEPGD ;Point to DATA memory
BSF EECON1, RD ;EE Read
banksel EEDAT
MOVF EEDAT, W ;EEdata naar POSserv,x
movwf INDF ;
incf FSR,1 ;verhoog adres
decf HULPREG,f ;verlaag HULPREG
btfss STATUS,Z ;als Carry bit <> 1 dan voer subr terug uit
goto I_LOOP
banksel 0
Nem tudom, talán lesz valaki, akinek lesz vele egy pici ideje. |
(#59783) etwg válasza diginewl hozzászólására (#59782)
|
Válasz •
|
Jún 17, 2018 |
|
Ezekhez az uj PiCekhez már nem értek.
Egy kicsit kevésnek találom az EEPROM sr-t. ( az én rutinjaimhoz képest )
Drukkolok, hogy találj valakit. |
(#59798) Frankye válasza diginewl hozzászólására (#59782)
|
Válasz •
|
Jún 18, 2018 |
|
Javaslom, keress a neten egy Flowcode nevű programot. Ezzel gafikusan (folyamatábra formában) lehet írni programot uC-ekre, így PIC-re, AVR-re, meg még egy rakat mindenfélére. Én már régóta használok egyet, nagy megelégedésemre. Annyira egyszerű használni, hogy még én is képes voltam vele PIC programokat létrehozni! Ráadásul még működtek is!
Ami a Te szempontodból talán még fontosabb: Van benne egy halom külső periféria-kezelő eszköz, többek között léptető motorokra, szervókra, LED-ekre, és még a chipek EEPROM-jait is tudod vele íratni-olvastatni!
Ha kell, szívesen segítek az első lépésekben. Ha pedig ráérzel az "ízére", Neked is menni fog!
Sajnos a DCC-hez - személy szerint én - tökéletesen béna vagyok, így abban nem tudok segíteni, de az analóg rendszerekben igen.
|
(#59802) piltdownman válasza diginewl hozzászólására (#59709)
|
Válasz •
|
Jún 18, 2018 |
|
Gyorstalpaló szervóhoz.
Itt a „szervó” alatt egy olyan elektronikus-mechanikus eszközt értünk, aminek a bementére adott impulzus idejével arányos egy tengely elfordulásának szöge.
A szükséges áramköri elemek/alkatrészek:
- kapcsolókból álló híd, amelyiknek keresztágában van egy DC motor. A motort az átlókban folyó áram mozgatja áramiránytól függően órajárásával egyező vagy ellentétes irányba. Az egyenesen folyó áramok tönkre teszik a kapacsoló eszközöket.
- a motor által hajtott áttétel elfordulása a meghajtás idejétől függ, lehet folytonos vagy szaggatott, az összidő számít
- kizáró-vagy kapu (XOR) melynek kimenetén akkor van logikai jel, ha a bemeneteken a jelek különböznek
- monostabil multivibrátor (MM), mely egy jel élére ad ki pl. egy ellenállással beállítható szélességű impulzust
- időnyújtó áramkör (STERCHER), mely a bemenetére adott jel szélességével arányos szélességű jelet ad ki
- D-tár, amelyik jel élének hatására letárolja a D bemenetre adott jél pillanatnyi állapotát.
Mellékelve egy elvi kapcsolás a jelalakokkal.
A bemenő REF pulzus indít egy monostabil multvibrátort, ennek kimenő jele (MM) kizáró-vagy kapcsolatban van a REF jellel. Az így előállított XOR jel az időnyújtó á.k.-ra jut, ennek jele az a PWM , ami a motor hajtja az
irányt meghatározó D-tár állapotától függő irányba.
Az áramkör a motor áttételével együtt forgó potenciométer olyan helyzetbe állítja, hogy a monostabil ideje egyenlő legyen a bemenő REF jel idejével. Analóg áramkörnél nem kell analóg-digitál konverter.
Ez egy visszacsatolt u.n. követő rendszer, annak minden előnyével és hátrányával, pl. ha az egyik irányból közelít és túllendül majd vissza, a tengely a célhelyzet körül oszcillál.
Egy tényleges áramkör a rövid idejű XOR jeleket lenyeli, ezzel a „ mocorgást”, csökkenti a beállási pontosság rovására.
|
|
(#59803) diginewl válasza Frankye hozzászólására (#59798)
|
Válasz •
|
Jún 18, 2018 |
|
Üdv Frankye!
Köszönöm az ötletet! Ehhez megint tanulni kell, alapok nélkül nem egyszerű feladatok ezek .
Az asm-kóban amúgy összesen az a bibi, hogy valahogy rossz helyre/rosszul küldi el pozíció adatot. Tehát ennek semmi köze a DCC-hez
A relé kimeneteket sem tudja lementeni. Tehát, minden amit újat írt Geert Úr, a már meglévő másik vezérlő asm kódjához, azok a pozíciók, állapotok nem kerülnek be EPromba.
Írt ő még egy MotorolaLoconet ASM-et is erre a PIC-re, és szervó vezérlőre, de azt egyáltalán nem tudom kipróbálni, mivel nincs loconet-es eszközöm.
Meglátjuk, lesz-e megoldás a DCC-s változat szenilitására.
Írtam Geert Úrnak is, hátha válaszol. |
(#59804) etwg válasza diginewl hozzászólására (#59803)
|
Válasz •
|
Jún 18, 2018 |
|
Az eeprom kezelése nem olyan egyszerü, általában több lépésben történik és nem biztos, hogy van erre kapacitás ha a DCC-vel is kommunikálni kell. |
(#59805) diginewl válasza piltdownman hozzászólására (#59802)
|
Válasz •
|
Jún 18, 2018 |
|
Köszönöm! Egyre okosabbak leszünk
Igen. Az egész azon a mini potméteren bukik meg, mert az ha kikopik, akkor nincs mihez viszonyítani! |
(#59806) piltdownman válasza diginewl hozzászólására (#59709)
|
Válasz •
|
Jún 18, 2018 |
|
A bekapcsolási mozgáshoz.
Az SG90 szervóban YT2462 ill. AA51880tip. áramkörök vannak, ezek 1 és 2 ms közötti
impulzusokkal fogják át a kb. 180fok elfordulást.
A bekapcsolási mozgásnak két oka van.
Az egyik, hogy a motor vezérlő hídáramkör kapcsolói bekapcsoláskor rövid ideig megránthatják
a motort, ez kb. 5 fokot „zizzent”.
A másik, hogy a bemenet (aminek az ellenállása kb. 10 kOhm a föld felé és diódákkal a földre
ill. a tápfesz.-re van kötve, amiről egy multiméterrel ellenállás ill. dióda vizsgáló állásban könnyen meg lehet győződni) üresen hagyva a bekapcsolást egy rövid, pozitív impulzusként érzékeli, emiatt a szervó az óra irányával ellentétes végállás felé igyekszik elfordulni.
Ez könnyen javítható, ha bemenetet mondjuk egy 2k2 ellenállással a tápra húzzuk.
A kontrolleres vezérlés sw-jét úgy kell megcsinálni, hogy a szervót vezérlő kontoller láb
„tri-state”-ben van a bekapcsolási tranziens alatt és csak aztán áll be alacsony szintre,
készen a vezérléshez.
Emiatt a LED vezérlésre kitalált PCA9685-el felépített szervó vezérlő mindig ugrani fog,
mert a default kimeneti állapot „totem-pole”.
Egy meglévő kontrolleres vezérlőt többféle képen lehet feljavítani. Ha a kontroller „reset”
ténylegesen reset funkciót lát el, egy MCP120 supervisory á.k. beépítésével a kontroller
feléledését el lehet tolni.
Ha a reset láb foglalt, nincs mese, az sw-t át kell írni vagy a kontrollert a szervó bekapcsolásához képest késleltetni kell pl. egy MC120 és egy FDC6324 IC alkalmazásával vagy egyéb számtalan módon.
|
|
(#59808) piltdownman válasza diginewl hozzászólására (#59807)
|
Válasz •
|
Jún 18, 2018 |
|
Félre ne értsd, a felhúzás csak az önmagában álló szervó tranziensét veszi le, ha rá van kötve bármilyen vezérlés, annak a feléledését el kell késlelteni.
Az sw-kre visszatérek.
Milyen PIC írót használsz? |
(#59809) diginewl válasza piltdownman hozzászólására (#59808)
|
Válasz •
|
Jún 18, 2018 |
|
Értem én. És köszönöm, hogy ennyi tudást megint közkinccsé tettél!!!
Azon gondolkodtam, hogy egyszerűbb lenne a szevók bekapcsolását késleltetni, a jelet meg felhúzni +5V-ra egy 2-4 k-s ellenállással - így nem bonyolítok bele a szervó/vezérlő lelki világába...
A késleltetésre van egy jól működő LM komparátoros kapcsolásom. Ahány k-ohmos ellenállást teszek rá pluszban az plusz 1-1 másodperc. Ez a komparátor most egy relét hajt.
Kilehetne ezt a nagy 5V-os relét egy pl ilyen FET-re cserélni? FET
Mi kell a FET és a komparátor közé, hogy az tudja a szervók tápját kapcsolni? (így 2-2 vagy 4-4 szervó kapcsolható be, ezáltal egyszerre mindig ennyi éled, és akkor terhel).
PIC íróim: k150 (ezzel a 12F629, ás a 16F648-at tudom írni), valamint van PicKit2 ezzel a 16F887-t tudom írni. Érdekes ez utóbbival az első kettőt nem sikerült még hibamentesen írni... - szóval van mit tanulnom |
(#59812) Frankye válasza diginewl hozzászólására (#59803)
|
Válasz •
|
Jún 19, 2018 |
|
Annyira nem bonyolult a dolog. Aki egy folyamatábrát meg tud érteni, esetleg le tud rajzolni, annak ez sem okoz gondot.
A Flowcode azért nagyszerű eszköz, mert az összes ilyen dolgot, mint az EEPROM címzése, írása, olvasása, a szervó vezérlése, és hasonlók, leveszi a program írójának válláról. Elegendő pl. az EEPROM címét beírni az erre szolgáló helyre, meg megadni az adatot, amit tárolni akarunk, a többit intézi helyettünk.
Persze, vannak hátulütői a dolognak, ui. sokkal "bőbeszédűbb" lesz, mint ha ember írta volna az asm kódot, de rengeteg terhet átvállal cserébe. Ja, és van szimulációs része is: a megírt kódot a képernyőn ki tudod próbálni, mielőtt ténylegesen beégetnéd, megépítenéd a hardware környezetet.
Én magam néhány óra alatt megtanultam a főbb dolgokat benne, pedig előtte soha nem foglalkoztam ilyesmikkel. Szóval nem kell tőle félni, megijedni. |
(#59813) Frankye válasza etwg hozzászólására (#59804)
|
Válasz •
|
Jún 19, 2018 |
|
Na, erre mondtam, hogy a DCC-hez én sík hüle vagyok. Az alapjaival kb. képben vagyok, de a részletei nekem magasak, mint kacsának a ping-pong asztal. |
(#59814) etwg válasza Frankye hozzászólására (#59813)
|
Válasz •
|
Jún 19, 2018 |
|
Én sem vagyon nagy bajnoka az ilyen szoftwareknek. A procira még ugy ahogy meg tudom irni a programot, de sem a magasabb szintü kommunikácio sem a modern programozo nyelvek már nem tartoznak a kedvenceim közé. Általában a kész bonyolult programok müködését még megértem, de magam már a kodot nem igen tudnám megirni. |
(#59815) etwg válasza Frankye hozzászólására (#59812)
|
Válasz •
|
Jún 19, 2018 |
|
Az ingyenes verzio is mindezt tudja?
Tegnap letöltöttem és már nézegetem, de azért az sem egy leányálom . Az egyik berendezésen amin most dolgozok (ASMben) van 34 nyomogomb, 35 kimeneti LED meg 2 motor. Gondoltam, hogy átviszem a Flowcode-ba, de nem olyan egyszerü, mint gondoltam.
Ezért kérdezem, hogy mit tud az ingyenes verzio, nehogy az legyen mint minap az Eagleben, ahol 2 mm hiányzott a NYÁK méretéböl, hogy meg tudjam csinálni az ingyenes verzioban.. |
(#59816) Frankye válasza etwg hozzászólására (#59815)
|
Válasz •
|
Jún 19, 2018 |
|
Azt sajnos nem tudom, mennyiben korlátozott az ingyenes verzió. Nekem egy régebbi (5-ös) verzióm van, ami teljes. ( )
Azért a Flowcode-ban is meg kell ismerni némiképp a PIC felépítését természetesen, de annyira nem nehéz. Egy-egy lába a uC-nek, amely definiálható I/O irányú, be lehet állítani, hogy bemenet, vagy kimenet legyen-e. A komponens makrókkal pedig villámgyorsan lehet megírni a perifériák (gombok, kapcsolók, LED-ek, motorok, etc.) vezérlési parancsait.
(Személy szerint, ha a cél egy folyamatos működésű program, akkor egy feltétel nélküli hurok-ugrást szoktam az elejére-végére tenni a programnak, azon belül van a program. Az ismétlődő feladatokat egy-egy makróban írom meg, és ezekre hivatkozom a főprogramban.) |
(#59817) etwg válasza Frankye hozzászólására (#59816)
|
Válasz •
|
Jún 19, 2018 |
|
S hogy néz ki benne a megszakitás?
Az AVR lelkivilágát már elég jol ismerem, közel 5 éve irogatok kisebb nagyobb programokat ASM-ben, de az ujabbak egyre bonyolultabbak (Miért is találok ki ilyen bonyolult feladatokat? ), igy gondolkodtam, hogy utána kellene nézni némi magasabb szintü nyelvnek.
Szoval ezért érdekel, hogy hol vannak az ingyenes verzio korlátai, mielött még nekifognák azt tanulmányozni. Hobbi célra nem hiszem, hogy érdemes ilyesmibe pénzt fektetni (a teljes verzioért). |
(#59818) Frankye válasza etwg hozzászólására (#59817)
|
Válasz •
|
Jún 20, 2018 |
|
A megszakítás programozása sem bonyolult. Sima makróként meg lehet írni, és a főprogramba betenni a megszakítás hivatkozását.
Azt viszont tényleg nem tudom, mik az ingyenes verzió korlátai. Esetleg a honlapjukon nem írnak róla? Neked talán jobban érthető, mint nekem, aki nem beszéli a "külföldiek nyelvét". |
(#59832) Arctic37 válasza etwg hozzászólására (#59817)
|
Válasz •
|
Jún 21, 2018 |
|
Nem tudom te mit használsz, én pár éve használtam Atmel Studio-t, az nagyon jó volt, teljesen ingyenes, teljesértékű gcc fordítóval, így C-ben, meg C++ ban is lehetett programozni. Sajnos azóta a Microchip (a PIC gyártója) megvette az Atmelt, úgyhogy nem tudom mi lett az Atmel Studio-val, és mi lesz az AVR jövője, bár gondolom az Arduino miatt biztosítva van az utánpótlása. Ha magasabb szinten szeretnél programozni mint az Assembly, akkor mostanság az Arduino-t tudom ajánlani, nagyon jó támogatás, egy halom könyvtár, és segítőkész közösség, de mivel itt a fórumon sem ismeretlen, gondolom nem kell nagyon bemutatni.
A megszakításokról itt (AVR), illetve itt (Arduino) van egy leírás (tudom, hogy az Arduino is AVR, de abban van még egy plusz szoftveres réteg is az AVR felett, hogy a kezdők könnyebben tudják megtanulni). |
(#59833) etwg válasza Arctic37 hozzászólására (#59832)
|
Válasz •
|
Jún 21, 2018 |
|
Én is AVR Studiot használok, és bizonyára az életem végéig el vagyok látva AVR-rel.
Épp most veszödök egy komolyabb programmal ASM-ben, de már annyira kacifántos, hogy néha elvesztem a fonalat.
A baj az, hogy gyakran elfelejtem az AVR studio rengeteg lehetöségét is igy elég nehéz azután az ASM-ben a hibát keresni. |
(#59834) Arctic37 válasza etwg hozzászólására (#59833)
|
Válasz •
|
Jún 21, 2018 |
|
Magasabb szintű nyelvben pl C-ben nem lenne egyszerűbb? Abba ugyanúgy be lehet illeszteni asm kódot, ha valami olyan funkció kell, ami máshogy nem oldható meg, de a C elég alacsonyan van ahhoz, hogy pointerrel elég sok dolgok el lehessen érni közvetlenül (belső időzítők, összehasonlítók, UART-ok biztos elérhetők, illetve az MCU használati utmutatojában minden interfészhez tartozik egy példakód is) |
|
|
2024. Nov, 20. Sze 6:22:40 |
|
Jelenleg 5 fő olvassa az oldalt |
|
|