Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

ШИМ на микроконтроллере Attiny13

ШИМ - широтно-импульсная модуляция (или по англ. PWM). У микроконтроллера ATtiny13 есть два ШИМ выхода OC0A и OC0B от таймера 0. ШИМ выход OC0A на 5 ножке микроконтроллера Attiny13, а OC0B на 6 ножке. В данном примере светодиод подключённый к ШИМ выходу OC0B будет плавно загораться и гаснуть.

Вот схема устройства:

Схема ШИМ

Для сборки устройства понадобится:

Необходимые компоненты

1.Микроконтроллер Attiny13 (с любыми индексом)
2. Панелька DIP8
3. Любой светодиод
4. Резистор 4,7k (можно от 2,2кОм до 20кОм)
5. Резистор 150ом

Питание для устройства должно быть от 3 до 5 вольт. Для питания устройства я использовал "литьевую таблетку" на 3 вольта.

Прошивка для устройства написана в среде BASCOM-AVR.

Вот исходник прошивки:

$regfile = "attiny13.dat"
$hwstack = 8
$swstack = 16
$framesize = 16
Config Portb.1 = Output
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down
Start Timer0
Do
Do
Waitms 10
Incr Pwm0b
Loop Until Pwm0b = 255
Do
Waitms 10
Decr Pwm0b
Loop Until Pwm0b = 0
Loop
End

В канал ШИМ можно записать значение от 0 до 255.

Вот упрощенный вариант кода управления ШИМ:

$regfile = "attiny13.dat"
Config Portb.1 = Output
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down
Start Timer0
Pwm0b = 255
End

В данном случае в ШИМ канал OC0B мы запишем число 255. То есть светодиод будет гореть постоянно.

Записать значение в ШИМ канал можно так:
(ШИМ канал) = (Значение от 0 до 255)

Вот такое устройство получилось у меня:

Устройство

Микроконтроллер прошивал программой PonyProg2000.

Вот картинка установки фьюз битов:

Фьюзы

Ниже вы можете скачать прошивку, исходник, печатную плату, проект в Proteus

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (10) | Я собрал (0) | Подписаться

0
Игорь #
А почему затухание/загорание не происходит плавно, а как-то резко, как будто рывком?
Ответить
0
рустик #
Диод имеет нелинейную яркость свечения в зависимости от скважности ШИМа. То есть от 0 до 127 яркость постепенно возрастает, а с 127 до 255 практически не меняется
Ответить
0
VanyaSV #
Это не диод имеет нелинейную яркость свечения, а человеческий глаз имеет нелинейное восприятие яркости.
Ответить
0
zoox #
Потому что для плавного загорания и потухания нужно использовать кривую синуса/косинуса, а тут получается не плавный график, а пилообразный. Поэтому такие скачки
Ответить
0
юрий #
Как сделать, чтобы у светодиода была пауза между плавным загоранием и когда он плавно гаснет?
Ответить
0
RX_TX #
На Баском
$regfile = "attiny13.dat"
$hwstack = 8
$swstack = 16
$framesize = 16
Config Portb.1 = Output
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down
Start Timer0
Do
Do
Waitms 10
Incr Pwm0b
Loop Until Pwm0b = 255
Wait 1
Do
Waitms 10
Decr Pwm0b
Loop Until Pwm0b = 0
Wait 1
Loop
End

На Си
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
DDRB = 0x1;
PORTB = 0x01;
TCCR0A=0x83;
TCCR0B=0x02;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
for(;;)
{
do // Нарастание яркости
{
OCR0A++;
_delay_ms(5);
}
while(OCR0A!=255);
_delay_ms(1000); // Пауза 1 сек.
do // Затухание
{
OCR0A--;
_delay_ms(5);
}
while(OCR0A!=0);
_delay_ms(1000); // Пауза 1 сек.
}
}
Ответить
0
Dmitriy #
А на языке си кд можно?
Ответить
0
RX_TX #
На Си можно.
Код.
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
DDRB = 0x1;
PORTB = 0x01;
TCCR0A=0x83;
TCCR0B=0x02;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
for(;;)
{
do
{
OCR0A++;
_delay_ms(5);
}
while(OCR0A!=255);
do
{
OCR0A--;
_delay_ms(5);
}
while(OCR0A!=0);
}
}

Прошивка, модель в Протеусе. Файлы в аттаче.
Прикрепленный файл: PWM_C.zip
Ответить
0
Alex #
Помогите пожалуйста оптимизировать схему для трёх светодиодов ARPL Star 3W, питание - акб 6В 1,2А или 2 акб=12В
Ответить
0
Константин #
Объясните, что за команда на бэйсике-until?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Мини гравер 125 Ватт LC-измеритель LC100-A
вверх