Maskinistens Twitter-flöde  Stöd Maskinisten via Patreon  Maskinistens nätverk - information på svenska  Maskinistens nätverk - information på finska  Maskinistens nätverk - information på norska  Maskinistens nätverk - information på danska  Maskinistens nätverk - information på isländska
Forumindex

ForumindexForumindexMaskin-databasFotoalbumKalender-informationKöp & SäljDownloadsLexikonKontaktregisterCrimedatbase

Åkerman-register
Visa forum för mobila enheter

ForumindexJord- och skogsbruk, fastigheterEnergi och uppvärmning

Inverter för solel off-grid (Ö-drift)

200 inlägg • Sida 12 av 14
Diskutera värmekällor, bygge av pannrum/panncentraler, framställning av bränsle, tillvaratagande av energi osv här

sm6ywk

#166 » 12:34:44, 25-11-2022
  • Överför markerat ord till lexikonet

Jag lade in koden i excel och summerade alla delayMicroseconds() mellan varje händelse.
Det är inte säkert att det är särskilt korrekt.
Jag vet inte riktigt hur du vill ha det, så jag försökte utgå ifrån vad som var.
Bild

Ett snyggare sätt är att räkna på det. Jag är osäker på om man vill ha mitten av on-tiden i fas eller början.
Om man utgår ifrån mitten så borde det bli något i stil med:

Kod: Markera allt
       // här sätts namnen på utgångar och ingång.
    int fas1p = 8;               // fas 1 plus till ben 8
    int fas1m = 7;               // fas 1 minus till ben 7
    int fas2p = 6;               // fas 2 plus till ben 6
    int fas2m = 5;               // fas 2 minus till ben 5
    int fas3p = 4;               // fas 3 plus till ben 4
    int fas3m = 3;               // fas 3 minus till ben 3

    void setup() {
      // put your setup code here, to run once:
    pinMode(fas1p, OUTPUT);         // här fastställs benen att bli utgångar
     digitalWrite(fas1p, LOW);       // här ställs utgången aktivt låg.
     pinMode(fas2p, OUTPUT);         // osv
     digitalWrite(fas2p, LOW);
     pinMode(fas3p, OUTPUT);
     digitalWrite(fas3p, LOW);
     pinMode(fas1m, OUTPUT);
     digitalWrite(fas1m, LOW);
     pinMode(fas2m, OUTPUT);
     digitalWrite(fas2m, LOW);
     pinMode(fas3m, OUTPUT);
     digitalWrite(fas3m, LOW);       // nu är alla utgångar satta till aktivt låg (offläge)
    }
    unsigned long start;
    unsigned long actTime;

    //Räknar ut alla tider för att slippa lägga CPU-tid på det i loopen
    int ontime=5000;
    int trettigrad=1667; //30 grader vid 50 Hz, hjälper till att räkna tider.
    int fas1pPeakTime=trettigrad*3; //Mitten av tiden som fas 1 ska vara positiv (5000us)
    int fas1mPeakTime=trettigrad*9;//Mitten av tiden från start som fas 1 ska vara negativ (15000us)
    int fas2pPeakTime=trettigrad*7;
    int fas2mPeakTime=trettigrad*1;
    int fas3pPeakTime=trettigrad*11;
    int fas3mPeakTime=trettigrad*5;

    int fas1pStart = fas1pPeakTime-ontime/2;
    int fas1pStop = fas1pPeakTime+ontime/2;
    int fas1mStart = fas1mPeakTime-ontime/2;
    int fas1mStop = fas1mPeakTime+ontime/2;

    int fas2pStart = fas2pPeakTime-ontime/2;
    int fas2pStop = fas2pPeakTime+ontime/2;
    //int fas2mStart = fas2mPeakTime-ontime/2;
    int fas2mStart = 20000+fas2mPeakTime-ontime/2;

    int fas2mStop = fas2mPeakTime+ontime/2;

    int fas3pStart = fas3pPeakTime-ontime/2;
    //int fas3pStop = fas3pPeakTime+ontime/2;
    int fas3pStop = fas3pPeakTime+(ontime/2)-20000;

    int fas3mStart = fas3mPeakTime-ontime/2;
    int fas3mStop = fas3mPeakTime+ontime/2;

    void loop() {
      // put your main code here, to run repeatedly:
    //start=millis();
   
    int i;
    for(i=0;i<5;i++){
    actTime=0;
    start=micros();

    while(actTime <= 20000){ //Kollar att tiden sedan start inte passerat en period (20ms)
      actTime=micros()-start;
      //actTime=millis()-start;

      if(actTime >= fas1pStart && actTime <= fas1pStop)
        digitalWrite(fas1p,HIGH);      // sätter först Tr 1 minussida i offläge                        Lågsida 1 OFF
      else
        digitalWrite(fas1p,LOW);

      if(actTime >= fas1mStart && actTime <= fas1mStop)
        digitalWrite(fas1m, HIGH);
      else
        digitalWrite(fas1m, LOW);
     
//      if(actTime >= fas3pStart && actTime <= fas3pStop)
//        digitalWrite(fas3p, HIGH);
//      else
//        digitalWrite(fas3p, LOW);
//Special när ontid är större än 60 grader, starttid blir negativ
      if(actTime <= fas3pStart && actTime >= fas3pStop)
        digitalWrite(fas3p, LOW);
      else
        digitalWrite(fas3p, HIGH);

      if(actTime >= fas3mStart && actTime <= fas3mStop)
        digitalWrite(fas3m, HIGH);
      else
        digitalWrite(fas3m, LOW);

 //     if(actTime >= fas2mStart && actTime <= fas2mStop)
//        digitalWrite(fas2m, HIGH);
//      else
//        digitalWrite(fas2m, LOW);
      if(actTime <= fas2mStart && actTime >= fas2mStop)
        digitalWrite(fas2m, LOW);
      else
        digitalWrite(fas2m, HIGH);

      if(actTime >= fas2pStart && actTime <= fas2pStop)
        digitalWrite(fas2p, HIGH);
      else
        digitalWrite(fas2p, LOW);
      }
    }
    while(true){}
    }

Det ligger i en for-loop som kör 5 gånger för att det ska fungera i simulatorn.
Den är bara att ta bort, eller ändra i++ till i så borde den snurra i evighet.
Eller ta bara bort while(true){} i slutet.
Det är ganska enkelt om du vill labba med olika on-tider.
Dock blir det speciellt när on-tiden passerar 60 grader (3333 us).
Koden är skriven för att det ska vara längre ontider, jag kommenterade bort koden för kortare.

1 person gillar det här inlägget.
sm6ywk
Fler än 100 inlägg
 
Blev medlem: 12:40:41, 10-03-2013
Ort: Ale kommun, Västra Götaland
Maskintyp: Traktor
Maskin: BM 650



Janson1 (trådstartaren)

#167 » 16:38:08, 25-11-2022
  • Överför markerat ord till lexikonet

Ja, nu ser jag felet i exelfilen... Ontid = 500 gäller bara en gång (detta kan ju du omöjligtvis veta...) som någon slags mjukstart första perioden x3 sen är den mellan 1200 (400 x 3) och 3163 uS. Det som styr det hela är att totaltiden 3163 alltid skall vara det för att få 50 hz vid olika ontider. Allt detta styrs via analogRead som en slags återkoppling för spänningsreglering.
Förövrigt så får jag läsa detta några gånger för att förstå.
Edit: komp = 5 uS är för att kompensera i tid vad analogRead tar där den finns... 5 uS är bara tillyxat, jag tror analogläsning tar betydligt mera tid.
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

sm6ywk

#168 » 20:00:55, 25-11-2022
  • Överför markerat ord till lexikonet

Aha, läste koden slarvigt.
Missade den delen.
Misstänker att en analogRead() tar runt 100us med en 8-bitars AVR.
Jag tror att det går att få ner den tiden som processorn stannar upp.
Kan kolla på det om intressant.
Jag antar att det inte är så viktigt just nu under labbandet?
Hmm, om spänningen regleras får man nog göra if-satser i den sista koden jag skrev som kollar så pulsen inte går utanför perioden (går det att förstå vad jag menar med det)
/K
sm6ywk
Fler än 100 inlägg
 
Blev medlem: 12:40:41, 10-03-2013
Ort: Ale kommun, Västra Götaland
Maskintyp: Traktor
Maskin: BM 650

Janson1 (trådstartaren)

#169 » 21:07:49, 25-11-2022
  • Överför markerat ord till lexikonet

Ang if-satser utanför perioden så har jag nog redan råkat ut för det...
Jag har nog läst någonstans att det tar ca 100 uS för en analogläsning.
Men jag tror jag vet hur jag skall tackla detta problem...
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

Janson1 (trådstartaren)

#170 » 08:10:36, 26-11-2022
  • Överför markerat ord till lexikonet

Jag tror jag kommit på hur man rent programmérmässigt löser det utan div. delayer.- Först så gör man if-satser som talar om per utgång när den överhuvudtaget skall få vara på (ON) enligt ett mönster. Varje utgång har en maxtid på 10 mS (10000 uS) Så när själva logiken är klar så tänker jag mig att alla över (fasXpos) är fortsättningsvis bara ON full tid per styck enligt logikmönstret. Sen dom nedre (fasXneg) dom tänkte jag dels minska ONtiden på rejält så dom är på mindre tid. Sen om det är möjligt/genomförbart tänkte jag få till någon slags PWM-styrning på dom typ runt 1000 Hz. (Ja, det måste vara delbart med 50 Hz) Sen skall återkopplad utspänning reglera PWM-utstyrningen eller om det bara blir en "fattigmansstyrning"?
Sen så undrar jag om inte det är nåt vajsing med "WOKWI" simultorn... Men det återstår att se. Skall koppla upp det på riktigt innan jag känner mig besegrad där!
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

Janson1 (trådstartaren)

#171 » 08:16:55, 26-11-2022
  • Överför markerat ord till lexikonet

Kod: Markera allt
     // här sätts namnen på utgångar och ingång.
int fas1p = 8;               // fas 1 plus till ben 8
int fas1m = 7;               // fas 1 minus till ben 7
int fas2p = 6;               // fas 2 plus till ben 6
int fas2m = 5;               // fas 2 minus till ben 5
int fas3p = 4;               // fas 3 plus till ben 4
int fas3m = 3;               // fas 3 minus till ben 3
int drive = 12;              // driveknapp till ben 12
int ovc = 2;                 // ovc = OVerCurrent, Överström
int oc = 15;                 // oc = overcurrent, överström har skett!
int on = 16;                 // on = ON, aktiv

int ontid = 500;             // ontid per tillfälle (uS) 2155
int offtid = 2833;           // offtid mellan omslagen (uS) 1133
int totaltid = 3163;         // Totaltid är en tredjedel av en halvperiod +- processorns looptid
int vfb = 512;               // vfb Volt FeedBack
int batt = 800;              // nivå för visning av låg batterispänning
int komp = 5;                // en kompensationstid för att matcha tiden för analogread
unsigned long start;
unsigned long actTime;
    // Vid 50 hz skall ontid + offtid bli 3333 uS (om processtiden
    // blir längre kan man korta offtiden eller ontiden något för att erhålla 50,0 hz)




void setup()     //Här initieras alla in och utgångar
{
 pinMode(fas1p, OUTPUT);         // här fastställs benen att bli utgångar
 digitalWrite(fas1p, LOW);       // här ställs utgången aktivt låg.
 pinMode(fas2p, OUTPUT);         // osv
 digitalWrite(fas2p, LOW);
 pinMode(fas3p, OUTPUT);
 digitalWrite(fas3p, LOW);
 pinMode(fas1m, OUTPUT);
 digitalWrite(fas1m, LOW);
 pinMode(fas2m, OUTPUT);
 digitalWrite(fas2m, LOW);
 pinMode(fas3m, OUTPUT);
 digitalWrite(fas3m, LOW);       // nu är alla utgångar satta till aktivt låg (offläge)
 pinMode(drive, INPUT_PULLUP);   // här blir drive en ingång för on/off av drivstegen
/* pinMode(ovc, INPUT);            // overcurrent satt som ingång (2)
 attachInterrupt(digitalPinToInterrupt(ovc),OVC, RISING);      // här blir ovc interruptstyrd 
 pinMode(oc, OUTPUT);            // Här blir oc en utgång
 pinMode(on, OUTPUT);            // Här blir on en utgång
 delay(2000);                    // Väntar på stabilisering av batterispänning.
 */
}

