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 48 av 108
Diskutera el/elektronik i allmänhet här

Towil

#706 » 21:21:16, 26-09-2017
  • Överför markerat ord till lexikonet

Kod: Markera allt
const uint8_t interruptPin = 2; // pinne puls från givare. pinne 2 eller 3 på UNO.

void setup()
{
   pinMode(interruptPin, INPUT);
   attachInterrupt(digitalPinToInterrupt(interruptPin), inPuls, RISING);
}

void loop()
{

}

void inPuls() {
   //Kod för att spara tiden.
}


Här är koden för hårvaruinterrupt. När pinne 2 går hög körs funktionen inPuls() sedan återgår MCU till att köra det som finns i loop()
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige



Janson1 (trådstartaren)

#707 » 16:45:40, 29-09-2017
  • Överför markerat ord till lexikonet

Jag har kört fast!!

1 person 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...

Ulf

#708 » 19:33:04, 29-09-2017
  • Överför markerat ord till lexikonet

På vad sätt?
Kommer du med problem, eller är du en del av det?
Användarvisningsbild
Ulf
Fler än 500 inlägg
 
Blev medlem: 16:04:18, 05-03-2004
Ort: Kil
Maskintyp: Traktor
Maskin: Nuffield 460 -61

Towil

#709 » 19:56:53, 29-09-2017
  • Överför markerat ord till lexikonet

Ingen 4WD eller?
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

63an

#710 » 21:13:20, 29-09-2017
  • Överför markerat ord till lexikonet

Testat spikskor? :coffee:
Kör så det ryker.. Har slutat att ryka nu :vissla:
63an
Fler än 500 inlägg
 
Blev medlem: 21:08:25, 01-02-2009
Ort: Nu eljest.. Pite med omnejd.
Sverige
Maskintyp: Baklastare

Janson1 (trådstartaren)

#711 » 21:15:46, 29-09-2017
  • Överför markerat ord till lexikonet

Nej det gäller dom mjuka varorna.
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

#712 » 21:38:07, 29-09-2017
  • Överför markerat ord till lexikonet

Vilka varor är det du vill ha loss?
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Janson1 (trådstartaren)

#713 » 07:05:08, 30-09-2017
  • Överför markerat ord till lexikonet

Jag har försökt på lite olika sett få till Towil:s grundsketch men lyckas inget vidare. Jag kan inte se framför mig vilken ev. nytta det skulle göra. Egentligen så behöver jag en mjukvaruinterrupt, inte bundet till nån pinne. Avstängningstiden finns ju redan, bara det att pulsIn() innehåller en delay som ställer till det. Tydligen kan man inte blanda interrupt och delay så jag skulle behöva bli av med delayen alt. en extra mikrosek bevakning. Fördelen med delay är ju annars att ECU:n gör bara det den skall göra en gång och väntar sedan på nästa puls och gör nästa grej och sedan väntar. Det jag skulle behöva är en räknare som ligger och bevakar offtiden då den kan ligga varsomhelst (från 0 till 7-8000 Micro()). I dagens sketch använder jag pulstiden för att beräkna både är och börvärde av spridartid med hjälp av pulseIn(), likaså tändförställningtiden. Utan pulseIn() blir jag översvämmad av värden som är helt utanför kontroll, från minusvärden till stora fantasivärden och det bet blir oberäkneligt.
Det jag försöker göra nu är att få ut pulsluckan som en ren puls och därifrån styra in dom olika funktionerna igen.
Jag är lite inne på att köra med "tidslinje" i mikrosekunder och sätta olika markörer dels i realtid och dels pricka in uträknade markörer i framtiden som när det blir dags gör det dom skall tex stänga en spridare.
Som ett svar på Towil´s fråga vilka varor jag vill ha loss så är det en funktionell spridaravstängningstid som inte är störd av delay.
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

#714 » 08:04:06, 30-09-2017
  • Överför markerat ord till lexikonet

Interruptet är för att läsa av tänder på svänghjulet inget annat.
Delay blir du av med att kolla tiden mot en referens. https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
Detta är det du kan göra med arduino.
Skulle nu inte det vara snabbt nog så får du köra AVR och då finns det Timer interrrupt man kan programmera.
Finns i kapitel 19-22 i MCU manualen. http://ww1.microchip.com/downloads/en/D ... asheet.pdf
https://youtu.be/IdL0_ZJ7V2s
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

joakim72

#715 » 10:07:32, 30-09-2017
  • Överför markerat ord till lexikonet

Jag har stött på mycket skumma fel med intterrupt, vet inte om det var för att jag körde dubbel interrupt eller var det valet av ingång som va fel, men att tänka om blev det.
joakim72
Fler än 500 inlägg
 
Blev medlem: 14:14:17, 15-03-2011
Suomi Finland (svenska)
Maskintyp: Ej angivet
Maskin: CNC

Janson1 (trådstartaren)

#716 » 22:50:29, 30-09-2017
  • Överför markerat ord till lexikonet

Jag roade mig nu i kväll med att bygga nåt helt annat, en ultraljudsavståndsmätare med både display och ett servo som pekar ut ungefärlig distans, säkert bra att ha till nåt, jag vet inte vad då den bara går ett par meter. Men jag har faktiskt gjort den mesta koden själv.(hämtat en del snuttar och gjort egen där i mellan) Varför i hela friden har jag nu gjort denna värdelösa manick? Jo den innehåller ett pulseIn() kommando som jag nu tänkte ta bort och få manicken att funka ändå. Vet i tusan om jag lyckas lösa detta???

Bild
Ja en bild på eländet också... Arduinon, en display, ett servo och en ultraljudsmodul med lite kablar/kopplingsdäck och vips blir det en avståndsmätare med en noggrannhet motsvarande en avbruten tumstock...

3 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...

Janson1 (trådstartaren)

#717 » 08:05:48, 01-10-2017
  • Överför markerat ord till lexikonet

Här är koden till projektet med pulseIn()
Kod: Markera allt
#define trigPin 13
#define echoPin 12
#include <Servo.h>
#include <LiquidCrystal.h>
LiquidCrystal LCD(10,9,5,4,3,2);
int sektorPin = 6;
int pos;
Servo Pointer;
void setup()
{
  LCD.begin(16,2);
  LCD.setCursor(0,0);
  LCD.print("DISTANCE IN CM");
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(sektorPin, OUTPUT);
  Pointer. attach(sektorPin);
}

void loop()
{
  long duration, distance;
  digitalWrite(trigPin, LOW);       
  delayMicroseconds(2);             
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);           
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >= 200 || distance <= 0)
  {
    Serial.println("Out of range");
    LCD.setCursor(0,1);
    LCD.print( "OUT OF RANGE");
  }
  else
  {
    Serial.print(distance);
    Serial.println(" cm");
    LCD.setCursor(0,1);
 LCD.print(distance);
 LCD.print("            "); 
  }
 pos= map(distance,2,199,15,220);
 Pointer.write(pos);
   
 
  delay(500);
}


Här är koden jag försökt modifiera med hjälp av Micros() istället. Den räknar startmicros men räknar stoppmicros ca 4-8 Micros senare. Alla tider blir 4 till 8 Micros efter start, vad är fel?
Kod: Markera allt
#define trigPin 13
#define echoPin 12
#include <Servo.h>
#include <LiquidCrystal.h>
LiquidCrystal LCD(10,9,5,4,3,2);
int sektorPin = 6;
int pos;
Servo Pointer;
void setup()
{
  LCD.begin(16,2);
  LCD.setCursor(0,0);
  LCD.print("DISTANCE IN CM");
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(sektorPin, OUTPUT);
  Pointer. attach(sektorPin);
}

void loop()
{
   unsigned long duration, distance, startmicros, stoppmicros;
  digitalWrite(trigPin, LOW);       
  delayMicroseconds(2);             
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);           
  digitalWrite(trigPin, LOW);
  if (digitalRead (trigPin == LOW))
  {
  startmicros = micros();
  }

  if (digitalRead (echoPin == HIGH))
  {
    stoppmicros = micros();
  }
 
  distance = (duration/2) / 29.1;
 /* if (distance >= 200 || distance <= 0)
  {
    Serial.println("Out of range");
    LCD.setCursor(0,1);
    LCD.print( "OUT OF RANGE");
 }
 */ //else
  {
    Serial.print(startmicros);
    Serial.print("  ");
    Serial.println(stoppmicros);
    LCD.setCursor(0,1);
 LCD.print(distance);
 LCD.print("            "); 
  }
 pos= map(distance,2,199,15,220);
 Pointer.write(pos);
   
 
  delay(500);
}
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)

#718 » 08:12:02, 01-10-2017
  • Överför markerat ord till lexikonet

Såg nu att jag glömde skriva kommentarer till koden efteråt... ja, ja, fråga!
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

#719 » 08:48:09, 01-10-2017
  • Överför markerat ord till lexikonet

If satsen är fel skriven borde vara if (digitalRead(pinne) == HIGH)

startmicros = micros(); måste du ha precis efter digitalWrite(trigPin, HIGH); annars fattas det 10 micro.
Sedan så är hela loopen fel. Den kör alla kod med delay och serialprint och LCD och ett delay på slutet varje gång. If satsen som kollar av echoPin får bara en chans att kolla om den är hög.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

Towil

#720 » 09:17:56, 01-10-2017
  • Överför markerat ord till lexikonet

För att skall fungera att inte skall låsa processorn i en vänte loop så måste tidsintervallet mellan det man mäter vara stort i förhållande till processorns hastighet d.v.s. hur fort den kan gå igenom hela loop().
Så jag vet inte hur bra ditt exempel är i detta fall för det är väl ganska snabba förlopp innan ekot kommer tillbaka.
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 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