Belichter für Platinen

Selbstbau-Projekte aller Art.

Moderatoren: nohoe, lightwave, adminoli

Antworten
Benutzeravatar
random
Beiträge: 2160
Registriert: Fr 03 Aug, 2001 12:00 pm
Do you already have Laser-Equipment?: Dynamics, Easy-/NetLase, NetLaseLC
Some devices that emit light.
Wohnort: München - 85540 Haar
Kontaktdaten:

Belichter für Platinen

Beitrag von random » Mo 16 Jan, 2006 6:31 pm

Hi Leutz,


hier ein wenig Input ;-)

Ich habe aus einem alten Flachbettscanner, einem Gesichtsbräuner (ebay) und einem Atmel AVR mit einigem Kleinkram einen Platinenbelichter gebaut.
Für den Selbstbau ist die Verwendung eines alten Flachbettscanners "gängige Praxis", für die neuen und interessierten hier eine kurze Beschreibung:

Man zerlege einen Gesichtsbräuner (für ca. 10euro incl. Porto bei ebay zu haben) und einen alten Flachbettscanner.
Die Röhren, Vorschaltgeräte und Starter (am besten gegen Elektronikstarter austauschen) baut man entsprechend der Glasplatte und der sonstigen Gegebenheiten in den Scanner ein.

Zusätzlich zu dem Schaltplan (siehe unten) braucht man noch:
- Kaltgerätebuchse
- Netzschalter
- Travo mit Gleichrichter für Mikrocontroller

Appropos Mikrocontroller ...
Der Prog-Adapter ist der Standart-Programmieradapter. Soft und Schaltplan sowie Target - File findet ihr im Link.

Viel Spass damit!

Wenn fragen ... dann fragen ;-)


Greetz,
medra

http://laser.cco-ev.de/projects/

PS: Geproggt ist mit WinAVR in C. Falls es jemandem auffällt ... nein, das Makefile ist nicht von mir ;-) Der Rest schon :lol:

Benutzeravatar
gento
Beiträge: 3973
Registriert: Fr 17 Nov, 2000 12:00 pm
Do you already have Laser-Equipment?: Apollo 4a + 4b , Turbotrack 2 , Minisax +++ G120DT +++ G138DT +++
Raytrack 40 ,CT 6210 , CT 6800 , K12
Pangolin , LDS Dynamics ,Phoenix Premium , LDS 2010 ,LDS 2008 , HE
Gas RGB 2W , 800 mW , ALC60
RGB >1W +++
Wohnort: D / NRW / Hamm

Beitrag von gento » Mo 16 Jan, 2006 7:25 pm

man nehme einen Gesichtsbräuner , zwei Glasplatten, vier Wäscheklammern und eine Uhr.

Dann klappts auch mit doppelseiten PLATINEN: :wink:
Je Seite 55 Sekunden belichten ohne AVR.

Gento
Bild

Benutzeravatar
vakuum
Beiträge: 1467
Registriert: Mi 09 Nov, 2005 10:55 am
Do you already have Laser-Equipment?: Vieles zwischen 1 und 50 Watt
Wohnort: Near Zürich Schweiz
Kontaktdaten:

Beitrag von vakuum » Mo 16 Jan, 2006 7:38 pm

oder gar mit nem 500 Watt Halogenscheinwerfer..... so für den Anfang....

Benutzeravatar
random
Beiträge: 2160
Registriert: Fr 03 Aug, 2001 12:00 pm
Do you already have Laser-Equipment?: Dynamics, Easy-/NetLase, NetLaseLC
Some devices that emit light.
Wohnort: München - 85540 Haar
Kontaktdaten:

Beitrag von random » Mo 16 Jan, 2006 7:47 pm

Naja ... meins ist die Luxusvariante für einseitige Platinen :wink:
Man kann ja auch wenden :idea:

Benutzeravatar
lightfreak
Beiträge: 644
Registriert: Di 09 Okt, 2001 12:00 pm
Do you already have Laser-Equipment?: of course...
Wohnort: Nitzahn
Kontaktdaten:

