Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   831 / 1319
(#) watt válasza Balázs 1.3 JTD hozzászólására (») Nov 8, 2010 /
 
A LED elé nem árt egy áramkorlátozó ellenállás(a többi hibát nem is vettem észre, csak most olvasom szilvát).
A vivőfrekis átviteleket manchester kódolással szokás átvinni, ami a vonalat nem engedi egyik irányba sem kilendülni.
Megint jó kis PIC téma...
(#) watt válasza szilva hozzászólására (») Nov 8, 2010 /
 
Idézet:
„Egyébként ha jó lenne a rajz, és a jó rajz szerint van összeállítva az áramkör, akkor ez az elrendezés megfelel a célnak”

Kivéve, ha az történik, amit említettél, azaz nem megfelelő időtartamra kap a vevő vivőfrekit, vagy annak hiányát.
(#) Hp41C válasza Balázs 1.3 JTD hozzászólására (») Nov 8, 2010 /
 
Ne csüggedj, egy olyan nagy cég, mint a LEG@ az RCX kommunikációjában a TSOP1136 -ot és uart-tal megvalósított (2400 Baud, 8 bit, páratlan paritás, 1 stopbit) sebességű átvitelt használt. A protokoll volt úgy kitalálva, hogy a maximális hosszat meghaladó impulzussorozat ne alakuljon ki. A csomag kezdete 0x55, 0xAA volt, a továbbiakban mindig az adat és a negáltja követték egymást. Az átvitel több tíz méterig megy. A BC413 kicsi lesz... Az említett infra toronyban 9V tápról hajtanak meg 2 db sorbakötött infra led -et 6.8 ohm áramkorlátozással, a ledek árama 1A.
(#) messer válasza watt hozzászólására (») Nov 8, 2010 /
 
dsPic30F2010 a típus amivel szeretnék vezérelni, egy l6205-ön keresztül egy 4 vezetékes kétfázisú bipoláris léptetőmotrot tudnál nekem c-ben (ccsc-vel próbálkozom) küldeni egy program részletet ami tartalmazza a pwm modul inicializálását, és egy irányba forgatását a motornak. Sokat tanulnék belőle. Segítségedet előre is köszönöm
(#) szilva válasza Hp41C hozzászólására (») Nov 8, 2010 /
 
Nem tudom, kapcsoló üzemben ezek a tranzisztorok mennyire gyorsak, de talán 38kHz-re jónak kellene lenniük.

Esetleg meg lehet próbálni a fiókban megbújó IRF P-s és N-es FET-ekkel (pl. IRF530-IRF9530; tudom, ágyúval verébre), azok vélhetőleg sokkal határozottabban kapcsolnak, mint ezek az általános célú tranzisztorok. Ilyen nagy áramú FET-ek esetén a g-vel sorban illik tenni pártíz ohm áramkorlátozót (a relatíve nagy g-s kapacitás miatt).

Amit én még kapcsoló üzemre sikerrel használtam digitális áramkörökben, az a mezei 2N2222 (NPN), de az talán pont ilyen jellegű alkalmazásokra is van ajánlva. Sajnos hasonló jellegű, PNP-s tranzisztor most nem jut eszembe.
(#) szilva válasza watt hozzászólására (») Nov 8, 2010 /
 
Igen, ez az eshetőség benne van a pakliban, ezért írtam, hogy nem mindegy a bitsebesség. Közben olvasom Hp41C hozzászólását is, hogy neves gyártók is 2400bps-t használnak ilyen módon, talán nem véletlenül.

Egyébként a start és stop bitek miatt folyamatos vivő sosem lesz a vonalon, és tapasztalataim szerint a TSOP-k nagyon sokat eltűrnek hosszú impulzusok terén. Ettől függetlenül ha van rá mód, a kommunikációs protokollt érdemes úgy kialakítani, hogy a hosszú idejű nulla állapot közvetítését (amikor a vivő folyamatosan kint van hosszabb ideig) elkerüljük. Ezt lehet pl. úgy csinálni, hogy 8 bitben 4 bitet viszünk át a páratlan biteken, és minden páros bit az előtte lévő páratlan bit negáltja. Adóoldalon kis előkészítést jelent, vevőoldalon pedig kis utófeldolgozást, ami egyben az átvitel egyszerű ellenőrzésére is lehetőséget ad.
(#) watt válasza szilva hozzászólására (») Nov 8, 2010 /
 
Ez is fele sebességet okoz, mint a manchester, és talán könnyebb kezelni, ha már mindenképpen programmal kell bűvölni a jeleket.
De végül is amit írsz működik, és van mikor csak ez számit. Ilyen kis baudrate-hez simán lehet szoftveres lekezelést írni. Persze sokkal kényelmesebb az USART-al dolgozni, és ha a protokollal meg lehet oldani, akkor talán ez a jobb választás egyes esetekben.
Az viszont várható, hogy trüközés nélkül a dolog nem fog működni.
A fordított LED rajzhoz még annyit, hogy az meg tuti nem úgy van bekötve, mert akkor egyáltalán nem menne, nem?
(#) watt válasza messer hozzászólására (») Nov 8, 2010 /
 
A léptető motorokat alapvetően nem PWM-el vezérlik. A PWM-et esetleg áramkorlátra, induló áramlökésre, rögzítéskori árambeállításra, tekercs kímélésre, ilyenekre használják léptetőmotorok esetében. A léptetést megfelelő sorrendű impulzusokkal oldják meg, és az impulzusokra ültethetnek PWM-et a fentiek szerint. (Innen ez a kérdés sem PIC kérdés, keresgélj a motorvezérléses topicokban...)
(#) Balázs 1.3 JTD hozzászólása Nov 8, 2010 /
 
A rajz alapján van megépítve . Kamerával néztem, alapból nem világít, adás közben szépen villog. 4kHz-es vivővel kb minden második bájtot jól fogad a PK2. Igen lehet hogy kellene valami kódolás. De azt még mindig nem értem, hogy miért működik jobban 4kHz-en mint felette.

Módosítás:
4kHz vivővel 300bauddal 20cm-ről tökéletesen megy. Nagyobb bauddal több a hiba. Nagyobb frekin egyre rosszabb bármilyen bauddal nézem.
(#) szilva válasza watt hozzászólására (») Nov 8, 2010 /
 
Egyes gyári távirányítókban szeretik alkalmazni azt a módszert, hogy elküldenek egy bitet, majd rögtön utána annak negáltját. Persze van olyan is, ahol kimegy előbb a komplett szó (8-12 bit), majd ezután a szó negáltja.

Az viszont általában közös minden infrás adatátvitelben, hogy minden bit egy jel és egy szünet kombinációja, ezek sorrendje, illetve hosszai határozzák meg a bitet. Az UART-os átvitelnél pont ez nem biztosított, és ezt lehet kikényszeríteni azzal a módszerrel, amit leírtam (minden második bit az előző negáltja), mert így maximum 2 bitnyi folyamatos szint alakulhat ki, bármilyen bitkombinációt viszünk is át a 4 biten.

Lehet más módszereket is alkalmazni, akár pl. táblázatost, ahol a kiküldendő adat helyett egy táblázatból előszedett "jó" (kevés egymás melletti nullát tartalmazó) szó lesz elküldve; vagy pl. széttolni a küldendő szó bitjeit és 2-3 bitenként beszúrni egy fix 1-es értéket küldés előtt. De számtalan más megoldás is létezhet, a lényeg mindig az, hogy megpróbáljuk az adatlap korlátait betartani, jelen esetben a maximális burst hosszat nem túllépni.
(#) watt válasza Balázs 1.3 JTD hozzászólására (») Nov 8, 2010 /
 
Idézet:
„A rajz alapján van megépítve”

Ezzel én nem poénkodnék.
1. Az egész téma off.
2. Visszaélsz itt egy csomó ember türelmével.
3. Nem reagálsz arra, hogy a rajzod hibás, és nyomod tovább a süket dumát...
(na ezt is biztosan törlik...)
(#) messer válasza watt hozzászólására (») Nov 8, 2010 /
 
Azért is gondoltam a pwm-re mert az áromot is be kell állítani és microstep módban kéne vezérelni a mocit (ami azt jelenti, hogy a tekercsekre a jelet át kell úsztatni.) úgyhogy pic kérdés van ötleted, tapasztalatod? Tehát következő a kérdés a dsPic pwm hardver le tudja kezelni a bipoláris motorvezérlést, vagy nekem kell írni az egészet lépésenként.?
(#) Balázs 1.3 JTD válasza watt hozzászólására (») Nov 8, 2010 /
 
Most lefotózzam neked? Kell videó is arról, hogy az infra LED hogyan viselkedik? Amit leírok nem szívatásból írom. Mellesleg az előző oldalak valamelyikén kaptam a tanácsot, hogy úgy kössem a tranzisztort.
(#) watt válasza szilva hozzászólására (») Nov 8, 2010 /
 
Értem én, eddig is értettem. Ha jobban belegondolsz, a manchester kódolás pont erről szól, pont erre lett kitalálva, vivőfrekis átvitelre.
(#) watt válasza messer hozzászólására (») Nov 8, 2010 /
 
Én úgy látom, hogy a léptetést neked kell, a PWM-et pedig tudja a PIC. De ehhez nem kell dsPIC. De tényleg nézz körül, mert úgy emlékszem van ilyen téma, biztosan találsz infót!
(#) watt válasza Balázs 1.3 JTD hozzászólására (») Nov 8, 2010 /
 
Mivel off, én nem válaszolok erre...Keress egy olyan topicot, ahol az infrás átvitellel foglalkoznak, ilyen is van!
(#) szilva válasza Balázs 1.3 JTD hozzászólására (») Nov 8, 2010 /
 
Ha a rajz alapján (biztos, hogy a LED polaritása is?) van, akkor mindenképpen érdemes lenne a PNP tranyó kollektorát és emitterét felcserélni, hogy földelt emitteres kapcsolásban helyesen működjön. Ha megcseréled a C-E lábakat, akkor viszont mindenképpen rakj a LED-del sorban egy ellenállást, mondjuk én olyan 100 ohm-mal kezdenék.

Ha van rá mód, érdemes lenne megnézni szkóppal vagy logikai analizátorral a két tranzisztor kollektorain kialakuló jeleket (gyakorlatilag a LED-ellenállás komplexum két végpontján).

A felcserélt C-E egyébként azt eredményezi, hogy egy nagyon kis áramerősítésű (kb. 1-szeres, vagy kisebb ilyenkor az áramerősítés) tranzisztorod lesz, tehát működni fog, csak ez mondjuk nem 1A, hanem 5mA kollektoráramot eredményez az 1k-s soros bázisellenállás hatására.
(#) Balázs 1.3 JTD válasza watt hozzászólására (») Nov 8, 2010 /
 
A LED a rajzon tényleg fordítva van rajzolva. A tranzisztort megfordítottam így mostmár javítva az egyik hibám. A LED-hez áramkorlátozó ellenállást azért nem tettem mert így is bírja a LED és akkor csak még gyengébb lenne a jel.

Elnézést kérek. 2X néztem át a rajzot mikor szóltatok. Mindkétszer átsiklottam a LED polaritása felett.
(#) messer válasza watt hozzászólására (») Nov 8, 2010 /
 
Végigolvastam már a léptetőmocis topicot, és így sikerült kisilabizálnom a vezérlési módokat, Az lenne a lényeg hogy a tekercsek mágneses tere szépen felépüljön, majd szépen le, így nagyon finom felbontás jönne létre és nem riccegne a motor. Arra lennék nagyon kíváncsi, hogy nem e tudja esetleg ezt a vezérlési módot hardveresen a dspic, ahogy látom nem úszom meg az adatlapot, jó lett volna olyan valakivel beszélgetni aki már dolgozott dspic-el azon belűl motor vezérléssel. Azért dspic mert ez elméletileg motorvezérlésekhez lett készítve.
(#) watt válasza messer hozzászólására (») Nov 8, 2010 /
 
Értem már, eddig csak részben értettem mi is az az átúsztatás. Hát, nem tudom, szerintem ezt a PWM motorvezérlő modulok nem tudják, de lehet, hogy tévedek! Inkább egyenáramú motorok vezérlésére lettek kitalálva különböző elrendezésű kapcsolásokhoz. Lehet, hogy ezt le kell programoznod, ami nem túl egyszerű feladat!
Csatoltam egy doksit ami a motorvezérlőről szól:
Jobban megnézve a felépítést, talán emgoldható, miután minden egységnek külön beállítható a kitöltése. Példaprogramot esetleg a gyártó oldalán érdemes keresgélni.
(#) Hp41C válasza szilva hozzászólására (») Nov 8, 2010 /
 
Szia!

A Leg@ infra torony BC639 -cel utánépítve, bemérve, tesztelve....

A TSOP adatlapján ott az adat, hogy max 2400 bit/s folyamatos átvitelt tud. A LED -et célszerűbb NPN tranzisztorral hajtani, és nagyobb feszültségről járatni. Az Amper nagyságú impulzusok megzavarhatják a kontrollert a tápon keresztül.

A pnp tranzisztor ilyen bekötésben un. inverz aktív üzemben megy, az áramerősítsi tényezője <1.>
(#) szilva válasza Balázs 1.3 JTD hozzászólására (») Nov 8, 2010 /
 
Azért elég merész dolog áramkorlátozás nélkül így hagyni. Ha teszem azt 400-as a tranzisztorok áramerősítése, akkor a kb. 5mA meghajtás hatására lesz 2A a kollektoráram. Nem tudom, mennyire szereti ezt a LED, vagy a tápegység, amiről járatod. Az sem mellékes, hogy ekkora áramok úgy meg tudják rángatni a tápfeszültséget, hogy attól még a PIC is meghülyülhet, ha nincs komolyan és tisztességesen megszűrve a tápellátása.
(#) Balázs 1.3 JTD válasza szilva hozzászólására (») Nov 8, 2010 /
 
Tettem be egy 150 ohmosat. Most kb fele lett a hiba nélkül működő távolság.

Lejjebb vittem a baud-ot 243-ra. Ettől lejjebb 4MHz-es kvarccal nem tudom vinni. Így még jobban működik, a LED előtét ellenállása nélkül kb 1.5 métert visz át (ha nagyon becélzom a vevőt a LED-del).

Egyébként én is kiszúrtam az adatlapban a max 2400bps-t. Ezért próbáltam legelőször 1200on. AZtán minden felé mentem. Kis bauddal stabilabb.

Ja és Szilva! Sajnos egy darab FET-em nincs itthon. De szerdán lehet veszek majd további tesztelés céljából.
(#) Ideiglenes válasza szaffo555 hozzászólására (») Nov 8, 2010 /
 
Szerintem az itt ajánlott megoldás jobb, mint a timer1 regiszter nullázása. Mindössze egy 16 bites számot kell növelned annyival, amennyi belsó óraütés után akarsz újabb megszakítást és ezt a 16 bites számot másolod át a megszakításon belül a CCPRx regiszterpárba.
(#) messer válasza watt hozzászólására (») Nov 8, 2010 /
 
Hát igen ettől féltem no beleásom magam segítségedet köszönöm, még biztos foglak zaklatni, írhatok privátban neked ha van kérdésem?, hogy ne terheljem a fórumot.
(#) szilva válasza Balázs 1.3 JTD hozzászólására (») Nov 8, 2010 /
 
Csak jó lenne valamivel ellenőrizni, hogy pontosan mi is jut a LED-re. Azért egy ilyen átvitel nem egy olyan borzasztó bonyolult dolog, nekem és másnak is sikerült már IR-en átvinni dolgokat. Igaz, én nem az UART kimenetét tettem rá, hanem szoftverből elő lettek állítva a megfelelő tüskék a kimeneten, de ettől még a módszer ugyanaz: egy megfelelően szaggatott vivő került az IR LED-re.
(#) szaffo555 válasza Ideiglenes hozzászólására (») Nov 8, 2010 /
 
Igazad van ez is egy megoldás. Korábban már néztem, de ha jól értelmeztem ez számításigényesebb, mert mindig újra és újra ki kell számolni a következő megszakításhoz szükséges CCPR értéket, amit megszakítás kiszolgáló rutinban akualizálni kell. Ráadásul Timer1 túlcsordulásait is figyelni kell. Azt írod, szerinted ez jobb megoldás, mint a két programsoros Timer1 reset, (ha már a trigger event ről lemondok a port megtartása miatt) de milyért gondolod igy?
Valamit félreértek?
(#) watt válasza messer hozzászólására (») Nov 9, 2010 /
 
Nyugodtan írhatod ide a kérdést(többen együtt okosabbak vagyunk és mást is érdekelhet), mert nem a vezérlés mikéntjéről, hanem annak egy PIC-en belüli megoldásáról kérdeztél, csak én nem értettem meg elsőre, hogy ez így van!
Tehát a motorodat egy l6205 meghajtóval gondoltad meghajtani. Jó választás, mert áramvédelem is benne van, és két full H hidas meghajtó a két tekercsednek.
Amennyire én látom nincs olyan mód a dsPIC-ben, ahol a négy kimenet a kívánt két fázisú módban a kitöltéseket változtatható sebességgel átúsztatná valamilyen alapjelre, így ezt le kell programozni. A motor fordulatszáma, illetve a lépések közötti idő változó lehet, ugye pont ez a lényege az egésznek.
Ha kiragadunk néhány pontot, akkor a következő elmondható.
  1. 0°    IN1A 100%, IN2A 0%, IN1B 0%, IN2B 0%
  2. 45°  IN1A 50%, IN2A 0%, IN1B 50%, IN2B 0%
  3. 90°  IN1A 0%, IN2A 0%, IN1B 100%, IN2B 0%
  4. 135°IN1A 0%, IN2A 50%, IN1B 50%, IN2B 0%
  5. 180°IN1A 0%, IN2A 100%, IN1B 0%, IN2B 0%
stb. (90° egy teljes lépés)
Az átmenet felbontását meg kell határozni, mert a 90°fázislépést nem érdemes túl sok részre bontani, mert ha a túl nagyra növeled, az csökkenti a maximális elérhető fordulatszámot, bár elég gyors egy dsPIC, de nem mindenható. Nem írtad hány fokot lép a motor, talán 1,8°-ot? Az 200 lépés/fordulat, amihez ha a 90°-ot csak 20 részre osztod, 4000 kitöltés módosítási ütemre van szükség, fordulatonként. Ekkora sebesség 60 fordulat/percnek felelne meg. Ez még sima ügy, sőt ettől sokkal gyorsabb is lehet, de a 600RPM már necces (nem tudom, a motor tudja e fizikailag?), bár még nem gondoltam végig, csak érzésre mondom, hogy 40KHz-es módosítási ütem, már lehet, hogy más programszálakba akadna, nem biztos...
Gondolom ehhez más is szívesen hozzászólna, érdekes téma szerintem!
Ha kitisztul a feladat, rátérhetünk a PWM beállítására, ami egyébként egyszerű 4 különáló kimenet, azonos vivőfrekin(pl. 16KHz, hogy ne sípoljon a motor, ez a freki nekem egyenáramú modellmotornál bevált.), egyenként állított kitöltésregiszterekkel. Kell majd még egy láb a meghajtó engedélyező lábára.
(#) icserny válasza messer hozzászólására (») Nov 9, 2010 /
 
A Microchip AN1307 alkalmazási mintapéldáját nézd meg! Címe: Stepper Motor Control with dsPIC DSCs. A kidolgozott mintaprogram a dsPICDEM MCSM Development Board demókártyához készült, így annak dokumenticióját is érdemes áttanulmányozni.

Egyébként a dsPIC33FJxxxMCxxx sorozatot szánták motorvezérlésre (BLDC, FOC, ACIM motorokhoz), de semmi sem akadályoz meg abban, hogy bármelyik más mikrovezérlővel is célba érj. A nagyobb sebességnek (a dspic33 sorozat pl. 40 MIPS-re képes) a microstepping módban azért van szerepe, mert a névlegesnél nagyobb feszültséggel kell járatni a motort, s közben ADC-vel figyelni a felfutó áramot, ami 1-3 PWM periódus alatt elérheti megengedett értéket, tehát gyorsan kell reagálni.

A fölösleges kérdéseket megelőzendő: nem foglalkoztam még motorvezérléssel, esetleg a távoli jövőben adódhat úgy, hogy foglalkoznom kell a témával.
(#) watt válasza watt hozzászólására (») Nov 9, 2010 /
 
Végiggondoltam újra, a felírt táblázat inkább egy háromszögjeles vezérlést mutat, nem szinuszosat, ami inkább lenne jobb. A szinuszos változási görbéhez egy táblázatot tudnék elképzelni, ahol a fázishoz tartozó kitöltési értékek lennének eltárolva illetve onnan kivéve behelyettesítve a kitöltés regiszerbe. Így 50-50%-os kitöltés nem jöhetne számításba, inkább 60-60% körüli a fél lépésnél, most nem számoltam utána...
Következő: »»   831 / 1319
Bejelentkezés

Belépés

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