Отговори на тема  [ 27 мнения ]  Отиди на страница 1, 2  Следваща
5 канален PWM ? 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Окт 06, 2005 3:08 pm
Мнения: 98
Местоположение: София
Мнение 5 канален PWM ?
Здравейте, начинаещ съм и се опитвам да навляза в областта на PIC-овете :oops: . Ползвам CCS PicC и съм правил по-простички работи ( директно управление на светодиоди, термометри, LCD и тн. ).

Въпросът ми е как най-лесно ( и качествено :) ) мога да реализирам 5 канален PWM - трябва да управлявам 5 лампи с нажежаема жичка, като трябва да светват плавно последователно, след което да загасват пак плавно една след друга.

Благодаря предварително !


Пон Мар 23, 2009 2:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
С други контролери става доста по - лесно...
MSP430F149 има до 12 PWM изхода, MSP430F5418 - също. ( $4.15 ) Akerman

То верно Никола каза, че за мигане на лампа най-добре става ПИК, ама ти искаш:
1. хем да светкат / гаснат плавно;
2. хем да са ... 5 !!!

Ако наистина искаш да е с ПИК, само с ПИК и целия ПИК, ползвай 5 изхода и софтуерно им направи PWM като ползваш по-бързо прекъсване от таймер.


Пон Мар 23, 2009 5:27 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение 
PIC24FJ32GA002-I/SO, например от Комет за под 3$.
Точно 5 PWM изхода, ако трябва да са хардуерни.

Лампи могат да се мигат и с PIC и с Тексасец, че и с АРМ.


Пон Мар 23, 2009 5:57 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Окт 06, 2005 3:08 pm
Мнения: 98
Местоположение: София
Мнение 
Благодаря за информацията !

Цитат:
Ако наистина искаш да е с ПИК, само с ПИК и целия ПИК, ползвай 5 изхода и софтуерно им направи PWM като ползваш по-бързо прекъсване от таймер.


А дали Ви се намира някакъв примерен код на С. За един PWM разбирам как става, но няма ли да стане малко объркано за 5 изхода ??



Поздрави,
Иво


Пон Мар 23, 2009 6:31 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Сря Апр 05, 2006 9:52 pm
Мнения: 877
Местоположение: Разград
Мнение Re: 5 канален PWM ?
Иво написа:
.. трябва да светват плавно последователно, след което да загасват пак плавно една след друга.
...


аз така както го чета, под последователно светване разбирам, че светва плавно първата лампа и след като е светнала
максимално, започва светването на втората, и т. н.
Ако е така, и един ШИМ би трябвало да е достатъчен. В противен случай, колко от шимовете си променят едновременно коеф. на запълване?


Пон Мар 23, 2009 9:17 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Окт 06, 2005 3:08 pm
Мнения: 98
Местоположение: София
Мнение 
Мисля да го направя с поне 2 PWM-а... В момента ползвам 16F690 директно на демо борда на PicKit 2.


Пон Мар 23, 2009 9:40 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Сря Апр 05, 2006 9:52 pm
Мнения: 877
Местоположение: Разград
Мнение 
Единият ШИМ софтуерен ли ще е?


Пон Мар 23, 2009 9:55 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
Щом прохождаш в CCS-a, влез в "извора" http://www.ccsinfo.com/forum/
Там е пълно с примерен сорс, има и търсачка. Какво повече му трябва на човек?! :)


Пон Мар 23, 2009 9:59 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Окт 06, 2005 3:08 pm
Мнения: 98
Местоположение: София
Мнение 
fan написа:
Щом прохождаш в CCS-a, влез в "извора" http://www.ccsinfo.com/forum/
Там е пълно с примерен сорс, има и търсачка. Какво повече му трябва на човек?! :)



Сега ровя там :)

Иначе единият ШИМ трябва да е софтуерен, тъй като имам само 1 хардуерен на лице ;) Не знам как е по удачно - 1 софтуерен и 1 хардуерен или 2 софтуерни.


Пон Мар 23, 2009 10:03 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Вто Окт 03, 2006 11:58 am
Мнения: 924
Местоположение: Ботевград
Мнение 
#include <16F88.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=8000000)
#bit led1=0x06.0 //PORTB.0
#bit led2=0x06.1
#bit led3=0x06.2
#bit led4=0x06.3
#bit led5=0x06.4
#bit led6=0x06.5
#bit led7=0x06.6
#bit led8=0x06.7

int x[9];
int y;

#int_TIMER0
void clock_isr()
{
disable_interrupts(INT_TIMER0);

if(y>x[1]) led1=0;
if(y>x[2]) led2=0;
if(y>x[3]) led3=0;
if(y>x[4]) led4=0;
if(y>x[5]) led5=0;
if(y>x[6]) led6=0;
if(y>x[7]) led7=0;
if(y>x[8]) led8=0;

if(y++>200) // тук може и 254, но при мен при 200 светодиодите светеха на макс.
{
y=0;
if(x[1]>0) led1=1;
if(x[2]>0) led2=1;
if(x[3]>0) led3=1;
if(x[4]>0) led4=1;
if(x[5]>0) led5=1;
if(x[6]>0) led6=1;
if(x[7]>0) led7=1;
if(x[8]>0) led8=1;
};

set_timer0(200);
enable_interrupts(INT_TIMER0);
}

