Doel:€250.00
Donaties:€130.00

Per saldo:€-120.00

Steun ons nu!

Laatst bijgewerkt
op 24-04-2024

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Oude metalen trafo's gebruiken....... door Biessendorf
Vandaag om 01:06:45
Mijn eerste H0-modeltreinbaan in aanbouw door Ronald69
Vandaag om 00:56:58
NS 6000 (in schaal 0) door roadster36
Vandaag om 00:45:36
DCCNext, een nieuwe DCC decoder! door bask185
Vandaag om 00:41:29
Bauarbeiten im gange door Wim Vink
Vandaag om 00:03:55
Schrootplaats door ruudns
26 april 2024, 23:38:00
Bahnbetriebswerk "Altendorf" door Ronald Halma
26 april 2024, 23:25:57
US diorama in H0 door Wim Vink
26 april 2024, 22:54:44
Rheinburg, TP V/VI door Chris Westerduin
26 april 2024, 22:10:56
Raadplaatje door Arjen52
26 april 2024, 22:09:50
Station Roodeschool door Torikoos
26 april 2024, 22:07:08
firm ware voor 3 D printer door jerrytrein
26 april 2024, 21:17:24
Bruikbare etsplaten voor NS4000 en NS4700 tenders, en NS slijptrein? door orientexpress
26 april 2024, 21:11:47
Toon hier je nieuwe (model-) spooraanwinst(en)... door Biessendorf
26 april 2024, 21:02:48
RhB H0m, Albulisch door Overlast
26 april 2024, 20:21:53
Bouw NS C 8605, BC 6012 en C 6820 door prutser
26 april 2024, 19:57:45
Motorpost ombouwen ? door hmmglaser
26 april 2024, 19:55:38
Bouw van postrijtuig P 7911-7920 (plan C) van FRIE door Rob Bennis
26 april 2024, 19:54:05
Bouw van tijdperk 1 HSM en SS rijtuigen door orientexpress
26 april 2024, 19:29:26
19 Toen door defender
26 april 2024, 19:22:04
Laag-Baarlo door Mark Lin
26 april 2024, 19:02:20
Les Billards du Vivarais door Hans1963
26 april 2024, 17:51:03
Gewoon wat busfoto's door Joost O
26 april 2024, 17:47:03
Toon hier je (model)TRAM foto's. door Keska
26 april 2024, 17:39:07
Piko lok digitaal rijdt direct weg door Ronaldk
26 april 2024, 17:15:48
Kortsluiting bij wissels door Voske
26 april 2024, 16:57:37
Meedhuizen in H0 door Scratchbuilt
26 april 2024, 16:31:17
diorama, voor lange treinen. door FritsT
26 april 2024, 16:29:17
Amerikaanse "old timer" rijtuigen in spoor 1 door sncf231e
26 april 2024, 15:37:10
EifelBurgenBahn door Reinout van Rees
26 april 2024, 15:29:26
  

Auteur Topic: Arduino, aansturen servo’s voor deuren lokloods werkt niet.  (gelezen 6243 keer)

bask185

  • Offline Offline
  • Berichten: 4070
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #30 Gepost op: 26 mei 2021, 13:07:19 »
Zou die potmeter niet tijdelijk zijn om een beetje de feeling van servo's te krijgen? Het lijkt mij, dat als je de bediening onder de knie heb, dat je dan de deuren met een schakelaartje om wilt kunnen zetten of kan toggelen met een knopje ofzo. Maar daarvoor moeten we op Jerry's antwoord wachten.

Bas
Train-Science.com
Train-Science github
It ain't rocket science ;-)

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #31 Gepost op: 26 mei 2021, 15:09:05 »
Zeker weten deed ik het ook niet...
Je hebt gelijk, blijkbaar 'snapt' de Arduino dat als je een analogRead doet, dat ook altijd op een analoge pin is en analogRead (0) wordt gecompileerd als analogRead (A0)
Citaat
Ik zou ook adviseren om gewoon A0 te gebruiken. Veel duidelijker.
Ja, mee eens.
El Carrilet
"te dom om te poepen"
MH

MOVisser

  • Offline Offline
  • Berichten: 6175
    • Modelbouw in't algemeen. 3D printen etc..
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #32 Gepost op: 26 mei 2021, 15:31:45 »
Start met het maken van een juist schema.
Maak de voedingen naar de servo’s apart van de voeding naar de arduino.
Maak de servo/servo’s pas vast aan de deur/deuren als deze juist is/zijn ingesteld (op de locatie van 0, is de beginstand)
Plaats de potmeters op een vaste plaats evenals de arduino (na uploaden van de sketch.)
Bedenk hoe snel je de servo wil laten draaien, of gewoon met de knop mee bewegend.


Schema van de aansluiting van 1 servo direct op arduino
Geel geeft het signaal naar de servo.  Rood en zwart zijn de voeding.




Schema van de aansluiting van 1 servo direct op arduino
Geel geeft het signaal naar de servo.  Rood en zwart zijn de voeding. 
De sketch leest de waarde van de potmeter blauw en geeft dat door via de gele draad.





Voeding voor 3 servo’s niet doen vanuit de arduino, maar apart.
Aansluiten servo’s  op pin 9, 10 en 11. 
De middelste aansluiting potmeter ( 10.000  Ohm) op A0, A1 en A2.



Werking: Sketch leest af de waarde aan pin A0, A1 en A2.
Draai je de pot. naar links dan is de waarde geheel + (= 5V), geheel naar rechts is – (= 0V).
Daarmee bepaal je de stand van de servo.

PAS OP:  de waarden val1, val2 en val3 zijn 0 in het begin>> servo stelt zich in op de beginstand
(zie ook de eerdere opmerking) dus op stand 0 van de servo zijn of deuren open of deuren dicht.

Schrijf je sketch en upload deze naar de arduino (deze is getest en werkt)

#include <Servo.h>
Servo myservo1;
Servo myservo2;
Servo myservo3;
int potpin1=A0;
int potpin2=A1;
int potpin3=A2;
int val1=0;
int val2=0;
int val3=0;

void setup()
{
myservo1.attach(9);
myservo2.attach(10);
myservo3.attach(11);
}
void loop()
{
val1 = analogRead(potpin1);
val1 = map(val1, 0, 1023, 0, 180);
myservo1.write(val1);
delay(25);
val2 = analogRead(potpin2);
val2 = map(val2, 0, 1023, 0, 180);
myservo2.write(val2);
delay(25);
val3 = analogRead(potpin3);
val3 = map(val3, 0, 1023, 0, 180);
myservo3.write(val3);
delay(25);
}

Ronald Visser

EDIT:
wellicht handig om na het stoppen van het "spel" de potmeters op de 0 stand te zetten.
Om dan de eerst volgende keer weer vanuit de basis stand te starten
« Laatst bewerkt op: 26 mei 2021, 15:47:42 door MOVisser »
Je kunt me vinden op diverse treinenbeurzen. Houten 18 mei sta ik er weer. Ook met N-schaal.

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #33 Gepost op: 26 mei 2021, 15:41:55 »
Voor de volledigheid:
Citaat
Voeding voor 3 servo’s niet doen vanuit de arduino, maar apart.

Denk er dan wel aan om de massa's (min, 0V) van de Arduino voeding en de servo voeding met elkaar te verbinden.



Gr. Frits
Groet Frits

MOVisser

  • Offline Offline
  • Berichten: 6175
    • Modelbouw in't algemeen. 3D printen etc..
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #34 Gepost op: 26 mei 2021, 15:48:55 »
Is volgens mij niet nodig, maar zou kunnen.
Altijd goed. (y)

Ronald Visser
Je kunt me vinden op diverse treinenbeurzen. Houten 18 mei sta ik er weer. Ook met N-schaal.

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #35 Gepost op: 26 mei 2021, 15:50:35 »
PAS OP:  de waarden val1, val2 en val3 zijn 0 in het begin>> servo stelt zich in op de beginstand
Nee, de beginwaarden van val1, val2 en val3 worden meteen overschreven met de analogRead.

Citaat
Schrijf je sketch en upload deze naar de arduino (deze is getest en werkt)
zet code tussen codetags;
#include <Servo.h>
Servo myservo1;
Servo myservo2;
Servo myservo3;
int potpin1=A0;
int potpin2=A1;
int potpin3=A2;
int val1=0;
int val2=0;
int val3=0;

void setup()
{
myservo1.attach(9);
myservo2.attach(10);
myservo3.attach(11);
}
void loop()
{
val1 = analogRead(potpin1);
val1 = map(val1, 0, 1023, 0, 180);
myservo1.write(val1);
delay(25);
val2 = analogRead(potpin2);
val2 = map(val2, 0, 1023, 0, 180);
myservo2.write(val2);
delay(25);
val3 = analogRead(potpin3);
val3 = map(val3, 0, 1023, 0, 180);
myservo3.write(val3);
delay(25);
}
El Carrilet
"te dom om te poepen"
MH

jerrytrein

  • Offline Offline
  • Berichten: 5812
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #36 Gepost op: 26 mei 2021, 16:56:05 »
@Sonett Mo Visser en Frits
Ik heb aangesloten als de 3e van mo
Tijdens het vergelijken met Mo zijn schets zie ik wel een aantal verschillen
val zie ik al het verschil in het aangeven van de pinnen,Ao ipv 0

Heb ik een leken vraag
analoog read snap ik lees de pin
write snap ik ook nog
VAL is dat de waarde of zie ik dat verkeerd
Ik probeer het en beetje te doorgronden

Ik denk weer een beetje aan LOTUS van vroeger
kan je niet vergelijken ,maar daar moest je ook op de haakjes tags en komma's letten
En ik begrijp uit het bovenstaande van jullie ,dat als de pot meters niet op 0 staan bij starten de werking anders wordt
klopt dat

bask185

  • Offline Offline
  • Berichten: 4070
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #37 Gepost op: 26 mei 2021, 17:10:07 »
val is idd de waarde. analogRead() retourneert een waarde en die waarde wordt in val opgeslagen. Deze waarde ligt ergens tussen de 0 en 1023.

Die map functie schaalt dat om naar 0 tot 90 voor het gebruik voor je servo motors.

Er is trouwens nog een interessant feitje. Het is wel degelijk nodig dat er tenminste 1 delay (of andere manier van timing) in de loop staat. Ik weet van de atmel chips het fijne er niet van, maar bij een analoge meting zijn vaak interrupts betrokken. En als je in je loop continu analogRead te snel aanroept zonder iets van een delay, kan je programma vast lopen. Ik denk dat de kerel van de instructable, daarom kleine delays heeft geplaats tussen de metingen. Een analogRead duurt 100 micro seconde.

Bovendien is het ook een beetje puntloos om zoveel metingen en servo updates te doen per seconde. Als je je potmeters 10x per seconde in leest dan zit je ook wel goed.

Mvg,

Bas
Train-Science.com
Train-Science github
It ain't rocket science ;-)

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #38 Gepost op: 26 mei 2021, 17:12:54 »
Ik heb aangesloten als de 3e van mo

Dan gaat je servo nooit draaien. De stuurpuls zweeft immers t.o.v. massa. Je moet altijd de massa's (van de twee voedingen) met elkaar verbinden.

Gr. Frits
Groet Frits

MOVisser

  • Offline Offline
  • Berichten: 6175
    • Modelbouw in't algemeen. 3D printen etc..
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #39 Gepost op: 26 mei 2021, 17:30:25 »
Het advies blijft de de beginstand te eerbiedigen.
Dus op 0 eindigen en op 0 starten.
(y) (y)

Dus de servo van te voren in de 0 stand zetten. Dan vastmaken aan de deur.

Er staat A0 en niet Ao  Let dus goed op...

Ja, lees de waarde VAL.    intval1=0 etc.  de integer val1 wordt gedefinieerd en gelijk op een waarde gezet :  0

Mijn ervaring is wat 72sonett zegt. Maar weet Arduino dat ook??
Echter je kan beter fouten voorkomen dan ze mogelijk introduceren.
Dus zet de potmeter aan het eind op de beginstand.
De technici zijn naar huis en de deuren van de loodsen zijn gesloten.

Citaat
"Die map functie schaalt dat om naar 0 tot 90 voor het gebruik voor je servo motors".
nee 0 tot 1023  wordt omgeschaald naar 0 tot 180 (in dit geval in de sketch).

Ronald Visser
« Laatst bewerkt op: 26 mei 2021, 17:36:51 door MOVisser »
Je kunt me vinden op diverse treinenbeurzen. Houten 18 mei sta ik er weer. Ook met N-schaal.

jerrytrein

  • Offline Offline
  • Berichten: 5812
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #40 Gepost op: 26 mei 2021, 18:11:37 »
 (y) (y) (y) (y)
Het werkt
Nog een klein ding/vraagje
De pot meters (ze werken anders om als gedacht)
Maar deze werken dus tot ongeveer de helft van de draaing van de potmeter
Kan je dit met VAL  = MAP aanpassen

