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

ForumindexVerkstadsforumAllmänt[Allmänt] El/elektronik

Bygga egen styrning (ECU) till en pumpdyse-dieselmotor

1612 inlägg • Sida 100 av 108
Diskutera el/elektronik i allmänhet här

Janson1 (trådstartaren)

#1486 » 00:00:24, 15-06-2019
  • Överför markerat ord till lexikonet

Ett steg i rätt riktning! Jag har hittat "felet" varför den inte kompilerade min ECU-interruptfil, den verkar ha hängt sig i själva programmet, efter det att jag återstartade datorn så funkar det igen. Nu vet jag inte om tiden för vidare programmering finns men möjligheten finns i alla fall! Jag gör min första "semesterdag" i dag och ser fram emot en lååång semester tills mitten av augusti... En båt av något slag har korsat min väg och tar upp min tid just nu och förmodligen ett bra tag framåt?

2 personer gillar det här inlägget.
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...



Towil

#1487 » 00:06:36, 15-06-2019
  • Överför markerat ord till lexikonet

Ehh, du har inte startat om datorn på flera veckor?
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Janson1 (trådstartaren)

#1488 » 00:16:01, 15-06-2019
  • Överför markerat ord till lexikonet

Jag minns inte vilket, just nu har jag tre bärbara datorer som kräver diverse omstarter i tid och otid rent allmänt... Jag har faktiskt inte lagt ner någon större tid på felsökning innan i morse. Förmodligen är alla tre omstartade några gånger var men då jag inte provat Arduinos IDE på ett tag så vet jag inte vilket som var grundproblemet... När tid infinner sig så skall jag ta tag i detta!
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)

#1489 » 23:30:03, 19-06-2019
  • Överför markerat ord till lexikonet

I dag kväll så fanns det helt plötsligt lite tid över... Att bara döpa om ingångarna/utgångarna till att passa STM32 modulen "Blue pill" och sen köra in ECU-programmet fungerar bra, behöver bara bitskifta 2 extra steg pga den har 12 bitars analog/digitalomvandlare istället för 10 bitar som Nano:n har. Men när jag kör in den interruptbaserade ECU-filen, då händer nåt obra… Jag misstänker att när den går in i interruptrutinen så lämnas nåt lite vind för våg i resten av loopen? Ja vet inte hur jag skall förklara det men spridarutgångarna kan skena en kort stund och bryter således mönstret, man ser det jätte tydligt på lysdioderna. Det uppkommer inte på låga varv men börjar fela bara lite upp i varv, på fullvarv syns det jättetydligt. Detta förstår jag att ni förmodligen inte kan lösa åt mig utan jag bara skriver det så ni även ser mina misslyckanden...
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...

Towil

#1490 » 08:31:38, 20-06-2019
  • Överför markerat ord till lexikonet

När det sker en interrupt så är det det som finns där som körs inget annat. Där av att man bör göra så lite som möjligt där. Så att huvudloopen inte påverkas så mycket.
STM32 har prioritet på olika interrupt så ett interrupt kan avbryta ett annat interrupt med lägre prioritet.
Sedan hur Arduino konfigurerat interrupt på en STM32 vet jag inte.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Janson1 (trådstartaren)

#1491 » 08:46:33, 20-06-2019
  • Överför markerat ord till lexikonet

På Nano:n (Atmega 328) så fungerar detta, den går över i interrupt vid vevpuls, behandlar detta och går sen tillbaka till huvudloop igen. Det ända som kan hända och händer (jag ser det på scopet men kan ej uppfatta det på traktorn) är att om insprutningen skulle startat eller slutat precis när interruptet är så senareläggs insprutningsriet i upp till 10 uS men den fortsätter precis som vanligt. Denna lilla på och/eller avslagsfördröjning märks inte någon gång. På fullvarv tar en tand (6 grader) ca 200 uS. 5% av 6 grader blir 0,3 grader, detta kan jag leva med som fel/gitter. Men nu när jag byter processor så fungerar den väl inte riktigt på samma sätt invändigt. Jag tycker den borde dels behandla interruptet mycket snabbare och då vara beredd på huvudloopen mer direkt efteråt. Vad skulle man kunna prova med för att ringa in fenomenet och sen kanske få bukt på det … Kan man se om det finns interrupt som jag inte har satt?
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...

Towil

#1492 » 10:09:46, 20-06-2019
  • Överför markerat ord till lexikonet

Är det i miljö där det förut var avsett för 5V där det nu istället är 3,3V på utgångarna. Du körde med mosfet som inte var för logiknivå.
Kan du köra MCU kortet lös så att man kan utesluta hårdvaran runt omkring. Eller funkar det om du kör utan interrupt?
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Towil

