BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: BASCOM AVR в вопросах и ответах

Сообщение zero648 »

В другой ветке писал, что moc3061, теперь уже другой стоит :dont_know:
Реклама
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

zero648 писал(а):Кстати, у тебя MOC3061 с zero-cross, а надо без него, например moc3052


Сейчас moc3041 без детектора нуля...
С уважением,
Алексей.
Реклама
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: BASCOM AVR в вопросах и ответах

Сообщение zero648 »

Как без детектора нуля, только что даташит смотрел moc3014 с zero-cross, я напрмер ставил moc3052.
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: BASCOM AVR в вопросах и ответах

Сообщение zero648 »

zero648 писал(а):Как без детектора нуля, только что даташит смотрел moc3014 с zero-cross, я напрмер ставил moc3052.


Вот цитирую из даташита:

DESCRIPTION
The MOC304_ Series are optically coupled
isolators consisting of a Gallium Arsenide
infrared emitting diode coupled with a monolithic
silicon detector performing the functions
of a zero crossing bilateral triac mounted in a
standard 6 pin dual-in-line package.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

zero648 писал(а):Как без детектора нуля, только что даташит смотрел moc3014 с zero-cross, я напрмер ставил moc3052.


Точно ! Видимо перепутал даташит. А без детектора сейчас нету, получается... Это принципиально ?
Опять придется ЧипДип кормить.

А как насчет синхронизации шима ?... Как это в Баскоме сотворить ?
С уважением,
Алексей.
Реклама
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: BASCOM AVR в вопросах и ответах

Сообщение zero648 »

Принципиально, так как симистор нужно открывать не вовремя перехода через ноль, а в нужный нам момент фазы, а детектор нуля открывает симистор только во время перехода через ноль и если включен светодиод, допустим светодиод мы включили в момент фазы не равный нулю, в этот момент детектор нам симистор не откроет, он будет ждать только ноль, вот и получается либо на полную горит на максимальной мощности, либо вообще не горит. Моргать может из-за неточного отслеживания положительной и отрицательной полуволн, смотря по какой схеме её отслеживать.
Последний раз редактировалось zero648 Вт июл 31, 2012 10:45:08, всего редактировалось 1 раз.
Реклама
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: BASCOM AVR в вопросах и ответах

Сообщение zero648 »

Gordon Shumway писал(а):... Как это в Баскоме сотворить ?

Я из асмовских, все остальное для меня темный лес :dont_know:
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: BASCOM AVR в вопросах и ответах

Сообщение zero648 »

Ну если в двух словах, то примерно так, подключаем наш детектор фазы к МК на внешнее прерывание INT0 или INT1, конфигурируем наше внешнее прерывание на срабатывание по изменению логического состояния на нем, т.е. по переднему и заднему фронту. Пишем для него обработчик, отсюда и отталкиваемя, задержка на включение импулься, длительность импульса, для этого можно припахать любой таймер, хоть 8 битный, хоть 16 битный.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

zero648 писал(а):Ну если в двух словах, то примерно так, подключаем наш детектор фазы к МК на внешнее прерывание INT0 или INT1, конфигурируем наше внешнее прерывание на срабатывание по изменению логического состояния на нем, т.е. по переднему и заднему фронту. Пишем для него обработчик, отсюда и отталкиваемя, задержка на включение импулься, длительность импульса, для этого можно припахать любой таймер, хоть 8 битный, хоть 16 битный.


Начал ваять программный шим. Что-то получилось :)
А как в Баскоме можно менять задержку в waitus ? В хелпе написано, что это константа...
С уважением,
Алексей.
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: BASCOM AVR в вопросах и ответах

Сообщение zero648 »

Что константа, не понял?
Логика простая: при активации внешнего рперывания от INT включается обработчик оного, в обработчике задаем задержку через таймер, таймер отрабатывает задержку и включает свое прерывание, обработчик прерывания таймера настраивает таймер на отработку импульса открывания симистора, но до следующего внешнего прерывания импульс нужно отключить, иначе запустишь следующую полуволну на полную мощность.
Ну как то так :)
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: BASCOM AVR в вопросах и ответах

Сообщение aleksandr-zh »

Вот вам на Баскоме управление симистором, через MOC3051

