Сегодня я хочу вам представить простое, но очень надежное устройство, которое реализовано на микроконтроллере (далее МК) ATtiny13 . Устройство представляет собой цифровой таймер выдачи импульса для сварки двух пластин. Как я уже выше писал, устройство предельно простое. Оно имеет в своем составе 2 кнопки для задания значений и 2 светодиода для индикации состояния и значения параметров.
При нажатии кнопок + или – будет мигать светодиод. Когда мы нажимаем на кнопку + (плюс) а длинна импульса уже максимальная , светодиод тухнет сигнализируя о том что больше уже импульс сделать нельзя. Так само происходит и в случае если мы нажали кнопку — (минус) а импульс уже минимальный.
Пределы регулировки длинны импульса можно задать в пределах от 0 до 2сек. с дискретностью в 50мс.
Для визуальной проверки времени сварки, необходимо зажать кнопки + и — . Светодиод начнет вспыхивать с реальной длительностью импульса сварки.
Благодаря всем этим программным введениям, устройством удобно пользоваться.
При прошивке фьюзы трогать не обязательно. Но очень желательно прошить фьюзы отвечающие за сброс контроллера при критическом снижении напряжения питания МК.
Исходный код устройства:
/***************************************************** Автор Угримов Артем Декабрь 2012 *****************************************************/ #include "tiny13.h" #include "delay.h" #define butt_up PINB.2 #define start PINB.3 #define butt_down PINB.4 // Declare your global variables here unsigned int power=450; //unsigned int temp=25; unsigned char flags=1; unsigned char flags_1=1; void main(void) { #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif PORTB=0x1C; DDRB=0x03; TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; GIMSK=0x00; MCUCR=0x00; TIMSK0=0x00; ACSR=0x80; ADCSRB=0x00; while (1) { // Place your code here if(start==0 && flags==1) // НАЖАЛИ "СТАРТ" { PORTB.0=1; PORTB.1=1; delay_ms(power); PORTB.0=0; PORTB.1=0; flags=0; } if (start==1){ delay_ms(200); flags=1; } if (butt_down==1 && butt_up==0) // НАЖАЛИ "ДОБАВИТЬ" { if(flags_1==1) { PORTB.1=1; delay_ms(75); PORTB.1=0; delay_ms(75); } power = power+50; if (power>1600) { power=1600; } if (power>1599) { flags_1=0; PORTB.1=0; } else { flags_1=1; } delay_ms(50); } if (butt_down==0 && butt_up==1) // НАЖАЛИ "УБАВИТЬ" { if (flags_1==1) { PORTB.1=1; delay_ms(75); PORTB.1=0; delay_ms(75); } power = power-50; if (power<70) { power=70; } if (power<71) { flags_1=0; PORTB.1=0; } else { flags_1=1; } delay_ms(50); } if (start==1 & butt_up==0 & butt_down==0 ) // НАЖАЛИ ОБЕ КНОПКИ ПРИ ЭТОМ "СТАРТ" ОТЖАТ { PORTB.1=1; delay_ms(power); PORTB.1=0; } }; }
К статье прилагаю схему, прошивку, проект к компилятору CVAVR, исходник и файл протеус.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
IC1 | МК AVR 8-бит | ATtiny13 | 1 | |||
U1 | Линейный регулятор | LM7805CT | 1 | |||
Q1 | MOSFET-транзистор | IRLU120 | 1 | |||
D1, D2 | Светодиод | АЛ307В | 2 | |||
C1, C2 | Конденсатор | 0.1 мкФ | 2 | |||
C3 | Электролитический конденсатор | 10мкФ 16В | 1 | |||
R1 | Резистор | 15 кОм | 1 | |||
R2-R4 | Резистор | 1 кОм | 2 | |||
R5 | Резистор | 22 кОм | 1 | |||
K1-K3 | Кнопка | Без фиксации | 3 | |||
K4 | Реле | 1 | ||||