Beitrag von lightfreak » Mo 16 Jan, 2006 8:06 pm

@Medra:

Ich will Dir ja nicht zu nahe treten, aber der Schaltplan ist grausich unübersichtlich und wer sowas macht:

Code: Alles auswählen

void delay(unsigned int ms)
{
	unsigned int i=0;
	for(i=0; i<=ms; i++) delay_ms(1);
}
schlägt auch kleine Kinder.
Dafür hat der AVR Timer eingebaut, die das deutlich besser können.

Ausserdem brauchst Du die Dateien:

.ELF
.O
.MAP
.SYM
.EEP

nicht mit zu veröffentlichen, da die keine [zensiert] interessieren.

Gruß

Simon
----------------------------------------------------------------------------------
http://www.simon-light.de

satrek
Beiträge: 68
Registriert: Di 18 Sep, 2001 12:00 pm
Wohnort: Wendelstein(Mittelfranken)
Kontaktdaten:

Beitrag von satrek » Mo 16 Jan, 2006 8:14 pm

Moin,

ja, so gehts einem hier immer. Veröffentlicht man die Doku nicht, ist alles [zensiert]. Veröffentlich man sie hingegen, ist es auch [zensiert], weil man ja sowieso alles falsch gemacht hat und jeder andere das besser kann.
Mehr sogar noch, es wird sogar zu viel veröffentlicht! @Medra wie kannst du nur! Einfach einige Bytes ins Netz stellen die Mancheinen nicht interessieren könnten! Verrückt...

Mag sein das ich im speziellen Fall was in den flaschen Hals bekommen hab, aber gesamt gesehen sehe ich das Problem hier genau so wie ich es beschrieben habe.

Gruß
Philipp

Benutzeravatar
lightfreak
Beiträge: 644
Registriert: Di 09 Okt, 2001 12:00 pm
Do you already have Laser-Equipment?: of course...
Wohnort: Nitzahn
Kontaktdaten:

Beitrag von lightfreak » Mo 16 Jan, 2006 8:19 pm

Sorry,

aber der Mann will Ingenieur werden. Mein Kommentar mag zwar hart klingen, aber er muss es lernen sonst hat er im Studium keine Chance. Und wer schon in seinen privaten Projekten schludert, tut das auch bei den Projekten für die Uni (meine eigene Erfahrung).
Deshalb bitte nicht als meckern auffassen sondern als konstruktive Kritik.
Ich beantworte auch gerne Fragen, wie es besser geht.

Gruß

Simon
----------------------------------------------------------------------------------
http://www.simon-light.de

Benutzeravatar
random
Beiträge: 2160
Registriert: Fr 03 Aug, 2001 12:00 pm
Do you already have Laser-Equipment?: Dynamics, Easy-/NetLase, NetLaseLC
Some devices that emit light.
Wohnort: München - 85540 Haar
Kontaktdaten:

Beitrag von random » Mo 16 Jan, 2006 8:20 pm

Tja,

das ist hier leider so ...

Anm.: Die delay(int ms) ist zu Debugzwecken drin. Der Einfachheit halber hab ichs fürs Muxen der Anzeige und zum Tasten-Entprellen drin gelassen.
Das delay_ms - define geht nur bis ca. 30ms oder so ...
Und 2 Timer-Interrupts hab ich schon drin. Für dies kleine Projekt reicht das.

Das da sonst ein paar schöne und Interessante Sachen drinstecken haste nicht gefunden ... ein kleines Delay ankreiden aber keine guten passagen loben ... *grummel*

Dieser Artikel war nciht für Nörgler, sondern für Interessenten und Anfänger ! *schimpf!*

@simon: Prinzipiell hast Du recht. Ansonsten ists hier im Forum seit langem nur, dass erst mal genörgelt wird, wenn jemand etwas vorstellt.
Ich würde mal behaupten der Rest des Codes ist sauber und übersichtlich sowie logisch gut programmiert.
Sucht mal die Feinheiten im Programm ;-)

Ich [zensiert] selten beim proggen, wo es allerdings nicht allzu notwendig ist geb ich mich schon mal dem Einfacheren hin :lol:

Desweiteren sitz ich mitten in den Klausuren und hab das als "Miniprojekt" diese Woche in der FH abzugeben (Beleuchtungstechnik).


BTW: Ich suche noch nach einer guten Möglichkeit, Tasten zu entprellen.
Es gibt ja mehrere Möglichkeiten:

- delay
- while(taste gedrückt);
- tasten abfragen mit Interrupt

Problem ist hier, dass ich alte Taster verwende. Auch nach Kontaktspray-behandlung prellen diese immer noch gewaltig, dass ich die while() noch um ein kleines delay erweitern musste.

Wie entprellt ihr stark prellende Taster ?

satrek
Beiträge: 68
Registriert: Di 18 Sep, 2001 12:00 pm
Wohnort: Wendelstein(Mittelfranken)
Kontaktdaten:

Beitrag von satrek » Mo 16 Jan, 2006 8:39 pm

Moin,

Ingenieur werden, da bin ich auch grade noch dabei :lol:

Aber mal ehrlich, klar ist es etwas ungünstig einen Timer zu bauen und dabei den Timer nicht zu verwenden, ich finde nur das kam etwas sehr hart rüber. Es ist ja auch keine wirklich zeitkritische Anwendung wos auf die Sekunde ankommt :wink:

Es ist doch gut sich überhaupt an die Sache mal ranzutrauen und das Ganze zu veröffentlichen, sicher gibt es eigentlich immer und überall jemanden der es besser kann. Aber grade wenn man eben noch dabei ist Ingenier zu werden ist man eben noch keiner und man ist nicht perfekt. Was lernt man an der Uni schon groß über AVRs programmieren? Das meiste bringt man sich dann eigentlich doch selbst mittels eigener kleinerer oder größerer Projekte am praktischen Beispiel bei (eigene Erfahrung).

Noch was zur Sache an sich:
Ich belichte auch mit meinem Belichter "von unten". Allerdings hatte meines Erachtens gerade bei Doppelseitigen die Glasplatte + Strahler einen Vorteil, da hatte ich die Folien immer viel schneller genau ausgerichtet. Wobei ich sagen muss das ich mit doppelseitigen Platinen sowieso auf Kriegsfuss stehe *gg*

Gruß
Philipp

Benutzeravatar
gento
Beiträge: 3973
Registriert: Fr 17 Nov, 2000 12:00 pm
Do you already have Laser-Equipment?: Apollo 4a + 4b , Turbotrack 2 , Minisax +++ G120DT +++ G138DT +++
Raytrack 40 ,CT 6210 , CT 6800 , K12
Pangolin , LDS Dynamics ,Phoenix Premium , LDS 2010 ,LDS 2008 , HE
Gas RGB 2W , 800 mW , ALC60
RGB >1W +++
Wohnort: D / NRW / Hamm

Beitrag von gento » Mo 16 Jan, 2006 8:43 pm

Lightfreak hat geschrieben:Sorry,

aber der Mann will Ingenieur werden. Mein Kommentar mag zwar hart klingen, aber er muss es lernen sonst hat er im Studium keine Chance. ........
Sei nicht so hart Simon ..... er möchte Techniker werden.

Gruß Rainer
Bild

Benutzeravatar
random
Beiträge: 2160
Registriert: Fr 03 Aug, 2001 12:00 pm
Do you already have Laser-Equipment?: Dynamics, Easy-/NetLase, NetLaseLC
Some devices that emit light.
Wohnort: München - 85540 Haar
Kontaktdaten:

Beitrag von random » Mo 16 Jan, 2006 9:08 pm

neee ...
ich will elektriker werden.
und elektriker können nun mal nicht programmieren :evil:

Benutzeravatar
lightfreak
Beiträge: 644
Registriert: Di 09 Okt, 2001 12:00 pm
Do you already have Laser-Equipment?: of course...
Wohnort: Nitzahn
Kontaktdaten:

Beitrag von lightfreak » Mo 16 Jan, 2006 9:11 pm

O.K. dann jetzt hier meine Anmerkungen zum Code.

ACHTUNG dies ist kein gemecker sondern konstruktive Kritik!

- Bei Makros die Operanden immer in Klammern setzen um Konfilkte durch Operandenprioritäten zu vermeiden

Code: Alles auswählen

#define bit_on(BYTE, BIT)  BYTE |= 1 << BIT;

Code: Alles auswählen

#define bit_on(BYTE, BIT)  BYTE |= 1 << (BIT);
weil 1<<5&3 = 0 wohingegen 1<<(5&3) = 2 ist

- Die Makros auch benutzen

Code: Alles auswählen

EECR |= (1<<EEMWE);
- Wenn schon globale Variablen, diese ganz oben deklarieren

- Einige der globalen Variablen werden nur in main benutzt, diese besser dort deklarieren.

- Feste Tabellen, wie die für die Digits sollten besser "const" deklariert werden, um im ROM zu liegen

- Möglichst auf so einem kleinen Rechner alle Variablen "static" deklarieren, dadurch werden diese schon beim compilieren angelegt und nicht erst zur Laufzeit erzeugt (auf dem immer zu kleinen HEAP)

- Typkonflikte vermeiden

Code: Alles auswählen

unsigned char EEPROM_read(unsigned int uiAddress)

int read_ee()
{
	return(EEPROM_read(1));
}
- Funktionen die öfter benötigt werden (z.B. EEPROM), in extra Modul legen, kann man dann auch in anderen Projekten verewnden

