MCU för quadcopter

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Shimonu
Inlägg: 294
Blev medlem: 21 oktober 2015, 22:44:33

MCU för quadcopter

Inlägg av Shimonu »

Tja

Har jobbat på att bygga en quadcopter relativt grundligt. Ingen färdigt kontroller eller annat. Det är kroppen, ESCer och motorer som är köpta färdiga egentligen och resten ska styras med MCU och annan hårdvara som är köpt själv. Har ingen färdig radio eller så utan det körs också med annan hårdvara.

Problemet jag stött på är att hitta en MCU som kan driva 4 PWM-signaler oberoende. Har hittat MCUer som säger sig ha 6 PWM men i de fallen verkar det som att de är synkroniserade i par och man faktiskt bara kan få 3 unika PWM-signaler.

Tänker jag fel eller är det svårt att hitta MCUer med så många generatorer?

Jag vill bara ha kretasr i DIP-format om det inte finns snygga breakout boards som kan programmeras med vanliga SPI-gränssnitt. Tips?
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: MCU för quadcopter

Inlägg av Andax »

Du skulle ju titta på STM32. De finns i Arduino-nano-formfaktor med två enkla stift-lister med I/O. Då får du en inbyggd ST-Link/v2 också för debuggning.

Titta på evalkortet Nucleo-L432KC...
Shimonu
Inlägg: 294
Blev medlem: 21 oktober 2015, 22:44:33

Re: MCU för quadcopter

Inlägg av Shimonu »

Går det att komma runt att behöva använda Arduinos utvecklingsmiljö? Har aldrig funnit den speciellt smidig men tycker deras produkter är rätt spännande annars.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: MCU för quadcopter

Inlägg av Klas-Kenny »

Finns precis hur många som helst.

Kolla även på Output Compare, vilket kan generera PWM utan problem.
Glattnos
Inlägg: 2972
Blev medlem: 29 oktober 2009, 20:01:18

Re: MCU för quadcopter

Inlägg av Glattnos »

Håller med, STM32 används av många controllers och är bra, dock finns den väl inte i DIP-kapsel utan det blir nog nån breakoutbord.
Fast vad menar du med unika PWM-signaler? Du kan ju styra 4st ESC med två timers som har två PWM vardera. Det kan nog de flesta MCU.

Du kan använda Arduino-hårdvara och programmera själv via ISP eller SP-Link eller vad det nu heter.
Jag köpte en Nucleo-64 som är programmerare och en STM32 i ett kit som jag inte hunnit titta så mycket på ännu men det verkar vara en bra start om man inte använt STM32 tidigare.
Shimonu
Inlägg: 294
Blev medlem: 21 oktober 2015, 22:44:33

Re: MCU för quadcopter

Inlägg av Shimonu »

Glattnos, det är fullt möjligt att jag bara inte lyckats få till den fjärde PWMen och bara tänker fel. Jag vill ju kunna styra 4 st PWM som är oberoende av varandra. Jag fick för mig att kanaler som delade timer skulle få samma signal men det kanske snarare är så att deras puls bara börjat samtidigt men kan ha olika bredd?
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: MCU för quadcopter

Inlägg av Andax »

Precis, ta STM32L432 som exempel. TIM1 och TIM2 har båda 4 compare channels. Dvs skapar du PWM med TIM1 så kan du ha 4 oberoende pulsbredder ut, men timingen startar samtidigt då de är baserade på samma räknare.
Shimonu
Inlägg: 294
Blev medlem: 21 oktober 2015, 22:44:33

Re: MCU för quadcopter

Inlägg av Shimonu »

Inser också att jag måste gjort något fel. Försöker jag köra PD6 och PB3 så får ingen output, linorna är bara låga.

PD3 och PD5 ger output.

Ser ni något fel?

Kod: Markera allt

void Pwm_Initialize(Pwm_Type Pwm_Source, U8 Compare_Value)
{
  C8 Error_Message[ MAX_LOGMESSAGE_LENGTH ];

  switch(Pwm_Source)
  {
    case PWM_PD6:
      TCCR0A = _BV(COM0A1) | _BV(WGM02) | _BV(WGM01) |_BV(WGM00);
      TCCR0B = _BV(CS01) | _BV(CS00);
      OCR0A  = Compare_Value;
      Set_Output(MP_GPIO_PD6);
      break;
    case PWM_PB1:
      TCCR1A = _BV(COM1A1) | _BV(WGM12) | _BV(WGM10);
      TCCR1B = _BV(CS11) | _BV(CS10);
      OCR1A  = Compare_Value;
      Set_Output(MP_GPIO_PB1);
      break;
    case PWM_PB3:
      TCCR2A = _BV(COM2A1) | _BV(WGM22) | _BV(WGM21) |_BV(WGM20);;
      TCCR2B = _BV(CS21) | _BV(CS20);
      OCR2A  = Compare_Value;
      Set_Output(MP_GPIO_PB3);
      break;

    case PWM_PD5:
      TCCR0A = _BV(COM0B1) | _BV(WGM02) | _BV(WGM01) |_BV(WGM00);
      TCCR0B = _BV(CS01) | _BV(CS00);
      OCR0B  = Compare_Value;
      Set_Output(MP_GPIO_PD5);
      break;
    case PWM_PB2:
      TCCR1A = _BV(COM1B1) | _BV(WGM10);
      TCCR1B = _BV(CS11) | _BV(CS10);
      OCR1B  = Compare_Value;
      Set_Output(MP_GPIO_PB2);
      break;
    case PWM_PD3:
      TCCR2A = _BV(COM2B1) | _BV(WGM22) | _BV(WGM21) |_BV(WGM20);
      TCCR2B = _BV(CS21) | _BV(CS20);
      OCR2B  = Compare_Value;
      Set_Output(MP_GPIO_PD3);
      break;
    default:
      sprintf(Error_Message, "Pwm_Initialize: Pwm pin does not exist %u", Pwm_Source);
      Logger_Log(Error_Message);

  } // switch
}
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: MCU för quadcopter

Inlägg av Andax »

Vad är det för MCU? Kolla så det inte är en open-drain/open-collector utgång på de pinnar som du bara får låg ut.
Shimonu
Inlägg: 294
Blev medlem: 21 oktober 2015, 22:44:33

Re: MCU för quadcopter

Inlägg av Shimonu »

Atmega328P

Vad jag kan läsa mig till ska ingen vara open drain/collector.

Kan det dumma till sig av att jag initierar samma timer flera gånger? Om jag struntar i att initiera andra utgångarna på samma timer så funkar det.

Dumskalle man är, jag skriver ju över initieringen. Så enkelt var det.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: MCU för quadcopter

Inlägg av LHelge »

Har byggt en multirotorcontroller med en STM32F405RG. använder 8 st capture för att läsa inputs från RC receivern och 8 st compare för att styra 8 ESC, funkar utmärkt. Just F4:an verkar vara väldigt populär även till köpe-controllers.

Trevligt med hårdvarustöd för flyttal om man vill köra lite skojiga filter.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: MCU för quadcopter

Inlägg av Micke_s »

En fri bra Utvecklingsmiljö för stm32 är atollic truestudio
Användarvisningsbild
AndLi
Inlägg: 17051
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: MCU för quadcopter

Inlägg av AndLi »

IAR är också fri upp till en relativt stor kodmängd, 128k om jag inte missminner mig... Det gjorde jag, eller så är den sänkt till 32kByte nu...
Skriv svar