Код: Выделить всё


Z_cross Alias Pind.2               ' нога   - вход, от детектора перехода через 0 (INT0)
Dimmer_out Alias Portb.1           ' нога   - выход, к оптосимистору на симистор


Config Timer0 = Timer , Prescale = 8       ' конфигурируем таймер 0
Enable Timer0 : Start Timer0

Config Int0 = Change               ' Установка прерывания INT0 на изменение сигнала
On Int0 Z_cross_int
Enable Int0                        ' Прерывание на вход датчика перехода синусоиды через ноль

Config Timer1 = Timer , Prescale = 8       ' конфигурируем таймер 1
Enable Timer1 : Start Timer1
On Ovf1 Ovf1_my Nosave : Enable Ovf1




'----------
Dimmer_modul:                      ' ---------- УПРАВЛЕНИЕ ДИММЕРОМ ----------
 Reset Watchdog
   If Level_dimmer = 0 Then
      Dimmer_on = 0
      Disable Ovf1
     Else
      Dimmer_on = 1
      If Level_dimmer < 8 Then Enable Ovf1
   End If

   If Level_dimmer > 7 Then
     ' Dimmer_delay_w = &HFFFC ' Ярко горит - 230v
     Disable Ovf1
     Dimmer_out = 1
     Level_dimmer = 8              ' <<<<<<<<<<<<<<<<<<<<<<<< ограничитель
   End If
   If Level_dimmer = 1 Then Dimmer_delay_w = 57900       ' Тускло горит - 25v
   If Level_dimmer = 2 Then Dimmer_delay_w = 58300       ' 51v
   If Level_dimmer = 3 Then Dimmer_delay_w = 58700       ' 78v
   If Level_dimmer = 4 Then Dimmer_delay_w = 59000       ' 85v
   If Level_dimmer = 5 Then Dimmer_delay_w = 59400       ' 149v
   If Level_dimmer = 6 Then Dimmer_delay_w = 59900       ' 175v
   If Level_dimmer = 7 Then Dimmer_delay_w = 61100       ' 189v
   Waitus 950
Return



''===============
Ovf1_my:
   If Dimmer_on = 1 Then
     Dimmer_out = 1
     Waitus 90
     Dimmer_out = 0
   Else
     Dimmer_out = 0
   End If
Return


' =============== Обработка прерывания по изменению на INT 0 ==================
Z_cross_int:
   Timer1 = Dimmer_delay_w
   Z_cross_f = 1
Return



Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Gordon Shumway писал(а):В хелпе написано, что это константа...


В хелпе написано, что функции задержки должно быть передано постоянное значение, а не переменная.

Код: Выделить всё

Waitus 150


А не

Код: Выделить всё

Dim Temp as Byte
Temp = 150

Waitus Temp


Но очень часто это требование нарушается.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

aleksandr-zh писал(а):Вот вам на Баскоме управление симистором, через MOC3051


Спасибо ! Заняться этим вопросом смогу теперь только в пятницу. Обязательно напишу о результате.
С уважением,
Алексей.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

aleksandr-zh писал(а):Вот вам на Баскоме управление симистором, через MOC3051


Начал разбираться. Назрело несколько вопросов :

Код: Выделить всё

On Ovf1 Ovf1_my Nosave : Enable Ovf1


Что такое "Ovf1" ? В хелпе не нашел, но Баском на эту строку не ругается.

Код: Выделить всё

Dimmer_modul:                      ' ---------- УПРАВЛЕНИЕ ДИММЕРОМ ----------
 Reset Watchdog
   If Level_dimmer = 0 Then
      Dimmer_on = 0
      Disable Ovf1
     Else
      Dimmer_on = 1
      If Level_dimmer < 8 Then Enable Ovf1
   End If

   If Level_dimmer > 7 Then
     ' Dimmer_delay_w = &HFFFC ' Ярко горит - 230v
     Disable Ovf1
     Dimmer_out = 1
     Level_dimmer = 8              ' <<<<<<<<<<<<<<<<<<<<<<<< ограничитель
   End If
   If Level_dimmer = 1 Then Dimmer_delay_w = 57900       ' Тускло горит - 25v
   If Level_dimmer = 2 Then Dimmer_delay_w = 58300       ' 51v
   If Level_dimmer = 3 Then Dimmer_delay_w = 58700       ' 78v
   If Level_dimmer = 4 Then Dimmer_delay_w = 59000       ' 85v
   If Level_dimmer = 5 Then Dimmer_delay_w = 59400       ' 149v
   If Level_dimmer = 6 Then Dimmer_delay_w = 59900       ' 175v
   If Level_dimmer = 7 Then Dimmer_delay_w = 61100       ' 189v
   Waitus 950