- Etwas mehr auf die Formatierungen achten (min. drei verschiedene Arten der Einrückung

Code: Alles auswählen

if((!running) && (PINC & 8)){		//Start

if(running && ((PINC & 8) || (seconds<=0)))
//if((seconds<=0) || ((PINC & 8) && running))
{

if(t<=0)
	{
Gut gefallen hat mir:

- Alle Variablen wurden initialisiert

- schon Code viel in Funktionen verlagert (nach meinem Geschmack aber noch viel zu wenig)
Hier mal die Hauptschleife eines größeren Projekt (meine Diplomarbeit)

Code: Alles auswählen

void far main (void)
{
    while (1)
    {
        InitHardware();	// Grundinitialisierung der Hardware
		
        InitTimer();	// Initialisierung der Timer-Routinen
		
        InitLpt();	// Initialisierung der LPT Schnittstelle
		
        InitPrinter ();	// Initialisierung des Druckwerks
		
        InitSerial(38400,8,NONE,1); // Initialisierung der seriellen Schnittstelle
		
        InitDispatcher (); // Initialisierung des Schnittstellendispatchers
		
        RegisterDevice (KbHitLpt,GetCharLpt);	// LPT Schnittstelle beim Dispatcher anmelden
        RegisterDevice (KbHitSerial,GetCharSerial); // Serielle Schnittstelle beim Dispatcher anmelden
		
        InitCommand ();	// Initialisierung des Kommandointerpreters
		
        Command ();		// Aufruf des Kommandointerpreters
			// eine Rückkehr aus dieser Funktion löst einen Warmstart aus
        } // while(1)
} // main
Da ist eigentlich keine Alghotithmik in main()

Gruß

Simon
----------------------------------------------------------------------------------
http://www.simon-light.de

Benutzeravatar
lightfreak
Beiträge: 644
Registriert: Di 09 Okt, 2001 12:00 pm
Do you already have Laser-Equipment?: of course...
Wohnort: Nitzahn
Kontaktdaten:

Beitrag von lightfreak » Mo 16 Jan, 2006 9:22 pm

Einen hab ich noch:

Code: Alles auswählen

int main()
Main kehrt nie zurück und hat demnach auch keinen Rückgabewert.

Besser:

Code: Alles auswählen

void main(void)
Hätte der Compiler eigentlich finden sollen.

Gruß

Simon[/quote]
----------------------------------------------------------------------------------
http://www.simon-light.de

Benutzeravatar
random
Beiträge: 2160
Registriert: Fr 03 Aug, 2001 12:00 pm
Do you already have Laser-Equipment?: Dynamics, Easy-/NetLase, NetLaseLC
Some devices that emit light.
Wohnort: München - 85540 Haar
Kontaktdaten:

Beitrag von random » Mo 16 Jan, 2006 9:41 pm

neuer Versuch ...

Nu stell ich mal euch zur Freude den "geputzten" Code ein :twisted:

Code: Alles auswählen

#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <inttypes.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdlib.h>


#define CLK 8000000

#define delay_ms(ms) _delay_loop_2(ms * (CLK/4000))
#define delay_us(us) _delay_loop_2(us * (CLK/4000000))

#define bit_on(BYTE, BIT)  BYTE |= (1 << BIT);
#define bit_off(BYTE, BIT) BYTE &= (~(1 << BIT));

#define RELAIS 2
	
	
// Globals
unsigned int time = 0;
unsigned char digits[11] = {0xee, 0x60, 0xcd, 0xe9, 0x63, 0xab, 0xaf, 0xe0, 0xef, 0xeb, 0x00};
unsigned int point=10;	//Zur darstellung des Dezimalpunktes auf allen drei Anzeigen
unsigned int seconds=0;

	
// aus datenblatt	
void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
	/* Wait for completion of previous write */
	while(EECR & (1<<EEWE));
	/* Set up address and data registers */
	EEAR = uiAddress;
	EEDR = ucData;
	/* Write logical one to EEMWE */
	EECR |= (1<<EEMWE);
	/* Start eeprom write by setting EEWE */
	EECR |= (1<<EEWE);
}

// aus datenblatt
unsigned char EEPROM_read(unsigned int uiAddress)
{
	/* Wait for completion of previous write */
	while(EECR & (1<<EEWE));
	/* Set up address register */
	EEAR = uiAddress;
	/* Start eeprom read by writing EERE */
	EECR |= (1<<EERE);		
	/* Return data from data register */
	return EEDR;
}

void write_ee(int time)
{
	EEPROM_write(1, time);	
}

int read_ee()
{
	return(EEPROM_read(1));	
}



void display(int number)
{	
	if(point<=0) point=0;
		else point--;
	
	//Display 100er
	bit_on(PORTC, 0);	
	bit_off(PORTC, 1);	
	bit_off(PORTC, 2);
	
	if(point) PORTD = digits[number/100] | 16;
		else PORTD = digits[number/100];
			
	delay_ms(5);
	number%=100;
	
	
	//Display 10er
	bit_off(PORTC, 0);	
	bit_on(PORTC, 1);	
	bit_off(PORTC, 2);
	
	if(point) PORTD = digits[number/10] | 16;
		else PORTD = digits[number/10];
			
	delay_ms(5);	
	number%=10;


	//Display 1er
	bit_off(PORTC, 0);	
	bit_off(PORTC, 1);	
	bit_on(PORTC, 2);
	
	if(point) PORTD = digits[number] | 16;
		else PORTD = digits[number];
	delay_ms(5);	
	
	
	//Display ausschalten, sonst wird die 1er-Stelle heller dargestellt
	bit_off(PORTC, 0);	
	bit_off(PORTC, 1);	
	bit_off(PORTC, 2);	
}


//Display aktualisieren
INTERRUPT(SIG_OVERFLOW0)
{	
		display(seconds);
		TCNT0 = 0xc0;				//Timer-Reg. vorladen
}


INTERRUPT(SIG_OVERFLOW1)
{
		TCNT1=34285;				//Timer-Reg. vorladen (1s)
		seconds--;				
}
	
	
void main()
{
	int t=0;
	unsigned char running=0, tmp=0, old=0;
		
	DDRB=0x07; 	//Bit0, Bit1 und Bit2 als Ausgang (1 + 2 + 4)
	PORTB=0x00;
	
	DDRC=0x07; 	//Bit 0, 1, 2 als Ausgang (1 + 2 + 4)
	PORTC=0x00;	//alles auf Null, extern Pull-Down
			
	DDRD=0xFF;
	PORTD=0x00;
		
	
	//Timer 8Bit setup
	bit_on(TCCR0, CS00);		//Int. CLK/1024
	bit_off(TCCR0, CS01);
	bit_on(TCCR0, CS02);
	 
	TCNT0 = 0x00;				//Timer-Reg. löschen
	 
	bit_on(TIMSK, TOIE0);		//Overflow-Int. enable

	
	//Timer 16Bit setup
	bit_off(TCCR1A, COM1A1);		//Waveform Generation mode: Normal (off)
	bit_off(TCCR1A, COM1B1);
	bit_off(TCCR1A, COM1A0);		
	bit_off(TCCR1A, COM1B0);
	 
	bit_off(TCCR1A, WGM10);
	bit_off(TCCR1A, WGM11);
	bit_off(TCCR1B, WGM12);
	bit_off(TCCR1B, WGM13);
	 
	bit_off(TCCR1B, CS10);		//Int. CLK/1024
	bit_off(TCCR1B, CS11);
	bit_on(TCCR1B, CS12);
	
	bit_off(TIMSK, TOIE1);		//16 - Bit Timerinterrupt stoppen
	 
	TCNT0 = 0x00;				//8-Bit Timer-Reg. löschen	 
	TCNT1=34285;				//16-Bit Timer_Reg. vorladen für 1s
	 	
	
	//Init-Delay, Sicherheit bei fehlerhaften Programm
	delay_ms(50);

	
	bit_off(PORTB, 0);	//Enable 7Segment-Treiber +
	bit_on(PORTB, 1);	//DIRECTION
		
	//Global Interrupt enable
	sei();
	
	//restore Values from EEPROM after restart
	time=read_ee();
	t=0;
	
	
	while(1)
	{	
		
		if((!running) && (PINC & 16) && (PINC & 32))
		{
			point=10;
			write_ee(time);
		}
		
		
		if((!running) && (PINC & 8))		//Start
		{		
			bit_on(PORTB, RELAIS);
			
			seconds=time;
			bit_on(TIMSK, TOIE1);			//16 - Bit Timer starten			
			running=1;
			while(PINC & 8) delay_ms(1);
		}

		if(running && ((PINC & 8) || (seconds<=0)))
		{
			seconds = 0;
			bit_off(TIMSK, TOIE1);			//16 - Bit Timer stoppen
			bit_off(PORTB, RELAIS);
			running=0;
			while(PINC & 8) delay_ms(1);
		}		
	
		if(!running) seconds=time;
				
		
		t--;		
		if(t<=0)
			{
				if(old & PINC) t=4000;		//Unterschiedliche Wartezeiten für einzelne Tastendrücke
					else t=10000;			//und "gedrückt-halten"
				
				if(PINC & 16)				//Zeit ++
				{					
					time++;
					if(time>300) time=300;
				}
				
				if(PINC & 32)				//Zeit --
				{
					//while(PINC & 32) delay(1);
					time--;
					if(time<1) time=1;
				}
				old = PINC;			
			}		
 	} 	
}
PS: bei den Digits hilft kein const, das geht nur mit unsigned char digitPROGMEM = {....}
... = pgmReadWord(&digit)
oder so ähnlich (müsst ich nachschauen, hab ich nciht im Kopf. (Havard-Architektur...)
Da ich nicht viel RAM brauche lass ichs da drin ;-)
Zuletzt geändert von random am Mo 16 Jan, 2006 10:19 pm, insgesamt 1-mal geändert.

Benutzeravatar
afrob
Beiträge: 995
Registriert: Mo 05 Aug, 2002 12:00 pm
Do you already have Laser-Equipment?: RayComposer NET und RayComposer USB
Wohnort: Frankfurt am Main, Germany
Kontaktdaten:

Beitrag von afrob » Mo 16 Jan, 2006 10:02 pm

Lightfreak hat geschrieben:

Code: Alles auswählen

int main()
Main kehrt nie zurück und hat demnach auch keinen Rückgabewert.
Sehe ich nicht so. GCC warnt entsprechend ANSI C++:

Code: Alles auswählen

warning: return type of `main' is not `int'
Grüsse,
afrob

Benutzeravatar
guido
Beiträge: 6436
Registriert: Do 20 Dez, 2001 12:00 pm
Do you already have Laser-Equipment?: Easylase, Netlase, Laser von 1..15W.
Entwickler von Dynamics + Mamba X4 .
Lasershow Hard / Software .
Wohnort: 32469 Petershagen
Kontaktdaten:

Bräuner

Beitrag von guido » Di 17 Jan, 2006 12:57 pm

Ohh Mann......mit ner Stinger auf den Stubentiger . .

Bei mir inne Küche stützt sich ein Gesichtsbräuner seitlich auf Mikrowelle und Senseo-Maschien als Ständer / Abstandshalter, die Mikrowelle hält das Entwicklerbad warm und das Timing machen [C...o]-Armbanduhr und Netzstecker von dem Bräuner. Den Anfängern sei nur gesagt, das ein Gesichtbräuner etwas "warmlaufen" muss und das diese Prozedur nur bei Nichtanwesenheit von Frauchen geht weil sonst Küchenverbot . . .

Benutzeravatar
elektrotom
Beiträge: 10
Registriert: Do 28 Jul, 2005 7:28 pm
Wohnort: Trier

Beitrag von elektrotom » Mo 13 Feb, 2006 9:20 pm

Hallo,
ich wollte mir auch immer einen UV-Belichter bauen. Nachdem ich aber auf der Arbeit recht oft mit einem professionellen UV-Belichter gearbeitet habe konnte ich (außer kürzerer Belichtungszeit) keine Vorteile zu meiner Konstruktion feststellen.
Ich benutze seit ca. 15 Jahren einen 500W Halogenscheinwerfer und einen Rahmenlosen Bilderrahmen. In den Bilderrahmen kommt die Platine + Layout (so kann nichts verrutschen), ca. 60cm davon entfernt der Halogenscheinwerfer. Kostet ca. 11€ und tut's, obwohl die Glasplatten im Scheinwerfer und Rahmen den spärlichen UV Anteil der Halogenlampe wohl fast ganz herausfiltern.
Gruß Thomas

PS. zu den netten Code Beispielen und der will Ing. werden: Ich kann aus eigener Erfahrung sage das da so ein Dipl. Ing. Titel auch nix nutzt. Ich poste hier lieber keinen Code dem ich verbrochen habe. :lol:
Zuletzt geändert von elektrotom am Mi 22 Feb, 2006 10:55 pm, insgesamt 1-mal geändert.

Benutzeravatar
evild
Beiträge: 150
Registriert: Mi 16 Jun, 2004 7:18 pm
Wohnort: Mettmann - Germany
Kontaktdaten:

Beitrag von evild » Di 14 Feb, 2006 12:32 pm

Aber soweite ich weiß muss mann laut ANSI C (weiter im Code Block)

Code: Alles auswählen

#include <stdlib.h>
#include...
Nur jeweils einmal machen...

Du hast aber 2mal die stdlib eingebaut...
Hat das Sinn ?? (Kenn mich mit der AVR programierung nicht aus) oder is
das nen versehen... ???

Sollte nur nen Hinweis werden... Nicht mehr nicht weniger...
Mfg EvilD
Bild
Was du mir sagst, das vergesse ich. Was du mir zeigst, daran erinnere ich mich. Was du mich tun lässt, das verstehe ich.

(Konfuzius)

Antworten

Zurück zu „Allgemeine Selbstbau-Projekte“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast