- 12V Akku mit 280 Ah bauen         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 45

Thema: Temperatur verarbeiten über Analog

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Anzeige

    Powerstation Test
    Dein Wurm liegt wohl hier
    itoa (result, buffer, 16);
    lcd_puts(buffer);
    Es sollte wohl heißen:
    itoa (result, buffer, 10);
    lcd_puts(buffer);
    Denn die Ausgabe soll doch im 10er System sein und nicht im 16er.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    HI

    @Hubert.G

    Oh ja habe das geändert, seit dem habe ich auch nur zahlen raus.
    Ist das den richtig das ich Zahlen bis zu 10000 habe.
    Wenn ich den poti bis zu Anschlag gedreht habe, habe ich auch wieder die zahl 1023 und an dem anderen Anschlag so um die 1300.
    Ach habe vergessen es mitzuteilen das ich erstmal ein Poti statt Temp-sensor angeklemmt habe.
    Angehängte Dateien Angehängte Dateien
    MfG:P

    Woftschik

  3. #13
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Du hast die Referenzspannung 2,56V eingestellt, gehst aber bis 5V.
    Die Zeile muss so lauten:
    Code:
    //AVCC als Referenzspannung verwenden 
    	ADMUX |= (1<<REFS0);
    Aber warum du die Ausgabe bis 1300 bekommst ist mir nicht klar. Bist du sicher das du dich nicht verschrieben hast. Es dürfte max. 1023 sein.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    Hallo!

    @Hubert.G

    Du hast recht mit der 1300 ich hatte ja nur geschätzt die richtige zahl lautet
    1243.
    Ich denke mir das diese Zahl daher zustande kommd, da letzte Zahle (3) nicht automatisch gelöscht werden wenn es z.B. unter Tausend kommt.
    Bei der (4) ist es genau so.


    Jetzt will ich die Funktion schreiben für den Sensor.
    Aus dem Datenblatt habe ich mir Daten rausgeschrieben und daraus in Ecxel eine Funktion erstellt (siehe Anhang).
    Muss jetzt irgendwie das ganze kombenieren, 1023 Anteile der 5V Spannung mit der Gleichung (oh ja muss irgendwie die Gleichung erstellen).
    MfG:P

    Woftschik

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    ups, hier die Funktion!
    Angehängte Dateien Angehängte Dateien

  6. #16
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Bei deinem "nicht automatisch gelöscht werden" kann ich dir nicht ganz folgen.
    Result wird hier gelöscht:
    Code:
    uint16_t readADC(uint8_t channel) {
    	uint8_t i;
    	uint16_t result = 0;
    Die ADC-Register werden nach dem Abfragen automatisch gelöscht.

    Poste doch mal den gesamten Code wie du ihn geschrieben hast.[/quote]
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    Hi!

    @Hubert.G

    Ich meinte mit dem löschen z.B. wird auf dem Display
    die Zahl 1023 angezeit. Dreht man an dem Poti
    bekommt man z.B. die Zahl 745.
    Also ist man unter der Tausender
    quasi sollte die 1 gelöscht werden
    da nur dreistellig. Beispiel:
    1023
    745 die tausender stelle bleibt leer
    Aber auf Display wird angezeigt 1745

    hoffentlich ist das jetzt besser erklärt

    Ich habe das löschen dann mit dem Befehl

    Code:
    			lcd_gotoxy(16,0); 		
    				lcd_putc(254);
    hin bekommen

    Code:
    int main(void)
    {
    
    
    
    uint16_t readADC(uint8_t channel) 
    {
    	uint8_t i;
    	uint16_t result = 0;
    
    	
    	// Den ADC aktivieren und Teilungsfaktor auf 64 stellen
    	ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1);
    
    	// Kanal des Multiplexers waehlen
    	ADMUX = channel;
    	// Interne Referenzspannung verwenden (also 2,56 V)
    //	ADMUX |= (1<<REFS1) | (1<<REFS0);
    
    	//AVCC als Referenzspannung verwenden
       ADMUX |= (1<<REFS0); 
    	
    	// Den ADC initialisieren und einen sog. Dummyreadout machen
    	ADCSRA |= (1<<ADSC);
    	while(ADCSRA & (1<<ADSC));
    	
    	// Jetzt 3x die analoge Spannung and Kanal channel auslesen
    	// und dann Durchschnittswert ausrechnen.
    	for(i=0; i<4; i++) {
    		// Eine Wandlung
    		ADCSRA |= (1<<ADSC);
    		// Auf Ergebnis warten...
    		while(ADCSRA & (1<<ADSC));
    		
    		result += ADCW;
    	}
    	
    	// ADC wieder deaktivieren
    	ADCSRA &= ~(1<<ADEN);
    	
    	result /= 4;
    	
    
    	return result;
    }
    
    
                           if (result < 1000)
    			{
    			        lcd_gotoxy(16,0); 		
    				cd_putc(254);
    									
    				lcd_gotoxy(13,0);
    				itoa (result, buffer, 10);
    			        lcd_puts(buffer);
    			}
    			if (result < 100)
    			{
    				lcd_gotoxy(15,0); 		
    				lcd_putc(254);
    
    				lcd_gotoxy(13,0);
    				itoa (result, buffer, 10);
    			        lcd_puts(buffer);			
    			}
    			if (result > 1000)
    			{
    
    				lcd_gotoxy(13,0);
    				itoa (result, buffer, 10);
    			        lcd_puts(buffer);			
    			}
    Weißt du wie man eine Hyperbel berechnet? Ich habe eine Funktion aber mir fehlt die Gleichung.
    MfG:P

    Woftschik

  8. #18
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Eine andere Lösung ist die Zeichenanzahl abzufragen mit "len" und dann die entsprechenden Leerzeichen einzufügen.
    Nein Hyperbel berechnen kann ich nicht.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2005
    Ort
    weit weg
    Alter
    38
    Beiträge
    117
    Hi!

    Hört sich interessant an mit dem "len"
    Was mach ich da genau?

  10. #20
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Es heisst strlen, max. Zeichenzahl hier 5, Leerzeichen im
    Code:
    char fuellzeichen[5][6]PROGMEM ={"0"," ","  ","   ","    "};/* Texte für die LCD-Ausgabe im Flash*/
    
    if (strlen(VWert1) ==4){
    	lcd_puts_p(fuellzeichen[1]);
    	}
    	else if(strlen(VWert1) ==3){
    	lcd_puts_p(fuellzeichen[2]); 
    	}
    	else if(strlen(VWert1) ==2){
    	lcd_puts_p(fuellzeichen[3]); 
    	}
    	else if(strlen(VWert1) ==1){
    	lcd_puts_p(fuellzeichen[4]); 
    	}
    VWert1 ist hier die auszugebende Variable.
    Spart zwar keinen Platz im Flash, dafür aber im RAM.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen