PWM s PIC12F675

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
SDZ
Příspěvky: 420
Registrován: 11 bře 2011, 00:00

PWM s PIC12F675

#1 Příspěvek 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.
Uživatelský avatar
SDZ
Příspěvky: 420
Registrován: 11 bře 2011, 00:00

#2 Příspěvek od SDZ »

Nikdo nic? Poradil by někdo princip ?
Řešit to timerem a přerušením ? Kdy načítat AD?
Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 00:00
Bydliště: Vysočina

#3 Příspěvek 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í.
Žádnej učenej z nebe nespadl ...
Uživatelský avatar
jezevec
Hlavní moderátor
Příspěvky: 6103
Registrován: 13 čer 2004, 00:00
Bydliště: Břeclavsko
Kontaktovat uživatele:

#4 Příspěvek od jezevec »

Tadyse můžeš inspirovat.
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#5 Příspěvek od procesor »

S PIC16F675 sa PWM nedá (iba ak softom s ISR aj 200 Hz by bol problém) lebo na to nemá HW.
Uživatelský avatar
SDZ
Příspěvky: 420
Registrován: 11 bře 2011, 00:00

#6 Příspěvek 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
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#7 Příspěvek 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.
Přílohy
DIMMER01.asm
(10.7 KiB) Staženo 154 x
Uživatelský avatar
SDZ
Příspěvky: 420
Registrován: 11 bře 2011, 00:00

#8 Příspěvek 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)
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#9 Příspěvek 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.
Uživatelský avatar
SDZ
Příspěvky: 420
Registrován: 11 bře 2011, 00:00

#10 Příspěvek 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?
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#11 Příspěvek 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.
Uživatelský avatar
Atlan
Příspěvky: 4514
Registrován: 10 kvě 2004, 00:00
Bydliště: Košice

#12 Příspěvek 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...
Uživatelský avatar
SDZ
Příspěvky: 420
Registrován: 11 bře 2011, 00:00

#13 Příspěvek 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)
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#14 Příspěvek 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.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“