Return


Нельзя ли поподробнее прокомментировать ?
Непонятно про Dimmer_on и Level_dimmer...

И немного не понял, как делается регулировка яркости ? Чем ?
С уважением,
Алексей.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: BASCOM AVR в вопросах и ответах

Сообщение aleksandr-zh »

Ovf1 = прерывание по переполнению
даташит на МК надо читать, а не хелп на Баском :)

регулирует путём "откусывания" части полупериода

симистор можно включить, но нельза отключить
значит, мы его включим тогда, когда нам надо, а отключится он сам при малом токе

надо ярко? - открываем его в самом начале полупериода
надо уменьшить? после появления полупериода мы открываем симистор НЕМНОГО ПОЗЖЕ, т.е., пропустим часть полупериода

Dimmer_on и Level_dimmer...
вроде по названию видно, не плохобы пернвести :)
первая - триггер, когда она = 0, то диммер выключен и эта часть кода пропускается
вторая задаёт яркость от 1 до 8
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

aleksandr-zh писал(а):Dimmer_on и Level_dimmer...
вроде по названию видно, не плохобы пернвести :)
первая - триггер, когда она = 0, то диммер выключен и эта часть кода пропускается
вторая задаёт яркость от 1 до 8


С переводом я справился :)
То есть это просто переменные ?
И я все-таки не понял, чем регулируется яркость ? Грубо говоря - где кнопка ? :)

Спасибо за помощь !
С уважением,
Алексей.
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: BASCOM AVR в вопросах и ответах

Сообщение zero648 »

Для регулировки через кнопку тебе надо написать код, который будет по нажатию кнопки изменять значение переменной Level_dimmer, тогда будет управление через кнопку :)
Если......
Level_dimmer = 0, то Dimmer_on = 0 ' отключено
Level_dimmer = 1, то Dimmer_on = 1 ' Тускло горит - 25v
Level_dimmer = 2, то Dimmer_on = 1 ' 51v
Level_dimmer = 3, то Dimmer_on = 1 ' 78v
Level_dimmer = 4, то Dimmer_on = 1 ' 85v
Level_dimmer = 5, то Dimmer_on = 1 ' 149v
Level_dimmer = 6, то Dimmer_on = 1 ' 175v
Level_dimmer = 7, то Dimmer_on = 1 ' 189v
Level_dimmer = 8, то Dimmer_out = 1 ' Ярко горит - 230v
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

zero648 писал(а):Для регулировки через кнопку тебе надо написать код, который будет по нажатию кнопки изменять значение переменной Level_dimmer, тогда будет управление через кнопку :)


Потом уже дошло... :) Спасибо !
В выходные буду мучить в протеусе, а в понедельник - на железе.
С уважением,
Алексей.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

Доброго времени суток !

aleksandr-zh писал(а):Вот вам на Баскоме управление симистором, через MOC3051


Возникло несколько вопросов в процессе изучения кода:

1. На какую частоту кристалла рассчитаны таймеры ?

2.

Код: Выделить всё

Z_cross_int:
   Timer1 = Dimmer_delay_w
   Z_cross_f = 1
Return


Для чего введена переменная "Z_cross_f" ?

3. Для чего сконфигурирован timer0 ? Не нашел, где он используется...

Спасибо заранее за помощь !
С уважением,
Алексей.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: BASCOM AVR в вопросах и ответах

Сообщение amv2000 »

Gordon Shumway писал(а):Для чего введена переменная "Z_cross_f" ?
3. Для чего сконфигурирован timer0 ? Не нашел, где он используется...

Здесь очевидно прерывание занимается тем, чем и должно. В частности устанавливает флаг Z_cross_f (это же кусок из программы вероятно далее, где то используется)
Ответить

Вернуться в «AVR»