Kérkel segíts, hogy ne maradjon hibás információ az oldalon!
Ha szerinted valami nem fedi a valóságot, kérlek írd meg, hogy javítani tudjam. Ha kérdésed van, fordulj hozzám bizalommal!

A következő címkéjű bejegyzések mutatása: Piklab. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: Piklab. Összes bejegyzés megjelenítése

2009. október 27., kedd

Olcsó BLDC Vezérlő

A nyáron még a gépész kollégák kő keményen mellé nyúltak egy motor választásnak.
"DC, nem? Rákötöm a 24VDC-t és már megy is. .. .... .. Vagy nem?!"
A döbbenet a doboz kibontása után volt, amikor meglátta a sok-sok kiálló kábelt. Ez mi?! Ez nem az a pillanat volt, amikor a kollégával madarat lehetett volna fogatni :). Végülis megbeszéltük, hogy csinálok egy meghajtót hozzá, mert akárhogy is nézzük, igen borsos ára van az ilyen vezérlőknek és akkor úgy volt, hogy 3 nap áll rendelkezésre a beszerzéshez...A motor:
A motort a német Nanotectől vettük. DB42S03-as rabszámot visel. 24V 26W. Bika motorok ezek és ez előtt helyet foglalt egy elég nagy áttétel is (kimenet 80RPM).


Alkatrész válogatás:
Legelső sorban a PIC-ekkel szívtam meg. A tökéletességhez oly közel álló típusból nem volt raktáron. Pedig mi kell ide?

  • Interrupt on change - legalább 3 lábon úgy, hogy lehetőleg ne essen egybe a PWM kimenetekkel. (Mellesleg valaki elmondhatná, hogy miért is esnek egybe ezek a lábak a PWM kimenetekkel?!)
  • PWM - 3 pár pwm kimenet, tehát összesen hat. Ez általában a power management családokban található meg.
És ennyivel meg is elégedtem volna, de bárhogy is próbálkoztam, ügyeskedtem, Microchippék mindenáron legalább 1-2 IOC lábat fedésbe terveztek a PWM kimenetekkel. Kivéve a 1230, 1330-as pic18-asoknál! Csodás! Na, ez az, ami nem volt raktáron...

Idő szorít, pollingoljuk a Hall szenzorokat. Bár nem örülök.

Teljesítmény meghajtónak az IR2130-as három fázisú hídmegható több, mint jó. Csodálatos IC, nekem nagyon tetszik , valami azt súgja, hogy nem ez az utolsó projekt, amiben használtam. Hogy mit is tud?
  • 600V maximum!
  • Túláram és táphiány felügyelet.
  • Összehangol késleletetés.
  • 2,5V digitális jeltől kompatibilis.
  • Beépített erősítő áram méréshez.
A teljesítmény fokozatnak bármilyen IGBT és sok MOSFET megfelel. Az IGBT-k itt kezdődnek :), a FETeknél azért már oda kell figyelni a választáskor.

A táp stabilitásról az elmaradthatatlan 78XX család gondoskodott. A többesszám azért van, mert kell 15V az IR2130-nak és az 5V a PIC-nek.

És Voila:
Persze, azért ez ennél picit hosszadalmasabb volt, de magával a tervezéssel és az első működő protóval belefértem a 4 éjszakába (nappal másik projekt:) ). Hétfőn kezdődött, szerda hajnal 4 körül 15 perc alatt égettem el 4 IR2130-at és PICet...

Ez a projekt mutatta meg számomra először, hogy mi is az a bypass kondenzátor és mennyire lehet arra számítani, hogy majd az LM7805... Az első protón nem volt még ennyi kondenzátor, az már a későbbi fejlődés. Emberek, egyszerűen kell. Itt kapcsolgatunk, méghozzá gyorsan, és az áram útjában egyedül a tekercs igen alacsony ellenállása és induktivítása van. Használjátok csak szépen a kondikat, azért vannak.

Elismerem, nem sok ki és bemenet van az eszközön a külvilággal való kommunikációhoz, de ez azért van, mert az adott gépbe közveten egy motor helyett kerül be. Így relé kontakt bemenetet kapott az eszköz. Ez annyit jelent, hogy ha rövidre zárod a bemenetet, akkor a motor elindul. Próbáltam egy kis védelmet tenni az ellen, hogyha valaki 24V-ot köt a bemenetre, de, őszintén, nem próbálnám ki... :D

Nyákterv:
Az igaz, hogy a tervezés és a protózás igen gyorsan megvolt, de sajna a végső kialakítás rendesen elhúzódott. Ezért bánom is, hogy nem volt időm vissza alakítani 18F1230-ra és mivel akkor még úgy volt, hogy a nyák otthon készül, ezért egyoldalas, könnyen gyártható elrendezésre törekedtem, kevés átkötéssel.
Ha lesz jövője a projektnek, akkor azért sok design változást fogok eszközölni. Ilyenek: interface illeszthetőség, digitális státusz ki és bemenetek, kétoldalasra alkítás, itt-ott smd alkatrézek. Sokkal kompaktabbá válna tőle.
A tranzisztorokat nagyon szerencsétlenül helyeztem le, így nem lehet őket hűtőbordázni. Ahhoz szilikon padeket kell venni. (Igaz, ennél a 26W teljesítménynél nem szükséges a hűtőborda.)
A letölthető fájlba a gyártási Gerbereket is beleraktam.

