Felsökning

Hejsan,

Jag är helt ny både på forumet och på arduino i största allmänhet. Jag håller på att bygga en enkel testrigg för att testa hur länge olika typer av batterier klarar av att driva en solenoid. Själva riggen består av ett arduino duemilanove-kort med screwshield monterat på, ett simpelt breadboard, ett relä med spänningsskydd, en solenoid och en mikrobrytare. Själva arduinokretsen drivs av USB och solenoiden drivs av batterier. (kika på bilderna för att få en lite bättre uppfattning av hur det hela ser ut)

Programmet ska testa att aktivera solenoiden en gång varannan minut. Den ska vara aktiverad tre sekunder varje gång och mikrobrytaren registrerar att den faktiskt flyttat kärnan och den arm som är ansluten till kärnan. Jag vill sen att programmet ska skriva ut antalet cykler (antal gånger mikrobrytaren ändrat läge).

const int pin7 = 7;
const int pin8 = 8;

int alreadyRead = 0; 
int count = 0; 
boolean coilUse = true; 
unsigned long foo = 0; 

void setup() {
  pinMode(pin7, OUTPUT); 
  pinMode(pin8, INPUT); 
  
  Serial.begin(9600); 
}

void loop() {
  int var = digitalRead(pin8); 
  if (var == HIGH) {
    if (alreadyRead == 0) {
      Serial.print("Antal: ");
      Serial.println(++count);
      alreadyRead = 1;
    }
  }else{
    alreadyRead = 0;
  }
  
  if (millis() - foo >= 120000 && coilUse) {
    foo = millis();
    coilUse = false;
    digitalWrite(pin7, HIGH);
  }else if(millis() - foo >= 3000 && !coilUse) {
    foo = millis();
    coilUse = true;
    digitalWrite(pin7, LOW);
  }
}

Jag har fått de grundläggande funktionerna att fungera. Solenoiden aktiveras och jag får ut antalet gånger på datorn i serial monitor. Tanken är att arduinon ska köra på i ett par dagar tills batteriet är så pass urladdat att solenoiden inte längre drar och jag kan komma och läsa av antalet slutförda cykler.

Så till mitt problem:
Efter ett antal timmar så startar arduinon om, eller i alla fall så startar räknaren på datorn om. För mig verkar det som att det är helt slumpmässigt. Den stannar på olika antal varje gång, någon gång har den gått upp emot 500 gånger och någon gång har den stannat under tio gånger.

Den slutar inte att räkna utan börjar om från 0 så lite data har jag kunnat få ut. Det hela är dock inte särskilt praktiskt.

Jag har testat att byta arduinokort, batterierna är testade, alla kablar är utbytta och kontrollerade. Jag har även försökt att driva allt utom solenoiden med en annan strömkälla än datorns USB.

Jag vet att felsökning är svårt och ännu svårare på distans när man inte har sakerna framför sig men jag har verkligen kört fast. Jag har bara väldigt grundläggande kunskaper inom både programmering och elektronik så jag tänkte att någon här kanske kan hjälpa om det är något enkelt fel jag lyckats missa.

Tack på förhand

/Rawh

Här är bilderna:

bild1

bild2

Hej

Låter som om det är auto-reset som spökar, testa att inaktivera det.
Läs mer här: Arduino Playground - DisablingAutoResetOnSerialConnection

/Jon

Har gjort som du föreslog och dragit igång den igen. Eftersom den har varit så oregelbunden tidigare så får vi se vad som händer nu. Kan ju potentiellt dröja ganska länge innan jag känner mig säker på att den inte får hicka igen.

Tack så mycket för hjälpen.

En liten uppdatering av projektet:

Efter att ha avaktiverat auto-reset så har problemet minskats drastiskt. Har dock fortfarande vissa problem med att arduinon på något sätt "tappar räkningen".

Vet inte riktigt vad det beror på, men ska testa att använda mig av en lcd och en annan strömkälla än datorns USB.

Som det ser ut nu så kan jag i alla fall läsa ut tillräckliga testdata, men det irriterar mig att det inte riktigt fungerar som det ska.

Sätt inn nåt der skriver "reset" til serial i din setup(), så vet vi at den har gjort en reset.
Du kan også sätta en extra kondensator mellan 5v og gnd pin... om der är nåt i ström tilgången?
Ja, jag gissar också bara lite.

Tror inte det är ett mjukvarufel.

Har du monterat flyback-diod över reläets spole? Eller är det det du menar med "spänningsskydd"? Speciellt vid frånslag skapas höga spänningstoppar som kan störa mikrodaton på alla tänkbara sätt. En digital ingång klara inte mycket överspänning på en mikrodator. En 5.1v zenerdiod på IO:n kan skydda lite mot sådana toppar också.

Korta dippar i din USB-anslutning kan också vara orsaken.