|
|
  |
ШИМ, сделать три канала? |
|
|
|
Oct 7 2007, 22:42
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Цитата(rezident @ Oct 8 2007, 02:22)  ps1x, вы партизан, разведчик или попугай?  Что вы заладили можно ли, можно ли? Вас пока еще русским языком просят озвучить требуемые вам параметры ШИМа (период, шаг/количество ступеней и т.п) и предполагаемый способ его реализации: программный или аппаратный? Ни то ни другое. Надо подключить РГБ светодиод, с плавным изменением цвета, и в целом, способ достижения этого мне не важен, важно понять как... А параметры ШИМ 256 уровней 5кГц.
|
|
|
|
|
Oct 8 2007, 06:19
|

Местный
  
Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459

|
Один из вариантов программно так: устанавливаем таймер на нужную частоту.(5кгц) По прерыванию инкрементируем значение переменной (byte) (256). Сравниваем это значение с переменной каждого канала(переменные которые,в нашем случае, задают яркость св.диода). Если значение переменной яркости канала больше/меньше значения инкрементируемой переменной, то выставляем порт в 0/1. Все. Записывая нужные значения в переменные яркости канала получаем нужную нам яркость на св.диоде. Зы: Предвижу замечания по поводу коррекции значений констант для значений яркости..из-за особенностей восприятия свечения глазом.. и т.п. вещи..  но я обьяснил только принцип программной реализации шима.. Будет вопрос по линейности зажигания/гашения диодов обсудим..  Зы2: Для 5кГц 256 значений многовато.. Надо делать меньше значений либо прерываня хотыбы 25кГц.. тогда 100Гц мерцания видно уже не будет.
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
Oct 8 2007, 11:38
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(ps1x @ Oct 7 2007, 21:42)  Надо подключить РГБ светодиод, с плавным изменением цвета, и в целом, способ достижения этого мне не важен, важно понять как... А параметры ШИМ 256 уровней 5кГц Вот тут было обсуждение. Вообще, не стесняйтесь пользоваться поиском, многие вопросы на форуме "обсосаны до костей".
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Oct 8 2007, 11:54
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Цитата(=GM= @ Oct 8 2007, 15:38)  Вот тут было обсуждение. Вообще, не стесняйтесь пользоваться поиском, многие вопросы на форуме "обсосаны до костей". к сожалению, поиск по словам ШИМ и PWM ничего не дал (сдается, ибо слово короткое)
|
|
|
|
|
Oct 8 2007, 12:18
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(ps1x @ Oct 8 2007, 10:54)  к сожалению, поиск по словам ШИМ и PWM ничего не дал (сдается, ибо слово короткое) Да ладно, всё ищется на раз. Я ж вам дал ссылку http://electronix.ru/forum/index.php?showtopic=23143, вы туда ходили? Вот ещё ссылка на телесиси http://www.telesys.ru/wwwboards/mcontrol/1...ges/37530.shtmlТам правда обсуждалась 8-ми канальная шим, ниже приведен кусочек для 3-х каналов, разбирайтесь. Код void interrupt isr(void) { if(--refr) { if(--(chan1)) portb |=0x01; //нога pb0 if(--(chan2)) portb |=0x02; //нога pb1 if(--(chan3)) portb |=0x04; //нога pb2 } else { chan1 = value1; //уставка 1 chan2 = value2; //уставка 2 chan3 = value3; //уставка 3 refr = 255; //счетчик квантов шим portb = 0; //начало шим } }
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Oct 8 2007, 23:48
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Цитата(=GM= @ Oct 8 2007, 16:18)  Да ладно, всё ищется на раз. Я ж вам дал ссылку http://electronix.ru/forum/index.php?showtopic=23143, вы туда ходили? Вот ещё ссылка на телесиси http://www.telesys.ru/wwwboards/mcontrol/1...ges/37530.shtmlТам правда обсуждалась 8-ми канальная шим, ниже приведен кусочек для 3-х каналов, разбирайтесь. Код void interrupt isr(void) { if(--refr) { if(--(chan1)) portb |=0x01; //нога pb0 if(--(chan2)) portb |=0x02; //нога pb1 if(--(chan3)) portb |=0x04; //нога pb2 } else { chan1 = value1; //уставка 1 chan2 = value2; //уставка 2 chan3 = value3; //уставка 3 refr = 255; //счетчик квантов шим portb = 0; //начало шим } } Да спасибо
|
|
|
|
|
Oct 10 2007, 22:58
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(SasaVitebsk @ Oct 10 2007, 13:25)  Используя таймер 1 и выводы OC1A,B,C с соответствующими регистрами, можно всё это реализовать проще и точнее. Программы практически не будет Сиё называется аппаратный шим(:-). Кстати, Александр, недавно вы упоминали реализацию на си 12 программных шимов с периодом 5 кГц. Сколько разрядов у шима удалось реализовать? Спрашиваю потому, что тоже реализовал 24 канала шим с частотой 6 кГц, правда, на ассемблере. Шим был 8-разрядный, т.е. 256 позиций. Клок 20 МГц.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Oct 11 2007, 09:01
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(=GM= @ Oct 11 2007, 01:58)  Сиё называется аппаратный шим(:-). Кстати, Александр, недавно вы упоминали реализацию на си 12 программных шимов с периодом 5 кГц. Сколько разрядов у шима удалось реализовать? Спрашиваю потому, что тоже реализовал 24 канала шим с частотой 6 кГц, правда, на ассемблере. Шим был 8-разрядный, т.е. 256 позиций. Клок 20 МГц. Там был программно аппаратный ШИМ завинченный под управление двигателями. Точность 3200 в принципе определяется частотой (16М). То есть таким образом при 256 полочках можно теоретически довести частоту до 62кГц. Но в реальности, естественно всё выглядит хуже.  Мне в двигателях не надо находится в произвольном месте ШИМа. Я нахожусь в фиксированных точках синуса. Поэтому практически могу обслуживать любое число двигателей. Это определяется только наличием свободных портов. В 1989 году на однокристалке 1816ве48 (8048) (7МГц) реализовал ДУ для телевизора.  Там был плавный программный ШИМ на 4 канала с частотой 100Гц и 64 ступеньки.  В принципе число каналов ШИМ практически не влияет на характеристики самого ШИМа. На него влияет только производительность процессора и его аппаратные возможности. При построении программного ШИМа неизбежно сталкиваешься с погрешностями на краях. То есть при слишком малых и при слишком больших значениях. Естественно при высокой частоте ШИМа. 2 GM как ты с этим боролся. Я никак. Просто констатировал ошибку.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|