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

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

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

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

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

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


 
Опции темы

Регулирование яркости светодиодов по ШИМ на PIC12F629

Непрочитано 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
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
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.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
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
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: Регулирование яркости светодиодов по ШИМ на PIC12F629

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

Агаааа, наверно еще не разобрался в работе прерываний, потому и страшно с ними связываться, так?
Bumbarra вне форума  
Непрочитано 29.01.2012, 21:30  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
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.RUN
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
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, время: 03:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.