Nu har jag färdiställt ett litet projekt med en Temperaturlogger. Den betår av dessa delar
Atmega8
Max232
LM335z - tempgivare
7805 -spännings regulator.
Den fungerar på så sätt att den mäter temperaturen via sonden(krympslangad lm335z), atmegan skickar via Max232(som omvandlar till rätt spänningsnivåer) till datorn. I datorn har jag installerat ett program som heter Bill Redirect http://www.billproduction.com/ som emulerar ett tangentbord och ger dom knapptryckningar som kommer in på comporten(9600baud). Efter detta har jag bara öppnat ett excel fönster, och sen plottas det automatiskt upp en snygg kurva.

Kod: Markera allt
#include <avr/io.h> 
#define USART_BAUDRATE 9600
#define BAUD_PRESCALE (((4000000 / (USART_BAUDRATE * 16UL))) - 1) 
void SendChar(char);
void SendString(char*);
int main (void) 
{ 
  
int temp;
int btemp;
char dtemp[5];
int sec;
   TCCR1B |=((1 << CS10)|(1 << CS11));
   
   ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Set ADC prescalar to 128 - 125KHz sample rate @ 16MHz 
   ADMUX |= (1 << REFS0 | 1 << REFS1) ; // Set ADC reference to 2,56v(internal) 
   
   
   ADCSRA |= (1 << ADFR);  // Set ADC to Free-Running Mode 
   ADCSRA |= (1 << ADEN);  // Enable ADC 
   ADCSRA |= (1 << ADSC);  // Start A2D Conversions 
   
   char ReceivedByte; 
   UCSRB |= (1 << RXEN) | (1 << TXEN);   // Turn on the transmission and reception circuitry 
   UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit character sizes 
   UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register 
   UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register 
   for (;;) // Loop forever 
   { 
while(sec <= 20)
	{
	while(TCNT1 <= 31250)
		{
		}
	TCNT1 = 0;
	sec++;
	}
	btemp = ADCL + (ADCH<<8);
	temp = (btemp-529)/2;
	itoa(temp, dtemp,10);
	SendString(dtemp);
	SendString("{ENTER}");
	TCNT1 = 0;
    sec = 0;
   
    
 	
	}   
} 
void SendChar(char data) 
	{ 
    while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it 
      UDR = data; // Send data to the computer 
	} 
void SendString(char* StringPtr) 
	{ 
   while (*StringPtr) 
    	{
		SendChar(*StringPtr); 
   		StringPtr++; 
		}
	} 

Här har jag testat den på en batteriladdare.
//Alexander
 
				



 
 




 (Om man inte vill använda datorn som server borde man väll kunna ha en SQL databas på ett webhotell, och sen kontaktar programmet på ens dator den servern och laddar upp informationen som klient
 (Om man inte vill använda datorn som server borde man väll kunna ha en SQL databas på ett webhotell, och sen kontaktar programmet på ens dator den servern och laddar upp informationen som klient