En de voeding van de NANO gaat nu via een usb
Als ik een voeding gebruik ,moet ik dan de VIN gebruiken en de ground (mijn gedachte Volt IN gang
« Laatst bewerkt op: 26 mei 2021, 18:13:55 door jerrytrein »

bask185

  • Offline Offline
  • Berichten: 4070
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #41 Gepost op: 26 mei 2021, 18:17:12 »

nee 0 tot 1023  wordt omgeschaald naar 0 tot 180 (in dit geval in de sketch
wellus* want Jerry heeft als eis gesteld dat de motors maar 90 graden hoeven te draaien. Vandaar de 90  :P

Als je wilt dat ze andersom werken kan je de 0 en de 90 omwisselen in de map functie. Dus
Val = map( val, 0, 1023, 90, 0 ) ;

Ben iig blij dat het werkt   (y)

Bas
Train-Science.com
Train-Science github
It ain't rocket science ;-)

MOVisser

  • Offline Offline
  • Berichten: 6175
    • Modelbouw in't algemeen. 3D printen etc..
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #42 Gepost op: 26 mei 2021, 18:42:03 »
Het werkt.  (y)
Ik sluit af.

Ronald Visser
Je kunt me vinden op diverse treinenbeurzen. Houten 18 mei sta ik er weer. Ook met N-schaal.

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Arduino, aansturen servo’s voor deuren lokloods werkt.
« Reactie #43 Gepost op: 26 mei 2021, 18:47:15 »
(y) (y) (y) (y)
Het werkt
Dat is mooi!
Citaat
Nog een klein ding/vraagje. De potmeters (ze werken andersom als gedacht)
Dan kun je de + en - aansluitingen van de potmeter omwisselen.

Citaat
Maar deze werken dus tot ongeveer de helft van de draaing van de potmeter
Dat zou niet moeten.

Citaat
En de voeding van de NANO gaat nu via een usb. Als ik een voeding gebruik, moet ik dan de VIN gebruiken en de ground (mijn gedachte Volt IN gang

Op Vin sluit je 12 V= aan, de 5 V wordt dan een uitgang.
USB geeft 5 V, kun je aansluiten op de 5 V van de Arduino (dat wordt dan een ingang). De 5 V (als uitgang) van de Arduino moet je niet gebruiken voor de servo's, die trekken te veel stroom met kans op defecte spanningsregelaar in de Arduino of inzakken van de 5V spanning waardoor de Arduino uitvalt of reset.

De variabele 'Val' is niet nodig.
Als je ergens komma's of haakjes e.d. vergeet, krijg je vanzelf een compileerfout.
Citaat
... als de potmeters niet op 0 staan bij starten de werking anders wordt
Nee, de werking blijft precies hetzelfde. Bij inschakelen draaien de servo's/deuren naar de stand die de potmeters aangeven, of dat 0 (nul) is of wat anders maakt niet uit.

Nog een keer de code, met logische nummers;
#include <Servo.h>
Servo myservo1;
Servo myservo2;
Servo myservo3;

const int potpin1 = A1;   // analoge 'IN' pinnen om potmeters in te lezen
const int potpin2 = A2;
const int potpin3 = A3;

const int servopin1 = 11; // digitale 'OUT' pinnen voor servo's
const int servopin2 = 12;
const int servopin3 = 13;

// -------------------
void setup() {
  pinMode(potpin1,INPUT);  // maak potmeterpinnen invoer
  pinMode(potpin2,INPUT);
  pinMode(potpin3,INPUT);
 
  pinMode(servopin1,OUTPUT); // maak servopinnen uitvoer
  pinMode(servopin2,OUTPUT);
  pinMode(servopin3,OUTPUT);
 
  myservo1.attach(servopin1); // koppel servo's aan I/O pinnen
  myservo2.attach(servopin2);
  myservo3.attach(servopin3);
}
// ------------------
void loop() {
 
// in één regel per servo;
//   lees potmeterwaarde 0..1023,
//   verschaal naar hoek 0..90 graden (je kunt van die 90 ook een constante maken),
//   stuur hoek naar servo

  // voor servo 1
  myservo1.write(map(analogRead(potpin1),0,1023,0,90));
  delay (50);              // omdat bask185 het zegt

  // voor servo 2
  myservo2.write(map(analogRead(potpin2),0,1023,0,90));
  delay(50);

  // voor servo 3
  myservo3.write(map(analogRead(potpin3),0,1023,0,90));
  delay(50);
}
« Laatst bewerkt op: 27 mei 2021, 18:14:37 door 72sonett »
El Carrilet
"te dom om te poepen"
MH

jerrytrein

  • Offline Offline
  • Berichten: 5812
Re: Arduino, aansturen servo’s voor deuren lokloods werkt niet.
« Reactie #44 Gepost op: 26 mei 2021, 20:24:30 »
Dus een lader van 9 of 12 volt als voeding kan op de VIN en gnd worden aangesloten