Софтуер PWM с 16F628

G

Guest

Guest
Здравейте,

Бих искал да карам 3 светодиода с 16F628 и аз искам да светодиоди ефекти на избледнява и избледняват out.Fade Всъщност оказва озарява светодиоди например slowly.For в довели 3.3V е в най-ярката position.The MCU трябва да започне в 0 V и увеличаване на напрежението доведе slowly.The изчезнат ефектът е обратен на този operation.So, как мога да го дизайн с 16F628 и улавяне и съхранение Снимка компилатор?Всяка идея, например, схеми, в кода добре дошли!

Анализатор.

 
задвижване на всички светодиоди обща за една I / O казват B0 и след това свързване на две I / O доведе до всеки използва Честотен на Mpx преплитат, че е обратнопропорционална на гниене курс латентност () от светодиодите (колко време е необходимо за довело до отивам скучна след мощност до)

по този начин можете да контролирате яркостта

аз съм да разбера защо три светодиода избледняват в и извън
странно искане

 
Благодаря ви много, но аз не можах да разбера принципа на тази design.So аз не мога да пиша на фърмуера за this.Can ли да ми дадете пример в CCS за това?Искам първо доведе озарява бавно, изчакайте 1 минута след потъмнее slowly.After тази втора доведе озарява бавно, изчакайте 1 минута след потъмнее slowly.After, че миналата доведе озарява бавно, изчакайте 1 минута след потъмнее slowly.Finally ще ги повтарят непрекъснато.

Аз ще дам този смисъл, за да украсят малък модел

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Усмивка" border="0" />Благодаря предварително.

Анализатор.

 
Аз съжалявам, че Dont разбере принципът

това е всичко, което виждате е въпрос на коефициент на запълване
колко време един закачам накара е на relavive да Tho другата е на разстояниеDont ви се нуждае от примери на код

Вие просто трябва да се мисли за мин и запишете на senario

да получите доведе до потъмнява и озарява, което трябва да рампа относителната цикъл мито

двете I / O пина ще осигури ток за до три светодиода (сегашното ниско такива) отчитане на всеки етап

така добър съвет е да се отнасяме към всеки чифт щифтове като пристанище

товарене всички пристанища наведнъж

Mpx на "обща" PIN карам за връщане трябва наистина да се ръководи от един транзистор или FET
и това трябва да се strobed с постоянна скорост на

така че може да доведе всяка стъпка между "банка" от своя странатака че от време и това, което трябва да направите
нарисувай

IM код не е машина за вашия проект<img src="http://www.edaboard.com/images/smiles/icon_lol.gif" alt="Райски" border="0" />http://clintonstreet.org/pcomp/week7.html<img src="http://www.edaboard.com/images/smiles/icon_lol.gif" alt="Райски" border="0" />
 
<img src="http://clintonstreet.org/pcomp/img/low_pass.gif" border="0" alt="Software PWM with 16F628" title="Софтуер с PWM 16F628"/>тук е друг метод
CCS има подобни практики, управление и водачите да направят тази работа
вече гледам в помощ за PWM примери

LED затъмняване

Команда pulseout ще неясен един светодиод.Един LED отговаря много по-бързо на променящите се напрежение от двигател, и като pulsewidth получава по-голяма, ще забележите, светодиода завъртане на и на разстояние, отколкото затъмняване.Ниският верига филтъра ще премине гладко това до известна степен.

Филтър вериги ще позволи на напрежение промени само на определена честота да премине.А нискочестотен филтър ще блокират честотите над определени граници, например.Ако напрежението се променя повече от определен брой пъти в секунда, тези промени не ще го направи и преминава през филтъра, и само на един средно напрежение, ще се види.

Използването pulseout като пример, с pulsewidth на 0,001 секунди, нашите напрежение става от високо към ниско 1000 пъти в секунда.Честотата е 1000 промени секунда, или 1000 Херц (Hz).Ако имахме верига филтър, който блокира честоти над 1000 Hz, ние ще видим само едно средно напрежение от другата страна на филтъра, вместо на импулси.

Основен нискочестотен филтър се състои от резистор и кондензатор като това:

Връзката между честотата блокиран и ценностите на кондензатор и резистор включва сложни математически
Ако сте затъмняване един светодиод, започнете с кондензатор 10ľf и 220-ом резистор, и да експериментирате с различни стойности.
Последно редактиран от sick_man на 02 септември 2003 0:19; Редактирано общо 1 път

 
За средно напрежение на продукцията PWM черупки се изчислява като:

VAV = VIN * TM / Т, когато:

VAV е средно напрежение PWM
VIN е пулса на вълните макс стойност (в този случай 5V)
ТМ е белег период, или това е едно и също време на импулса
Т е повторение период от време или честота.Т е сумата от ТМ (марка) TS (пространство)

За кондензатор, ако честотата е над 500/1000Hz тя може да бъде отстранен.Infact устойчивостта на очи ще осигури подходяща изравнителния ефект.

 
Да thanks.I започнаха да симулират вторият но има проблем с it.I използвате тази процедура:

нищожен PWM (INT в)
(
output_high (PIN_B0);
delay_us (30);
output_low (PIN_B0);
delay_us (в);
)

но не мога да конфигурирате изчезнат effect.Proteus дава нестабилна results.I "Ще работят по него.

Анализатор.

 
Приятели,

С този малък код и хардуер Маймуна, аз може да симулира софтуер PWM, но има голям проблем с това.

# включват "C: \ Източник \ PWM \ ozzy.h"

нищожен PWM (INT в)
(
output_high (PIN_B0);
delay_us (30);
output_low (PIN_B0);
delay_us (в);
)

нищожен Main () (
Int I;

setup_counters (RTCC_INTERNAL, RTCC_DIV_2);докато (1) (
PWM (100);

)
)

