ШИМ на Attiny 13, AVR, CodeVisionAvr

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ต.ค. 2024
  • Проект файлы на CVR и Proteus bit.ly/2YtRvTD
    На этом видео мы настраиваем и запускаем Широтно Импульсную Модуляцию на микроконтроллере AVR, точнее на Attiny 13. Реализовали такой проект как с помощью двух кнопок мы увеличиваем и уменьшаем яркость светодиода.

ความคิดเห็น • 97

  • @karokuchukyan4464
    @karokuchukyan4464 2 ปีที่แล้ว

    Добрый вечер.извините можна ли на мк. аттини2313 порт Д сделать шим?

  • @Vitalij306
    @Vitalij306 6 ปีที่แล้ว +3

    Большое Вам человеческое спасибо за эту роботу. Мне уже стыдно к Вам обращаться. Ещё раз большое спасибо.

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Ничего стыдного нет, все ок, всегда рад помочь...

    • @TimeOut17
      @TimeOut17 5 ปีที่แล้ว +1

      Сенсей сделал чудо... это 0.

  • @vzo6951
    @vzo6951 6 ปีที่แล้ว +1

    тоже начинал с этой программы . уроков не было тогда таких . эх и мучился тогда . но получил базовые знания языка . сигнализации на аттини 2313 делал. программаторы сам паял . первый с lpt порта а потом только usb сделал .

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Да это точно вот как раз этот программатор только не lpt a com port th-cam.com/video/PC5gyW20Xfo/w-d-xo.html

  • @sssserya1
    @sssserya1 4 ปีที่แล้ว +1

    видно что не вы писали этот код . 4:44 условие ограничивает отсчет больше 255

    • @cas_channel
      @cas_channel  4 ปีที่แล้ว

      А кто писал? Если вы заметили ошибку... то все ошибаются

  • @dargindarginec9561
    @dargindarginec9561 2 ปีที่แล้ว

    привет друг )) спустя 3 года я случайно наткнулся на свои коменты, я очень редко пишу прошивки мелкие вот что то не могу найти решение для моего авто наведение солнечной батареи с использованием двух фото датчиков, а выход один ШИМ на двигатель. можете чуть по направить, я написал но не работает, вернее всегда ширина импульсов кругами идет. а мне нужно чтобы держался стабильно, короче говоря два фото приемника должны одинаково получать свет, если на каком нибудь свет становиться больше то добавляем ++ в шим если меньше то отнимаем.

  • @sergeynikolaevich7229
    @sergeynikolaevich7229 ปีที่แล้ว

    Интересное видео спасибо! Вопрос как обойти или скинуть в шим фонаря контроль тока?

    • @cas_channel
      @cas_channel  ปีที่แล้ว

      В фонаре нет контоль тока

    • @sergeynikolaevich7229
      @sergeynikolaevich7229 ปีที่แล้ว

      @@cas_channel благодарю за ответ. к сожалению в новых фонарях есть контроль напряжения и как следствие тока для отключения фонаря от предотвращения полного разряда аккумов . я решил эту проблему за 2 дня . спасибо.

    • @cas_channel
      @cas_channel  ปีที่แล้ว

      ТАк это не контроль тока, а контроль разряда АКБ, контроль идет по напряжению. Делается это с помощь МК и включается АЦП.

  • @alextar8489
    @alextar8489 ปีที่แล้ว

    а потанциометром как ругулировать

  • @АлександрКузнецов-ц9ъ
    @АлександрКузнецов-ц9ъ ปีที่แล้ว

    здравствуйте! зарисовал код ввиде алгоритма и заметил, если после максимума нажать еще раз плюс то яркоскть начнется с нуля как как после отпускании кнопки (после максимума флаг установиться чтобы больше не плюсовать шим при удержании кнопки) флаг сброситься на переполненый счетчик и следующим циклом проги он перейдет на 00.

    • @cas_channel
      @cas_channel  ปีที่แล้ว

      Здравствуйте!
      if(счетчик > 255) {счетчик =255};

  • @OlegGrabar
    @OlegGrabar 4 ปีที่แล้ว

    А как сделать двумя кнопками такое? Чтобы одна кнопка увеличивала, а другая уменьшала. Пробовал добавить похожий код снизу этого для второй кнопки и не получилось.

    • @cas_channel
      @cas_channel  4 ปีที่แล้ว

      Данный проект именно так и делает, одна кнопка уменьшает другая прибавляет

  • @kumelektronik340
    @kumelektronik340 3 ปีที่แล้ว

    А возможно ли для Attiny85 скейч для управления Servomotor сделать? Я пытаюсь, но у меня не получается. По этому поводу в интернете почти ни какой информации нет. Как я понял из интернета: с ардуино платформой это сделать не возможно, так как там с 16 бит, а тинка работает только до 8 бит.

    • @cas_channel
      @cas_channel  3 ปีที่แล้ว

      Все можно но я не дошел до сервомоторов

  • @OlegGrabar
    @OlegGrabar 4 ปีที่แล้ว

    А как сделать чтобы запоминалось последнее значение в память и запускалось с него при включении?

    • @cas_channel
      @cas_channel  4 ปีที่แล้ว

      Это уже eproom это другое видео... если будет свободное время, по воле всевышнего сделаю видео

  • @KurichevAndrey
    @KurichevAndrey 4 ปีที่แล้ว

    Здравствуйте, я правильно понимаю, светодиод можно заменить транзистором и управлять более мощными нагрузками? Хочу в авто сделать диммер, как раз мне подходит управление кнопками.

    • @cas_channel
      @cas_channel  4 ปีที่แล้ว

      Да... нужно схемотехнически завершить схему

  • @Vitalij306
    @Vitalij306 6 ปีที่แล้ว +1

    Скажите пожалуйста можно вписать в вашу программу код так что бы при помощи кнопки как например в китайских фонариках при нажатии кнопки загорелся светодиод на 20% потом снова нажать на кнопку загорелся светодиод на 50% снова нажать на кнопку светодиод загорелся на 80% .Ну и на 100%, а не плавно меня очень сильно это интересует Если можете хотя бы напишите кусочек кода чтобы я мог двигаться в правильном направлении для написания этой программки.

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Vitalij306 Привет! Хорошо на днях постараюсь сделать видео, я это сделаю на светодиоде пойдет? т.е при нажатий на кнопку наш светодиод будет гореть на 20% , еще раз нажал будет гореть на 50% и т д...

    • @Vitalij306
      @Vitalij306 6 ปีที่แล้ว

      Канал CAS Да конечно пойдет. Как я могу Вас за это отблагодарить?

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Подпишитесь на мой канал и порекомендуйте друзьям мой канал )) буду рад))

    • @Vitalij306
      @Vitalij306 6 ปีที่แล้ว

      Канал CAS Само собой )))

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว +1

      Вот ваше видео, извените за задержку небыло времени th-cam.com/users/edit?o=U&video_id=40ZTUcJfy_M

  • @СергейЕвгеньевич-ф9м
    @СергейЕвгеньевич-ф9м 6 ปีที่แล้ว

    dargin darginec
    Схема в протеусе действительно не работает. Что вы сделали по другому, чтобы заработало? А то такие переподаватели "кто умеет читать код, тот поймет" сильно вдохновляют на изучение программирования. Мечется курсором по коду, вместо того, чтобы объяснить, что значит каждая строка. Почему в 17 строке стоит именно 0х80? Почему в 39 строке стоит 0х83, а в 40 строке 0х03?
    dargin darginec, объясните как переделать, плиз. Может свой код на почту кинете ms142@mail.ru

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Если вам нужно объяснение для этого всегда есть комментарии, напишите я объясню, я не стал объяснять это на видео чтобы не тянуть время, но так как вы меня не много обозвали ( А то такие переподаватели "кто умеет читать код, тот поймет" сильно вдохновляют на изучение программирования) и еще и попросили другого человека, то надеюсь он вам поможет. Ибо я жду извинений и я вам объясню

    • @Al.Sy.
      @Al.Sy. 6 ปีที่แล้ว

      Как ни печально, но для ясного понимания Вам всё равно придётся читать техническую документацию на конкретную модель микроконтроллера (по-английски datasheet), побитно выясняя, что устанавливается в управляющих регистрах МК. Поэтому такие листинги, созданные wizard'ами-генераторами кода, вызывают массу вопросов у начинающих. В компиляторе avr-gcc часто используют мнемонические обозначения имён битов для установки определённых битов, например так:
      TCCR0B = (1

  • @евгенийтит-л1щ
    @евгенийтит-л1щ 5 ปีที่แล้ว

    Спасибо Вам огромное за Вашу работу, очень понятно, чётко и без лишнего мусора всё ясно объяснили. Лайк, и подписка)
    P.S> Эхх...ещё бы на корпусах TQFP небылиб так по-идиотски разбросаны пины портов....цены б небыло меге16

    • @cas_channel
      @cas_channel  5 ปีที่แล้ว

      Я рад что мое видео вам помогло или понравилось, подпишитесь пожалуйста на мой канал и поделитесь этим видео, буду очень рад th-cam.com/users/xxxcasxxx1

  • @ВалерийКамышов-е5р
    @ВалерийКамышов-е5р 6 ปีที่แล้ว

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

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Вы про комнатную лампу на 220 вольт?

  • @PES.dyk.
    @PES.dyk. 6 ปีที่แล้ว

    Как можно написать код для того чтобы при подачи питания на микрокантроллер - то микрокантроллер давал сигнал на реле .а при нажатии на кнопку - то микрокантроллер отключял сигнал на реле ...и так в цыкле?

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Проще простого))) Завтра постараюсь написать код...

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Я сделал ваш проект th-cam.com/video/W0oe1vTEQhc/w-d-xo.html&lc=UgzdzbFFUouYCYNEIip4AaABAg

  • @ВикторКулагин-ж9о
    @ВикторКулагин-ж9о 6 ปีที่แล้ว

    На какой частоте у вас работает шим?Можно ли шим сделать свыше 22кГц хочу регулировать вращение эл.двигателя , говорят что такая частота нужна что бы эл.двигатель не пищал

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Частота ШИМа на данном видео 125 KHZ, смотрите по времени 1:35

    • @inf20
      @inf20 5 ปีที่แล้ว +3

      @@cas_channel Вы путаете частоту тактования таймера с частотой ШИМа. Частоту тактования нужно поделить на 256 чтобы вычислить частоту ШИМа (у таймера 256 отсчетов за которые он выдаст 1 импульс), в вашем примере частота ШИМа будет 488 Hz. На видео th-cam.com/video/IDFudDKhjag/w-d-xo.html это видно (правда осцилограф почему то показывает 570 Hz, либо осцилограф неточно посчитал частоту, либо частота внутреннего генератора tiny13 уплыла из за температуры), максимальная же частота ШИМа attiny13 от внутреннего тактового генератора равна 37,5 kHz.

  • @ИванЕвдокимов-щ9ь
    @ИванЕвдокимов-щ9ь 4 ปีที่แล้ว

    почему при минимальном значении, на выходе все же оставался шим с малой степенью заполнения, а не исчезал полностью.

    • @cas_channel
      @cas_channel  4 ปีที่แล้ว

      Потому что минимальная.... поставьте 0x00тогда не должно быть

    • @СумароковПавел
      @СумароковПавел 4 ปีที่แล้ว

      @@cas_channel Прописал в основном теле программы OCR0A=0x00; и больше ничего и светодиод все равно слабо светится и на осцилле идут иголки. Как полностью отключить ШИМ?

    • @СумароковПавел
      @СумароковПавел 4 ปีที่แล้ว +1

      Отвечу сам себе - подтянул выход МК через резистор 2К к земле , и теперь, когда надо полностью гасить ШИМ пишу код, что направление порта настроено на вход и все работает.....
      вот пример ....
      while (1) {
      int i;
      for (i=0; i0; i--) {OCR0A=i; delay_ms(1); }
      DDRB.0=0;
      // вывод на вход (нужен резистор на массу) - гасим выход полностью
      delay_ms(1000);
      DDRB.0=1;
      // вывод на выход ШИМ таймера
      }
      Иголки на осцилле пропали и диод гасится полностью.......

    • @dred77780
      @dred77780 4 ปีที่แล้ว +1

      @@СумароковПавел абсолютно те же грабли и у меня. А автор канала скорее всего никогда не ковырял шим, а просто скопипастил исходники. На днях подключусь логическим анализатором и расскажу о длительности этой иголки. Скорее всего ее длительность равна одному периоду. А если так, то есть мысли, что и расчет разрешающей способности шим (да и коэф заполнения) будет отличатся от традиционного. Если интересно то я могу поделиться результатами своего исследования.

    • @alibdfy
      @alibdfy 3 ปีที่แล้ว

      @@dred77780 поделитесь

  • @usertm5691
    @usertm5691 3 ปีที่แล้ว

    Какие авр,уже эра СТМ!

    • @cas_channel
      @cas_channel  3 ปีที่แล้ว +2

      А вот здесь вы ошибаетесь, на вкус и цвет...

  • @vadzit1467
    @vadzit1467 5 ปีที่แล้ว

    я видимо туплю.. но очень интересно откуда появился код после конфигурации всего лишь контроллера?

    • @cas_channel
      @cas_channel  5 ปีที่แล้ว

      Генерируется средой CVA автоматически

    • @pmprivatealiunpack82
      @pmprivatealiunpack82 4 ปีที่แล้ว

      @@cas_channel Понятно. Сегодня воскресенье - жду среду!

  • @Vladimir-lx3sw
    @Vladimir-lx3sw 6 ปีที่แล้ว

    Привет, можешь ли добавить еще одну кнопку для включения и выключения по пятикратному нажатию и при нажатии этой же кнопки поступал шим а когда отпускаешь то и шим переставал идти ну и если возможно ли добавить светодиод для индикации состоянии вкл и выкл атини. Есть ли возможность чтоб она при выключении запоминала состояние шим

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Привет. Да, уточните вопрос что значит запоминала состояние шим?

    • @Vladimir-lx3sw
      @Vladimir-lx3sw 6 ปีที่แล้ว

      ну чтоб она записывала состояние шим в эпрум. Для того чтоб при при отключении и потом включении питания не пришлось заново настраивать шим

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Ну это не нужно делать ибо можно заранее пресеты сделать, по нажатию определенной кнопки ... в общем могу помочь, без eeprom

  • @romanhordiyenko4513
    @romanhordiyenko4513 4 ปีที่แล้ว

    учитель, а где Вы назначили входы и виходы МК?

    • @cas_channel
      @cas_channel  4 ปีที่แล้ว

      Здравствуйте.
      ТАм там где DDR.B.0 = 0 Это вход, там где DDRB.0 = 1 Это выход

    • @romanhordiyenko4513
      @romanhordiyenko4513 4 ปีที่แล้ว

      @@cas_channel извините, не поздоровался ЗДРАСТВУЙТЕ, спасибо попробую разобраться

  • @dargindarginec9561
    @dargindarginec9561 6 ปีที่แล้ว

    Про бит флаг на 2:56 минуте это что за строчка как она работает?

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว +1

      Ну такие переменные могут принимать значения только нуль или единица и все, например число 2 он не будет понимать или 3.
      ПРименять можно там где не нужно делать счет, а как "переключатель"

    • @dargindarginec9561
      @dargindarginec9561 6 ปีที่แล้ว

      спасибо

  • @Technoid0629
    @Technoid0629 6 ปีที่แล้ว

    Немного не по теме, но всё же. Есть attiny13, которую прошиваю через arduino nano (скетч пишу в arduino ide), потенциометр 10К и светодиод с резистором. Задача - считать значение потенциометра и в соответствии с ним установить яркость светодиода посредством ШИМ. При этом естественно нужно перевести значение из диапазона 0-1023 в 0-255. Просто поделить на 4 не интересно, хотя способ рабочий. Я хочу задавать диапазон ШИМа 20-240, чтобы светодиод не гас и не горел на полную. Функция map в память мк не помещается (в проекте два светодиода и два потенциометра, соответственно мапить нужно два значения), нашел исходный код, применил его, в результате при полном обороте потенциометра светодиод трижды загорается и гаснет. Исходный код функции:
    long map(long x, long in_min, long in_max, long out_min, long out_max)
    {
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
    }
    Соответственно у меня получается
    val = (val - 0) * (240 - 20) / (1023 - 0) + 20
    или же
    val = val * 220 / 1023 + 20
    Как считает это attiny13, что выдает такой странный результат, не понимаю

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Ооо сложный случаи... здесь нужно я бы так сказал методом тыка находить... в наличии нет потенциометра... поэтому пока что нечем вас обрадовать...

    • @Al.Sy.
      @Al.Sy. 6 ปีที่แล้ว

      Возможно, не хватает разрядности и происходит переполнение, когда после перемножения двух положительных чисел получается отрицательное число (это особенность представления целых положительных и отрицательных чисел в дополнительном коде, когда знак определяется самым старшим битом). Попробуйте перед типами long везде описать как unsigned long.
      Кстати, какова максимальное значение величины val?

    • @ATtiny13a-PU
      @ATtiny13a-PU 5 ปีที่แล้ว +1

      @@cas_channel , я решил делать так . i >> 2; эта команда делит i на 4 всего за 1 такт и записывает за 2-3 такта

    • @ATtiny13a-PU
      @ATtiny13a-PU 5 ปีที่แล้ว +1

      чтобы ограничить от 20 до 240 надо с двух концов реостата подпаять резисторы нужного номинала исходя из нужд. например для реостата на 100 кОм нужны резисторы примерно 4.7 кОм и 3.9 кОм с минуса и плюса соотвественно

    • @inf20
      @inf20 5 ปีที่แล้ว

      Дело конечно давнее, но решил накидать то что вы описали на ассемблере. Все работает, памяти attiny13 заняло 70 байт. Если надо могу готовую прошивку выложить.

  • @dargindarginec9561
    @dargindarginec9561 6 ปีที่แล้ว

    здравствуйте почему схема в протеусе не работает?

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Честно без понятия, пробовал моделировать, чета не сработало

    • @dargindarginec9561
      @dargindarginec9561 6 ปีที่แล้ว

      Канал CAS именно этот вариант не работает, я делал другой вариант и заработал думал с протеусом что не так

  • @user-ev1976
    @user-ev1976 6 ปีที่แล้ว

    ..здравствуйте,а етот вариант и с такойпрошивкой можно использовать для управления лабораторным блоком питания вместо подстроечных резисторов?
    вот просмотрите пожалуйста,загуглите SCPS0037-25V-0.1, Кнопочный контроллер импульсного стабилизатора напряжения с памятью-нашел такой модуль на attiny13,но его делают в России и на украину не отправляют.схемно,программно похож на Ваш

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Ок увидел его, но скажите на обратной стороне стоят 3 микросхемы, вы не знаете что это за микросхемы?

    • @user-ev1976
      @user-ev1976 6 ปีที่แล้ว

      ..ето аttiny13 lm7805 и lm358 по обратной связи,могу вам даже схему выслать на електронку.мне удалось раздобыть один образец,но слить прошивку не получилось,залочен чип.а подключал к блоку питания вместо резистора-отлично работает.вот подумал может Вы сможете написать прошивку для моего варианта как в 'етом'регуляторе с его функционалом

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว +1

      Все ок, мне нужно время почитать, если получится то сделаю...

    • @user-ev1976
      @user-ev1976 6 ปีที่แล้ว

      ..спасибо большое,очень выручите.надо как для себя так и друзьям в сервисценры попеределывать их БП заменив резисторы на кнопочное управление.будете читать,так на сайтах где описуют даное изделие и схема есть
      www.chipdip.ru/product/scps0037-25v-0.1
      www.raelkom.ru/2016/09/scps0037.html
      ..во второй ссылке найдете описание и схема,PDF файлик, скачайте,там имеется схема подключения

    • @cas_channel
      @cas_channel  6 ปีที่แล้ว

      Ок

  • @СергейШатунов-с9ы
    @СергейШатунов-с9ы 5 ปีที่แล้ว

    Здравствуйте! у меня светодиод не до конца затухает,как можно сделать программно что бы до конца затухал?

    • @cas_channel
      @cas_channel  5 ปีที่แล้ว

      Привет, а вы сделали по моему проекту?

    • @СергейШатунов-с9ы
      @СергейШатунов-с9ы 5 ปีที่แล้ว

      @@cas_channel да по вашему

    • @cas_channel
      @cas_channel  5 ปีที่แล้ว

      @@СергейШатунов-с9ы ДОбавьте резистор на 330 Ом можеду ножкой МК и светодиодом

    • @СергейШатунов-с9ы
      @СергейШатунов-с9ы 5 ปีที่แล้ว

      @@cas_channel спасибо попробую

    • @СергейШатунов-с9ы
      @СергейШатунов-с9ы 5 ปีที่แล้ว

      @@cas_channel а вы не посмотрите мой код на правильность,я собираю контролер ходовых огне на аттини 13 по примеру вашего кода,вроде все работает,но хотелось бы удостоверится,все ли правильно,там всего пару строк,вот если не трудно конечно
      #include
      #include
      void main(void)
      {
      PORTB=0b000000;
      DDRB=0b000001;

      // Crystal Oscillator division factor: 1
      #pragma optsize-
      CLKPR=0x80;
      CLKPR=0x00;
      #ifdef _OPTIMIZE_SIZE_
      #pragma optsize+
      #endif
      TCCR0A=0x83;
      TCCR0B=0x03;
      TCNT0=0x00;
      OCR0A=0x00;
      OCR0B=0x00;


      while (1)
      {
      if ((PINB.2==1)&&(PINB.3==0)&&( OCR0A0x00))
      {
      OCR0A=OCR0A-0x01;
      delay_ms(5);

      }




      }
      }