A firmware:
Az elérhető eszközök (pic) rendesen behatárolták a firmwaret. A letölthető rarban elég sok fájlt találni, ezek egyike másika a fejlesztés különböző szakaszaiban készültek. A "véglege" a p18f2431 könyvtárban van.
A polling miatt igazándiból mindent ki kellett szórnom a mainből és IOC nélkül az időközök mérésére sem hagyatkoznék ezért ezzel az IC-vel ezt a minimál megvalósítást választottam. A sebesség és a felfutási idő potméterekkel állítható be. Több funkció nem is igazán kapott helyet.

Bővíthetőség:
Korlátlan.A PICet kicserélve főleg. A teljesítmény a kW nagyságrendekig emelhető az IGBT végfoknak és az IR meghajtónak köszönhetően (megfelelő hűtés mellett, természetesen). Kommunikációs interface beilleszthetőséggel akarom még felruházni. Szinuszos hajtást is meg lehet valósítani (igaz, hasznosan azt is csak az új IC-vel) és Phase Advance funkcióval bővíteni.


Letölthető fájlok:
Eagle projekt + Gerber
Piklab projekt (firmware)




FELELŐSSÉG KIZÁRÁS / DISCLAIMER
A balesetekért, károkért semmilyen felelősséget nem vállalok és nem is vagyok felelősségre vonható!
Mindenki kizárólag a saját felelősségére építheti meg.
Ez a blogon megjelent összes projektre igaz!

2009. július 2., csütörtök

Piklab és C18 fordító újra

Ha véletlen sehogy sem akarna túljutni a Piklab, amikor Microchip C18 -cal (és persze wine-vel) akarsz fordítani és mondjuk olyanokról beszélne, hogy:

Error - could not find definition of symbol 'FSR2L' in file './main.o'.

ahol az 'FSR2L' helyén tetszőleges szó állhat, akkor van megoldás!

A trükk lényege annyi, hogy a C18 linkernek kell adni még 1 paramétert: /u_CRUNTIME

Az én jelenlegi linker beálltási sorom a projekt beállítás ablakban, ami kitűnően működik:

"c:\\mcc18\\bin\\lkr\\18f2431_g.lkr" /l/mnt/d/MCC18/lib/ /l"c:\\mcc18\\lib" /u_CRUNTIME /o%COFF /m%MAP %OBJS %LIBS
Remélem, hogy másnak is segítség lesz.

2008. szeptember 22., hétfő

MPLAB C30 & Linker és a dsPic30F2020

A mai napnak igen nagy tapasztalata van: sose hidd el a fordítónak egyszerűen azt, hogy nincs watchdog fuse define-olva.
Tehát: a dsPic30F2020 include file-ja állítja az utolsó sorok környékén, hogy a watchdog a
_FWDT(WDT_OFF);
kódsorral kapcsolható ki. De ha ezt használod, a fordító sír, hogy nincs WDR_OFF definiálva. Kis keresgélés után megtalálod, hogy az FWDTEN_OFF valójában. Semmi gond, csak 2 napja optimalizálom a kódot, mert stack OV-tól tartottam a folyamatos, oknélküli resetek miatt. Mostmár beleférne egy F690-esb is :D

Még egy dolog: a disassembly listing. Ez egy annyira kényelmes és kellemes funkció, hogy akik a windows alatti MPLAB-ba integrált C30-at használják, nem is érzik át mennyire hiányzott linux alól. Annyira, hogy arra vetemendtem, hogy átnézzem a C30-as doksikat és a linker beállítások között megtaláljam a megoldást:

# wine /path/a/C30/bin/pic30-objdump.exe -S -d main.o > main.asm

A -S kapcsoló kapcsolja, hogy ne csak sima disassembly legyen, hanem a forráskódot is mixelje bele. Remélem segít másoknak is!
(UI ha nem működik a pic30-objdump.exe, akkor nekem a pic30-coff-objdump.exe-t kellet használni.)

2008. március 2., vasárnap

C815 és a PICC fordítók

Avagy, az elmúlt pár nap tanulságai. Rég égettem el ennyi tranzisztort, mint tegnap :). A dolog erkölcsi tanulsága a következő (hm, ne nevessen senki): azért mert C és még NPN még nem jelenti azt, hogy BC és hogy C-B-E. Szóval, miután tenger sok tranzisztor elsült (kb 10 :)), felváltva a PNP-k és az NPN-ek, elővettem az adatlapját a tranzisztornak és rögtön realizáltam, hogy nem 1: kollektor, hanem 1: emitter. A dolog szépsége, hogy volt előttem néhány BC szerű lábosztású is.

PICC fordítók:
Bár oly sok jót írtam a CCS PICC fordítójáról, tegnap mégis szakítanom kellett vele. dsPic30F-re készítettem a programot és rögtön belefutottam több problémába: a dsPic-ek támogatása nem teljes és ez nem a megfelelő szó. Sok SFR sincs implementálva, a Motor Control PWM Modult hírből sem ismeri. Hosszas header fájl kiegészítés következett. Aztán hosszasan keresetem az inicializálásomban a hibát, amikor már nem tudtam mást tenni, belenéztem a .lst fájlba. És ott kitünt, hogy a strutc-t, amit ráhúztam a PWMCON SFR-re nem jól fordította át asm-re (PICC 5.057, van már újabb). A felső bájt nulla bitje helyett az alsó bájt 1-esre írt. Mit volt mit tenni, átváltottam MPLAB C30-ra. Szerencsére ez is nagyon jól ment Piklab alatt csak vissza kellett állítani a ccsc fájlt (a wine az alján maradt).
Emellett hozzá kell adni a projekt beállításaihoz custom optionként a linker tabon a -lpic30.

Microchip USB firmware:
Talán az egyik legismertebb USB firmware és PC-s szoftver a microchip által a PICDEM boardhoz kiadott. És bár olyan sokfelé fent van már a neten, hogyha nem azt a boardot használod, ne felejtsd el kivenni a header fájlból a sense pin érzékelést, de azért én is leírom. (Én kivettem a self-power érzékelést is.)




2008. február 27., szerda

CCS Compiler és ICD2 Linux alatt

Nagyon nagy örömömre szolgált, hogy sikerült a CCS fordítót működésre bírni linux alatt. Azt előre bocsájtom, hogy az IDE nem működik (és valószínűleg nem is fog).
A PikLab-ot használom már jó ideje linux alatti IDE-nek PIC programozáshoz. Szép is és rugalmasan fejlődik. (
A Piklab magába olvasztotta a Pikdev-et is.) Támogatja az MPlab ICD2-t és a Pickit2-t is (és még sok másik programozót). Sok fordítót is támogat. A CCS PICC-t CrossOver Office-on keresztül támogatja a Piklab szerint. Ezen sikerült változtatni és Wine használatával futtatni.

Telepítsük fel a Piklabot. Gentoo esetében található ebuild is, de még nincs bent a Portage treeben, a Piklab oldalról letölthető. Az ebuild telepítését a
Third Pary Ebuilds (Külső ebuildek) bejegyzésben már leírtam.

Ezután telepítsük a PICC-t wine segítségével. Lépjünk be a könyvtárba, ahol a PICC telepítő van. Indítsuk el a telepítőt a wine segítségével. Az egyetlen fontos dolog, hogy a PICC-t olyan könyvtárba rakjuk, hogy az elérési útvonalában ne legyen space (üres karakter)! Tehát pl: c:\PICC. Ha nem ide lett telepítve, hanem a Program Files könyvtárba, nem gond, áthelyezhetjük kézzel is, de editelni kell a ccsc.ini filet és átírni az útvonalakat.

# wine pcwhdupd.exe

Kövessük a telepítő útmutatását. Telepítsünk fel minden CCS programot, amire szükségünk van (az MPLAB pluginre többé nem lesz :D).

Meg kell még hackelni a ccsc filet is. Ez Gentoo esetében a /usr/bin könyvtárban található meg.

# joe /usr/bin/ccsc

Én kb mindent kitöröltem, csak két sor maradt (feltételezve, hogy a C:\PICC könyvtárba lett telepítve):

#!/bin/sh
/usr/bin/wine "C://PICC//Ccsc.exe" "$@"

És ennyi. Indítsuk el a piklabot:

# piklab

Válasszuk ki a fordítót az ablak jobb alsó sarkában találjuk meg. Ellenőrizhetjük a működést, ha a "Settings" menüben a "Fordítóprogramok beállításai" parancsra kattintunk és kiválasztjuk a "C compilers" közül a "CCS compiler"-t. Ekkor meg fog jelenni a CCS verzió ablaka, ha mindent jól csináltunk. Innentől már csak az F8-at kell nyomkodni :D

dsPicek:
Ha dsPicet szeretnél programozni, jó esélyed van rá, hogy a piklab 0.15.2-es még azt fogja mondani, hogy a CCS fordító nem támogatja (azt hiszem, hogy a 24F-esekre is). Ezt ne hidd el neki semmiképpen! :) Annyi a feladatod, hogy a Continue gombra kattintassz. És már jön is a hibaüzi. Ennek elkerüléséhez a fordító beállításaihoz (a Project Settingsnél) a fordító meghívását át kell állítani automatikusról és hozzá kell még írni a "+FD" parancssori parancsot.
Ezután is ki fogja írni a Piklab, hogy a CCS nem támogatja, viszont le fog fordulni.

Ráadás: CCS Help
Ráadásként még a PCW súgóit is el lehet érni. A PICC súgófileok .chm formátumúak, ami linux alatt is megnyitható. Én az xchm programot használom erre, de biztos van másik is (ami talán jobb, karakter megjelenítési problémáim vannak néha).
Ezek a súgofileok a C:\PICC könyvtárban vannak, a szokásos online súgó a Ccsc.chm.

# xchm Ccsc.chm

Kereshető, ugyanúgy, mint a windows alatt.