Schönen guten Tag. Als erste wollte ich mal ein Kompliment an das Forum loswerden, denn ich habe jetzt schon einige Beträge gelesen und finde es gut das einem bis auf´s kleinste Problem immer geholfen wird. Daher wollte ich mich meinem kleineren Problem auch mal auf euch zukommen und hoffe ihr könnt mir helfen. Ich benutze den Microkontroller AT89C5131A-M und wollte eine Schaltung entwickeln, womit ich eine Temperatur von einem Widerstand einlese und falls diese zu hoch sein soll, soll ein 5V Schütz angesteuert werden und ein Lüfter soll anspringen, oder es soll einfach eine LED aufleuchten. Das eben nur zur Veranschaulichung der Übertemperatur. Also alles ganz simpel, das Problem habe ich nur bei der Programmierung in C. Jetzt eben meine Frage, ist so was möglich und wenn wie? Danke schonmal und freue mich auf ein paar Vorschläge. Gruss Andre
>Jetzt eben meine Frage, ist so was möglich und wenn wie? Wenn du in C schonmal etwas programmiert hast, dann ist das AVR-Tutorial hier oben rechts ganz hilfreich. Da gibt es zu allen Funktionen des AVR eine gute Einführung. Falls auch C für dich Neuland ist, ist es vielleicht ratsam, dessen Grundlagen zunächst auf einem PC o.ä. zu erforschen. Oliver
Du kannst am ADC-Eingang des Controllers die Spannung am Widerstand auswerten. Wie Du das machst, kannst Du unter http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Analoge_Ein-_und_Ausgabe nachlesen. Dann kannst Du im Interrupt des ADC prüfen, ob der Wert erreicht wurde und dann die gewünschte Aktion ausführen lassen.
z.B. so:
1 | ISR (ADC_vect) |
2 | {
|
3 | value = ADCL; |
4 | value += (ADCH<<8); //read content in ADC data register |
5 | |
6 | if (value > MAXVAL) //compare value with maximum |
7 | {
|
8 | //do something
|
9 | }
|
10 | }
|
@ alle Vorposter: Ein AT89C5131A ist kein AVR. @ Andre G.: Da der AT89C5131A keinen ADC hat, brauchst du erstmal einen Temperatursensor mit integrierten ADC, bei dem du die Temperatur digital auslesen kannst, z.B. den LM75. Wenn der µC sonst weiter nichts machen soll, kannst du einfach in einer Endlosschleife laufend die Temperatur auslesen, mit dem Maximalwert vergleichen und bei Überschreitung die entsprechende Aktion auslösen. Mit dem LM75 hast du auch noch die Option, diesen so zu konfigurieren, dass er von sich aus beim Überschreiten einer bestimmten Temperatur einen Interrupt auslöst. Sehr praktisch, wenn der µC noch andere Aufgaben erledigen soll.
>@ alle Vorposter: >Ein AT89C5131A ist kein AVR. Hast Recht. Damit ist das hier aber auch das falsche Forum, denn einen gcc gibts m.E. dafür nicht. Oliver
Hallo Wenn nur ein Messwert verglichen werden soll kannst du das vielleicht auch mittels operationsverstärkerschaltung (Komparator)
Der Controller sitzt auf einer Platine und hat einen Analog-Digital-Wandler TLC549. Es ist ein Experimentiersystem. Es besitzt eine SPI-Schnittstelle mit Analog-Digital-Umsetzer. @ Oliver Ja habe schonmal was mit C gemacht, das waren aber eher Spielerein mit Schleifen, aber so was wie einen Spannungs-Wert einlesen und dann umrechnen habe ich noch nie gemacht. Bin ich trotzdem im falschen Forum?
>Bin ich trotzdem im falschen Forum? >Forum: GCC >Fragen zu den GNU-Toolchains für AVR-, ARM- und MSP430-Mikrocontroller, >AVR-GCC, MSPGCC, WinAVR, WinARM, ... Aber der ein- oder andere wird hier auch was zu 8051 sagen könnnen. Oliver
Hallo Andre Habe zur Zeit auch eine Schaltung gebaut um eine Temperatur per ADC einzulesen und diese zu vergleichen mit der Temperatur 10 Sekunden zuvor. Wenn sie sich ändert kommt ein Ausgang also bei mir eine LED. Benutze auch selbigen Controller wie du. Hast du auch das Board von Elektor? Wenn du die Schaltung und das Programm brauchst rühr dich. MfG Reinhard
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.