-
-
Erfahrener Benutzer
Robotik Einstein
Also die Spannung die vom Sensor kommt liegt zwischen 0,3 und 0,7V
diesen Wert solltest Du auf einen A/D Wandler legen, von denen der ATMEGA 32 8 Stück on Bord hat.
Der ATMEGA 32 hat eine interne Referenzspannungsquelle die 2,56V hat.
Also liefert eine Spannung von 2,56V einen A/D Wandlerwert von 1023.
Eine Spannung von 0,3V dürfte einen Wandlerwert 120 erzeugen.
Eine Spannung von 0,7V liefert einen Wandlerwert von 280.
Also du nimmst die werte vom A/D Wandler und ziehst 120 ab.
Nun teilst Du 65536 durch 280-120 und kommst damit auf den Skalierungsfaktor von ca. 410.
Also lautet deine Formel
PWM_Wert=(A/D_Wandlerwert-120)*410
Mit diesem Wert fütterst du das COMP1A Register und die Sache ist erledigt.
Du musst dann nur noch Wandler Werte <120 und PWM Werte über 65535 abfangen (if Abfragen) und dann sollte alles passen.
Was mich dabei noch ein wenig stört ist die etws grobe Abstufung der einzelnen Schritte - 160 insgesamt.
Aber wenn ich mich recht entsinne haben die A/D Wandler einen integrierten Vorverstärker mit dem man die 0,7V auf 1,4 oder gleich 2,1 V bringen könnte, was einer Verdopplung bzw. Verdreifachung der Auflösung bedeutet.
Mit dem ins Datenblatt schauen hab ich eigentlich das Datenblatt des ATMEGA 32 gemeint.
Ein komplettes C-Programm kann ich Dir jetzt nicht liefern.
Erstens Progge ich in Codevision AVR.
Zweitens ist mir das jetzt auch zu viel Arbeit.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen