-
        

Ergebnis 1 bis 8 von 8

Thema: Motoransteuerung mit PWM @ RN-Control

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.10.2005
    Beiträge
    12

    Motoransteuerung mit PWM @ RN-Control

    Anzeige

    Hiho,

    Endlich hab ich mal wieder etwas Zeit zum rumbasteln
    Allerdings scheitere ich grade daran meine Motoren anzusteuern.

    Folgenden Code hab ich mir aus verschiedenen Tutorials und Foreneinträgen zusammengestückelt, allerdings klappt es nicht...
    Code:
    //10Bit FastPWM
    TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM10); 
    TCCR1B = (1<<CS11); 
    
    //Pins als Ausgang
    DDRB = _BV(DDB0) | _BV(DDB1);
    DDRC = _BV(DDC6) | _BV(DDC7);
    
    PORTC = _BV(PC6); //Richtung Motor I
    PORTB = _BV(PB0); //Richtung Motor II
    
    //Set Speed (0-1023)
    OCR1A = 512;
    OCR1B = OCR1A;
    Das Multimeter zeigt am Motorausgang des Boards ~10,5 V an, egal wie ich OCR1A/B setze. Wen ich nen Motor anschließe bewegt sich allerdings garnichts.
    Das Beispielprogramm mit Bascom(von der CD) funktioniert.

    Wahrscheinlich ist es irgend ein dummer Anfängerfehler
    Bin für jede Hilfe dankbar

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Du hast Mode #1 für Timer 1 und OCR1x ist größer als TOP?
    Disclaimer: none. Sue me.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.10.2005
    Beiträge
    12
    Oh, das war anscheinend ein Kopierfehler... :-\
    Eigentlich nutze ich Mode #7:
    TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM10)| (1<<WGM11)| (1<<WGM12);

    So stehts auch im Quellcode...

    Ich habe WGM10/11/12 gesetzt also sollte TOP doch 0x03FF(1023) sein oder?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    26.02.2005
    Ort
    73033
    Beiträge
    63
    Servus, beim atmega16 muss WGM12 nicht bei TCCR1A sondern bei TCCR1B gesetzt werden:

    TCCR1B |= (1<<WGM12);

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    09.10.2005
    Beiträge
    12
    Servus ^^
    Ich hab nen Mega32 (Das instant-Board von Robotikhardware)
    Die Bits sind alle streng nach Handbuch gesetzt. Ich habs trotzdem mal ausprobiert, allerdings hat sich nichts geändert...

    Wenn ich den Fehler wenigstens eingrenzen könnte, aber ich mache nichts anderes, das oben ist im Endeffekt meine main()...
    Oder muss ich da noch was machen?

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    mir sind die Pins zuwenig, die Du auf Ausgang stellst,
    das sollten 6 Stück sein, nicht 4 wie oben !

    Im Bascom-Beispiel sind das diese Ports:
    Code:
    'Ports für linken Motor
    Config Pinc.6 = Output                            'Linker Motor Kanal 1
    Config Pinc.7 = Output                            'Linker Motor Kanal 2
    Config Pind.4 = Output                            'Linker Motor PWM
    'Ports für rechten Motor
    Config Pinb.0 = Output                            'Rechter Motor Kanal 1
    Config Pinb.1 = Output                            'Rechter Motor Kanal 2
    Config Pind.5 = Output                            'Rechter Motor PWM
    Es müssen nicht nur die Richtungs-Pins auf Ausgang, sondern auch die PWM Ausgänge nochmal extra als Ausgang definiert werden.

    PS:
    Mega 16 und Mega 32 sind vom Prinzip intern gleich, alle Register usw.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    09.10.2005
    Beiträge
    12
    Hiho,
    Danke das wars anscheinend. Ich setze jetzt
    DDRD = _BV(DDD4) | _BV(DDD5);
    und es klappt.

    Allerdings bekomme ich keine 12V (=Eingangspannung am Board) sondern nur 10,7; Aber ich denke das kann ich kompensieren wenn ich die Eingangsspannung auf 14V anhebe. Wichtig ist erstmal das ich jetzt Räder dranpappen kann

    Danke!

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Das mit dem Spannungsabfall ist normal, kommt von den Transistoren im L293.
    Wenn Du die Eingangsspannung anhebst, musst Du aber evtl. einen Kühlkörper an den 7805 pappen, da der sehr warm werden kann, da der Spannungsunterschied schon sehr gross ist, 14 - 5V.

Berechtigungen

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