Stránka 1 z 1
PWM s PIC12F675
Napsal: 14 úno 2012, 20:48
od SDZ
Zdravím,
potřeboval bych poradit jak řešit program (píšu v Mikropascalu) PWM regulátor s frekvencí 200-400Hz ,možná ideálně 255 kvůli AD převodníku.
Schéma nějak takhle: Potenciometr připojený na jeden AD převodník,jeden výstup PWM ,víc není třeba,možá jeden vstup pro tlačítko(PWM by fungovalo po celou dobu stisku tlačítka).
Díky za každou radu,tip informaci k tématu.
Napsal: 15 úno 2012, 16:19
od SDZ
Nikdo nic? Poradil by někdo princip ?
Řešit to timerem a přerušením ? Kdy načítat AD?
Napsal: 15 úno 2012, 16:35
od Chenzee
Programuji v asm ale myslím, že rámcově by to mělo být tak, že máš vytvořenou funkci PWM, která se promítá na výstup a dle potřeby akorát měníš časy té funkce. Tzn. o PWM se staráš pouze tehdy, když chceš provést nějakou změnu. Třeba se pletu, jelikož jsem toto zatím neřešil. Jinak pokud zvolíš vhodný IO, tak již může mít PWM modul jako součást svého hardwarového vybavení.
Napsal: 15 úno 2012, 16:36
od jezevec
Napsal: 15 úno 2012, 20:57
od procesor
S PIC16F675 sa PWM nedá (iba ak softom s ISR aj 200 Hz by bol problém) lebo na to nemá HW.
Napsal: 15 úno 2012, 21:09
od SDZ
Chenzee> Dík za princip.O jiném PICu jsem uvažoval -např 16F88,kterej PWM má a v Mikropascalu by nebyl snad problém ho zprovoznit,ale vycházím z toho co mám(tj. 12F675).
jezevec> díky moc za tip.Tohle přesně potřebuju,ale s menší frekvencí.
Našel by se někdo ochotnej poradit jak ten zdroják upravit pro 12F675 a jak zmenšit frekvenci? (autor používá 500Hz,já bych potřeboval tak nějak nejlíp kolem 200Hz)
Zdroják je tady:
http://www.belza.cz/control/pwm-soft.zip
Napsal: 15 úno 2012, 21:52
od jankop
Procesor ti dobře radí. Princip použitý v tom Belzově PWM nelze použít u 12F675. Tudíž tam inspiraci nehledej.
Mám tady prográmek pro sw PWM pro 16F676, což je stejný procesor jak 12f675, jen má víc pinu. Ale je v asembleru a mám obavy, že se v něm budeš špatně orientovat. A ještě doplním, že program je pro tři kanály a jeho tři čtvrtiny tě nejspíš nebudou zajímat. Základem je inicializace procesoru a především přerušovací rutina, ze které budeš potřebovat jen třetinu.
Napsal: 16 úno 2012, 15:26
od SDZ
Díky moc za rady,tipy.Tak jsem to s tím 12F... vzdal.5eším další problém -našel jsem v krabici 18LF2550,ten PWM má,ale problém je že je potřeba pro frekvenci PWM 200Hz XTAL 1MHz -cena je kolem stovky.Měl by někdo další nápad,tip,jak to řešit ?
jankop>Díky za zdroják.Je to jak píšeš -ten assembler je na mě moc (něco vyčtu,ale ne všechno)
Napsal: 16 úno 2012, 15:54
od procesor
A to je v čom problém, keď pri 4 MHz by to malo 244,14 Hz PWM?
Obyčajne býva opačný problém s nízkou frekvenciou a problémom filtrácie nosnej.
Keď som pred časom robil subsonic presný 10bit generátor od 5...25 Hz sinus, na dobré potlačenie nosnej som musel použiť aktívne filtre 4.rádu.
PWM som si robil pomocou sw, ale za pomoci CCP. Čiste bez HW (CCP) by to nešlo.
Inak na 200 Hz PWM treba 3,276800 MHz oscilátor a to je za facku, kde berieš 1 MHz, ten by dal 61/244/976 Hz
To platí pre 8bitové PWM, pre 10bitove sú frekvencie ešte 4x nižšie.
A to 18F2550 je škoda ta takú srandu.
Napsal: 16 úno 2012, 19:34
od SDZ
procesor>Souhlasím.Jsem rozhodnutej pro PIC 16F88.V datasheetu píšou,že lze nastavit interní oscilator až na 8 frekvencí:
000 = 31.25 kHz
001 = 125 kHz
010 = 250 kHz
011 = 500 kHz
100 = 1 MHz
101 = 2 MHz
110 = 4 MHz
111 = 8 MHz
Potřeboval bych využít ten PIC využít ještě na spínání tří relátek,čtyři AD,1 IO vstup,1 PWM.Motor(24V) co s tím chci ovládat je asi dvakrát větší než motor na stěrače do žigulíka.Potřebuju aby měl dobrej tah už v 1/4 otáček.
Chtěl bych se zeptat - když je spuštěný PWM HW běží nezávisle na hlavním programu?
Napsal: 16 úno 2012, 22:08
od procesor
Nastavíš a ide to samo.
Ak treba zmeniť striedu vložíš novú hodnotu do CCP1L.
Motoru je jedno na akej fr. bude bežať PWM. Pri 20kHz by trochu plakal pomalý budič.
Hodiny treba zvoliť najmä podľa potrebného výpočtového a riadiaceho výkonu. 4 a 8 MHz je použiteľné.
Regulovať motor sa dá rôznymi spôsobmi. Niektoré vyžadujú aj nejakú spätnú väzbu, a slušný výpočtový výkon.
Napsal: 16 úno 2012, 22:48
od Atlan
No to pwm na hardvare tak nizko nepojde aspon nie pri MHz. Ale treba pozriet datasit aka delicka sa da zaradit, zasa si neviem predstavit ten motor pri 20khz... Okrem toho ze to nrprijemne piskat.. pri takych frekvenciach...
Napsal: 17 úno 2012, 00:33
od SDZ
OK.Díky.Proč by to HW nešlo tak nízko (program mi to při 1MHz přeložit povolí)
Pro PWM v Mikropascalu jsou pouze čtyři jednoduchý funkce:
PWM1_Init(200); //200Hz
PWM1_Set_Duty(20);
PWM1_Start;
PWM1_Stop;
Potřeboval bych poradit s nastavením projektu,následně s innicializací hardware.
Není mi jasný jak nastavit v projektu tohle(v závorkách jsou možnosti nastavení):
Internal External Switch Over Mode (Enabled,Disabled)
CPP1 (RB0,RB3) //Pin výstupu PWM ?
Oscillator (LP,XT,HS,EXT Port as IO,INTRC-OSC2 as Clock Out,INTRC-OSC2 as RA,EXTRC-OSC2 as Clock Out,EXTRC-OSC2 asRA)
RA5/MCLR Pin Function Select (MCLR,RA5)
Napsal: 17 úno 2012, 14:55
od procesor
Nájdi si datasheet toho PIC, tam nájdeš odpovede spojené s inicializáciou.
Napr. výstup PWM môžeš mať na RB0, alebo RB3.
Frekvencia PWM je daná frekvenciou Fosc/4 nastaviť sa dá ešte 1/4, alebo 1/16.
Potom sa to ešte podelí číslom 256 pri 8 bitovom PWM, alebo 1024 pri 10 bitovom PWM.