#1493 » 10:50:46, 20-06-2019
  • Överför markerat ord till lexikonet

Såg i en fotnot i databladet för att en ingång skall vara 5V tolerant får man inte använda de interna pull up/down motstånden.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Janson1 (trådstartaren)

#1494 » 13:16:40, 20-06-2019
  • Överför markerat ord till lexikonet

Utan interrupt så fungerar det utmärkt...
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...

Towil

#1495 » 14:13:14, 20-06-2019
  • Överför markerat ord till lexikonet

Hur ser insignalen ut på oscilloskopet?
Hög triggas vid ca 1,55V.
Så att du inte har spikar där som gör att interruptet triggas flera gånger.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Towil

#1496 » 23:24:09, 26-06-2019
  • Överför markerat ord till lexikonet

Behövde lite att gör i midsommarhelgen. Så jag anmälde mig till att försöka porta aruinokoden till till STM32.
När jag nu fått lite liv i det hela så är det dags att posta lite här om det.

Fösta var att bygga motorsimulatorn. När det var klar var kodens tur.
I ett första skede är det mesta av koden intakt, bytt arduino I/O kod till STM32HAL kod.
Dock körs vevaxel avläsningen med timer självständigt. När ny lucktid finns att hämta görs ett interrupt till cpu:n
Nästa blir att få igång ADC till gasen.

Bild
Motorsimulator enligt recept från Janson1.
I ett skede trodde jag att jag bränt nucleon med 5V från arduinon. Med det var batteriet som var slut i simulatorn. :ohnej:

Bild
Nucleo 64 STM32F103RB kopplad till simulator och logikanalysator.

3 personer gillar det här inlägget.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Towil

#1497 » 23:52:57, 29-06-2019
  • Överför markerat ord till lexikonet

Spenderat dagen med timers på STM32. Halva dagen gick åt för att jag inte tänkte på att timern loopar när jag skrev testkoden och jag letade efter ett fel som inte fanns.
Så går det när man väljer fel testmetod för att verifiera resultatet.

När väl polletten ramlat ner så gick det framåt igen. :idee3:

Efter läst delar av 171 sidor om timers i databladet, 71 sidor HAL timer API och diverse sidor på internet. Så tror jag att jag har hittat en väg att styra spridare tiden med timers och interrupt. Det är ju först en dödtid innan pulsen av / på till spridaren kommer.

Våga vägra Delay() :mrgreen:

2 personer gillar det här inlägget.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Janson1 (trådstartaren)

#1498 » 07:55:42, 30-06-2019
  • Överför markerat ord till lexikonet

Vad jag förstår så är det verkligen nåt att bita i... Men det går fort framåt! För mig tog det nästan två år innan jag hade ett fungerande alster, men jag började ju på 0 i programmering. Towil: när "din" styrning är klar, kommer jag att fatta någonting av detta då? MAO, du åker på att göra en ordentlig funktionsbeskrivning på hela kalaset... Jag har ju i dag en massa konstanter högst upp i koden som jag labbar med för att få olika insprutningsstart, olika kurvor på insprutning, drivspänningens inverkan på spridartider, div korrektioner mm. mm. Gör du likadant där?
Annars, bra jobbat!! Och vad roligt att du Towil verkligen sätter dig in i koden med alla dess problem och lösningar.
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...

Towil

#1499 » 09:46:29, 30-06-2019
  • Överför markerat ord till lexikonet

Allt det är kvar för jag använder de variabler som du har i dina delay. Alla CASE är kvar än så länge.

gårdagen arbete var att hitta delay ersättning till detta.

Kod: Markera allt
              delayMicroseconds(ondelay);           // Fördröjer starttiden i ondelay uS beroende på varvtalet (mdurationen)
              digitalWrite (sprpins[visare],HIGH);  // Insprutning börjar. spridare x strömsätts [visare 11,10,9 eller 8].
              digitalWrite(sprControl, HIGH);       // Kontrollpinne som blir hög vid varje insprutningstillfälle.
              delayMicroseconds(delta);             // Här läggs insprutningstiden in som sen fördröjer processorn i delta uS
              delayMicroseconds(delta2);            // Här läggs en extra insprutningstid in som bara gäller mellan 203-450 rpm
              digitalWrite (sprpins[visare],LOW);

pause-hög-pause-låg.

Själva C är ju alltid C så där är ingen skillnad. Det som skiljer är när man vill komma åt hårdvaran.

så ett
digitalWrite(pinneHej, HIGH);
digitalWrite(pinneHej, LOW);

blir
HAL_GPIO_WritePin(pinneHej_GPIO_Port, pinneHej_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(pinneHej_GPIO_Port, pinneHej_Pin, GPIO_PIN_RESET);



Alla dina konstantrer ligger nu i en egen fil prams.h

Kod: Markera allt
/*
 * Parms.h
 *
 *  Created on: 23 juni 2019
 *      Author: a
 */

#ifndef PARMS_H_
#define PARMS_H_


   /* justerbara parametrar (Konstanter) som påverkar enligt följande: */

   #define totaltid           7      // totaltid för case 15: x * motorns duration * 2 (10)tand 15-22 = max 14 totalt
   #define minfart          7600    // lägsta startvarv för spridarfunktion (3800 = 131 RPM)x 2 = 7600 uS
   #define startmangd        26      // avgör max startmängd 16  ca 19 grader ontid (16) mellan 131 till 200 RPM (absolut första början)
   #define faktor             1500    // en hur mycket effektökning skall gälla vid gaspådrag.(1100)ändrad till 1400 till 2000
   #define lagmangd         3       // max lågvarvsmängd 2 = 1 vevaxelpuls = 6 grader ontid (under tomgångsvarv)(2) 200 till 450 RPM (mjukstartsmängd)max 5 pga 16383 uS!!!
   #define tid1              4800    // tid 1 är för att hitta pulsluckan vid start/lågvarv < 300 RPM (2500)
   #define tid2             2500    // tid 2 är för att hitta pulsluckan i mellanvarv 1100--> (1500)
   #define tid3              1600    // tid 3 är för att hitta pulsluckan i alla andra förekommande varv 1100--> (900)
   #define tid4              180     // tid 4 är för att hitta pulsluckan på högsta varvtal (90)
   #define senasteinsprdrift    3.9      // Vid tomgång/drift ges en ny "senasteinsprutningstid" som behålls sedan. (högre tal ger senare tändning)
   #define tidigasteinspr     260     // kortaste insprutningsfördröjning vid maxvarv, högre tal ger tidigare tändning(110)(max 255)
   #define korrfaktor          1.2     // korrektionsfaktor för att senare lägga insprutningsbörjan till högre varv
   #define minstaAggrFaktor     2.5    // gasrespons, den minsta förekommande (2.5)
   #define sprtroghet        400     // ett grundvärde för spridarnas påslagsfördröjning i uS (400)
   #define sprdiff1           0       // en ev tidigareläggning av spridare 1 om den avviker i startfördröjning (uS)
   #define sprdiff2           0       // en ev tidigareläggning av spridare 2 om den avviker i startfördröjning (uS)
   #define sprdiff3           0       // en ev tidigareläggning av spridare 3 om den avviker i startfördröjning (uS)
   #define sprdiff4           0       // en ev tidigareläggning av spridare 4 om den avviker i startfördröjning (uS)
   #define omslagstartdrift     2400     // Bestämmer när mjukstarten går ur (omslagspunkt) (900 = brytvarv 450 RPM) skall vara 1200!! nu 2400
   #define omslagmillimicro    5000      // omslag från milli till micro i case 16 (vid startvarv ca 200 RPM, baseras på mduration i us)2500 nu 5000
   #define utanvarde           25      // om delta under vist värde utanvärde, nollas
   #define gaspotmin           20      // gaspotens minsta tillåtna värde
   #define gaspotmax           210     // gaspotens största tillåtna värde
   #define lagstavarv        1180    // tomgångsvarvet 500 uS motsvarar ca 800 Rpm (545)(550)1180
   #define hogstavarv          224     // fullgasvarvet 90 uS motsvarar ca 4000 RPM  (90) (112) 224

#endif /* PARMS_H_ */

1 person gillar det här inlägget.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Towil

#1500 » 22:16:23, 30-06-2019
  • Överför markerat ord till lexikonet

Idag blev det att få till versionshantering av koden med GIT att fungera med TrueStudio. Inget man gjort innan.
Samt att synka upp det till GitHub så att Janson1 kan kolla på koden och svar på frågor från mig om vissa kodsnuttar och tvärt om.

1 person gillar det här inlägget.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige


Återgå till [Allmänt] El/elektronik

Vilka är online

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



Älmeboda Maskinservice

OilQuick

TK Traktordelar

Klaravik

Crazyride

Bra Verktyg

Motrab

Engcon

Scandcut

Astrak

Olsson Parts

Nya och begagnade
truckar på vstruck.se