Szervo-vezérlés
Servovezérlés lett, de a beépített Servo-val nem mertem próbálkozni, mert nem tudom még, hogyan működik. Ha belső ciklussal csinálja az impulzushosszt, akkor biztosan elment volna a mérésem, mert a ketyere bemenete freki, a kimenete meg servo impulzus. Így lett a WD a periódusgenerátor, a Timer0 meg az impulzushossz időzítő. (csak 8-bites Timereim vannak, ami vagy sűrűn adott volna impulzust vagy rossz lett volna a felbontása, de így tökéletes lett)
Az int rutinok meg olyan rövidek, hogy nem okoznak számottevő időzítési hibát egymásrafutáskor.
Biztos van szebb megoldás, csak gyorsan kellett valami és a debug nagyon nehézkes volt így is.
Az int rutinok meg olyan rövidek, hogy nem okoznak számottevő időzítési hibát egymásrafutáskor.
Biztos van szebb megoldás, csak gyorsan kellett valami és a debug nagyon nehézkes volt így is.
Szervo?
A visszacsatolt?:)
Motor:Hídáramkörben.
A visszacsatolás az pozíciót ad. A híd ennek megfelelően előre-hátra rezeg pozíciótartásban.
Minthogy a pozíció jeladó 1/400....1/3600 beosztású, így a motor rezgése pici....
Cikk és vezérlő még lenne is... csak a szervomotorból emberi árut nem találtam:( Így a videók illetve a Bascom mintája nem mutogatható
(ASM az van
)
A visszacsatolt?:)
Motor:Hídáramkörben.
A visszacsatolás az pozíciót ad. A híd ennek megfelelően előre-hátra rezeg pozíciótartásban.
Minthogy a pozíció jeladó 1/400....1/3600 beosztású, így a motor rezgése pici....
Cikk és vezérlő még lenne is... csak a szervomotorból emberi árut nem találtam:( Így a videók illetve a Bascom mintája nem mutogatható
Jaj, nem, ez RCservo vagy mi, amit impulzusszélességgel kell vezérelni a bemeneti jel frekvenciájának függvényében. Szóval 30-60Hz-el kicsi tüskék. És 8-bites timer-el vagy sűrűn jöttek a tüskék vagy a felbontása borzalmas lett. Nu, ezért lett 2 timer. A BASCOM beépített meg használ egy timert, de nem tudom, hogy az impulzusszélességet sima ciklussal csinálja vagy valami agyafurt módon a timer-el. Nagyságrendnyi eltérés van a periódusidő meg az impulzus szélesség között. És sokat nem időzhetek egyik megszakításban sem, mert akkor vagy a frekimérésem lesz pontatlan.
Különben igazi servovezérlésnél azért kell tudni a mechanikai tulajdonságokat is, illetve ha túlméretezed, akkor nem annyira.
Nekem servovezérlésben a HP plotterek voltak a csodálnivalók, volt itt 30 éves és 6502-es proccal valami csodát művelt. Csak a motoron volt jeladó, semmi végálláskapcsoló. A papírérzékelés az A0-ásnál meg "agyameldobom" tipusú.
Különben igazi servovezérlésnél azért kell tudni a mechanikai tulajdonságokat is, illetve ha túlméretezed, akkor nem annyira.
Nekem servovezérlésben a HP plotterek voltak a csodálnivalók, volt itt 30 éves és 6502-es proccal valami csodát művelt. Csak a motoron volt jeladó, semmi végálláskapcsoló. A papírérzékelés az A0-ásnál meg "agyameldobom" tipusú.
A Bascom leírás szerint:
10 uS a szervo leptetese. Legalabbis a felbontas.
Igy 0...2000 (*10us) (20ms) kozt allithato.
Bar a Szervo-ra byte SRAM-ot mond....
Belül szerintem számol, és annak megfelelően hozza össze a szervojelet...
Timer0-val dolgozik. Opcionálisan Timer1 is lehet.
A byte logika nem fér a fejembe....
10 uS a szervo leptetese. Legalabbis a felbontas.
Igy 0...2000 (*10us) (20ms) kozt allithato.
Bar a Szervo-ra byte SRAM-ot mond....
Belül szerintem számol, és annak megfelelően hozza össze a szervojelet...
Timer0-val dolgozik. Opcionálisan Timer1 is lehet.
A byte logika nem fér a fejembe....
Sziasztok, nekem sajnos még nem megy a profi programozás, és meg is akadtam. A feladat: RC távvezérlőre épülő motorvezérlő ák elkészítése.
20ms-ként érkezik 1 - 2 msec hosszú impulzus aminek függvényében a motornak előre, ill. hátra kell forognia. 1,5msec hosszú impulzusnál a motornak nem kell forognia.
Van ötletetek? Köszi.
20ms-ként érkezik 1 - 2 msec hosszú impulzus aminek függvényében a motornak előre, ill. hátra kell forognia. 1,5msec hosszú impulzusnál a motornak nem kell forognia.
Van ötletetek? Köszi.
A szervo motor ill. hajtómű a kormányzást szolgálja. Az elözőekben említett feladat a meghajtó motor (előre-hátra) mozgáshoz, ill. sebesség szabályozáshoz kell. Sok fórumot átolvastam, de inkább a kész-meglévő, megvásárolható felé terelik az embert.
Valamikor volt egy LM544 nevű IC, amit már nem gyártanak, és az az után kapcsolt FET vagy tranzisztor hidkapcsolásban lévő motort vezérelte.
A HE fórumon is kérdezgettem, de ott is a gyári kapcsolások felé tereltek, és emlegettek mindenféle körös motorokat. Rá is kérdeztem, hogy mit takarnak a 16 körös motor kifejezés: "16 kör bir a motor?" Nem 16 menetes a forgórész volt a válasz. Ezen egy kicsit elcsodálkoztam, hogy miért kell nekem szétszedni a motort, hogy megszámoljam a meneteket.
Szerintem, mint egy régi elektronikában járatos embernek egy motort a rákapcsolható fesz, a felvett áram, és a fordulatszám, nyomaték - persze a motor fizikai méretei - sok mindent meghatároznak, de egy ilyen paraméterrel, "hogy egy motor hány körös" nem találkoztam.
Tudva azt, hogy a kevesebb menet, valójában vastagabb huzalkeresztmetszet miatt van, ami a fordulatszámot határozza meg.
Ez "körös" kifejezés egy mai nemszakmai szleng kifejezés, mint a "buri, burgi" stb.
Gondolkozom az Arduino tanfolyamon szerzett tanultakból, de még hiányok vannak.
Köszi a segítséget.
Valamikor volt egy LM544 nevű IC, amit már nem gyártanak, és az az után kapcsolt FET vagy tranzisztor hidkapcsolásban lévő motort vezérelte.
A HE fórumon is kérdezgettem, de ott is a gyári kapcsolások felé tereltek, és emlegettek mindenféle körös motorokat. Rá is kérdeztem, hogy mit takarnak a 16 körös motor kifejezés: "16 kör bir a motor?" Nem 16 menetes a forgórész volt a válasz. Ezen egy kicsit elcsodálkoztam, hogy miért kell nekem szétszedni a motort, hogy megszámoljam a meneteket.
Szerintem, mint egy régi elektronikában járatos embernek egy motort a rákapcsolható fesz, a felvett áram, és a fordulatszám, nyomaték - persze a motor fizikai méretei - sok mindent meghatároznak, de egy ilyen paraméterrel, "hogy egy motor hány körös" nem találkoztam.
Tudva azt, hogy a kevesebb menet, valójában vastagabb huzalkeresztmetszet miatt van, ami a fordulatszámot határozza meg.
Ez "körös" kifejezés egy mai nemszakmai szleng kifejezés, mint a "buri, burgi" stb.
Gondolkozom az Arduino tanfolyamon szerzett tanultakból, de még hiányok vannak.
Köszi a segítséget.
Szia!
Valami hasonló feladatom volt, megpróbálom előtúrni a cucc leírását.
(a cimborának már csak az lett volna hátra, hogy jóváhagyja élőben, de eltűnt...)
Valami ilyeneket tudott:
tanítható, tehát egy RC-S szimulátor kis vacakkal meghajtva a bemenő jelhez két gomb segítségével meg tudod adni, hogy mennyire és merre forogjon. (nem tudta eldönteni, hogy kétirányú vagy egyirányú kell neki).
Valami VND...hídmeghajtó volt a végén (IC+2 NFET), max 20A
Tápfeszmérés, alacsony tápnál leállt, nem engedte lemerülni a Li-Ion aksit.
Bekapcsoláskor mindenképp várt egy 0-helyzetre, addig nem indult el, nehogy valami elállításnál a táp megjöttekor elinduljon.
LED-es kijelzés az irányokra.
T45 vagy 85 volt a uC.
Ha küldesz emilcímet, előtúrom, sajnos a likacsos panelt már szétszedtem.
JAni
Valami hasonló feladatom volt, megpróbálom előtúrni a cucc leírását.
(a cimborának már csak az lett volna hátra, hogy jóváhagyja élőben, de eltűnt...)
Valami ilyeneket tudott:
tanítható, tehát egy RC-S szimulátor kis vacakkal meghajtva a bemenő jelhez két gomb segítségével meg tudod adni, hogy mennyire és merre forogjon. (nem tudta eldönteni, hogy kétirányú vagy egyirányú kell neki).
Valami VND...hídmeghajtó volt a végén (IC+2 NFET), max 20A
Tápfeszmérés, alacsony tápnál leállt, nem engedte lemerülni a Li-Ion aksit.
Bekapcsoláskor mindenképp várt egy 0-helyzetre, addig nem indult el, nehogy valami elállításnál a táp megjöttekor elinduljon.
LED-es kijelzés az irányokra.
T45 vagy 85 volt a uC.
Ha küldesz emilcímet, előtúrom, sajnos a likacsos panelt már szétszedtem.
JAni
A feladat nem olyan bonyolult. Az adó/vevöböl 20 ms-ként 1,5ms +/- 0,5 ms impulzusok jönnek. Azaz a feladat az aktuális impulzus szélesség minusz a 1,5 ms referencia átalakitása egy 0-100% PWM moduláciora.amiki1447 írta:A szervo motor ill. hajtómű a kormányzást szolgálja. Az elözőekben említett feladat a meghajtó motor (előre-hátra) mozgáshoz, ill. sebesség szabályozáshoz kell. Sok fórumot átolvastam, de inkább a kész-meglévő, megvásárolható felé terelik az embert.
Példa.
1,5 ms impulzusok jönnek akkor a PWM kitöltési tényezöje minimum- áll a motor.
1,6 ms a kitöltési tényezö 20%
1,7 ms a kitöltési tényezö 40%
1,6 ms a kitöltési tényezö 60%
stb.
Ugyanez van ellenkezö irányba is (ha csak egyirányba kell (pl. repülögép), akkor kezdheted 1 ms-röl is és mehetsz 2ms-ig.
A feladatot kb. ugy oldanám meg, hogy szinkronizácio után (a rendszernek magának kell megtalálnia a 0 állást) érzékeli a tényleges ismétlési frekvenciát és impulzus szélességet.
Ezt elteszi referenciának. majd méri a beérkezö impulzusok szélességét. Nyilvánvaló, hogy nagyobb pontosság kell mint 0,1 ms. A lemért impuzusszélsességet át kell alakitanod PWM jellé a fenti eljárás szerint.
Ez már a programozás kérdése, hogy milyen eljárást választasz az átalakitásra.
Sok motornak megfelel az 50Hz-es PWM is, igy okvetlenül nem kell frenkvencia átalakitás, de ha érzékenyek a motorok, akkor szükség lehet más meghajto frekvenciáju PWM jelre (50-töl kb 2 kHz-ig). Ezt jo elöre tisztázni, hogy milyen a motorod viselkedése az adott frekin.
Vannak átalakitók, ahol változtatni is lehet a PWM alapfrekvenciáját - de ez néha bonyolult ügy (hogyan adod be eme értéket a modellen).
Amint még meg kell oldanod a kétirányu vezérlés esetén az irányváltás.
Alapötlet itt, hogy a PWM jelet két portra adod ki:
Elöre A port él a B nem
Hátra B port él az A nem.
A kimenettel 4, hidba kötött FETet vezérelsz a motor a FETek hidjában van.
Egyesek (automodelleknél) beraknak 1 másodperces késleltetést - ami alatt a vezérlöegységnek szintén neutrál -0- állásban kell lennie, hogy ne lehessen megállás nélkül ellenkezö irányba menni (esetleg sérülhet a bonyolult mechanizmus).
Ez ismét a mechanikai kivitel függvénye.
Sok sikert!
Éljenek a vonatok!
http://www.youtube.com/playlist?list=PLF2674BF4E3765682
http://www.youtube.com/playlist?list=PLF2674BF4E3765682
Én úgy okoskodtam, (Arduino alatt):
A micros parancsal előállítok egy belső órajelet, amit egy és kapu egyik bemenetére vezetek (mint függvény), és megszámolom a számlálóval, hogy hány impulzus érkezik az RC vevő felől. Ha ez 1,4 -1,6 msec közé érkezik, akkor alaphelyzetben van az adó.
Ha ennél (1,6msec) nagyobb, akkor a következő órajelre ezt az impulzust az előre kimenetre tegye ki, ha (1,4msec) kisebb akkor a hátra kimenetre kapcsolja.
Az Arduino órajele 4usec, tehát 350-400 megszámlált impulzus alaphelyzetet jelent.
Jól okoskodom? A kimenő (előre-hátra) impulzus hossza meg mint egy PWM jel, a sebességet is vezérli. Ha a fennt említett impulzus szám közé esik, akkor a "fék" FET-et is be lehet kapcsolni.
Bascom alatt - amit említettél - még nincs ötletem.
A micros parancsal előállítok egy belső órajelet, amit egy és kapu egyik bemenetére vezetek (mint függvény), és megszámolom a számlálóval, hogy hány impulzus érkezik az RC vevő felől. Ha ez 1,4 -1,6 msec közé érkezik, akkor alaphelyzetben van az adó.
Ha ennél (1,6msec) nagyobb, akkor a következő órajelre ezt az impulzust az előre kimenetre tegye ki, ha (1,4msec) kisebb akkor a hátra kimenetre kapcsolja.
Az Arduino órajele 4usec, tehát 350-400 megszámlált impulzus alaphelyzetet jelent.
Jól okoskodom? A kimenő (előre-hátra) impulzus hossza meg mint egy PWM jel, a sebességet is vezérli. Ha a fennt említett impulzus szám közé esik, akkor a "fék" FET-et is be lehet kapcsolni.
Bascom alatt - amit említettél - még nincs ötletem.
