Forum: Analoge Elektronik und Schaltungstechnik PWM Programm ATMEGA32 in C


von Steve U. (giftzwerg)


Lesenswert?

Guten Tag,

habe da ein Problem beschäftige mich noch nicht allzu lang mit der 
Programmierung.
Nun habe ich meine PWM bisher mit diesem Programm gelöst was auch gut 
Funktioniert (Steuerung über 2 Taster.


 * PWM_Programm.c
 *
 * Created: 15.01.2014 19:55:46
 *  Author: Steve Uffelmann
 */


#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 8000000UL
#include <util/delay.h>


int main(void)
{
  // Ein/Ausgänge konfigurieren
  DDRD |= (1<<PD5);        //Ausgänge
  PORTD|= (1<<PD2) | (1<<PD3);  //Pull-UPs

  //PWM konfigurieren
  TCCR1B |= (1<<WGM12);      //
  TCCR1A |= (1<<WGM10);      // Timer Einstellung Fast PWM, 8-bit
  TCCR1B |= (1<<CS12);      // Vorteiler 256
  TCCR1A |= (1<<COM1A1);      // Nicht invertierender PWM-Modus
  OCR1A = 0;            // Startwert Ausgang


    while(1)
    {
       //Taster Frequenz höher
     if (!(PIND & (1<<PD2)))    // wenn Taster getrückt, dann Frequenz 
steigern
     {
     if (OCR1A < 255)      // abfrage nach maximal Wert
       OCR1A++;        // Impulsbreite verbreitern um 1

       _delay_ms(20);      // 20ms Pause

     }

     //Taster Frequenz sinken
     if (!(PIND & (1<<PD3)))    // wenn Taster getrückt, dann Frequenz 
sinkt
     {
      if (OCR1A > 0)      // abfrage nach minimal Wert
      OCR1A--;          // Impulsbreite verringern um 1

      _delay_ms(20);        // 20ms Pause

     }


    }
}
So nun ist ja das Problem wenn Wir alles in ein Gehäuse einbauen, 
brauchen Wir ja eine Kühlung mit einem Lüfter. Aber man möchte den 
Lüfter ja jetzt nicht immer auf voll Last laufen lassen wegen Geräuschen 
und so.
Deshalb wäre es ja gut den Lüfter mittels PWM und einen PT100 im 
Verhältnis zu temperatur zu Steuern. Die Spannung die mit dem PT100 
Hergestellt/Eingestellt wird müsste ja mit dem ADC Ausgewertet werden.
Aber wie verknüpfe ich das mit den Steuer Registern zur Reglung der PWM.
Hoffe mir kann einer Hellfen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Falsches Forum.
Ein Mega32 zur Lüftersteuerung? Bisschen viel Pins fafür, oder?

Aber schau dir erstmal Application Note AVR442 an. Da benutzen sie einen 
Tiny13 zur Lüftersteuerung mit NTC, der auch gleich die Kommutierung 
erledigt. Den Teil kannst du dir erstmal sparen, aber der ADC Teil wird 
dich interessieren.
Du musst eigentlich nur eine Wandlung des ADC anschubsen, dann den Wert 
lesen und je nach Polarität das Ergbnis entweder direkt oder nach 
Umrechnung auf OCR1A geben. Für so etwas reicht vermutlich ein 8-bit 
Ergebnis des ADC, also linksbündig wandeln und nur ADCH lesen.

Ein Minimum Wert sollte eingehalten werden, damit der Lüfter zumindest 
schon mal langsam läuft. Das probierst du am besten aus.

: Bearbeitet durch User
von Steve U. (giftzwerg)


Lesenswert?

Ja aber ich wusste nicht wie ich ein anderes Forum auswähle. Wie kann 
ich den Artikel verschieben??
Es soll noch etwas mehr drüber laufen, ich werd mir es mal anschauen.

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
Noch kein Account? Hier anmelden.