С този код Proteus показва 1,05 V на ПИН B0.That е ok.But дали бих искал да промените стойността на променливите в PWM (VAR) бавно, като:

# включват "C: \ Източник \ PWM \ ozzy.h"

нищожен PWM (INT в)
(
output_high (PIN_B0);
delay_us (30);
output_low (PIN_B0);
delay_us (в);
)

нищожен Main () (
Int I;

setup_counters (RTCC_INTERNAL, RTCC_DIV_2);
I = 0;

докато (1) (
PWM (I);
delay_us (500);
I ;
)
)

Тя дава нестабилна механизъм results.Software PWM работи само когато той е непрекъснато, като по време (1).

Така че, ако можете да разберете какво искам да кажа, някаква идея?

Анализатор

 
А малко объркан, ако разбира това, което казвате.

Трябва да имате предвид някои от по-долу понятия преди:

1) PWM е просто, както всеки метод на модулация.
2) Поради това, трябва да го носеща честота, на която повторение честота е в този случай, нека каже 1000Hz.
3) модулиране на сигнала.Това е, което е равно аналоговия сигнал се използва за избледняват си светодиод.В твоя случай е задължение цикъл на превозвача.

С по-горе факти, с ум, вие сте управлението на модулатор PWM със снимка, която е без нито една специализирана модулатор чипове PWM, така че вашите фърмуер трябва да спомага за превозвач и модулиране на данни, така че те непрекъснато са предоставени за да се гарантира правилното операции.

Например, ако имате нужда от управление на напрежение 2.5V на вашия LED, трябва да се модулират превозвач с работен обем 0,5 (50%) на честотата на 1000Hz ..... непрекъснато.Така че, трябва да настроите 0.5ms (500us) на марки време (импулс на) и 0.5ms на пространството време (импулс изключен).Освен това, да държи на това условие, че е 2.5V на LED, ви фърмуер ще се справят с непрекъснато пулса на импулса и на разстояние от прехода.

За Proteus, помисли отново, както следва:

а) LED модел е аналог на модела (я използват gurrent генератор вътре, за да симулират макс доведе в момента).Аналоговата част от моделите са симулирани чрез PROSPICE, на labcenter тренажор аналог модул, който се основава на двигателя SPICE3F5.Така че, PROSPICE ще създаде матрица система от линейни уравнения на базата на KCl (Kirkoff Текущият право) анализи на клонове аналог верига.Всички, за да се каже, че аналог симулация е страхотно "време разходите" за персонален компютър, така че най-1000Hz ще бъде много трудно да се получи smooting симулация.

б) Други от аналог модел, LED модел е активен модел, който е части, които могат да се оживи.Този вид на моделите, които дават "илюзия" на движението, както и карикатури.Точно като карикатури, те се основават на много малко количество различни клипове (държави в нашия случай), което е приблизително равен на себе си движение.За да получите различна интензивност, LED Моделът използва 8 отделни държави, от пълна разстояние до пълен осветен на.Това означава, че можете да осъществите с Proteus само appoximation на недвижими замира която се нуждаете.

Въпреки това, преминаването към вашия код, които сте написали:

нищожен PWM (INT в)
(
output_high (PIN_B0);
delay_us (30);
output_low (PIN_B0);
delay_us (в);
)

Ако ти се обадя с PWM (100), вие ще получите продукция на 30us когато пулс-на, последвано от 100us на пулс излитане.Като цяло получавате 130us на периода, който е с честота 7696 Hz.От гледна точка на Протей, то ще е достатъчно наситен с ресурси, при условие, че не разполагате с двойно работно място Xeon компютър.Въпреки това, в недвижими имоти трябва да работи хубаво ... и без кондензатор.

Въпреки това, може да променят малко това рутинно, като честотата постоянен престой, а само импулс промяна ширина.Можете да сложите като параметър на първия delay_us за разлика от периода и пулс-ниски ширина.Това е:

нищожен PWM (INT в)
(
output_high (PIN_B0);
delay_us (1000-C);
output_low (PIN_B0);
delay_us (в);
)

В този случай честота ще бъде 1000us (1000Hz) и трябва, например, можете да споделите с = 500, ти ще се постигне по-импулс = 500us и пулс-ниски = 500us, че е 1000Hz с 50% мито цикъл, и по
- това условие, ще се постигне на средно напрежение 2.5V (разтоварени състояние).
Все пак, за да се гарантира операции ще ви е необходим, докато блок или да прекъсва Driven рутинни, или каквото и полезно да се обадя по-горе непрекъснато рутинна.Надявам се този дълъг пост (съжалявам) ще ви помогне малко.

 
Здравейте, аз действително нужда от помощ, аз съм използвал преди PWM с pic16f874 IM, но сега като се използва pic16f628 и аз прав арго добивам на PWM да работят.

Им използване на кода е обяснено в микрочип средночестотен фиш MCU:Код:CLRF CCP1CON; ККП модул е изключен

CLRF TMR2; Ясно Timer2

MOVLW 0x7F;

MOVWF PR2;

MOVLW 0x1F;

MOVWF CCPR1L; Duty Cycle е 25% от PWM Период

CLRF INTCON; неспособен прекъсва и ясни T0IF

BSF СТАТУС, RP0; Bank1

ФБК TRISC, PWM1; Направете ПИН продукция

CLRF PIE1; неспособен периферни прекъсват

ФБК СТАТУС, RP0; Bank0

CLRF PIR1; Ясно знамена периферни прекъсват

MOVLW 0x2C; PWM режим, 2 LSbs на запълване = 10

MOVWF CCP1CON;

BSF T2CON, TMR2ON; Timer2 започва да увеличите
 

Welcome to EDABoard.com

Sponsor

Back
Top