mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Vergleichen drehzahl signal..in 8051


Autor: Max Otto (max-otto)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello Leute,

Ich arbeitet mit 8051.
In meinem Project habe ich 2 DC-Motoren.
Die drehzahl von beiden Motoren sind am P3_2(Motor-1) und P3_3(Motor-1) 
entsprechend.
Ich benutze PWM (CCAP1H und CCAP2H) fur motor laufen.
Wann motor fang zu laufen an, gleichzeitig P3_2 und P3_3 haben die 
drehzahl von Motoren.
Jedes mal muss ich vergleichen diese drehzahl signal und wechseln die 
PWM von motor.

Wie könnte ich diese machen?
Empfehlen Sie mir bitte für diese.
Danke im voraus.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PWM arbeitet doch im praktisch Hintergrund. Du stellst das 
Tastverhältnis ein und kannst dann in deinem Hauptprogramm die Drehzahl 
abfragen. Nur wenn du das Tastverhältnis ändern willst musst du wieder 
deine CCAPxH anpassen.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max Otto schrieb:
> Ich arbeitet mit 8051.
Mit welchem?
Der 8051 hat keine CCAP1H und CCAP2H.

Max Otto schrieb:
> Wann motor fang zu laufen an, gleichzeitig P3_2 und P3_3 haben die
> drehzahl von Motoren.
Das sind Interrupteingänge.
Du kannst also z.B. bei einem Interrupt einen Zähler auslesen und dann 
kontrollieren, ob die Drehzahl stimmt. Falls nicht, muß der 
entsprechende PWM-Ausgang korrigiert werden.

Ich würde dir raten, das einfach mal für 1 Motor zu realisieren.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Max Otto schrieb:
>> Ich arbeitet mit 8051.
> Mit welchem?
> Der 8051 hat keine CCAP1H und CCAP2H.
>
Vielleicht nicht der 8051, aber der z.B. der P89C51RD2Hxx und der 
basiert ja auf 8051. Offensichtlich kann der TO nicht so gut Deutsch, 
also darf man so eine Kleinigkeit wohl verzeihen.

Autor: Max Otto (max-otto)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich arbeitet mit AT89C51CC01.

Bitter sehen Sie diese Programme.

unsigned char int0=0,int1=0;     //interrupt counter

void Match(void)
{
   if(int0>int1)
    {
        DelayMs(500);
        CCAP2H = 0x73; // 45% Duty Cycle
        CCAP4H = CCAP2H; // gleich Duty Cycle
    }
    else if(int0<int1)
    {
        DelayMs(500);
        CCAP2H = 0x8C; // 55% Duty Cycle
        CCAP4H = CCAP2H; // gleich Duty Cycle
    }
    else
    {
         CCAP2H = 0x66; // 40% Duty Cycle
         CCAP4H = CCAP2H; // master n slave sind gleich
    }
}
void int0_isr (void) interrupt 0
{
        int0++;
        DelayMs(100);
}
void int1_isr (void) interrupt 2
{
        int1++;
        DelayMs(100);
}

void main()
{
        bit a=0; //für auf
        // alle eingänger und ausgänger sind hoch
        while(1)
        {
               // Auf key drucken
                if(aufkey==0)
                {
                        a=~a;
                        c=1;
                        DelayMs(400);
                }
                if (a==1)
                {
                        // Motor fang zu laufen an
                        IE=0X85;  // fang die Interrupt an
                        Match();
                }
                else
                {
                        // motor Ende
                        EA=0; // interrupt Ende
                }
        }
}
Ist etwas falsche in diesem Programme?

Empfehlen Sie mir bitte für diese Programme.
Danke im voraus.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.