Например TDA7294

Форум РадиоКот • Просмотр темы - Вход 220Вольт.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт июл 25, 2025 23:31:41

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 31 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Вход 220Вольт.
СообщениеДобавлено: Пт мар 18, 2016 12:54:00 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30
Сообщений: 414
Откуда: С того берега моря
Рейтинг сообщения: 0
Добрый день! Хочу привязать клавишу 220В ко входу МК AVR Attiny13. Сделал схему на однополупериодном выпрямителе и оптотранзисторе. Проблема в том, что один полупериод пропускается и начинается свистопляска. МК воспринимает сигнал так - может например минуту ловить лог0, потом начинается дребезг. Схема в пристежке. Пробовал между коллектором фототранзистора и минусом ставить конденсатор на 100мкФ, вопрос решает, но чует мое сердце - такая емкость на МК не есть гут. Подскажите пожалуйста что можно предпринять? Может возможно софтово реализовать?


Вложения:
Screenshot_3.jpg [83.78 KiB]
Скачиваний: 724
Screenshot_2.jpg [126.74 KiB]
Скачиваний: 720

_________________
- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Пт мар 18, 2016 20:01:31 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Чет не пойму...
А зачем 220 вольтей-то к МК ТАК цеплять?
Модет проще от МК нагрузку запускать или автофиксацию источника питания при начальном"тыке" от акумулятора/батарейки соорудить?
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Сб мар 19, 2016 21:02:15 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30
Сообщений: 414
Откуда: С того берега моря
Рейтинг сообщения: 0
Цитата:
А зачем 220 вольтей-то к МК ТАК цеплять?

Мне нужно смотреть, включена ли клавиша включения света или нет. Как еще можно? (Можно поставить полноценный мост с конденсатором и стабилитроны, но у меня уже все впаяно, необходимо обойтись малой кровью.)

_________________
- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Сб мар 19, 2016 21:08:50 
Держит паяльник хвостом
Аватар пользователя

Карма: 15
Рейтинг сообщений: 70
Зарегистрирован: Ср мар 28, 2012 21:45:24
Сообщений: 906
Откуда: ВО
Рейтинг сообщения: 0
Лень много писать , посмотрите zero детектор для AVR - и обойдётесь одним резистором


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вс мар 20, 2016 07:09:02 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 5
Может проще чегось на катушке с герконом (вохможно внутри диодного мостика) впихерить?
Заодно и наличие живой лампочки отследит...
:wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вт мар 22, 2016 16:14:50 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
Jman писал(а):
Может возможно софтово реализовать?
Конечно возможно. Считываете, что там на пине сидит. Если 0, то значит напряжение есть, и говорить больше не о чем. Если 1, то через 1 мс считываете ещё раз. Потом опять через 1 мс... И так 15 раз подряд. Если 0 так и не выпал, то, ясен пень, електричества нету.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вт апр 05, 2016 22:15:22 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт янв 14, 2016 14:42:05
Сообщений: 110
Откуда: City
Рейтинг сообщения: -1
Jman писал(а):
Добрый день! Хочу привязать клавишу 220В ко входу МК AVR Attiny13....


Я ставил 90 кОм на 2Вт. (вместо двух по 30 на картинке.)
Использовал 817С оптопару :idea:

Расчёт нужно делать по закону Ома исходя из даташитов на опторазвязку и амплитудное значение 320 Вольт (ток через светодиод оптопары)


Изображение

Я второй схемы придерживался

СпойлерИзображение


Третья схема опасна и мной не проверялась :kill:
Изображение

Взято здесь http://meandr.org/archives/5853


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Ср апр 06, 2016 19:53:29 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30
Сообщений: 414
Откуда: С того берега моря
Рейтинг сообщения: 0
Цитата:
Конечно возможно.

Я так понимаю, это необходимо делать в прерывании? А можно пример на Си, если не затруднит... Вот мой код. Переменная key - это как раз выход оптопары.
Код:
#include <tiny13.h>
#include <delay.h>
#define out PORTB.3 // Лампа;
#define pir PINB.0  // PIR-датчик;
#define key PINB.1  // Выключатель;
#define FIRST_ADC_INPUT 1
#define LAST_ADC_INPUT 2
#define ADC_VREF_TYPE ((0<<REFS0) | (0<<ADLAR))

unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];

// Bandgap Voltage Reference: Off
// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
static unsigned char input_index=0;
// Read the AD conversion result
adc_data[input_index]=ADCW;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
   input_index=0;
ADMUX=(FIRST_ADC_INPUT | ADC_VREF_TYPE)+input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(12);
// Start the AD conversion
ADCSRA|=(1<<ADSC);
}

volatile unsigned int on=0, tic_tac=0;    // Счетчик;
unsigned int outdoor_sensor;     // Датчик света;
unsigned int sensivity;          // Регулировка чувствительности;

// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
    TCNT0=0x00;
    if (!key)
    tic_tac++;
    else tic_tac=0;
   
    if (!pir && key && outdoor_sensor>=sensivity){    // Задержка на включение, антидребезг ПИР дачика;
     on++;
     }
      else   {
      on=0;
      }       

}

void adc_read (void)         // Функция считывания значения из АЦП. АЦП 8бит;
{
 outdoor_sensor=adc_data[0]; // Значение 1 канала, PORTB2 ;
 sensivity=adc_data[1];      // Значение 2 канала читаем из массива сканированных каналов АЦП, PORTB4;
}

void main(void)
{

#include <init_PIR.c>
//  Обнуляю порты;
out=0;

// Global enable interrupts
#asm("sei")

while (1)
      {
      if (!key && tic_tac == 10) {
         //delay_ms(100);               // "антидребезг" =);   
         out=1;                         // Приоритет включения по клавише;
            while (!key && tic_tac>=900) {   
                out=0; } 
      }
                     
         else {
           adc_read ();             //Функция чтения значения из АЦП (0-255);
       
           if (on>=90 && !pir&&key && outdoor_sensor>=sensivity) { // Пир сработал, выключатель отключен, фотодатчик сработал;
            out = 1;}               // Порт включен;                         
                else {
                out =0;             // Порт выключен;
              }     
           }
     
      }
}

_________________
- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вс апр 10, 2016 18:21:23 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
Я бы сделал как-то так:
Код:
#define key PINB.1

volatile unsigned char key_on_flag = 0; // состояние выключателя 0 - выключен

// Timer 0 output compare A interrupt Mode: CTC top=OCR0A
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
static unsigned char counter = 15; // счётчик миллисекунд
// сюда попадаем каждую миллисекунду
if(key)
{
    // считали 1 - похоже, выключен
    // проверяем сколько времени прошло
    if(counter)
    {
        // время не вышло
        counter --;
    }
    else
    {
        // прошло 15 миллисекунд выключатель выключен
        key_on_flag = 0;
        counter = 15; // устанавливаем счётчик заново
    }
}
else
{
    // считали 0 - включён
    key_on_flag = 1;
    counter = 15; // устанавливаем счётчик заново
}

// запускаем очередной цикл преобразования АЦП
ADCSRA|=(1<<ADSC);
}

interrupt [ADC_INT] void adc_isr(void)
{
static unsigned char input_index=0;
// Read the AD conversion result
adc_data[input_index]=ADCW;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
   input_index=0;
ADMUX=(FIRST_ADC_INPUT | ADC_VREF_TYPE)+input_index;
// здесь задержка не нужна, сигнал успеет устаканиться,
// поскольку очередной цикл преобразования АЦП
// будет запускаться в прерывании от таймера.
}


void main(void)
{
unsigned char key_on = 0; // состояние выключателя


// Global enable interrupts
#asm("sei")

while (1)
      {
      // считываем состояние выключателя
      #asm("cli")
      key_on = key_on_flag;
      #asm("sei")
      };
}


Код не проверялся, возможны ошибки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вт апр 19, 2016 08:04:09 
Родился

Зарегистрирован: Пн апр 18, 2016 21:10:15
Сообщений: 2
Рейтинг сообщения: 0
Здравствуйте! Подскажите,пожалуйста, в чем может быть ошибка ?
Собрал по предыдущей схеме , но в Proteus показывает слишком низкое напряжение в следствии чего оптопара не срабатывает...


Вложения:
Безымянный1.png [31.46 KiB]
Скачиваний: 600
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вт апр 19, 2016 10:20:12 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6039
Откуда: Minsk
Рейтинг сообщения: -1
Великоват резистор 91k . В импульсе в светодиод надо вкидывать с 10 мА. А откуда известно, что оптрон не работает, если он никуда не подключен ? Коллектор через несколько кОм на плюс, базу через 100 кОм на эмиттер.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вт апр 19, 2016 11:59:04 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт янв 14, 2016 14:42:05
Сообщений: 110
Откуда: City
Рейтинг сообщения: 0
Traktor-74 писал(а):
Здравствуйте! Подскажите,пожалуйста, в чем может быть ошибка ?
Собрал по предыдущей схеме ...

У меня работало "в натуре", ток 5 mA примерно и оптрон реагировал.
Резистор после моста поставь.
Яб ещё стабилитрон воткнул параллельно оптопаре (для защиты, но его нужно подбирать, чтобы не оказывал влияния на схему. Или оказывал, если так задумано)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Ср апр 20, 2016 05:51:23 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15108
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Оптроны рааазные бывают... :wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Пн апр 25, 2016 00:06:23 
Потрогал лапой паяльник

Зарегистрирован: Пт янв 29, 2010 19:42:27
Сообщений: 315
Рейтинг сообщения: 0
Зачем ставить мост если можно поставить 2 встречно параллельные диодами оптопары (обе полуволны)
а транзисторы параллельно .( 2 провала в 0 за период)

_________________
ух ты.... показывает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Пт апр 29, 2016 16:23:44 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30
Сообщений: 414
Откуда: С того берега моря
Рейтинг сообщения: 0
Цитата:
Код не проверялся, возможны ошибки.

Спасибо. Наконец-то дошли руки. Я подкинул Вашу логику в свой проект. Правда таймер у меня настроен на 4800000/256.
1/18750. Я столкнулся с проблемой. Код работает в симуляторе. А вот в железе, вход 220 отрабатывает, ПИР датчик отрабатывает, а вот с АЦП что-то творится непонятное. Из-за него происходит постоянное вкл, выкл.. (ко входу 1 подключил потенциометр для опорной регулировки, ко входу 2 фотоэлемент с усмлителем на ОУ. Он выдает положительное напряжение от 0 до 5 В.) Не знаю в чем причина. Помогите пожалуйста. Исходник и проект в протеусе 8 в пристежке... АЦП настроил как free running.


Вложения:
PIR.rar [57.31 KiB]
Скачиваний: 189

_________________
- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Пт апр 29, 2016 17:13:40 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30
Сообщений: 414
Откуда: С того берега моря
Рейтинг сообщения: 0
Пересчитал частоту преобразования АЦП, убрал 8битное преобразование. Вроде заработало, но просто в коде нет флага, когда происходит быстрое изменение освещенности, что в этот момент не тушить порт выхода.

_________________
- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Пн май 02, 2016 11:18:28 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
...


Последний раз редактировалось Барсик Вт май 03, 2016 06:59:37, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вт май 03, 2016 06:58:43 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
Jman писал(а):
Правда таймер у меня настроен на 4800000/256.
А чем обусловлен выбор частоты таймера именно 18,75 кГц ?
Кстати, тактовая частота микроконтроллера у Вас тоже 18,75 кГц. Зачем? Чем не устраивает 1,2 МГц ?
Таймер настроен на моду Normal, регистр сравнения OCR0A=0xFF. Прерывания происходят с частотой приблизительно 73 Гц. Зачем?
Jman писал(а):
АЦП настроил как free running.
Зачем тогда запускать преобразование внутри прерывания?
Jman писал(а):
проект в протеусе
Я не умею работать в протеусе.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вт май 03, 2016 12:47:17 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30
Сообщений: 414
Откуда: С того берега моря
Рейтинг сообщения: 0
Цитата:
Я не умею работать в протеусе.

Может я не верно понял? Я взял 4.800000 / 258 (отключил CKDIV) Получил 18750. 1/18750 = 0,000053 примерно... 256 * 0,000053333 = 0,013653 секунды. Если мне нужна секунда, я просто делаю i++ до 100. Поправьте, если что не так... Немного не понимаю, как настроить таймер.

_________________
- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вход 220Вольт.
СообщениеДобавлено: Вт май 03, 2016 13:56:39 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
Jman писал(а):
Я взял 4.800000 / 258 (отключил CKDIV) Получил 18750
(вообще - то не 258, а 256)А Вы посмотрели код, котоый Вам нагенерил CodeVisionAVR ? Вы, для начала, выставили СИСТЕМНУЮ ЧАСТОТУ - которой тактируется микроконтроллер на 18 с небольшим килогерц. Нахуя? Электроэнергию решили экономить за счёт быстродествия?
Прежде, чем "галки" ставить, изучите внимательно даташит.
Пусть микроконтроллер молотит на частоте 1,2 МГц. Это частота по умолчанию, с заводскими установками Фьюзов.
Если хотите сделать нормальные системные часы, используйте таймер. Таймер запрограммируйте в режим CTC и выберите прескалер таймера и значение регистра OCR0A так, чтобы прерывание происходило каждую миллисекунду. Потом, временные интервалы будет легко отсчитывать. Тем более, в CodeVisionAVR это делается легко и наглядно.
От таймера запускаете АЦП. Тактовую частоту АЦП выбираете так, чтобы преобразование АЦП успело завершиться раньше, чем случится очередное прерывание от таймера. Запрограммируйте прерывание от АЦП. Сам АЦП запрограммируйте на запуск по совпадению таймера с регистром OCR0A.(запуск будет происходить АППАРАТНО, даже команду на запуск не надо писать в программе!!!) Таким образом, запуск АЦП будет происходить от таймера каждую миллисекунду.
И, самое смешное, не надо ждать в прервании (а в прерывании ждать = дурной тон, спросите, где хотите) Пока закончатся переходные процессы перекключения канала. А результат преобразования будете считывать по прерыванию от самого АЦП. (Ясен пень, что прерывание от АЦП будет происходить тоже каждую миллисекунду)

Напоследок, совет. Читайте даташит на микроконтроллер до умопомрачения. Когда оно наступит, читайте тот же даташит до полной ясности сознания. И всё станет ясно, как майское утро :)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y