Главная » Микроконтроллеры
Призовой фонд
на октябрь 2017 г.
1. Термометр Relsib WT51
Рэлсиб
2. 1000 руб
PCBWay
3. Регулируемый паяльник 60 Вт
Паяльник
4. 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 чел.

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

0
Игорь #
А почему затухание/загорание не происходит плавно, а как-то резко, как будто рывком?
Ответить
0
рустик #
Диод имеет нелинейную яркость свечения в зависимости от скважности ШИМа. То есть от 0 до 127 яркость постепенно возрастает, а с 127 до 255 практически не меняется
Ответить
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В
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
ELM327 OBD II — адаптер с поддержкой CAN AVR-программатор USB ASP
вверх