void loop()
{
 
 /*if(digitalRead(drive)==LOW)     // drive är aktivt låg så är alla händelser aktiva
  {                           
   digitalWrite(on, HIGH);       // On blir hög, blå LED lyser
*/
   //start=micros();
     start=millis();            // Tar ett ögonblicksvärde tex 10000
 actTime=0;                     // aktuell tid blir här nollad = 0
  while(actTime <= 20000){      //Kollar att tiden sedan start inte passerat en period (20ms)
  //actTime=micros()-start;
  actTime=millis()-start;       // aktuell tid blir här ett ögonblicksvärde tex 12000 minus startvärdet 10000 (12000-10000= 2000) kan också var 150... 

   // Här börjar logikdelen med sina 6 utgångar---
           // Händelse 1         
    if(actTime >= 2200 && actTime <= 12200) // om aktuelltid är mer än/likamed 2200 OCH aktuelltid mindre än 10009 alltså mellan 2200 0ch 12200 så:
    digitalWrite(fas1p, HIGH);  // sätt fas1posetiv ON i 10000 uS = 10 mS = en halv period vid 50 Hz
  else
    digitalWrite(fas1p, LOW);   // om utanför tiden så sätt fas1 posetiv OFF                         

           // Händelse 2                     
      if(actTime >=5533 && actTime <= 15533) // om aktuelltid är mer än/likamed 2833 OCH aktuelltid mindre än 10009 alltså mellan 2833 0ch 10009 så:
    digitalWrite(fas2m, HIGH);  // sätt fas2 negativ ON
  else
    digitalWrite(fas2m, LOW);   // om utanför tiden så sätt fas2 negativ OFF                         

           // Händelse 3
      if(actTime >= 12200 && actTime <= 22200) // om aktuelltid är mer än/likamed 2833 OCH aktuelltid mindre än 10009 alltså mellan 2833 0ch 10009 så:
    digitalWrite(fas2p, HIGH);  // sätt fas1posetiv ON
  else
    digitalWrite(fas2p, LOW);   // om utanför tiden så sätt fas1 posetiv OFF                         

            // Händelse 4
      if(actTime >=15533  && actTime <=25533) // om aktuelltid är mer än/likamed 2833 OCH aktuelltid mindre än 10009 alltså mellan 2833 0ch 10009 så:
    digitalWrite(fas3m, HIGH);  // sätt fas1posetiv ON
  else
    digitalWrite(fas3m, LOW);   // om utanför tiden så sätt fas1 posetiv OFF                         

            // Händelse 5                                                   
      if(actTime >=22200 && actTime <= 32200) // om aktuelltid är mer än/likamed 2833 OCH aktuelltid mindre än 10009 alltså mellan 2833 0ch 10009 så:
    digitalWrite(fas3p, HIGH);  // sätt fas1posetiv ON
  else
    digitalWrite(fas3p, LOW);   // om utanför tiden så sätt fas1 posetiv OFF                         

            // Händelse 6
      if(actTime >=25533 && actTime <=35533) // om aktuelltid är mer än/likamed 2833 OCH aktuelltid mindre än 10009 alltså mellan 2833 0ch 10009 så:
    digitalWrite(fas1m, HIGH);  // sätt fas1posetiv ON
  else
    digitalWrite(fas1m, LOW);   // om utanför tiden så sätt fas1 posetiv OFF                         

   }
}
 
Det är väl lika bra jag klistrar in koden som inte funkar riktigt som tänkt...
Dom två sista händelserna (5 och 6) verkar inte gå.
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

