Fórum témák
» Több friss téma |
Hellósztok.
Nem tudna valaki abban segíteni hogy PIC-el (16F877) hogyan tudom megoldani egy standerd servó vezérlését. Úgy tudom úgy működnek hogy a benne lévő potméter az elmozdulás hatására négyszögejelet generál es ezalapján allíptható meg hogy pontosan melyik helyzetben áll a szervókar. ehez kéne valami olyan program hogyha mondjuk megynomok egy gombota a kar 30fokot forduljon. Üdv.
A szervó nem generál semmiféle jelet kifelé. Legalábbis ha jól tévedek.
Röviden a szervójelekről: Megy a szervódba a táp, a föld, és a jel vezeték. Koncentráljunk a jel vezetékre. Ezen jön egy pozitív impulzus, ami 1 ms illetve 2ms közötti időtartamú. Ha 1 ms akkor teljesen jobbra áll, ha 2 ms hosszú akkor teljesen balra fordul. Ha 1,5 ms akkor középen áll. Elviek szerint ezt az impulzust 20 ms-enként ismételgetni kellene. Gyak. esetedben lényegtelen, mivel úgyis egy helyben fog maradni. Az oshonsoft féle picsimulatoride ban van direktíva rá. Igaz ez fogja a főprogramot, de gondolom nem valami valós idejű vezérlésre kell. Amúgy ha csak gombokkal kell pozícióba állítani akkor egyszerűbb 2 db 555 + ellenállások meg gombok. Nem számolom most ki neked mert öreg este van. Majd max holnap.
Köszönöm előre is.
Nekem csa annyi kéne hogy ha megynomok egy gombot teljesen elforduljon valamelyik irányba, aztán ha elengedem akkor pedig vissza középállásba. ![]()
Hello, Ezt próbáld ki: ... A poti helyére bekötsz kettőt, amit a kapcsolóval választasz ki, a potikkal beállíthatod a két kívánt helyzetet. Ere a feladatra valóban nem éri meg PIC-et használni.
Tehát igy gondoltam. A B+ re a szervó tápfeszét kösd, gondolom 7-12V lesz.
Már hetek óta próbálgatok egy rc szervót működésre bírni a pwm használata nélkül nagyon kevés sikerrel. (16f628a-n)
Jelenleg azt csinálja hogy remeg és valamennyire tudom állítani hogy "hol remegjen". a programom felépítése: 20 mhz n fut a pic. A T0 át használom a megszakítás előidézésére. (20mhz/4/2(előosztó)/256 így jön ki a 0.1msec) van egy állapot nevű reg ami mutatja hogy melyik szakaszban van (1,2) Megnézi az állapot reget és a megfelelő szakaszra ugrik. 1. szakasz: -1re állítja a kimenetet -10 től számol visszafele ha nem 0 akkor kilép az interruptból ha 0 akkor fut tovább (1msec) -egy pozició temp regisztert csökkent ha nem 0 akkor kilép az int. ból ha 0 akkor fut tovább (0-1msec) -feltölti újra a fentebb használt regisztereket -módosíta az állapot reget hogy most már a 2. szakasz jön -kilép az int. ból 2. szakasz -0 ra állítja a kimenetet -elkezd csökkenteni egy "kiegészítés" regiszert ha nem 0 akkor kilép az int. ból ha 0 akkor megy tovább - kivonja a pozició reget 190 ből (így lessz 20msec az 1. és a 2. szakasz futásideje összesen) - módosítja az állapot reget hogy újra az 1. szakasz jön - kilép az int. ból Elviekben jó(nak tartom) gyakorlatilag nem jó.. ASM ben írtam mellékelem. (az elején irogattam magyarázatot de meguntam ![]() Esetleg valaki nem írt már ilyesmit? Amit találtam google-al az vagy c ben van amit nem értek vagy nincs mellékelve a program..)
Csak muszáj leszel használni azt a PWM modult! Van valami ellenérzésed az irányában?
Igen: nem 1 szervót akarok a későbbiekben vezérelni hanem 4-8 at!
Üdv!
Egy haverom küzdött ilyennel a múltkoriban. AVR + HW PWM + digitális Futabaszervó kombóval. Azt mondta, nagyon érzékeny a keretidőre. Ha a két felfutó él között nem volt adott a távolság akkor rezegett. Mondjuk itt ez nem játszhat be, vagy legalábbis a kód jónak tűnik. Nézegettem a kódodat. Na akkor most előjön belőlem az, hogy én is asm-et akarok tanulni, ezért kérdezősködöm. Nekem úgy fest, mintha az egész periódus csak 15 ms lenne. KESLELTETES (140) + EGYMS (10). 1/(20000000Mhz/4/2/256)*15 az csak 15.36ms Én mintha a PPM szabvány szerint 20 ms-t tudnék ahogy te is írtad. Vagy inkább 22-t. Szerinem itt lesz az eb elhantolva. Ha nem akkor nem szóltam.
Hello!
Ebben az esetben úgy érzem, hogy egy tesztgenerátort kellene építeni, amellyel ki lehet mérni a szervó működési paramétereit. Nem nagy dolog, egy 555, ahol állítható a frekvencia és az impulzus hossza is. Egy szkóp kell a hitelesítéshez. Ám van egy másik (őrült) ötletem is. A Sound Forge-val (de biztosan más vawe-editorral is) lehet hullámformát rajzolni, fölötte ott az időskála ms-ban, ha lassabban is, de a jelalakokat generálva bármely szervó igényét megismerhetjük. Ahogy írtad, lehet, hogy Barátunk programja jól működik, csak az időzítésekkel van a gond...Braf! Szkóppal nézted már a kimenő jelet? Elég ide egy PC-s hangkártyás szkóp is!
"Nekem úgy fest, mintha az egész periódus csak 15 ms lenne. "
Elvileg 8-25ms között jó nak kell lennie (valahol azt olvastam..) de megpróbálom 20ms on is. "digitális Futabaszervó" ez elvileg tud másodpercenként 300 frissítést is szóval itt ~3-25ms egy jel ezért ez érzékenyebb a keretidőkre. (meg egy ilyen szervó 10x annyiba kerül mint amivel én próbálkozok ![]()
http://www.mp.ttu.ee/risto/rc/electronics/radio/signal.htm
Ezen írás szerint min. 18 mS a keret. Na mindegy nem okoskodom tovább. A hangkártyaszkóp jó ötlet erre a dologra.
Hali,
én 8 szervóra is PWM-eznék, ahogy Medve mondta. Egyetlen kimeneten kiadnám a PIC-ből az adott jelet, és ezt ráadnám mondjuk egy CD54HC238 neminvertáló 3-ból 8-ra demultiplexer E3 vonalára, az E2, E1 vonalakat pedig egy nyomógombbal testre. A nyomógomb egyrészt indítaná a PWM funkciót a PIC-ben, másrészt tutira csak akkor jut ki a szervóig az impulzus, ha nyomod, dupla biztosítás. Kapcsolómátrix (akár a PIC-en át) alapján vezérelni kell a 238-as A0...A2 címvonalait, ezek határozzák meg, hogy a nyolc kimenet (Y0...Y7) közül melyik lesz majd aktív, ha nyomod a gombot, és magas a PWM kimenet. A fenti elv alapján a PIC akár el is maradhat, két NE555 (vagy egy NE556) is tud PWM-et generálni: az egyik időzítő stabil órajelet ad, ez megy a másik TRIG bemenetére, ami monostabil módban működik, és a CONT lábán van a poti jele. Emelkedő feszültségre a CONT lábon, emelkedik a kitöltési tényező is. Az eredmény PWM aztán mehet a 238-asba, kapcsolókkal címvonal, nyomógombbal engedélyezés stb.
Braf gondolom valami összetettebb projektet épít, és gondolom ezért kell neki a PIC. A multiplexelt elgondolás nem rossz. Viszont mint említettem az újfajta digitális szervóknak nem elegendő egy impulzus. Ha nem jön jel megfelelő időben akkor beáll a fail safe. Persze a régi analóg szervóknál ez nem gond.
Sziasztok!
Egy amerikai oldalon találtam ezt (nem PIC, de free project, utánépíthető!): 32 csatornás, RS-232 portról (PC vagy uP) vezérelhető http://www.lynxmotion.com/Product.aspx?productID=395&CategoryID=52 The SSC-32 (serial servo controller) is a small preassembled servo controller with some big features. It has high resolution (1uS) for accurate positioning, and extremely smooth moves. The range is 0.50mS to 2.50mS for a range of about 180°. The motion control can be immediate response, speed controlled, timed motion, or a combination. A unique "Group Move" allows any combination of servos to begin and end motion at the same time, even if the servos have to move different distances. This is a very powerful feature for creating complex walking gaits for multi servo walking robots. The servo's position or movement can be Queried to provide feedback to the host computer. There is even a 12 servo Hexapod sequencer built in. This allows complete control of all aspects of the alternating tripod gait simply by transferring a few values from the host controller. Any output can be used as a TTL level output. There are 4 digital inputs that are static or latched, so you don't have to worry about missing a short event. They can also be used as analog inputs. There are three terminal blocks for powering options. The DB9 input has true RS-232 levels for use with a PC. There is a socket for a 24LC32P EEPROM, which will be used in future versions of the firmware.
Megnéztem szkóppal az egyik AM vevőmet, és az 15 ms-enként nyom új jelet. Tehát ezt bebuktam.
Nincsen otthon szkópom és nemhiszem hogy hozzá tudnék férni egyhez.
"A hangkártyaszkóp jó ötlet erre a dologra." Ezt kifejtenéd bővebben? "Persze a régi analóg szervóknál ez nem gond." Próbáltam hogy lehúztam a signal vezetéket a picről és ekkor a szervó nagyon lassan mozgott az egyik irányba. Predator! Ezt már én is láttam de nem értek az atmel procikhoz meg akkor programozót is kellene hozzá építenem, inkább szeretném magam megcsinálni pic-el! (mert abba mi élvezet/bosszankodás ![]()
A hangkártya ugyebár egy analóg digitális átalakító, ami mittudménmennyijelet tud venni másodpercenként. Nos ez a szervójel megtekintéséhez. Keress rá a fórumban volt már erről szó. goto oszcilloszkóp számítógépre
SW itt van hozzá: http://zeitnitz.de/Christian/Scope/Scope_en.html Hardver meg itt: http://xoscope.sourceforge.net/hardware/hardware.html Bár lehet esetünkben elegendő egy ellenállásosztó is. Így megvizsgálva a jelet rá lehetne jönni mi szivat. Ha már más hw (avr) illetve más nyelv, akkor ott az oshonsoft féle basic picre, az is tud szervójelt generálni. Igaz csak főprogramban, de nekem működött. Tényleg a konfig biztik rendben vannak? Nem a belső órájáról jár véletlenül?
"tud szervójelt generálni. Igaz csak főprogramban" igen ez a bajom mert a pic nek kellene még kezelni mellette egy I2C buszt amiről majd kapja az adatot.
Összedobom majd holnap ezt a hangkártyás szkópot.
"Tényleg a konfig biztik rendben vannak?
Nem a belső órájáról jár véletlenül?" A config bitek jól vannak. "__CONFIG _CP_OFF&_HS_OSC&_WDT_OFF&_LVP_OFF&_MCLRE_ON&_PWRTE_ON"
Nem vesztem el csak 3 dolog jött közbe:
2db matematika versen, és hogy elszált az alaplap a gépemben... (nem azért mert próbálkoztam a hangkártyás szkóppal ![]() Úgyhogy amíg nincs másik alaplapom illetve nincs vége a két versenynek addig szünetel a projekt!
Hello,
Csak véletlenül cseppentem bele ebbe a fórumba, de tudok ajánlani valamit. Én is szerettem volna tesztelni a szervóimat és úgy másfél lveel ezelőtt találtam valmit a Net-en (lásd melléklet). A melléklet végén van egy webcím ahonnan meg lehet rendelni a felprogramozott Pic-et. A kapcsolás nagyon ötletes. Van egy kapcsolója ami két üzemmódba kapcsolja a Pic-et. Az egyik állapotban a vevő és a szervó közé téve méri a vevő felől jövő impulzus szélességét. A másik üzemmódban csak a tápot veszi a vevő felől és a két nyomógombal lehet a szervót vezérelni. Nekem nagyon jól működik....
Szia Braf!
Itt nézz körül: http://elm-chan.org/works/avrx/report_e.html A párhuzamos port csatlakozó (D-SUB25) meg 5 ellenállás az bonyolult? :no: ![]()
Az elmúlt 3-4 hétben nem foglalkoztan (nem tudtam) a projektel. Most hogy újra lett sz.gépem teljesen véletlen ráakadtam erre :
Link1 Link2 Google Translate Ez a céljaimnak pont megfelelő! Az összes (8) szervót frissíti egyszerre. Soros porton kapja az adatokat. Mivel van forráskód ezért egyszerű (egyszerűbb) lesz átírni 16f628 ra és I2C re mint a többit amit találtam. győzött a lustaság
hello!
Nekem nagyon tetszik amit az előttem írt Braf küldött csak arra lenék kíváncsi hogy 4 szervot meglehet e vezérelni ugy hogy 4 különböző időben fordul pl: hogy először fordul az első közép iránytól balra utána a második és a harmadik szervó teljesen elfordul majd az első vissza ál középre aztán a negyedik szervó elfordul középtől jobbra majd a második és harmadik szervó elfordul a másik irányba majd a negyedik szervó vissza áll alap állásba majd az egészet kezdi előröl. Ha igen akkor az érdekelne hogyan Írhatnék rá olyan programot mert programozás nem az erősségem de azt is meg köszönném ha nem nagy munka hogy valaki meg írná nekem de inkább megtanulnám mint hogy mást fárasszak ezzel
Sziasztok!
Nyugalmas Karácsonyi Ünnepeket mindenkinek. Ezt, azt hiszem tegnap előtt találtam a neten, be akartam linkeni, de olyan vírusírtó kezdte (látszólag) ellenőrizni a gépet, ami nincsen is feltelepítve, ezért inkább kiléptem a link helyéről. :boxer: Beradan
Sziasztok!
PIC-el szeretnék vezérelni néhány teljesen körbeforgó servo motort. A PICC programnyelvhez mellékeltek is egy vezérlő kódot (lsd. mellékletben) ám amikor kipróbáltam elég furcsa dolgokat produkált. Elvileg 2 irányba tudna 4 sebességgel forogni, de gyakorlatilag a forgás iránya nem minden esetben az, amire utasítom, és a sebességek is összevissza vannak. Ráadásul a jobb és a bal motor nem is egyformán reagál az azonos utasításokra. Mivel PWM-et még sohasem használtam, így nem tudom értelmezni a kód utasításait. Hálás lennék, ha valaki tudna segíteni a probléma megoldásában.
Sziasztok!
Az lenne a feladatom hogy van 3 szervóm, és az ehhez tartozó 3 pozíciót kellene meghatároznom, és a PC-re beküldeni mondjuk rs232-n és kiolvasni. Tehát a PWM jelből kellene valami számértéket generálnom aztán ezt valamilyen programmal kiolvasni. Sajnos elektronikában rettenetesen kezdő vagyok, de nagyon lelkes. Felületesen értem mit kellne csinálni, de megvalósítani sajnom nem. ( A projektre akad annyi költségkeret hogy egy PIC programozó akár belefér ) Ebben kérnék segítséget tőletek! Üdv, és előre is köszönöm! |
Bejelentkezés
Hirdetés |