void main()
{
setup_oscillator( OSC_8MHZ );
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);

set_tris_b(0x00);
y=0;

// слагаш твоята програма
}

Това е една моя стара програма с 8 софтуерни ШИМ-а, вързани на PORTB.
с x[1] - x[8] регулираш запълването на ШИМ-овете, респективно силата на светене. При 0 са изгаснали, при 255 светят максимално. Слагаш МОСФЕТ-и за лампите и си готов.
Дано ти свърши работа като начало.


Пон Мар 23, 2009 10:21 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Окт 06, 2005 3:08 pm
Мнения: 98
Местоположение: София
Мнение 
ZEUS, благодаря много !!! Кодът е много полезен. Аз също поразтърсих тук-там и намерих следното ( тук съм го модифицирал за мойте нужди де.. ):

Код:
#include <16F690.h>
#fuses INTRC_IO,NOWDT,NOPROTECT, NOBROWNOUT
#use delay(clock=8000000)
#use standard_io(c)
#define preload 65458
#define lamp1 pin_c0
#define lamp2 pin_c1
#define lamp3 pin_c2

//**************************************************************************************************
//Global variables
//**************************************************************************************************

int lamp1_duty;
int lamp2_duty;
int lamp3_duty;
int16 Intcount;

//**************************************************************************************************
//100Hz pwm (interrupt at 25.8kHz
//**************************************************************************************************

#INT_TIMER1
void timer_irq()
{
    set_timer1(preload);
   
   if (Intcount < 255)
    {
      if (Intcount == lamp1_duty)
       {
         output_low(lamp1);
       }   
      if (Intcount == lamp2_duty)
       {
         output_low(lamp2);
       }   
      if (Intcount == lamp3_duty)
       {
         output_low(lamp3);
       }   
    }
   
   else if(Intcount == 255)
    {
      Intcount = 0;
      output_high(lamp1);
      output_high(lamp2);
      output_high(lamp3);   
    }   
    Intcount++;
}


//**************************************************************************************************
// Main Program
//**************************************************************************************************

void main()
{
int i;


    setup_oscillator(OSC_8MHZ);
    setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
    enable_interrupts(INT_TIMER1);
    enable_interrupts(GLOBAL);
   
   Intcount = 0;
   
lamp1_duty = 1; 
lamp2_duty = 1;
lamp3_duty = 1;
   
for(i=0; (i<200) ;i++)
    { lamp1_duty = i;
      if ( lamp1_duty>50 )
      lamp2_duty = (lamp1_duty - 49);
       else lamp2_duty=1;
      if ( lamp2_duty>50 )
      lamp3_duty = (lamp2_duty - 49);
      else lamp3_duty=1;
     
      delay_ms(2);
     
};
   
   

   for (;;)
   {

     
   }
}



Сега е за 3 лампи, но ще го довърша :) Сега го пробвам със светодиоди и преходите стават малко рязки ( т.е. между 0 и 15 изведнъж светва ярко, и в останалото време се дозасилва леко, но мисля, че с лампата с нажежаема жичка ще стане доста по-плавно ( все пак има голяма инертност)...


Благодаря на всички за помоща !


Пон Мар 23, 2009 11:03 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Окт 06, 2005 3:08 pm
Мнения: 98
Местоположение: София
Мнение 
Здравейте отново!

Програмите работят перфектно ( благодарности на ZEUS ), обаче го тествах със светодиоди. Сега като му включа триак и лампа и се получава някакво мигане на лампрата с честота около 15 Hz ( на око ). Реших, че се получава, защото нямам синхронизация с мрежовата честота, но пробвах същата схема и с постоянен ток - лампата пак мига:

Изображение

Забравил съм да сложа и 100 омов резистор на схемата между контролера и триака ( на платката го има ) ;)

Имате ли идея от какво е ?


Пет Мар 27, 2009 11:54 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Сря Яну 18, 2006 12:18 pm
Мнения: 223
Мнение 
Ами аз мисля ,че е от триака , но това е мое мнение :)


Пет Мар 27, 2009 12:10 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Окт 06, 2005 3:08 pm
Мнения: 98
Местоположение: София
Мнение 
MIPS написа:
Ами аз мисля ,че е от триака , но това е мое мнение :)


И аз така мисля.. ама как да го избегна се чудя...


Пет Мар 27, 2009 12:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Мига естествено :)
Иво написа:
Здравейте отново!

Програмите работят перфектно ( благодарности на ZEUS ), обаче го тествах със светодиоди. Сега като му включа триак и лампа и се получава някакво мигане на лампрата с честота около 15 Hz ( на око ). Реших, че се получава, защото нямам синхронизация с мрежовата честота, но пробвах същата схема и с постоянен ток - лампата пак мига:
...................

Забравил съм да сложа и 100 омов резистор на схемата между контролера и триака ( на платката го има ) ;)

Имате ли идея от какво е ?

Ми замисли се защо мига!
1. Този модел симистори имат нужда от включване с импулс и в 2-те лоувълни, най добре е да ползваш подходящ оптрон, за целта потърси из нета да речем MOC3022, хубаво е да си синхронизираш контролера по фаза за да се получи нещо като фазово управление.
Едно е да си правиш PWM с диоди друго с крушки на 220 :!: :)

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Пет Мар 27, 2009 12:14 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 27 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 0 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни