[C/C++] Temperaturmessung mit 7-Segmentanzeige

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von D4RKzOnE, 9. Juli 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 9. Juli 2012
    Zuletzt bearbeitet: 10. Juli 2012
    Temperaturmessung mit 7-Segmentanzeige

    Hallo,
    ich habe ein Problem, ich beschäftige mich das erste mal mit Mikrokontrollern und komme jetzt nicht mehr weiter.
    Und zwar muss ich eine gemessene Temeperatur über einen temperaturabhängigen Widerstand in einer 3x7-Segmentanzeige ausgeben. Nun komm ich nicht mehr weiter.
    Mir fehlt noch die Interrupt-Routine und das ansteuern der 7-Segmentanzeigen.
    Wäre sehr dankbar für Eure hilfen
     
  2. 9. Juli 2012
    Zuletzt bearbeitet: 9. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Und wo ist jetzt genau dein Problem, wo kommst du nicht weiter ? Und wofür willst du einen Interrupt nutzen ? Bissl mehr Infos wos hapert wären nice.

    //E
    Für Allgemeine Infos steht hier ausreichend viel:
    AVR-Tutorial: ADC - Mikrocontroller.net
    AVR-GCC-Tutorial/Analoge Ein- und Ausgabe - Mikrocontroller.net
     
    1 Person gefällt das.
  3. 9. Juli 2012
    Zuletzt bearbeitet: 9. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Code selbst geschrieben oder zusammen kopiert? Gleiches gilt für den Schaltplan, denn beides sieht sehr nach Google+Copy Pasta aus.
    1. Lerne mal deine Bits ordentlich zu setzten, das ließt sich ja grauenhaft. Nicht ohne Grund gibt es die PORTBx PDx etc. Makros.
    2. Wenn du Temperatur auf ganze Grad ausgeben willst, würde ich richtig runden und nicht einfach nach int casten.
    3. Für was Interrupts? Willst du den ADC im Free Running Mode betreiben?
    4. Wenn ich das richtig sehe, betreibst du die 7 Segment Anzeige komplett über einen pin inkl. Transistor, ich glaube kaum, dass das der arme AtMega lange mitmacht
    5. Segmentanzeige#Logiktabelle Codewandler auf 7-Segment Code (Wahrheitstabelle->KV Diagramm -> Gleichung) oder alternativ einfach switch case. Wo liegt das Problem?
    //edit: Die Gleichung für die Schaltfunktionen sind ja schon bei Wiki drin, dann ist das ganze ja noch leichter.
     
    1 Person gefällt das.
  4. 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Nein der Schaltplan ist von einem Projekt wofür ich das Programm schreiben möchte.
    So wie ich das verstanden habe macht man das Multiplexen mit Overflow Interrupts um die Kanäle durchzuschalten.

    Multiplexen mit switch case war nen guter Tipp.

    Zur Verständnis. Ich muss ja den ADC-Wert vom temperaturabhängigen Widerstand in eine Spannung umrechnen und diese dann in eine Temperatur.
    Diese muss ich dann so zerlegen, dass ich diese auf 3 7-Segmentanzeigen ausgeben kann. Dann muss ich Multiplexen um alle 3 sichtbar zu machen.
    Am Schluss muss ich noch die 3 LED's ein-,ausschalten je nach dem ob Max oder Min Wert erreicht ist oder der Wert negativ ist.

    Danke erstmal, ich hab auch gesehen das der Code murks ist deswegen hab ich ihn rausgenommen. Packe nacher mein Zwischenstand rein.
     
  5. 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Wieso das Multiplexen über Interrupts? Ich würde in der Hauptschleife die Werte ausgeben, den ADC lässt du im Free Running Mode arbeiten und aktualisierst die Werte dann beim passenden Interrupt Vektor (beim AtMega8 wäre das 0x00E = ADC = ADC Conversion Complete). Das Zerlegen lässt sich mit den standard Funktionen (z.B. Modulo Division) erledigen. Die Umwandelung kommt natürlich auf deine Beschaltung an. Hier muss halt die Passende Messbeziehung aufgestellt und Implementiert werden. Dennoch werden die 7 Segmentanzeigen über den AT90S4433P PB0-2 versorgt (wie alt ist der Schaltplan eigentlich? Der AT90S4433P wird seit Jahren nicht mehr hergestellt). Der AtMega8 erlaubt z.B. 40mA als absolutes Maximum. Eine kleine 7 Segmentanzeige (10mm) zieht schon 10mA pro Segment. Wenn du eh nen Transistor zum durchschalten nimmst, dann schließe an dessen Kollektor die 5V Versorgungsspannung an.
     
  6. 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    wieso referenzierst du es denn nicht?
    Problem mit Atmega8 und Temperaturberechnung - Mikrocontroller.net
     
  7. 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Jo genau danke. Das Projekt gibt es seit Jahren und ändert sich nicht, daher auch die Bauteile nicht. Ist wohl für die Uni einfacher
     
  8. 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Musst du genau diesen Schaltplan verwenden? Der Chip wird schon seit knapp 10 Jahren nicht mehr von atmel empfohlen: Datenblatt
    Wie schon mehrfach geschrieben wirst du einen ATMega8 mit dieser Schaltung braten. Da bis jetzt kein Stückchen Eigeninitiative bzw. keine Zeile eigener, brauchbarer Code kam, bestätigt sich meine Vermutung immer mehr, dass dir wohl sämtliche Grundlagen fehlen. Wenn die Aufgabe zudem von der Uni kam, könnte man das als "Hausaufgabe" ansehen. Lerne deine Basics, erstelle eine saubere Grundlagen und dann kann mir dir evtl. auch weiter helfen.
     
  9. 10. Juli 2012
    Zuletzt bearbeitet: 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Ja es muss alles so sein wie es im Schaltplan ist, ist zwar nicht genau mein Schaltplan (OP-Schaltung sieht ein klein wenig anders aus) aber das macht ja keinen Unterschied. Ob ich den Atmega8 braten werde oder nicht ist egal, ist ja nicht meiner
     
  10. 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Wo hast du dass den zusammen kopiert? Hast du überhaupt mal VERSUCHT das durch nen Compiler zu jagen (wenn du AVRStudio verwendest, dürfte schon die IDE meckern)? Auch deine Temperaturformel ist unnötig lang, vereinfache die mal. Mach deinen Code mal lauffähig (oder zumindest kompilierbar), dann poste wo das Problem liegt und was du breits versucht hast um dieses zu lösen. Zudem wäre es hilfreich wenn du sagt welchen Chip du verwendest. Ich bin jetzt immer vom Mega8 ausgegangen, aber im Schaltplan steht ja AT90S4433P. Wenn du wirklich so ein altes Teil ausgegraben hast, musst du natürlich die Register anpassen.
     
  11. 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Es ist ein Atmega8 auch wenn AT90S4433P auf dem Schaltplan steht. Die Formel ist lang ja, bin noch dabei die selber auszurechnen, hab die erst mal vom alten Projekt übernommen. Wie gesagt bin ja noch lange nicht fertig, bin dabei zu testen.
     
  12. 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    So wie es aussieht hast du so gut wie alles aus irgendwelchen Projekten/Websiten/Foren etc. übernommen. Ich würde dir raten erstmal zu überlegen was der Code überhaupt macht, diesen dann zu überarbeiten und dich dann zu melden wenn du wo hängst. An deiner Stelle würde ich den Thread so lange dicht machen, denn im Moment ist das relativ sinnlos.
     
  13. 10. Juli 2012
    AW: Temperaturmessung mit 7-Segmentanzeige

    Also eigtl. hab ich so gut wie alles selber programmiert hab ja schließlich nicht umsonst 2 Tage arbeit reingesteckt.

    Aber trotzdem danke für deine rege Beteiligung.
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.