ich brauche bitte hilfe bei einem programm. an den adc eingang des atmega8 kommt eine spannung, am oc2 soll diese spannung dann linear bis zum maximum geht, die die eingangsspannung hat. ich verwende das programm avr studio4.
Moin, schau dir mal das AVR-GCC Tutorial auf dieser Seite an. Deiner (nebenbei bemerkt ziemlich dürftigen Beschreibung) entnehme ich, dass du zwei Kernkomponenten brauchst. 1) ADC initialisieren und auslesen 2) PWM initialisieren und mit Werten ausgeben. Zu beiden Themen findet sich im Tutorial einiges. Wenn du später konkrete Fragen hast, wird dir im Forum mit Sicherheit weitergeholfen.
jap stimmt. die pwm läuft schon. ich hab halt keine ahnung wie ich die eingelesene spannung linear steigen lassen soll. man könnte sich das wie bei einem elektroauto denken. wenn ich voll aufs gas trete schiebt das auto ruckartig weg. es soll bei vollgas schön langsam steigen.
Naja dann sag das doch. Du hast also zwei Spannungen vorliegen. Einmal die gemessene und dann? Willst du von Null bis zur eingelesenen Spannung? Oder von der eingelesenen bis zur Versorgungsspannung? Oder von nach sowieso? In beiden Fällen musst du doch nur die Differenz zwischen beiden Spannungen ausrechnen, eine Schrittweite festlegen (sinnigerweise die kleinste Einheit, die dir deine PWM auflösen kann) und dann immer Vaus = Vfix + n * step rechnen. So mehr oder weniger - das hab ich mir jetzt auf die Schnelle aus den Fingern gesaugt. Könnte aber ein sinniger Ansatz sein.
> Willst du von Null bis zur eingelesenen Spannung? Oder von der > eingelesenen bis zur Versorgungsspannung? Oder von nach sowieso? ich will von 0 bis zur eingelesenen spannung. ich überlege gerade ob es gehen würde, wenn ich einfach eine schleife mache und bis zum max von der eingangsspannung hinaufzählen lasse. klingt aber irgendwie zu simple und ich denke nicht, dass das funktioniert oder?
Doch, so würde ich es auch machen. Aber als Einheiten würde ich die PWM Auflösung verwenden und dann alles weiter darin rechnen. Also als Beispiel: PWM kann minimal 1V auflösen. Du willst jetzt von 0 bis 77,3 Volt. Macht also eine gerundete Differenz von 77 Einheiten. Und ab dann eine Schleife und hochzählen.
Ein Hochlaufgeber, in einen langsame Timer Routine if (sollvh > sollnh) sollnh++; if (sollvh < sollnh) sollnh--; wobei sollvh das Eingangssignal und sollnh das Ausgangssignal ist
von Analogeingang kommt ein Wert von 0 bis 1024 Wenn der Timerinterrupt alle 0,01 Sekunden aufgerufen wird, braucht es bei einem Sollwertsprung von 0 auf 1024 10,24Sekunden bis der Ausgangswert gefolgt ist.
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.