Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 29.01.2012, 18:05  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
Вопрос Регулирование яркости светодиодов по ШИМ на PIC12F629

Привет Всем! Решил научиться регулировать яркости светодиодов по шим с помощью пика! Пытаюсь сформулировать и реализовать на МК ШИМ управление светодиодами, точнее регулировать яркости светодиодов. Вопрос 1: Какую частоту ШИМ надо взять чтобы регулировать? Вопрос 2: Примерно как выглядит на асме? Кнопка SB1 необязательно задействовать... Схема внизу!Нажмите на изображение для увеличения
Название: SCHEME.JPG
Просмотров: 834
Размер:	17.1 Кб
ID:	31093
Реклама:
Alpout вне форума  
Непрочитано 29.01.2012, 19:34  
Bumbarra
Вид на жительство
 
Регистрация: 16.09.2011
Сообщений: 343
Сказал спасибо: 10
Сказали Спасибо 171 раз(а) в 104 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

1. Частоту - любую. Минимум 25 Гц, чтобы не было заметно мерцания.
2. Регулировать так - частота включения светодиодов - постоянная, а время свечения светодиодов - меняется. От нуля при выключенных светодиодах до полного периода при полностью включенных.

Реализовать можно так.
8-битный таймер TMR0 с предделителем использовать для задания периода цикла ШИМ. 16-битный таймер TMR1 использовать для регулирования - будем задавать время включения светодиодов.
Настраиваем маску прерываний на разрешение прерываний от TMR0 и TMR1
Настраиваем оба таймера на работу от внутреннего генератора.
Рассчитываем период полного счета TMR0 до переполнения. Если частота контроллера 4 МГц, значит с предделителем 1:64 период полного счета составит примерно 0,016 с. Около 60 Гц. Пойдет.

По переполнению таймера TMR0 будет устанавливаться флаг прерывания T0IF в регистре INTCON. Контроллер перейдет по вектору прерываний. Определяем источник прерывания, включаем светодиоды.
Теперь надо задать время свечения светодиодов в течение цикла ШИМ.
Записываем в 16-битный таймер TMR1 число, от которого начнется приращение TMR1, включаем TMR1 и он считает до переполнения, затем устанавливает флаг прерывания TMR1IF в регистре PIR1. Контроллер перешел по вектору, определяем источник прерывания и гасим светодиоды.
Ожидаем переполнения от таймера TMR0 - цикл повторится снова.
Чем больше число, записываемое в TMR1, тем меньше времени будет он считать до переполнения, а следовательно, меньше будут светиться светодиоды. Нужное определяем расчетами, исходя из тактовой частоты генератора.
и не забываем, что TMR1 - 16-битный, максимальный счет 65536 без предделителя. Учитываем все это.

Можно и наоборот, поменять местами таймеры, кстати.

Последний раз редактировалось Bumbarra; 29.01.2012 в 19:37.
Bumbarra вне форума  
Сказали "Спасибо" Bumbarra
Maxim39 (18.11.2013)
Непрочитано 29.01.2012, 19:43  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

Сообщение от Bumbarra Посмотреть сообщение
1. Минимум 25 Гц, чтобы не было заметно мерцания.
Вообще-то и 50 Гц заметно, не говоря уже за 25 Гц.
alvadep вне форума  
Непрочитано 29.01.2012, 19:47  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
По умолчанию Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

а если программно? то есть без таймера
Alpout вне форума  
Непрочитано 29.01.2012, 20:05  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
По умолчанию Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

я думаю так..задать ШИМ 5кГц. И внутри нее регулировать 0 и 1. В моем случае нужно регулировать 0 в портах. По формуле получается так: чтобы получить 2.5В от 5В, тогда t0=0,5=›T0=t0.Tшим =› T0=0,5.(1/5000)=0,0001c. Отсюда, понимаю что с такой частотой на выходе никак не получу пол яркости светодиодов...Опираясь на теорию. Хотя на практике все равно не будет вточь-точь 2.5В..хм..
Alpout вне форума  
Непрочитано 29.01.2012, 20:08  
Bumbarra
Вид на жительство
 
Регистрация: 16.09.2011
Сообщений: 343
Сказал спасибо: 10
Сказали Спасибо 171 раз(а) в 104 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

Так это и так программно. Аппаратно ШИМ реализуется в тех контроллерах, где есть моуль CCP.
А если через регистры общего пользования - да без проблем.
Всё то же самое, только вместо TMR0 - цикл формирования паузы (из двух 8-битных регистров, счет на уменьшение до 0), а внутри этого цикла - вместо TMR1 - еще один такой же цикл формирования паузы, только с предустанавливаемыми значениями счета.

Агаааа, наверно еще не разобрался в работе прерываний, потому и страшно с ними связываться, так?
Bumbarra вне форума  
Непрочитано 29.01.2012, 21:30  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
Смех Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

Кнопочку ЛУТше замыкать на "землю"...
Сообщение от Alpout Посмотреть сообщение
Примерно как выглядит на асме?
Страшная штука - АСМ для младших PIC...
Мож и накосячил что - "давненько не брал в руки шашек"(с) ...
(не писал под PIC)
PHP код:
    Led1        EQU  0
    Led2        EQU  1
    Led3        EQU  2
;*****   Variables   ************
CBLOCK 0x20
cnt    
;счётчик
cLed1    
Уровень яркрсти Led1
cLed2    
Уровень яркрсти Led2
cLed3    
Уровень яркрсти Led3
ENDC
;Инициализация и тд.
; (
всякое разное)
;
Загрузка начального свечения.
    
MOVLW    0x40
    MOVWF    cLed1
    MOVLW    0x80
    MOVWF    cLed2
    MOVLW    0xC0
    MOVWF    cLed3
;Основной цикл
mainloop
    movf    cLed1
,0        ;читаем уровень яркости Led1
    subwf    cnt
,0        ;вычитаем из счётчика
    btfss    status
,0    ;если флаг переноса установлен жжом
    b        led1off        
;Иначе гасим Led1
    BCF        GPIO
,Led1    ;Зажигаем Led1
    b        led1skip
led1off
    BSF        GPIO
,Led1    ;Гасим Led1
led1skip
    movf    cLed2
,0        ;читаем уровень яркости Led2
    subwf    cnt
,0        ;вычитаем из счётчика
    btfss    status
,0    ;если флаг переноса установлен жжом
    b        led2off        
;Иначе гасим Led2
    BCF        GPIO
,Led2    ;Зажигаем Led2
    b        led2skip
led2off
    BSF        GPIO
,Led2    ;Гасим Led2
led2skip
    movf    cLed3
,0        ;читаем уровень яркости Led3
    subwf    cnt
,0        ;вычитаем из счётчика
    btfss    status
,0    ;если флаг переноса установлен жжом
    b        led3off        
;Иначе гасим Led3
    BCF        GPIO
,Led3    ;Зажигаем Led3
    b        led3skip
led3off
    BSF        GPIO
,Led3    ;Гасим Led3
led3skip
    incf    cnt
    b        mainloop    
;зациклились :-) 
З.Ы.
1. ШИМ будет молотить на безумной скорости - нужна задержка в основном цикле
2. Яркость светиков будет "плавать" от изменения питалова - нет ОС по току

По-хорошему всё это надо делать с DC/DC на выходе и МК нужен с АЦП...

З.Ы.Ы.
Писано в блокноте, не проверялось даж в симулякре...

Последний раз редактировалось omercury; 29.01.2012 в 21:51.
omercury вне форума  
Непрочитано 29.01.2012, 21:45  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

Да, кстати, резисторы ограничивающие ток светодиодов надо бы увеличить раза в 4 минимум.
alvadep вне форума  
Непрочитано 29.01.2012, 23:28  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
По умолчанию Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

Сообщение от Bumbarra Посмотреть сообщение
где есть моуль CCP
пока модулем не займусь, позже гляну.


Сообщение от Bumbarra Посмотреть сообщение
8-битный таймер TMR0 с предделителем использовать
с таймером тож поработаю. цель - реализация шим на РОН. позже готовые регистры задействую.

Думаю удалось реализовать задуманное...R-red led(красный светодиод GP0). Управление автономно. то есть без кнопок. Тактовая частота генератора 4МГц. А значит 1м.ц. выполняется за 1мкс. Контроллер PIC12F629. Частота задается внутренне. Коэфициент OscCal не стер записал отдельно в текстовик. Частоту ШИМ задал на 5КГц. Задача: получить на выходе примерно 2.5В с помощью ШИМ. Отсюда следует время 0 и 1 должны быть по 100мкс! Т.е. за 100 машинных циклов. Ниже сердце программы, проверьте.вроде правильно! с точностью на 100мкс.:

R_СBLINK
MOVLW B'00000000' ;TURN ON R LED
MOVWF GPIO

NOP
NOP

MOVLW 0X1E ;TIME COEFICIENT FOR T0
MOVWF T0 ;
MOVLW 0X1F ;TIME COEFICIENT FOR T1
MOVWF T1 ;

CYCLE0 DECFSZ T0, F
GOTO CYCLE0


MOVLW B'00000001' ;TURN OFF R LED
MOVWF GPIO

CYCLE1 DECFSZ T1, F
GOTO CYCLE1

NOP

GOTO R_CBLINK
Alpout вне форума  
Непрочитано 29.01.2012, 23:41  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
По умолчанию Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

Сообщение от alvadep Посмотреть сообщение
Да, кстати, резисторы ограничивающие ток светодиодов надо бы увеличить раза в 4 минимум.
почему?? у меня и так работали, все по расчету: 5-3=2В на резисторах. R=2/0.02=100 Ом. Это старая схема поэтому по 51Ом ставил. Такто когда первую прошивку залил на МК и проверил на моргание светодиода. Все работало. Тока прога не моя была))
Alpout вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение яркости RGB светодиодов с помощью PIC12F629 Alpout Микроконтроллеры, АЦП, память и т.д 1 07.01.2012 23:04
Достаточно ли будет яркости в 7сегм LED индикаторе? code-by Микроконтроллеры, АЦП, память и т.д 7 28.10.2010 22:55
Линейное измен-е яркости PWM'ом tempora Микроконтроллеры, АЦП, память и т.д 100 18.03.2009 19:52
PID регулирование greyzzz Микроконтроллеры, АЦП, память и т.д 4 06.03.2007 20:41
регулирование температуры mishutka Измерительное оборудование 2 23.09.2006 08:25


Часовой пояс GMT +4, время: 01:22.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot