Альтернативное применение силового диода
   
				

Альтернативное применение силового диода

	
	
	

Дата: 12 Февраля 2015. Автор: Алексей

	
	
Встал у меня вопрос по пайке радиодеталей в печке. Да, вещь. Правда денег стоит ууу как многА. Прикупил как-то в свое время для защитной маски(зеленка) печку в магазине ЗЮ.Видео Panasonic. Она такая с тэннами керамическими. Ну для зеленки температуру особо регулировать не надо, 65°-85°, а для запекания в районе 150°-170°. А для пайки нужны точные задания температур. Вот пример графика.

Пример графика температур для пайки в печи

То есть задание температуры по времени довольно точное. Отсюда появилась задача регулирования тэннов с помощью микроконтроллера. Восьмая мега справится как нечего делать. А вот что с датчиком температуры? Самый распространенный DS18B20 помрет. Температура должна доходить до плавления припоя. Терморезистор туда же. Покупать готовый высокотемпературный датчик не хочется, дороговато. Решил подумать. Думал, думал и надумал. Попался мне под руку силовой диод IN4007. Ммм, думаю, а ведь при изменении температуры полупроводника у него меняется пропускная способность. Есть у диодов такая не хорошая вещь как падение напряжения при прямом включении. Так вот что с ним будет если диод нагреть. А оно начинает расти. И о! Бинго!. Берем нашу восьмерку и ваяем схему следующего вида.

Схема

Далее ваяем простенькую тестовую програмулину вида:


#define F_CPU 7372800UL
#define DDR_OUT DDRD	// Имя порта
#define PORT_OUT PORTD	// Имя порта

#include <avr/io.h>
#include <avr/interrupt.h>
#include <mylib/lcd.h>

volatile int data;

ISR(ADC_vect)
{
	data = ADCW;
}

void itochar(int data, char *str)
{
	if(data > 999)
	{
		data -= 1000;
		*str = 0x31;
	}
	else
	{
		*str = 0x30;
	}
	str++;
	*str = 0x30;
	while(data > 99)
	{
		data -= 100;
		*str += 1;
	}
	str++;
	*str = 0x30;
	while(data > 9)
	{
		data -= 10;
		*str += 1;
	}
	str++;
	*str = 0x30;
	*str += data;
	str++;
	*str = 0x00;
}

int main(void)
{
	char string[5];
	
	ADMUX = (1<<REFS0); // Преобразование на 0 канале
	ADCSRA = (1<<ADEN)|(1<<ADIE)|(1<<ADPS1)|(1<<ADPS2); 
// Влючаем АЦП, преобразование вручную, частота преобразования 115200Гц делитель 64
	
	sei();
	
	lcd_init(0);
	
    while(1)
    {
       ADCSRA |= (1<<ADSC);  // Старт преобразования
	   data = ((133-data)*4)+25; // Перевод данных АЦП в температуру
	   itochar(data, string); // Перевод числа в масив символов
	   lcd_xy(0,0);
	   lcd_putsf("Temp ");
	   lcd_putsf(string); // Вывод на дисплей.
	   _delay_ms(100);
    }
}

Собственно программка ничего сложного не представляет. Сначала настраиваем АЦП на ручное включение с частотой отцифровки 115200Гц (это из-зи кварца, он на отладочной плате на мертво впаян) и включение прерывания по окончанию отцифровки. А вот что мне вернул АЦП, вот тут нужно поговорить отдельно. Значение АЦП при комнатной температуре 24° возвращает число 133. А вот при обдуве паяльным феном при выставленной температуре в 400°, выводит 84. Как и задумывалось, при увеличении температуры, падение напряжение увеличивается. Далее я нарисовал график вида:

График предполагаемого изменения падения напряжения от температуры.

Методом расчетов получил вот такую формулу: Т=((133-ADCW)*7,653)+25 Но как оказалось эта зараза вроде как не совсем линейная что ли. Или тут еще могло сыграть несколько моментов. Нет точного термометра, нет точного теплоносителя. Отсюда пришлось перейти на эмпирический метод палки и веревки и вывести для первой наглядности коэффициент равным 4. Если кто-то решит внести поправки и предложения я буду очень признателен. Вот архив с проектом, а ниже видео как это работает.
JW Player goes here



Фыва    13.02.15 23:37

Термопарой, к тестерам даётся мерить не проще?

Алексей    14.02.15 00:35

Если бы было проще, я бы не заморачивался.

Фыва    14.02.15 02:15

> Если бы было проще, я бы не заморачивался. А в чём сложность, если не секрет? Линейная характеристика, термостойкость, размеры, предназначение в конце концов.

Алексей    14.02.15 10:16

Как раз у тесторовой термопары, как я не пытался, зависимость линейная только до 150°. Дальше как бог на душу положит. Да и повозиться с Диодом было интересно. На них часто термодатчики делают. В любом случае я смотрю в сторону платинового термосопротивления. Вот он точно под это заточен. Правда цена кусается.

АНОНИМ    19.02.15 23:48

В обратном включении диод нужно включать. Обратный ток более подвержен влиянию температуры.

Алексей    20.02.15 00:10

Не. Уже промуслекали эту тему. При прямом включении падение еапряжение в среднем 2мВ/1градус. Правда при температуре выше 170 градусов, все начинает плавать.




Чтобы вставить ссылку используйте форму вида[url]http://www.адрес.ru[/url][text]текст ссылки[/text]
Чтобы вставить код используйте форму вида[code]код[/code]

Имя:   





  








Вверх


Рейтинг@Mail.ru Яндекс.Метрика