- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: ATMEGA32 ADC PWM

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Anzeige

    E-Bike
    Zitat Zitat von karthago
    .............
    ich hoffe dass ich gut erklären konnte
    Viele Grüße
    nö, hab kein Wort verstanden, aber ein funktionierendes PWM hab ich

    LED Hintergrundbeleuchtung fürs Display + Kontrasteinstellung

    Hz weiss ich nicht mal (100Hz?) müsste ich am Di auf dem Oszi schauen

    OCRA1 macht LED über Treibertrasi
    OCR1B macht D/A Wandlung über R/C auf Vo Display -> Kontrast

    eingestellt wird es noch per RC5, später Taster oder Touchscreenfolie
    eingestellt werden können natürlich beide einzeln, wobei mr bis jetzt Kontrast max am besten gefällt, nahe 0V, und der ADC0 misst die Ub, Ref LM4040 1%, Teiler von Ub 24k/12k = 1/3 gibt bei 5V und 1023max um 670 mul mit Scaler 0,07xxxx und mul mit 100 gibt schöne 500 integer für 5V , nun noch den Dezimalpunkt per Stringfunktion einfügen, irgendwie ist dieses C nicht wirklich mathe tauglich , habe mit float und double in ftoa kein richtigen Erflg gehabt, aber so gehts auch D)

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20
    Zitat Zitat von jar
    Zitat Zitat von karthago
    .............
    ich hoffe dass ich gut erklären konnte
    Viele Grüße
    nö, hab kein Wort verstanden, aber ein funktionierendes PWM hab ich
    sorry,

    hier nochmal eine Beschreibung als pdf
    Angehängte Dateien Angehängte Dateien

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.232
    Also der Sensor liefert eine Spannung die zwischen 0,5 und 4,5 V
    Wie Du dann auf die Formel 0.3 < ( adc_result / VCC) < 0,7 kommst ist mir zwar schleierhaft, aber ich muß ja nicht alles verstehen.

    Die PWM Frequenz ergibt sich aus der (Taktfrequenz / 65536)/ eingestellten Prescale Faktor. Das Alles für Timer 1.

    Hau mich jetzt nicht wenns nicht stimmt - kann auch sein das man noch durch 2 teilen muß.

    Die PWM Frequenz ist also bei hardwaremässiger Ansteuerung nicht frei einstellbar ! Näherungsweise solltest Du aber hinkommen.
    Durch geschickte Auswahl des Quarzes sollte es auch möglich sein, die gewünschte PWM Frequenz genau zu treffen.

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2006
    Beiträge
    734
    Hallo Kathargo,
    ich glaube du hast da etwas falsch verstanden. Ich habe das Datenblatt kurz überflogen. So wie ich das sehe, regelt der Lüfter sich selbst und zwar per pwm.
    Das Regelsignal selbst ist kein pwm-signal! sondern gleichstrom. Dieses kannst du zwar auch per pwm erzeugen, aber musst es noch filtern (und ich finde es sinnlos).

    Der Lüfter hat bei 0.3V einen duty cycle von 0%, bei 0.7 sind es 100%, der Zwischenraum wird linear aufgeteilt. Wenn du diesen Lüfter abhängig von der Temperatur steuern willst, dann lies die letzten Zeilen. Dort wird die Verwendung eines NTC-Sensors angesprochen.

    Wenn du einen Lüfter per mikrocontroller regeln willst: Google ist dein Freund. Am interessantesten scheint ein step-down Wandler zu sein, weil moderne Lüfter eine interne Elektronik zum Ansteuern der Spulen haben und es Probleme mit reiner PWM gibt. Dabei regelst du aber die Versorgungsspannung und kannst damit jeden beliebigen Lüfter regeln.

    Wenn du wirklich nur diesen einen Lüfter per mikrocontroller regeln möchtest: Schlag nach, wie ein PWM Signal allgemein erzeugt wird. Du hast einen Spielraum von 0V bei 0% duty cycle bis 5V bei 100% duty cycle. Bei 10 Bit = 1024 sind das 5V/1024 = 4,9mV Schritte. Deinen Bereich von 0.3 bis 0.7V kannst du also auf (0.7V-0.3V)/0.0049V = 81 Schritt aufteilen.
    In C kannst du Beispielcode für pwm benutzen. Den Bereich, in welchem geregelt wird wirst du wohl anpassen können
    Auf die Schnell habe ich https://www.roboternetz.de/wissen/in...LED_blinken%29
    gefunden, dort wird wenigstens die Verwendung von Timern erklärt.

    Das zweite Problem (welches ich auch noch nicht gelöst habe):
    Wenn du den Wert des PWM Signals misst, erhältst du nur Mist. Wenn die Messung im off-Teil erfolgt, misst du 0V, im on-Teil 5V (in der Realität natürlich nie ganz 0V/5V). Deswegen muss das Signal über einen Tiefpass integriert werden (glaube ich! Da scheitere ich im Moment ).

    Ach ja, warum verwendest du eine Frequenz von 300Hz für die PWM? Das ist unnötig langsam.

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20
    Servus Avion
    Merci für Deine Antwort,

    Eigentlich ich möchte in diesem System :
    Bild hier  

    Bild hier  

    den Bauteil MIC502 (Fan Management ) durch Atmega32 ersetzen, also der µC übernimmt die Aufgabe.

    Laut der Datenblatt vom MIC502, wie ich es verstanden habe wenn Vh/Vcc = 0,7 haben wir 100% duty cycle und wenn Vh/Vcc= 0,3 haben wir 0% duty cycle.

    ich möchte die Spannung vom Hall-Sensor (Vh) mit ADC eilesen ( 10 Bit mit Ref Spannung Vcc= 5V)

    dann diesen Wert ( adc_result) durch 1024 teilen.

    0,7 ~ 716 ( 0,7*1024)

    wenn adc_result/1024 =~ 716 habe ich ein 100 % duty cycle

    so möchte ich mein PWM signal einstellen

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.232
    Ich glaub das mit dem ADC hast Du falsch verstanden.

    Wenn Du 5V Referenzspannung verwendest hast du 0,7/(5V/1024) und da kommt dann ~ 143 dabei raus.
    Wenn Du die interne Referenz des ATMEGA 32 verwendest kommt 0,7/(2,56V/1024) = 280 raus.

    Die komplette Auflösung des Knotens hab ich die eigentlich schon ein paar Antworten früher gegeben ?!

    Eine bessere Auflösung könntest Du noch kriegen, wenn Du das Gebersignal 0,3...0,7V mit einem Op Amp um den Faktor von 3,5 Verstärkst.
    Legst Du am Verstärker einen Offset von 0,3V an, kann die Verstärkung auch etwas mehr als 6 betragen und du nutzt die Volle Bandbreite des A/D Wandlers aus.

    Wenn ich ehrlich bin würd ich aber so eine Aufgabe nicht mit einem Microcontroller lösen.
    Warum nimmst Du nicht einfach einen Mehrfach Operationsverstärker? Einer Arbeitet als Sägezahngenerator, ein zweiter als Komperator, an dem an einem Pin die Sägezahnspannung im Bereich von 0,3...0,7V und am Anderen die Spannung vom Sensor auch 0,3...0,7V anliegt ?
    Die Schaltung reagiert schneller als das ein Microcontroller je könnte und erfordert auch nicht wesentlich mehr Hardwareaufwand.

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2006
    Beiträge
    734
    Erstens:
    Wenn am Eingang 0.7V anliegen, dann ist dein ADC-Wert = 0.7V/0.0048V = 146. Wenn am Eingang 0.3V anliegen, dann ist ADC = 0.3/0.0048V = 63.

    Zweitens:
    Ich weiß nicht wie man das konkret löst. Wenn dein PWM Signal z.B. einen 16Bit Wert erwartet wäre es WAHRSCHEINLICH etwas in dieser Richtung:
    PWM = 65536 für 100%, 0 für 0%.
    Also soll bei 0.7V = 146 am ADC der Wert 65536 in das Register geschrieben werden, bei 0.3V = 63 dementsprechend 0.
    Die Differenz zwischen 146 und 63 ist 83.
    Also ist die Funktion PWM = 65536 * (ADC-63)/83
    Die 63 musst du von ADC abziehen um die 0.3V als Nullpunkt definieren, dann wird (ADC-63)/83 für ADC==146 eins, bei ADC==63 aber null.

    Übrigens hättest du doppelt soviele Schritt, wenn du die interne Referenz statt den 5V (die wahrscheinlich auch noch schwanken) verwendest.
    Ich glaube aber, dass du eigentlich etwas ganz anderes möchtest. Aber ich komme nicht drauf... deswegen antworte ich auf das, was du gefragt hast.

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20
    Hallo ,
    0,7 und 0,3 sind keine Spannung, sie sind das ergebnis vom Vh/Vcc.

    ADC = Vh * (1024/Vref)

    für Vref= 5V
    und wenn ich zb eine Vh von 2,5V hab dann ist ja ADC = 512

    Vh/Vcc = 512/1024 = 0,5

    = > 0,7 = x / 1024 => 0,7 * 1024 = 716

  9. #19
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.232
    Das oben geschriebene hat damit aber weiterhin Gültigkeit, nur das sich der Skalierungsfaktor ändert.
    Du kriegst also somit Wandlerwerte zwischen 307,2 und 716,8 raus.

    Deine Formel für den PWM Wert lautet also:

    ((X*5V/(5V/1024) - 30 * 161

    wobei X dann der Faktor von 0,3 bis 0,7 ist.
    Die Werte stimmen zwar nicht ganz genau, stellen aber sicher, das 0 bis 100% PWM erreicht werden können.

    Werte über 65535 und unter 0 müssen natürlich per Software abgefangen werden.

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    30.11.2006
    Beiträge
    20
    kannst Du mir bitte erklären wie Du auf 161 gekommen bist ??

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress