-         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: ATMEGA32 ADC PWM

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20

    ATMEGA32 ADC PWM

    Anzeige

    Hallo !

    ich möchte mit einem ATMEGA32 ein PWM signbal erzeugen,

    ich hab diese Übertragungsfunktion:

    Y= 2,5 X - 0,75

    Y: PWM Duty Cycle

    0% PWM = 0,3 < Y < 100% PWM = 0,7

    X: Sensorspannung

    kann mir bitte jemand helfen ??

    Merci

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.927
    Die PWM Funktion läuft normalerweise im Timer 1 des ATMEGA32 und erwartet dort Werte zwischen 0 und (2^16)-1 für 0 bis 100% Duty Cycle.
    Wenn Du also deine Formel mit einem Multiplikator von (2^16/100) versiehst sollte das eigentlich passen, obwohl ich den zweiten Teil deiner Formel nicht ganz verstehe.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20
    meinst du die -0,75 ??

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.927
    meinst du die -0,75 ??
    Nein ich meinte die zweite Formel
    0% PWM = 0,3 < Y < 100% PWM = 0,7 ????

    Mit der Information über das Comparematchregister solltest Du aber trotzdem die nötigen Werte berechnen können.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20
    achso , ich möchte einen Fan Management Bauteil ersetzen (MIC502) die werte habew ich vom Datasheet genommen.

    kannst du mir bitte eklären was du mit 2^16/100 meinst und comparematchregister meinst, bin beginner

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.927
    Also noch mal ganz von vorne.

    Man bringt den Timer 1 in einen der verschiedenen PWM Modi.
    Welchen PWM Mode Du brauchst musst Du anhand des Datenblattes selber rausfinden.
    Dann wird ein Comparematchregister z.B. Comp1A mit einem Wert zwischen 0 und 65535 gefüttert.
    Der Wert steht dann im direkten Zusammenhang mit der ausgegebenen Pulsbreite. Also 0 ist dauerhaft Low 65536 ist dauerhaft High.
    Man kann aber auch invertet PWM machen die Puls Pausen verhältnisse sind dann umgekehrt.
    Die Werte dazwischen produzieren dann die entsprechende Pulsweite.
    Das ganze Spiel läuft nach der Konfiguration Hardwaremäßig ab und ist im Datenblatt des Controllers wirklich gut und umfangreich beschrieben.
    Die Impulse kommen dann üblicherweise am OC1A Pin des Controllers raus.

    Zum Ändern der Pulsweite muss das COMP1A dann nur wieder mit neuen Werten belegt werden. Auch dabei kann es zu sog. Glitches = Phasenfehlern kommen (Steht auch im Datenblatt). Wenn dich das aber nicht stört musst Du dagegen auch nichts unternehmen.

    Als Tipp aus der Praxis kann ich Dir noch mitgeben, das Du an deinen Controller keine Großen Lasten hängst (LED's usw.) . Sonst wird je nach Belastung des Controllers die PWM Spannung schwanken.
    Ist es trotzdem nötig höhere Lasen zu schalten solltest Du auf jeden Fall Treiber z.B. Mos Fet's oder integrierte Treiberbausteine verwenden.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20
    @wkrug,

    merci, ich werde die Datenblatt nochmal lesen und versuchen

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20
    laut der Datenblatt des FAN-Bauteil MIC502:

    Vt = 0,7 Vcc = Vpwm max ( 100 % dutyCycle)
    Vt = 0,3 Vcc = Vpwm min ( 0% duty Cycle )

    Vt = die digitale Spannung die vom Sensor kommt
    Vcc= 5 V

    wie kann ich bitte das in c schreiben
    bin total durcheinander

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.927
    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.

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20
    @wkrug:
    vielen Dank für Deine Antwort

    Also der Sensor liefert eine Spannung die zwischen 0,5 und 4,5 V
    ich will diese Spannung in Digital umwandeln, als refrenz Spannung habe ich Vcc genommen und die beträgt 5V
    Dann
    wenn Der Result vom ADC adc_result / VCC = 0,7 --> PWM Duty cycle = 100%
    wenn ADC_result / VCC = 0,3 ---> PWM Duty cycle = 0%

    dh 0.3 < ( adc_result / VCC) < 0,7

    so muss das PWM Signal erzeugt

    PWM frequenz soll 300 Hz sein

    ich hoffe dass ich gut erklären konnte

    Viele Grüße

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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