Jump to content

Search the Community

Showing results for tags 'Pwm'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Автомобильная электроника
    • Питание
    • Ремонт
    • Системы охраны и наблюдения. Личная безопасность
    • Роботы и модели на ДУ-управлении
    • Световые эффекты и LED
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Металлоискатели
    • Автоматика
    • Электрика
    • Промышленная электроника
    • Измерительная техника
    • Мастерская радиолюбителя
    • КВ и УКВ радиосвязь
    • Жучки
    • Сотовая связь
    • Спутниковое ТВ
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Схемотехника для профессионалов
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
  • Товары и услуги
  • Разное
  • Переделки's ATX->ЛБП
  • Переделки's разные темы
  • Киловольты юмора's Юмор в youtube

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Found 5 results

  1. Здравствуйте, уважаемые пользователи сайта "ПАЯЛЬНИК". Мне очень необходима Ваша квалифицированная помощь в разработке устройства контроля параметров ветрогенераторной установки. В общем объеме устройство должно выполнять 5 основных функций: 1. Заряд аккумуляторных батарей 48В 200Ач. 2. Стабилизация оборотов ветроколеса. 3. Сброс излишка энергии на 4 или 6 нагревательных ТЭНОВ по 24В каждый, с поочерёдным их включением по мере увеличения излишка энергии. 4. Контроль напряжения сети с переключение в аварийный режим (работа на инвертор). 5. Вывод информации на LCD и организация меню пользователя. В качестве микроконтроллера буду использовать ATMega16. Для заряда АКБ и для работы на ТЭНы планирую использовать 2 канала. Каждый из каналов будет состоять из TL494 + драйвер + два MOSFETа в режиме полумоста с обратными связями по напряжению и току + LC-фильтр. Каналы будут управляться микроконтроллером двумя портами ШИМ через RC-фильтры. Для индикации планирую использовать символьный LCD 20x2. Логику работы устройства вижу так: С одной из фаз 3-х фазного ветрогенератора снимаем показания частоты, запоминаем. Проводим повторный замер и сравниваем с предыдущим. Если частота растёт добавляем нагрузку на колесо с помощью управления каналами АКБ и (или) ТЭНов. Если частота падает - уменьшаем нагрузку. Постоянно выполняем замер напряжения и тока по 2-м каналам и выводим значения на дисплей. Как только аккумулятор достигает заряженного состояния, переходим в режим работы с ТЭНами и включаем 1-й ТЭН при максимальной скважности, следим за оборотами, регулируем нагрузку и т.д. 2,3,4-й ТЭНы. Кто может что добавить или посоветовать? Интересует всё от начала и до конца: советы, схемные решения, помощь в расчёте выходного дросселя, оптимизация и т.д. Всё изготовленное мною будет иметь подробный фотоотчёт до самого конца, пока устройство не будет на 100% завершено. Все схемы и исходники будут доступны. По сути мы можем вместе создать устройство, необходимое очень многим людям. Заранее всем спасибо!!!
  2. Здравствуйте. Пишу потому, что нахожусь в тупике, в принципе наметки движееия вперед есть, но нужен совет опытного человека. Приобрел китайский лазер для самодельного гравера. Вот он разобранный Когда нужно жарить на всю, программа подает сигнал на вывод pwm и он жарит, без проблем. А вот интересная программа ribs которая играет уровнем мощности выдает нечеткие размытые и недожженые контуры. Беру осциллограф и иду по цепи. На разъёме шим разные и меняющиеся по форме сигналы, на лазерном диоде равномерные пики, меняется только их амплитуда. На входе стоит микросхема шестиножечная, маркировка спилена, затем мощный транзистор тоже со спиленной маркировкой и два диода тоже нонейм теперь. И самое интересное на клемах к лазерному диоду запаяны два конденсатора в паралель. Так и должно быть? И если кто знает, подскажите как организовать нормальный шим. Кстати амплитуда на лазерном диоде составила 3.8 вольта. Второй день уже бьюсь, сначала думал слишком быстрая подача, но даже на минимальной скорости лазер не жжет до черна, а в программе lasergrbl на впятеро больше скорости прорезал неплохие канавки. Фото обратной стороны с конденсаторами.
  3. Доброго времени суток всем. Для своей новой жены захотелось мне сделать сердечко на atmega8, с кучей эффектов и т.д. Так вот, разные мигалки-переключалки св-диодов я написал, использовал delay. Но мне этого стало мало и я решил подключить шим программный. Отдельно от всей программы шим работает как нужно, так же и переключалки работают отдельно от шим, но вот когда я соединяю это всё воедино то работает только шим и не переходит дальше по коду.Я так понимаю, что таймеры и delay вместе работать не могут? Но если могут, то как? #include <mega8.h> #include <delay.h> #define GREEN PORTC.1=PORTC.2=PORTC.3=PORTC.0 unsigned char i, s,; unsigned char green=255; unsigned char green_b; //переменные, для буферизации значений скважности ШИМ unsigned char count; //переменная- счетчик вызовов обработчика прерываний unsigned char temp=1; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { count++; if (count == 0){ //если счетчик переполнился и принял значение 0 green_b = green; GREEN = 1; } if (green_b == count) { GREEN = 0;} } void main(void) { PORTC=0x0F; //конфигурируем порт DDRC=0x0F; TCCR0=0x01; //настраиваем таймер TCNT0=0x00; TIMSK=0x01; //разрешаем генерацию прерывания по переполнению таймера T0 #asm("sei") //глобально разрешаем прерывания while (1) { for (i=0;i<3;i++) { if (temp==1) {if (green < 255) green += 1; else temp = 2;} if (temp==2) {if (green > 0) green -= 1; else temp = 1;} delay_ms(1000); }; s=7; for (i=0;i<=s;i++) { PORTC.0=1; delay_ms(200); PORTC.0=0; PORTC.1=1; delay_ms(200); PORTC.1=0; PORTC.2=1; delay_ms(200); PORTC.2=0; PORTC.3=1; delay_ms(200); PORTC.3=0; } for (i=0;i<=s;i++) { PORTC.3=1; delay_ms(200); PORTC.3=0; PORTC.2=1; delay_ms(200); PORTC.2=0; PORTC.1=1; delay_ms(200); PORTC.1=0; PORTC.0=1; delay_ms(200); PORTC.0=0; } for (i=0;i<=s;i++) { PORTC.3=1; delay_ms(200); PORTC.2=1; delay_ms(200); ; PORTC.1=1; delay_ms(200); PORTC.0=1; delay_ms(200); PORTC.3=0; delay_ms(200); PORTC.2=0; delay_ms(200); PORTC.1=0; delay_ms(200); PORTC.0=0; delay_ms(200); } for (i=0;i<=s;i++) { PORTC.0=1; delay_ms(200); PORTC.1=1; delay_ms(200); ; PORTC.2=1; delay_ms(200); PORTC.3=1; delay_ms(200); PORTC.0=0; delay_ms(200); PORTC.1=0; delay_ms(200); PORTC.2=0; delay_ms(200); PORTC.3=0; delay_ms(200); } for (i=0;i<=s;i++) { PORTC=0x01; delay_ms(200); PORTC=0x02; delay_ms(200); PORTC=0x04; delay_ms(200); PORTC=0x08; delay_ms(200); PORTC=0x09; delay_ms(200); PORTC=0x0A; delay_ms(200); PORTC=0x0C; delay_ms(200); PORTC=0x0D; delay_ms(200); PORTC=0x0E; delay_ms(200); PORTC=0x0F; delay_ms(200); PORTC=0x07; delay_ms(150); PORTC=0x0B; delay_ms(200); PORTC=0x03; delay_ms(250); PORTC=0x05; delay_ms(300); PORTC=0x09; delay_ms(350); PORTC=0x01; delay_ms(400); PORTC=0x02; delay_ms(200); PORTC=0x04; delay_ms(200); PORTC=0x08; delay_ms(200); PORTC=0x00; delay_ms(200); } for (i=0;i<=5;i++) { PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(150); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(150); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(1000); } } }
  4. Позвонил мне как-то старый друг и попросил совета - чем ему запитать старую детскую железную дорогу PIKO. Посоветовать ему просто купить древний блок питания FZ-1 показалось мне скучным, и я решил набросать что-то функционально похожее с помощью модуля Arduino и подручных деталей. Задача свелась к реверсивному ШИМ регулированию маленького электродвигателя от переменного резистора - для этой цели он представляется мне удобнее, чем энкодер. По резистору легко визуально и тактильно определить центральное положение “выключено”, и его положение очень просто считывать через АЦП. Я быстро набросал скетч со стандартным переводом аналогового сигнала в ШИМ для моста, собрал макет и начал испытания. Мне сразу не понравилось, как регулируется нагрузка - особенно в самом начале из-за моего аналогового датчика положения. Тогда я подумал - а сделаю я дискретное регулирование, даром что датчик аналоговый. Мне наверняка хватит десяти ступеней регулирования “вперёд” и столько же “назад”, а для чёткого перехода между ступенями я введу небольшой гистерезис. Написать лаконичный скетч получилось только после того, как я “разменял” логику на данные, забив нужные мне границы переходов между состояниями в массивы. Полезные функции вроде выставления резистора в центральное положение для начала работы и защита от короткого замыкания в нагрузке вписались в скетч также органично. Переходы между ступенями регулирования получились отличные, в нужный диапазон легко попасть движком переменного резистора. Схема очевидная - мост для двигателя, индикация и управляющий переменный резистор с линейной характеристикой. ШИМ подаётся только на нижние ключи моста Т5, Т6. Верхние ключи Т3, Т4 открываются в зависимости от нужного направления вращения. Светодиоды LED1, LED2 можно использовать для индикации направления вращения. Светодиод индикатора - комбинированный (красный + зелёный), он показывает режим работы схемы: зелёный моргает - инициализация, ожидание среднего положения регулятора. зелёный горит постоянно - нормальная работа красный моргает - превышение рабочего тока или короткое замыкание, требуется устранить причину и перевести регулятор в среднее положение. При указанной величине R3 0.33 Ом порог срабатывания защиты около 0.6 А. Его можно уменьшить - транзисторы моста выдержат нагрузку до 2А, но тогда им понадобится теплоотвод. К сожалению друг мой от этой схемы отказался, так что печатная плата не разрабатывалась. Тестирование на макетной плате (см. видео) дало хороший результат. Надеюсь, эти решения смогут кому-то пригодиться. Рабочий скетч: PIKO_discrete.ino (можно смотреть обычным текстовым редактором) Видео работающего макета: https://disk.yandex.ru/client/disk/Видео?idApp=client&display=normal&groupBy=none&order=1&sort=name&view=list&typeClustering=geo&action=null&idAlbum=undefined&dialog=slider&idDialog=%2Fdisk%2FВидео%2F00138.mp4
  5. myhhyk

    Timer1 PWM AtMega8A

    .include "m8adef.inc" .cseg main1: LDI R16,Low(RAMEND) ; тут стэк инициализирую OUT SPL,R16 ; LDI R16,High(RAMEND) OUT SPH,R16 ldi r20,1 reset: ldi r16,$02;--ICR1H значение $222 при заданом режиме счетчик должен считать до $222 и сбрасывать в ноль ldi r17,$22;--ICR1L OUT ICR1H,r16;--выводим сначала старший байт, как учили OUT ICR1l,r17;--затем младший ldi r16,$1;---OCR1AH при значении $1AA должен менять пин OCR1A ldi r17,$AA;--OCR1AL OUT OCR1AH,r16;--старший OUT OCR1AL,r17;--и младший ldi r17,$82;--TCCR1A режим такой: WGM-1110 COM-10 ldi r16,$19;--TCCR1B OUT TCCR1B,r16 OUT TCCR1A,r17 ldi r16,$FF OUT DDRB,r16;-- порт б на выход main:;--должны получать шим rjmp main Здравствуйте, помогите пожалуйста. Хочу сделать плавное включение светодиода с помощью ШИМа и Timer1,чтобы плавненько было. Устанавливаю WGM 1110 т.е. быстрый шим и со счетом до ICR1, а счетчик считает почему то до $1ff и потом начинает уменьшать счет до нуля, т.е. как будто я выбрал режим WGM 0110 быстрый ШИМ 9 бит. Пробовал всякие разные комбинации. На значения COM не обращаю пока, он просто меняет момент срабатывания пина, мне нужно, чтобы я мог задавать до скольки считать, потом чтобы в ноль счетчик сбрасывался и менялось состояние пина по OCR1A.В общем принцип работы Timer2, только чтобы счет был больше. Помогите плиз :*) Ах да, AtMega8A микроконтроллер.
×
×
  • Create New...