Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
http://radio.aliot.com.ua/?p=409
|
|
|
 |
Добавлено: 19 июл 2013, 15:31 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
В функции инициализации ШИМ ошибка TCCR0B|=_BV(CS00); шим работает на неподемной частоте для irfz44 9,6 Мгц :( TCCR0B|=_BV(CS02); будет лучше 37500 Гц но даже это слишком много. Причина в том что затвор транзистора подключен напрямую к мк и на такой частоте недозаряжает затвор транзистора до полного открыти ! ТАК ЧТО СХЕМА ВКЛЮЧЕНИЯ ПОЛЕВОГО ТРАНЗИСТОРА ИЗ http://www.getchip.net/posts/062-kak-po ... -nagruzku/ СПРАВЕДЛИВА ПРИ ИСПОЛЬЗОВАНИИ В КАЧЕСТВЕ РЕЛЕ И НЕПРИГОДА ДЛЯ ШИМ :( вот тут поясняется кaкраз на премере irfz44 http://cxem.net/beginner/beginner65.php!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
В функции инициализации ШИМ ошибка [color=#0000FF]TCCR0B|=_BV(CS00); [/color] шим работает на неподемной частоте для irfz44 9,6 Мгц :(
TCCR0B|=_BV(CS02); будет лучше 37500 Гц но даже это слишком много. Причина в том что затвор транзистора подключен напрямую к мк и на такой частоте недозаряжает затвор транзистора до полного открыти !
ТАК ЧТО СХЕМА ВКЛЮЧЕНИЯ ПОЛЕВОГО ТРАНЗИСТОРА ИЗ http://www.getchip.net/posts/062-kak-podklyuchit-k-mikrokontrolleru-nagruzku/ СПРАВЕДЛИВА ПРИ ИСПОЛЬЗОВАНИИ В КАЧЕСТВЕ РЕЛЕ И НЕПРИГОДА ДЛЯ ШИМ :(
вот тут поясняется кaкраз на премере irfz44 http://cxem.net/beginner/beginner65.php
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
 |
Добавлено: 27 окт 2012, 19:42 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
Вот текуший код: // DEFINE________________________________________________
#define F_CPU 9600000UL
#define set(x) PORTB|=(1<<x) #define clear(x) PORTB&=~(1<<x)
#define DATA PB2 #define CLK PB1
#define WDT_TIME WDTO_250MS
// INCLUDE________________________________________________
#include <avr/io.h> #include <avr/wdt.h> #include <util/delay.h> #include <avr/interrupt.h>
// CONST__________________________________________________ // 0 1 2 3 4 5 6 7 8 9 const char symbol[10]={0x7e,0x50,0xec,0xf4,0xD2,0xB6,0xBE,0x70,0xff,0xF7}; const char segpos[4]={0x01,0x02,0x04,0x08}; // VARIABLES______________________________________________
volatile int sens_temp,adj_temp; volatile char temp,count,segment[4]={0x00,0x00,0x00,0x00};
// FUNCTIONS______________________________________________
void converting(int num) { for(temp=0;temp<4;temp++) segment[temp]=0x00; temp=0; if(num<1000) segment[0]=symbol[0]; else while(num>=1000) { num=num-1000; temp++; segment[0]=symbol[temp]; } temp=0; if(num<100) segment[1]=symbol[0]; else while(num>=100) { num=num-100; temp++; segment[1]=symbol[temp]; } temp=0; if(num<10) segment[2]=symbol[0]; else while(num>=10) { num=num-10; temp++; segment[2]=symbol[temp]; } temp=0; if(num<1) segment[3]=symbol[0]; else while(num>=1) { num=num-1; temp++; segment[3]=symbol[temp]; } }
void clk_data_set(void) { clear(CLK); set(DATA); set(CLK); }
void clk_data_clear(void) { clear(CLK); clear(DATA); set(CLK); }
void led_screen(void) { converting(sens_temp); for (temp=0;temp<4;temp++) { for (count=0;count<8;count++) { if (segpos[temp]&_BV(count)) clk_data_set(); else clk_data_clear(); } for (count=0;count<8;count++) { if (segment[temp]&_BV(count)) clk_data_set(); else clk_data_clear(); } _delay_ms(8); } }
// INTERRUPTS_____________________________________________
ISR(ADC_vect) { wdt_reset(); if (ADMUX==0x03) { ADMUX=0x02; adj_temp=ADCW; } else { ADMUX=0x03; sens_temp=ADCW; } if (adj_temp>sens_temp) { OCR0A=0xff; } else { OCR0A=0x00; } led_screen(); ADCSRA|=_BV(ADSC); }
// INIT FUNCTIONS_________________________________________
void pwm_init(void) { TCCR0A|=_BV(WGM00)|_BV(COM0A1); TCCR0B|=_BV(CS00); OCR0A=0x00; }
void port_init(void) { DDRB=0xe7; PORTB=0x00; }
void adc_init(void) { ADMUX|=_BV(MUX1)|_BV(MUX0); ADCSRA|=_BV(ADEN)|_BV(ADIE)|_BV(ADPS1)|_BV(ADPS2); sei(); }
// MAIN___________________________________________________
int main(void) { //_delay_ms(1000); //wdt_enable(WDT_TIME); port_init(); pwm_init(); adc_init(); ADCSRA|=_BV(ADSC);
while(1) {
} } 
Вот текуший код:
[color=#0000BF]// DEFINE________________________________________________
#define F_CPU 9600000UL
#define set(x) PORTB|=(1<<x) #define clear(x) PORTB&=~(1<<x)
#define DATA PB2 #define CLK PB1
#define WDT_TIME WDTO_250MS
// INCLUDE________________________________________________
#include <avr/io.h> #include <avr/wdt.h> #include <util/delay.h> #include <avr/interrupt.h>
// CONST__________________________________________________ // 0 1 2 3 4 5 6 7 8 9 const char symbol[10]={0x7e,0x50,0xec,0xf4,0xD2,0xB6,0xBE,0x70,0xff,0xF7}; const char segpos[4]={0x01,0x02,0x04,0x08}; // VARIABLES______________________________________________
volatile int sens_temp,adj_temp; volatile char temp,count,segment[4]={0x00,0x00,0x00,0x00};
// FUNCTIONS______________________________________________
void converting(int num) { for(temp=0;temp<4;temp++) segment[temp]=0x00; temp=0; if(num<1000) segment[0]=symbol[0]; else while(num>=1000) { num=num-1000; temp++; segment[0]=symbol[temp]; } temp=0; if(num<100) segment[1]=symbol[0]; else while(num>=100) { num=num-100; temp++; segment[1]=symbol[temp]; } temp=0; if(num<10) segment[2]=symbol[0]; else while(num>=10) { num=num-10; temp++; segment[2]=symbol[temp]; } temp=0; if(num<1) segment[3]=symbol[0]; else while(num>=1) { num=num-1; temp++; segment[3]=symbol[temp]; } }
void clk_data_set(void) { clear(CLK); set(DATA); set(CLK); }
void clk_data_clear(void) { clear(CLK); clear(DATA); set(CLK); }
void led_screen(void) { converting(sens_temp); for (temp=0;temp<4;temp++) { for (count=0;count<8;count++) { if (segpos[temp]&_BV(count)) clk_data_set(); else clk_data_clear(); } for (count=0;count<8;count++) { if (segment[temp]&_BV(count)) clk_data_set(); else clk_data_clear(); } _delay_ms(8); } }
// INTERRUPTS_____________________________________________
ISR(ADC_vect) { wdt_reset(); if (ADMUX==0x03) { ADMUX=0x02; adj_temp=ADCW; } else { ADMUX=0x03; sens_temp=ADCW; } if (adj_temp>sens_temp) { OCR0A=0xff; } else { OCR0A=0x00; } led_screen(); ADCSRA|=_BV(ADSC); }
// INIT FUNCTIONS_________________________________________
void pwm_init(void) { TCCR0A|=_BV(WGM00)|_BV(COM0A1); TCCR0B|=_BV(CS00); OCR0A=0x00; }
void port_init(void) { DDRB=0xe7; PORTB=0x00; }
void adc_init(void) { ADMUX|=_BV(MUX1)|_BV(MUX0); ADCSRA|=_BV(ADEN)|_BV(ADIE)|_BV(ADPS1)|_BV(ADPS2); sei(); }
// MAIN___________________________________________________
int main(void) { //_delay_ms(1000); //wdt_enable(WDT_TIME); port_init(); pwm_init(); adc_init(); ADCSRA|=_BV(ADSC);
while(1) {
} }[/color]
:zomg: :zomg: :zomg: :zomg: :zomg: :zomg: :zomg: :zomg:
|
|
|
 |
Добавлено: 14 авг 2012, 18:44 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
Кстати драйвер 7сегментника это две 74VHC164 и 12 транзисторов (все в SMD  ))))) )
Вложения: |
Комментарий к файлу: по термопаре замерив жало вышло окол 240c

20120814_211324.jpg [ 497.86 КБ | Просмотров: 14020 ]
|

20120814_211201.jpg [ 499.29 КБ | Просмотров: 14020 ]
|
Кстати драйвер 7сегментника это две 74VHC164 и 12 транзисторов (все в SMD :)))))) )
|
|
|
 |
Добавлено: 14 авг 2012, 18:26 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
при включеном ШИМе измеряет неверно или вообще неизмеряет Ж)
при включеном ШИМе измеряет неверно или вообще неизмеряет Ж)
|
|
|
 |
Добавлено: 14 авг 2012, 18:11 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
В схему уселителя невключил подстроечник :( в данный момент просто выводит показания adc от 0 до 1023 (причем при отключеном паяльнике показывает 774 от наводок) незнаю как отколибровать так чтоб температуру показывал. и еще выяснилось что при включеном ШИМе изм
В схему уселителя невключил подстроечник :( в данный момент просто выводит показания adc от 0 до 1023 (причем при отключеном паяльнике показывает 774 от наводок) незнаю как отколибровать так чтоб температуру показывал. и еще выяснилось что при включеном ШИМе изм
|
|
|
 |
Добавлено: 14 авг 2012, 18:08 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
|
 |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
[quote="Гость"]Паяльник у паяльной станции, хоть керамика, хоть нихром, никак не 200 Вт. От силы ватт 60 потолок. Например http://www.kosmodrom.com.ua/el.php?name=LUKEY-852-P[/quote] Чем покупать за такую цену один паяльник, лучше купить [url=http://www.e-voron.dp.ua/catalog/saike-936]готовую паяльную станцию[/url] за те же деньги и переделать её, например, [url=http://www.embed.com.ua/raznoe/payalnaya-stantsiya-saike-936-modernizatsiya/]так[/url].
|
|
|
 |
Добавлено: 09 июн 2012, 22:20 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
Вложения: |

Фото0370.jpg [ 245.68 КБ | Просмотров: 14279 ]
|
Решил продолжить начатое и зделал вторую версию :lol: :congrats: :OK: Как оказалось причиной смерти первой стала вот эта строчка: [color=#0000FF]void port_init(void) { DDRB=0xff; PORTB=0x00; }[/color] из за того что вместо резистора между оу и мк я впаял перемычку :evil: между ними потек ток больше 30 ма :evil: :crybaby: [color=#000040]Оказывается что при включином АДЦ порт должен быть иничиализирован как вход !!! :cool: Я об этом не думал ;) [/color]
если будет не лень то может и доведу до совершенства :cool: :cool: :cool: :cool: :cool:
|
|
|
 |
Добавлено: 06 июн 2012, 18:50 |
|
|
 |
|
|
Заголовок сообщения: |
Re: Паяльная станция на ATtiny13 |
Цитата |
|
[quote="Karlson1970"] Ну мы же знаем как правильно подключать мосты на самом деле. ;) Подправил схемку. Теперь очки я думаю не понадобяться :-)[/quote] Кто-то знает, а кто-то ведь и нет. Так, что прежде чем, что-то выкладывать, необходимо внимательно проверить. ;)
|
|
|
 |
Добавлено: 24 мар 2012, 19:04 |
|
|
 |