sm6ywk

#172 » 09:22:35, 26-11-2022
  • Överför markerat ord till lexikonet

Allt ligger i en while(actTime <= 20000)
Den loopen har avslutas mär actTime når 20000 och sedan nollställs actTime.
Min kod är ovefintligt kommenterad, ursäkta, inte lätt att hänga med i någon annans tankar.
Eller som någon uttryckte det, "När jag skrev den här koden förstod gud och jag, nu är det bara gud".
Jag valde 20000 för att 20 ms är en period, sen ska ju allt hända på samma sätt igen.
Jag ska fundera lite över pwm, spontant känns det som det är dax för timer-interrupt.
sm6ywk
Fler än 100 inlägg
 
Blev medlem: 12:40:41, 10-03-2013
Ort: Ale kommun, Västra Götaland
Maskintyp: Traktor
Maskin: BM 650

Janson1 (trådstartaren)

#173 » 11:25:43, 26-11-2022
  • Överför markerat ord till lexikonet

Aha, ja nu fungerar det så långt. Jag har tänkt fel vad gäller både tider och fasföljd så det blir till att ändra lite...
Edit: Att få till tiderna och logiken runt detta var inga problem. Men det kommer tyvärr inte att funka då på slutet finns bara en utgång kvar. Sen börjar förloppet om från början igen och det går ju inte. Man skall tänka sig att det är en rotor som går runt i statorfältet och genererar kontinuerliga perioder. Men jag har en idé där...
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

tracker

#174 » 22:03:58, 26-11-2022
  • Överför markerat ord till lexikonet

Vet ej om detta är till någon hjälp, men ändå...

https://www.homemade-circuits.com/ardui ... with-code/
KIMPKML= Kom Inte Med Problem, Kom Med Lösningar
tracker
Fler än 500 inlägg
 
Blev medlem: 14:41:21, 09-03-2008
Ort: Örebro
Sverige
Maskintyp: Grävmaskin (hjulburen)
Maskin: Hydrema M900
Ford TW15

Janson1 (trådstartaren)

#175 » 23:19:04, 26-11-2022
  • Överför markerat ord till lexikonet

Tracker: Tack för tipset. Jag har väl redan gjort nåt liknande men jag tror min kod är lite bättre...
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

sm6ywk

#176 » 00:20:10, 27-11-2022
  • Överför markerat ord till lexikonet

Jag är inte helt säker på jag förstår vad du menar med bara en utgång kvar?
Om du tittar i den senaste koden jag skrev så är logiken typ:
Om tid är senare än fasXYstart OCH tidigare än fasXYstop så sätt utgång hög, annars sätt utgång låg.
Problemet kommer för fas2nstart som blir negativ och fas3pstop som blir större än 20 000.
Där vände jag på logiken och skrev om tid är senare än fas2nstop OCH tidigare än fas2mstart plus 20000 så sätt utgång låg, annars hög.
Samma för fas3p fast fas3pstop - 20000.
Jag tycker att det skulle fungera bra.
Är det detta du menar?

Jag har en idé för pwm, men jag lyckas inte med en jämn multippel av 50.
Det kommer leda till lite spänningsrippel då det kommer att bli olika antal pulser olika perioder.
Ganska enkelt att fixa ca 3,9 kHz. Varje period borde i så fall bli ca 40 pulser, plusminus en puls -> 2,5% rippel.
Kan det fungera?
Kan ändra frekvensen, men plusminus en puls är svårt att komma ifrån då alla tre faser får dela på en timer.
Vilken arduino använder du?
/K
sm6ywk
Fler än 100 inlägg
 
Blev medlem: 12:40:41, 10-03-2013
Ort: Ale kommun, Västra Götaland
Maskintyp: Traktor
Maskin: BM 650

Janson1 (trådstartaren)

#177 » 11:47:16, 27-11-2022
  • Överför markerat ord till lexikonet

Jo, med en utgång kvar menar jag att när jag kör i millis så går det så sävligt sakta så man kan följa förloppen väldigt väl. Den startar på utgång 1 Högsida, sedan utgång 2 Lågsida, sedan nåt annat osv. Sedan så skall det alltid vara minst 2 utgångar aktiva samtidigt, i vissa fall 3 utgångar aktiva samtidigt och det funkar i mitten på koden, sen när det närmar sig slutet (händelse5,6) så blir det till sist bara en utgång kvar som är aktiv, sen börjar det om igen osv. I verkligheten är ju allt detta aktivt alla tidsenheter enligt logikmönstret.
Jag har ev en idé om detta men kommer nog inte hinna labba riktigt nu... Sen jag använder NANO eller UNO som är i princip samma lika. Jag tänkte mig en PWM som test med 980 hz (eller vad nu har inbyggt) och det blir två problem med detta, det ena är att PWM:n inte går i fas med till och frånslag av logiken, det andra är att det blir inte lika många totalpulser per utgång och tillfälle. Man kan nog leva med det? Om du kan få till 3900 Hz så är det givetvis bättre. Jag tänker mig att dom tre översta transistorerna i bryggan (fasXpos) går bara on-off och dom tre nedre (fasXneg) blir dom som får PWM-styrning.
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

Janson1 (trådstartaren)

#178 » 22:25:33, 28-11-2022
  • Överför markerat ord till lexikonet

LabbTajm! Först: Den här simulatorn från Wokwi är ganska bra faktiskt. Kan rekommendera den till andra som vill testa utan att fysiskt koppla upp det. Jag spinner ni vidare på koden från inlägg #157. Istället för olika längd på pulserna totalttid så kör jag nu fast längd (On 8800 uS och OFF 1200 uS) och istället använder jag Arduinons inbyggda pwm 10 till 255 där 10 representerar 2-3 % ONtid och 255 representerar 100% ONtid, VoltFeedBack VFB styr hur mycket ONtid det skall vara. Tyvärr så är frekvensen bara 490 Hz så det blir väldigt grovhugget men det verkar funka i alla fall. Nu är det ju bara kört i simulatorn så nästa steg blir att testa med den riktiga styrningen och för det så behövs det numera byggas om rent hårdvarumässigt sett. Den här färdiga PWM signalen från Arduino UNO och NANO fungerar bara på vissa utgångsnummer. tex den lämnar pwm 980 Hz på ben 5 och 6 medans den lämnar 490 Hz på ben 3,9,10,11. Det är visst olika timers som avgör detta när processorn Atmega 328 är konfigurerad för Arduino, annars kan den nog betydligt mera? (Men där är jag inte än) Skall väl tilläggas också att det finns andra NANO:s som har samma ytterbensanslutningar men andra processorer tex Rasperry Pi:s processor RP-2040 och någon med Atmega 4809 processor. Jag vill minnas att bägge dom är "bara" 3,3 volts men denna gång har jag tagit höjd för detta så i princip skulle jag kunna använda någon av dom istället för en "standardNANO" I morgon har jag håltimmar, eller rättare sagt håldag så nu skall det labbas lite!
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

Janson1 (trådstartaren)

#179 » 22:30:00, 28-11-2022
  • Överför markerat ord till lexikonet

Ojdå, jag ser att jag missat koden från inlägg #166!!!
Den får testas och utvärderas också!
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

Janson1 (trådstartaren)

#180 » 07:41:30, 29-11-2022
  • Överför markerat ord till lexikonet

Kollade på den "glömda" koden och den fungerar men lite fel i logiken som behöver ändras/justeras. NANO med RP-2040 är 3,3 volts och kan lämna PWM på i princip alla I/O-benen. NANO Every som den heter är 5 volts och har betydligt mer minne än 328:an men totalt sett är den inte bättre för det, den går nog bort oavsett...
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...


Återgå till Energi och uppvärmning

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 2 gäster



Älmeboda Maskinservice

OilQuick

TK Traktordelar

Klaravik

Crazyride

Bra Verktyg

Motrab

Engcon

Scandcut

Astrak

Olsson Parts

Nya och begagnade
truckar på vstruck.se