Fórum témák
» Több friss téma |
Az nem volt világos, hogy a tápfesz elvesztésekor, milyen elemre kapcsol át.
Az elemre egy óra miatt van szükség, ami alvó módban is működne a T1OSO-T1OSI lábakra kötött külső óra kvarccal. Erre pedig kondenzátoros megoldás nem jó. Akár egy egész hétvégén keresztül működnie kellene róla az órának.
Nézd meg a cikkek közt az Overkill nixie csöves órát. Van benne gombelem, amiről megy áramkimaradás esetén.
Gombelem nincs benne. Az akksi.
progee! Erre találták ki az RTC-t. Na az tényleg gombelemről megy, akár 3 évig!
Sikerült életre keltenem az égetőt. Az előző hozzászólásba elírtam, nem a 2-es 3-as lábat kötöttem össze, hanem a 2-es 10-es lábat. Mindegy, végül is már a program felismeri az égetőt, a probléma ott van, hogy programozni nem akar. Egy hibaüzenetet ír ki. Hogyan lehet orvosolni a problémát?
Sziasztok! Szeretnék kikérni pár véleményt arról, hogy egy Quadro copter-hez, milyen teljesítményű PIC-et válasszak? A feladat amit meg kellene oldani az 3+1 szenzor (giro, accelero,compass +pressure) adatainak feldolgozása I2C kapcsolattal, egy wireless adó vevő SPI-kapcsolattal, és az ESC-k vezérlése. Neten találtam egy szerkezetet, aminek a leírásában ARM 32 bites proci volt (100MIPS)... Én örülnék ha meg tudnám oldani valamelyik 18F es család tagjával, mert nem szeretnék még 24F esekkel foglalkozni (túl sok újdoság van benne) Szerintem kell lennie 18as családban is erre megfelelőnek. Assemblyben progizok, és a 24F eshez már C illene, ez a fő gond.
Tehát a kérdés, hogy van-e olyan 18F es PIC (ha tud valaki konkrét típust ajánlani ne kíméljen) ami 12MIPS-nél erősebb és megfelelő lehet?
Idézet: Van, hiszen a 64 MHz-es PIC18-ak (pl. PIC18F25K22) 16 MIPS-esek. Hogy megfelelő-e azt nem tudom, hiszen nincs specifikálva a hardver követelmény (pl. a szenzorok kiolvasása milyen gyakorisággal esedékes, s milyen követelmények vannak a feldolgozást illetően).„Tehát a kérdés, hogy van-e olyan 18F es PIC (ha tud valaki konkrét típust ajánlani ne kíméljen) ami 12MIPS-nél erősebb és megfelelő lehet?” Mindenesetre inkább a PIC32 kategóriától várható el, hogy összemérhető teljesítményt nyújtson egy 32 bites ARM mikrovezérlővel összehasonlítva.
Köszönöm, a 2MSSP modul az pont jó, viszont a 64MHz nem biztos hogy elég lesz, ha real time akarom vezérelni a ESC-ket a szenzorok adatai alapján. Bár úgy látom hogy 16MIPS a 18F esek felső határa
![]() A hozzászólás módosítva: Dec 21, 2013
A PIC24F kitűnően programozható assemblyben, sokkal jobban mint egy PIC18. Csak épp az a baj hogy azok is csupán 16MIPS teljesítményűek. Ajánlott ennél nagyobbat nézni.
Egy kis összehasonlítás: PIC24F: 16MIPS PIC24H: 40MIPS PIC24E: 70MIPS dsPIC30F: 30MIPS dsPIC33F: 40MIPS dsPIC33E: 70MIPS Ennél többre - Microchip vonalon - csak a PIC32 képes. Na... azt már nem biztos hogy szeretnéd assemblyben programozni. ![]()
Szia! A 24E széria 70MIPS-e elég impozáns
![]()
Idézet: Nem lesz ennyire fura, ha rájössz, hogy a PIC18 mutatóinak (FRS0, FRS1, FSR2) és a veremtár mutatónak (STKPTR) a szerepét is ezek látják el. „Bár fura hogy ennyi WREG-gel kell dolgozni.”
Egyébként találkozott már valaki olyan hibával, hogy a CDC-terminál bejövő adat ablaka fekete alapú, amin a poén kedvéért feketén jelennek meg a karakterek, és csak úgy látom, ha egérrel kijelölöm? Eddig így használtam, de gondoltam megkérdezem hátha van rá gyógymód...
Windows 7 alatt láttam ilyet. Újra kell fordítani...
Sziasztok!
Egy kis segítséget szeretnék kérni. Hogy lehet megcsinálni asm-ben, hogy mondjuk egy 8 bites változó értékét szét akarom bontani 2 másik változóba, úgy hogy az egyik változó elején legyen 4db 0 és utána az adott változó felső 4 bitje, a másik változóba ugyan így 0000 és utána a változó alsó 4 bitje. PL. adott 10111001 ezt kéne így szétbontani 00001011 és 00001001. A forgatással nem jó, mert ugyan így beforgatja az elejébe a számokat és fontos lenne hogy az első 4 bit nulla legyen, de lehetőleg ne úgy hogy egyesével nullázzam ki a felső 4 bitet. Valami egyszerű megoldás érdekelne, nem tudom van e erre valamilyen parancs mert én nem találtam sima shiftelést. Idézet: A forgatásnál lehet carry-vel forgatni ( 18 alatt tudtommal csak azzal ! ), így ha megfelelő időben nullázod a CY-t, akkor azt kapod, amit akarsz „A forgatással nem jó, mert ugyan így beforgatja az elejébe a számokat és fontos lenne hogy az első 4 bit nulla legyen” ![]() ![]()
Megint egy kis segítséget kérek a PWM szervo vezérléssel kapcsolatban.
A motor két szélső pozíciója 9 és 35 közötti értékek esetén áll be, emiatt a 26 pozícióérték miatt a motor lépked mint egy óra másodperc mutatója, amikor átállítom lassú menetben. Én meg azt szeretném, hogy ez a mozgás ennél folyamatosabb legyen. Mit tehetek? Segíthet a PWM frekvencia emelése? A motoroknak elméletileg 50-60Hz kell...emiatt jön ki a viszonylag kis felbontás. Meg lehet növelni ezt a felbontást valahogy? Jó lenne ha 100 környékére fel lehetne tornászni. Köszi. nem leszek már annyira szkeptikus! ![]() A hozzászólás módosítva: Dec 22, 2013
Szia!
Ha jól láttam, 8 bites felbontást használsz a PWM-nél is, meg az A/D-nél is. Emeld fel 10-re. Egész egyszerű. Az ADRESL felső két bitjét írd be a CCP1CON<5:4> bitjére. Lehet, hogy jobb poti kell, de ezzel egészen finoman lehet állítani a duty-t. Négyszeresre nő a beállítás finomsága.
Szia,
igen, csak 8 bitet használtam fel mindkettőből és azt írtam be. Ezzel a 10bitre emeléssel megnövekszik négyszeresre? Akkor az eddigi 26-ból lesz 100?? Akkor meg is van a szükséges lépésköz! Az A/D-nél jól teszem, ha hagyom left justified-on, ugye? És azokat a biteket írom a PWM-be? Na ezt el is kezdem megírni. Köszi Eredményről referálok! ![]() A hozzászólás módosítva: Dec 22, 2013
Még azzal javíthatsz a kezelés finomságán, hogy a poti teteje és a táp közé beraksz egy kb. kétszeres ellenállást. Ezzel azt éred el, hogy a poti teljes végkitérése úgy 0-85 érték között lesz.
A négyszeres növekedést úgy számold, hogy 9-9,25-9,50-9,75...35 lesz az érték és a kitöltési tényező is. Vagyis sokkal finomabb állítási fokozatokat kapsz. Ha az ellenállást is beteszed, kényelmesebb lesz használni a potmétert. Ja, persze hagyd left-en. Arra írtam én is a javaslatot. A hozzászólás módosítva: Dec 22, 2013
Ha már itt tartunk hogyan tudom azt megoldani hogy ne másszon el az adc értékem amivel feszültséget mérek pár perc után? Potmétererrel beállítom pontosan a műszerem , majd pár perc mulva látom elmászott pár tizedet. És aminek meg mérné a feszültségét az adott adc láb ha ráteszem a terhelést pont hogy fölfele kezd el mászni a feszültség mikor esnie kéne.. ezt nem értem miért csinálja.
Használj valamilyen feszültség-referenciát az A/D-hez. Valószínűleg nem elég stabil a tápod és mivel az A/D ahhoz viszonyít, elmászik.
Jól értem, hogy a CCP1CON<5:4> bitje adja majd a beállítások után a 0.25-ös növekményt az eddigiekhez képest?
Az ellenállást a középláb és a Vdd közé kell kötni vagy a földre? Hogy lesz kényelmesebb használni? Ezzel módosítom a kimenő ellenállását, azt értem. Most egy 10k-s forgó potméter adja az A/D-hez a fesz.t! Eszerint még kell egy 20k-s.
Úgy lesz 10 bites a PWM felbontása, hogy a szokásos nyolc bit kiegészül azzal a kettővel. Az ellenállást meg a potival kell sorbakötni. Ezzel azt éred el, hogy a potméter szélesebb skáláját használhatod. Most a 9-35 között épp csak pár fokot fordul. Tehát táp, poti felső pontja, középső láb a pic-re, a poti alsó pontja a földre. Persze ha kell a 100% kitöltés (255), akkor ne tegyél ellenállást.
De próbáld ki, mert egyszerűbb megnézni, mint körbeírni. ![]()
Jaj, akkor értem mire gondoltál! Most is a teljes tartományt használom egy 16-os osztással, 4xRRF rotációval, így a finombeállítás a potméter pontatlanságát is kiküszöbölte.
Ráadásul ugye a középálláshoz képest adtam hozzá és vettem el a két szélső állást. Arra gondoltam, hogy próbaképpen először a PWM CCP1CON<5:4> biteket berakom a programba lépésenként 00-01-10-11 egy segédszámlálóba. Ha ez lefutott, léptetem a CCPR1L regisztert. Valahogy így:
Értem, vannak ezek a to92-es TL feszültség referencia tranyók, azt lehet használni külső referencia forrásként 18f4550-nél szerinted?
Feltöltöttem a PIC-be és működik a finom mozgás, úgyhogy a program részlet is beváltotta a hozzáfűzött reményeket!
Köszi a tippet!
A tényleges megvalósítás már a programod komplexitásának függvénye. Innen nem látom az extrákat
![]() A topic címének megfelelően a klasszikus alapfelállásra (egy poti 0-5V között, egy PWM 0-100% között, aztán az A/D értékének sima átírása a PWM-be) írtam a javaslatot. Természetesen,ha ezen már túl vagy, nem kell foglalkozni a potis résszel. A PWM-nél valami hasonlóra gondoltam. Sajnos a jóságát ennyiből nem tudom megítélni, nem látom, hogy kapcsolódik a duty beállítása az A/D olvasásához. Ha nincs szinkronban a kettő, túl gyors lesz a finombeállítás és ott maradsz ahol voltál. (Nem tudom mit csinál a SWITCH_SPEED rutin.)
Akkor feleslegesen aggódtam.
![]()
Jó a TL, de számolgatni kell a beállítását és ellenállásokal beállítani az értékét. Jobban jársz egy ilyennel: MCP 1541. Ez minden macera nélkül betehető és összesen egy darab kondenzátor kell neki. Lényeges, hogy ne legyen 1-2cm-nél messzebb a PIC Vref lábától (RA3/AN3/VREF+).
Az a másik előnye, hogy 4,096V a feszültsége, vagyis A/D konverziónál nem kell sokat számolgatni, amit kiolvasol egy konverziónál, annak a sima szorzata lesz a feszültségérték, nem kell sokat számolgatni és kerekíteni, mint 5V-os referenciánál. Ha sima 8 bites konverziót használsz, egyszerűen meg kell az értéket szorozni 8-al és megvan a Volt. Példa: ADRESH=169, 169*8= 1352, U=1,352V. 10 bitesnél meg 4-el kell szorozni. Könnyebb programozni assembly-ben, de C-ben is. Úgy 1% a pontossága. Ha meg nagyon pontosat akarsz, használj REF198-at. Igaz, annak már szép ára is van. Ezek már akkor se másznak el, ha fél voltokat leng a tápod. A hozzászólás módosítva: Dec 23, 2013
|
Bejelentkezés
Hirdetés |