- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Spannungsmessung mit Mega 8

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.08.2005
    Ort
    Fürth
    Alter
    43
    Beiträge
    16

    Spannungsmessung mit Mega 8

    Anzeige

    Praxistest und DIY Projekte
    Hallo Leute

    ich hab vor mit einem MEGA8 die Spannung einer 1.5Volt Baterie zu messen, den gemessenen Wert über UART auszugeben und am PC auszuwerten.

    Also den internen ADC-Wandler vom MEGA 8 zu verwenden.

    Nur mein Programm werte mir nichts aus. Vielleicht könnt ihr mir bei der Suche nach dem Fehler helfen. Ich will den PC0 als AD-Wandler eingang verwenden.

    Code:
    #include <avr/io.h> 
    
    #define F_CPU 8000000           /* Oszillator-Frequenz in Hz */
    #define UART_BAUD_RATE 19200
    #define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_CPU)/((UART_BAUD_RATE)*16L)-1)
    
    void USART_Init(void) 
    {
        UCSRB |= (1<<RXEN) | (1<<TXEN);
    	UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);
    
    	UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);	            //Asynchron 8N1
    
    }
    
    void UART_writeChar(char c)				// Ein Zeichen
    {
        while (!(UCSRA & (1<<UDRE))) {} 		// warte, bis UDR bereit
            UDR = c; 							// Sende Zeichen
    	return 0;
    }
    
    void UART_writeString(unsigned char *string)  // mehrere Zeichen
    { 
        while ( *string)	 					// so lange *s != NULL 
            UART_writeChar(*string++); 
    	return 0;
    } 
    
    
    unsigned char UART_getChar(void)
    {
        while (!(UCSRA & (1<<RXC))); 	 // warten bis Zeichen verfuegbar
        return UDR;                  	 // Zeichen aus UDR an Aufrufer zurueckgeben
    }
    
    
    
    int main(void) 
    { 
    
    int result; 
    
    USART_Init();
    
    //ADMUX = (1<<MUX0); 
    
    ADCSRA = (1<<ADEN)|(1<<ADPS2); 
        
        
       while (1) 
       { 
    
          /* Wandlung starten */ 
          ADCSRA |= (1<<ADSC); 
    
          /* Warten bis die AD-Wandlung abgeschloßen ist */ 
          while ( !(ADCSRA & (1<<ADIF)) ) 
          {    
    
          /* AD-Wert auslesen */ 
          result = ADC;        
            
          UART_writeChar(result);
       
       } 
     } 
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Wie hast du die zu messende Spannungsquelle denn angeschlossen?
    Masse an Masse und + am ADC?
    Wenn ja, ist das falsch.

    https://www.roboternetz.de/phpBB2/ze...&highlight=adc

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    14.08.2005
    Ort
    Fürth
    Alter
    43
    Beiträge
    16
    Danke mal anschauen

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    14.08.2005
    Ort
    Fürth
    Alter
    43
    Beiträge
    16
    Danke erst mal für den Hinweis. Nur das mit dem Anschluss war mir schon klar das ich das nicht so machen darf.

    mir stellt sich halt nur mehr im moment die frage passt mein programm so, oder ist mein atmel defekt, da ich im moment nur leerzeichen als ausgabe bekomme.

    Gruß

    Holger

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test