Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
ШИМ pic12f683
Bоnus Дата: Ср, 14.09.2011, 18:55  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 01.06.2011

Статус: Offline

Помогите наладить проэкт ШИМ регулировки яркости освещения с плавным включением и выключением. Не работает ни в Протеусе, ни в железе. Суть проэкта: При включении питания лампа плавно разгорается с 0% ШИМ до выставленной регулятором яркостив течении 2-3 сек. Яркость увеличевается не с линейной зависимостью, а с логарифмической. Медленное начало, и быстрое завершение, так как зависимость между потребяемой лампой энергией, и выдачей освещения так-же не линейна. Затем лампа горит с яркостью выставленной регулятором. В любой момент яркость можна изменить. После выключения питания, схема продолжает работать так как прежде пристегнула себя резервным питанием. Это необходимо для завершения процесса медленного выключения. После чего схема отключается от резервного питания, и обесточивается.

Модель в Протэусе не получается выложить. Пишет недопустимый формат изображения.

Сообщение отредактировал Bоnus - Ср, 14.09.2011, 19:03
ЯНДЕКС Дата: 14.09.2011
ivan_fd Дата: Ср, 14.09.2011, 23:10  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Что именно не работает? В протеусе вы и не увидите как медленно загорается лампа.
Bоnus Дата: Чт, 15.09.2011, 01:09  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 01.06.2011

Статус: Offline

На выводе GP2 отсутствует ШИМ сигнал в железе. Слово конфигурации 0x3FCC . Может в регистрах что-то не выставил?
Сообщение отредактировал Bоnus - Чт, 15.09.2011, 01:17
ivan_fd Дата: Пт, 16.09.2011, 12:27  |                                                                                                                Сообщение # 4
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Вот смотрите, должно работать.
Прикрепления: HPWM_12F683.rar (19.8 Kb)
Bоnus Дата: Вт, 20.09.2011, 17:41  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 01.06.2011

Статус: Offline

Большое спасибо Иван за помощь! Программа заработала. Было-бы интерестно узнать в чем заключалась ошибка. Одноако появились еще две проблеммы. Первая : При Dutycycle равном 0 (PWM=0%)ситуация не такая идеальная как описанно здесь http://www.terrarus.ucoz.ru/proton_....wm.html На выходе ШИМа (CCP1) GPIO.2 нет чистого нуля. Осцилограф показал довольно частые всплески которые не дают погаснуть светодиоду. Кстати в вертуальном осцилографе Протеуса они тоже присутствуют. Как от них избавится? Пробовал После отработки Шима переключать GPIO.2 с выхода на вход TRISIO = %00001101. Не помогло. Low GPIO.2 тоже не помогло. Здесь http://www.terrarus.ucoz.ru/proton_....wm.html В примечание 1 написанно что значение Dutycycle равное максимальному предельному значению 255 лучше не использовать, а ограничиться максимальным значением равным 254, так как при значениее Dutycycle = 255 выходной сигнал импульсной последовательноти PWM иногда может быть нестабилен. Так может быть по этой же причине и при минимальном значении Dutycycle = 0 сигнал тоже не стабилен. Но как тогда быть? Ведь от него нельзя отказатся. Должен же быть способ перевода ШИМ в полный ноль.
ivan_fd Дата: Ср, 21.09.2011, 10:20  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Первое, что я заметил. - CCP1CON = %00001100 ' Настройки ШИМ.
Если стоит эта строчка, то на выходе ШИМ постоянно идет ШИМ сигнал.
Возможно это только в протеусе, а в железе все будет нормально.

Второе, собственно почему и не работал код.

Вот эта строчка Until VYKL = High

Здесь Вы хотите проверить не сидит ли на выводе высокий уровень.
Нужно написать Until VYKL = 1, потому что High - это директива
которая устанавливает в высокое логическое состояние порт или бит порта.

Все. Удачи!
vv Дата: Пт, 23.09.2011, 15:24  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

Quote (ivan_fd)
Если стоит эта строчка, то на выходе ШИМ постоянно идет ШИМ сигнал.

немного не так. приведу цитату из ДШ:
Quote

The CCP1 pin is set. (Exception: If the PWM duty
cycle = 0%, the pin will not be set.)

Quote

Note: If the pulse width value is greater than the
period the assigned PWM pin(s) will
remain unchanged.


т.е. даже если в регистре CCP1CON = %00001100, то:
при CCPR1L = %00000000 на выходе будет стабильный 0

и еще, если длительность импульса ШИМ больше периода ШИМ, вывод ССР не будет иметь низкий уровень, на выходе получаем стабильный 1
Bоnus Дата: Пт, 23.09.2011, 16:12  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 01.06.2011

Статус: Offline

Quote (vv)
If the pulse width value is greater than the period the assigned PWM pin(s) will remain unchanged. если длительность импульса ШИМ больше периода ШИМ, вывод ССР не будет иметь низкий уровень, на выходе получаем стабильный 1

Мне показалось что эта фраза переводится несколько по иному: Если значение ширины импульса больше периода, то-есть значение ШИМ даже меньше 0, и образно говоря отрецательное, то ШИМ при этом не меняется, а остается прежним (предидущее значение)
Quote (vv)
то: при CCPR1L = %00000000 на выходе будет стабильный 0

Так как-же всетаки на выходе добится стабильного нуля?
vv Дата: Пт, 23.09.2011, 17:46  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 132
Репутация: 6   ±
Замечания:   ±
На сайте с 13.11.2009

Статус: Offline

Quote (Bоnus)
Так как-же всетаки на выходе добится стабильного нуля?


написал же))) установить CCPR1L в 0х00
сам так делаю.
ivan_fd Дата: Пт, 23.09.2011, 21:42  |                                                                                                                Сообщение # 10
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (vv)
немного не так. приведу цитату из ДШ:


Понятно, что так не должно быть, но так показывает Протеус.
А железе я не пробовал.
  • Страница 1 из 1
  • 1
Поиск: