Vastloop problemen

Hardware geleverd door Arduino
Berichten: 2
Geregistreerd: 08 Jun 2019, 09:16

Vastloop problemen

Berichtdoor Herman@vanderhaak.nl » 08 Jun 2019, 09:21

Dag

Ik heb een groot project met veel arduino onderdelen.
Bestaande uit rfid, relais, lcds e.d.

Nu lopen heel veel van deze onderdelen regelmatig vast. Ik heb geen ideeën meer waarom dat kan zijn.

Ik gebruik overal 12v aanvoer 1.25 A voeding per unit via een 23 AWG kabel van maximaal 10 meter. Lijkt me dat er dan voldoende overblijft.

Er gaat dus alleen spanning over die kabel. Sensoren zijn vlak bij de units. Onderstaand script bijvoorbeeld. Hierbij moet ik toevoegen dat ook de schakelaars via deze 23awg kabel lopen.

Dus 3 kabels met 12V naar 3 arduinos met een rfid reader incl relais.

Retour per rfid een kabel die via het relais loopt. (zelfde kabel als de 12v aanvoer)

Die drie schakelaars hebben een eigen digitale poort die via input_pullup schakelen. Die werken meestal goed.

De vierde is alleen een schakelaar die via een kabel van 7 meter op dezelfde manier via input pullup werkt. Deze laatste werkt prima als ik reset, maar na een minuut of 10 werkt die niet meer. Reset ik, dan.doet hij het weer.
Een getimde periodieke software reset (asm volatile) lost het niet op.

Ben ten einde raad. Heb haast op elke unit problemen.
Zit volgens mij niet in de scripts.

Aansluiting op arduino via dupont pennen of via breakout bord met schroefklemmen. Niks helpt. Ook 12V 4A aanbieden lost het niet op.

Zelfs een eenvoudig lcd scherm met keypad loopt vast. Daarbij loopt de aanvoer spanning via een kabel van nog geen 5 meter.

Ik gebruik diverse clones, o.a. robotdyne maar ook andere 'merken'

Wie weet raad.

Woont er wellicht nog een specialist in Zwolle om eens te kijken samen?


Een vd scripts

int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4= 0;
int relay = 7;
int MP3 = 13;
int A;

void setup(){

pinMode(8, INPUT_PULLUP); // Biljet 1
pinMode(9, INPUT_PULLUP); // biljet 2
pinMode(10, INPUT_PULLUP); // biljet 3
pinMode(11, INPUT_PULLUP); // kluis
pinMode(MP3, OUTPUT); // MP3
pinMode(relay, OUTPUT); // RELAIS 1

Serial.begin(9600);

}

void loop(){
Serial.println("-------------------");
A++;
delay(500);
Serial.println(A);
buttonState1 = digitalRead(8);
buttonState2 = digitalRead(9);
buttonState3 = digitalRead(10);
buttonState4 = digitalRead(11);

if ((buttonState1 == LOW)
&& (buttonState2 == LOW)
&& (buttonState3 == LOW)
)
{ digitalWrite(MP3, HIGH);
if (buttonState4 == LOW) {
digitalWrite(relay, HIGH);
Serial.println("reset over 5 sec");

delay(5000);

softReset();

}

else {

digitalWrite(relay, LOW);
delay(500);
}

}
else{
digitalWrite(relay, LOW);
digitalWrite(MP3, LOW);
}
if ((A>300))
{
Serial.println("reset over 5 sec");

delay(5000);

softReset();
}

}



void softReset (){
asm volatile (" jmp 0");
}


Ook zonder de software reset werkt dit eenvoudige script dus niet.

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Vastloop problemen

Berichtdoor shooter » 08 Jun 2019, 12:44

Het zit wel in je programma.
Zorg dta je serial print spaarzaam ofwel eens per seconde gebruikt. Dus even een functie van maken die elke seconde aangeroepen wordt.
Pull Up werkt goed maar je kunt er ook met een paar weerstanden van 10k het beter definieren.
Iets opvragen gaat heel snel, maar iets steeds herschrijven is beter van niet, ofwel alleen als er iets verandert.
Een software reset maakt een zootje van je geheugen door stapeling etc dus geen goed idee.
Voeding kan het probleem zijn doordat je naar de 5Volt moet kijken , want 12 Volt wordt gebruikt door een spanningsregelaar.
Maak een schema of een foto
paul deelen
shooter@home.nl

Berichten: 25
Geregistreerd: 04 Dec 2019, 12:29

Re: Vastloop problemen

Berichtdoor Pipo » 13 Mei 2020, 22:30

ik zou ook eens wat mils gaan doen want delay maakt het ook niet beter zet de boel stop

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Vastloop problemen

Berichtdoor Gij Kieken » 14 Mei 2020, 09:34

Je probleem verschuilt zich in de Serial prints waarschijnlijk.
Maak gebruik van de F-macro.
https://www.baldengineer.com/arduino-f-macro.html
Haal die soft reset uit je sketch en gebruik millis ipv delay.
Ik zou ook alleen maar printen als er echt iets verandert (lees ingangs status).

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Vastloop problemen

Berichtdoor shooter » 14 Mei 2020, 19:22

een jmp 0 is eigenlijk geen reset maar een start op adres 0. Zoals gij ook al zegt, denk eraan dat je alleen print als het kan, dus met een timer een functie starten die de serial bediet.
A++ gaat heel erg snel dus zal wel snel overlopen, anders oplossen.
relais en motoren altijd apart voeden nooit via de arduino, die is alleen voor sturing bedoeld.
paul deelen
shooter@home.nl

Berichten: 45
Geregistreerd: 08 Jan 2020, 17:23

Re: Vastloop problemen

Berichtdoor RonalT » 28 Dec 2021, 21:01

Ik zit wat oude topics tegen en kwam dit tegen.

Gij Kieken schreef:Maak gebruik van de F-macro.
https://www.baldengineer.com/arduino-f-macro.html


Waar zit het voordeel in?
Ik heb een en ander uit zitten proberen met een sketch waarin 10 (for next loop) maal 10 de opdracht "Serial.println("0abcdefh");" werd uitgevoerd.
De tijd die dit kostte was gemiddeld 567millisec.

Met 10 (for next loop) maal 10 de opdracht "Serial.println(F("0_abcdefg"));" werd uitgevoerd kostte het gemiddeld 680 milliseconden.

Beide opdrachten nog 100 (for next loop) maal 10 laten uit voeren. Dat kostte resp. 5528 en 6578 milliseconden.

Mijn conclusie is dat de F () Macro meer tijd kost.

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Vastloop problemen

Berichtdoor ctunes » 28 Dec 2021, 23:51

Herman@vanderhaak.nl schreef:Ben ten einde raad. Heb haast op elke unit problemen.
Zit volgens mij niet in de scripts.


Volgens mij wel ... maar voor ik het kan "pinpointen":
- Wie heeft jou het idee van "jmp 0" gegeven?
- Had hij/zij daar ook een duidelijke reden voor?

(Je krijgt immers dan iedere keer weer de bootloader, de init()'s, de setup() en loop() voor je keizen.)
Laatst gewijzigd door ctunes op 29 Dec 2021, 00:10, in totaal 2 keer gewijzigd.

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Vastloop problemen

Berichtdoor ctunes » 28 Dec 2021, 23:58

Herman@vanderhaak.nl schreef:
Code: Alles selecteren
if ((buttonState1 == LOW)
&& (buttonState2 == LOW)
&& (buttonState3 == LOW)
)


Je spreidt het uit over meerdere regels, ik heb gemerkt dat de (arduino-ide) compiler daar niet altijd mee omgaat zoals het zou horen.


Heb je dit al eens geprobeerd?

Code: Alles selecteren
if ((buttonState1 == LOW) && (buttonState2 == LOW) && (buttonState3 == LOW)) {
  dostuff();
}



Werkt het nu wel?
Dan svp een bugreport plaatsen.

(Het zal dan wel weer een \n\r versus \n debat worden.)

(Of een DOS/WINDOWS versus *NIX/Linux)

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Vastloop problemen

Berichtdoor ctunes » 29 Dec 2021, 00:09

Het leuke van computers is dat ze precies doen wat jij wilt dat ze doen.

Doen ze niet wat jij wilt? Dan ligt het praktisch* altijd aan jou.

* tenzij je op de grens van het kunnen van de computer gaat zitten, die regionen waarbuiten het werken gegarandeerd is, maar dat doe jij hierboven niet, dus is de fout een menselijke fout.

Daarbuiten is het bereik van musici: zoals spacepiep: https://chris.home.xs4all.nl/spacepiep/Albums/Deepspace/Deepspace%20-%20The%20Movie.mp4

(Zie dat Hij probeert te sturen als de beste, echter de muziek is hem steeds voor, door een programmeerfout.)

Terug naar Arduino hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten