- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 3542

Thema: Willas Shrediquette Tricopter / Quadrocopter / Hexacopter

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    24.03.2012
    Beiträge
    6
    Hi Jens,

    wieviele motoren willst du den betreiben ? 6?

    ich kenne mich auch mit Bascom und basic nicht aus aber wenn du 6 motoren betreiben willst würde ich dir emphelen die ersten 2 mit timer 0 direkt per HW PWM zu betreiben und dann jeweils 2 mit einem 16-bit comperator mit software PWM .. bei meinen tests flogen die copter schon mit SW PWM nur eben nicht ganz so gut..



    ich gehe mal von 16MHz aus

    timer 1 einstellen .. im normal mode leuft der ja bis 65535 hoch .. eine MS ist dann 16000 also ist das prinziep

    - pin1 high
    - 0-1ms(der duty wert von motor 1) warten .. der high wert

    - pin 2 Low
    - 1ms-(duty von pin 2) der .. der low wert

    - pin 2 high
    - 0-1ms (der duty wert von motor 2) warten

    - pin 1 low
    - 1ms - (der duty wert von motor 1) warten

    [edit] hier war ein fehler in dem schema.. jetzt ises richtig[/edit]

    das dann halt mit coperator A und B von timer 1

    mann muss en bischen gucken das die duty times nie zu nah an 0 sind .. sonst zitterts mit anderen interrupts .. wir haben dafür die frequenz auf 500hz erhöt und so halt nur ein maximal signal von ~1950 .. was aber meisstens reicht


    hier der C code wie wie wir das SW PWM in Multiwii machen.. leuft so mit ~488Hz
    Code:
         ISR(SOFT_PWM_ISR1) { 
            static uint8_t state = 0;
            if(state == 0){
              SOFT_PWM_1_PIN_HIGH;
              SOFT_PWM_CHANNEL1 += atomicPWM_PIN5_highState;
              state = 1;
            }else if(state == 1){
              SOFT_PWM_2_PIN_LOW;
              SOFT_PWM_CHANNEL1 += atomicPWM_PIN6_lowState;
              state = 2;
            }else if(state == 2){
              SOFT_PWM_2_PIN_HIGH;
              SOFT_PWM_CHANNEL1 += atomicPWM_PIN6_highState;
              state = 3;  
            }else if(state == 3){
              SOFT_PWM_1_PIN_LOW;
              SOFT_PWM_CHANNEL1 += atomicPWM_PIN5_lowState;
              state = 0;   
            }
          }
    mit I2C PWM dinger kenne ich mich auch net aus .. weiss nur das viele, die extra für Servos gemacht sind auch nur irgentwie 50Hz können

    .. hoffe das hilft

    gruß

    felix
    Geändert von ronco (18.05.2012 um 08:26 Uhr)

Stichworte

Berechtigungen

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

Labornetzteil AliExpress