BeneluxSpoor.net forum
		Vraag en antwoord => Digitaal => Topic gestart door: Wouter-N op 02 January 2024, 14:41:20
		
			
			- 
				Ik heb echt veel gelezen de afgelopen dagen, maar ik krijg het niet helder hoeveel bezetmelders ik op een Arduino Mega kwijt kan.
Met het plaatsen van het motorshield houd ik volgens mij een 30-tal pinnen over.
Maar wat als ik nu 70 bezetmelders nodig heb voor mijn baan in aanbouw?
Ik kom dan wel een uitbreiding op de I2C bus tegen waar ik twee MCP23017 bordjes kwijt kan voor nog eens 32 bezetmelders. Kom ik er nog steeds 8 tekort.
Hoe kan ik dit het beste oplossen als ik voor bezetmelding de Okkie 8 wil gaan gebruiken?
			 
			
			- 
				
Ik kom dan wel een uitbreiding op de I2C bus tegen waar ik twee MCP23017 bordjes 
Elektrisch gezien, kan je er 8 op kwijt. Het is een bus systeem je kan ze zo achter elkaar hangen aan een van die I2C aansluitingen. Elke MCP heeft 3 hardware adressen waarmee je adres van 0x20 tot 0x27 kan instellen met een druppel tin. Ik weet niet of die software het ondersteunt. Ik vermoed van wel. Ik zou wel allle MCP boardjes niet te ver van elkaar af plaatsen. Die I2C bus staat niet echt bekend om de lange afstanden. Er bestaan wel chips voor om die lengte iets te buffen. Maar waarschijnlijk red je het zonder
Nico heeft tegenwoordig ook 16 voudige SMD okkies die in zo'n kastje zitten. Dan hoef je niet zo absurd veel te solderen.
https://www.arcomora.com/arloco/#:~:text=print%20%2B%20components)%20here-,OkkieNext,-(new!) (https://www.arcomora.com/arloco/#:~:text=print%20%2B%20components)%20here-,OkkieNext,-(new!))
Mvg,
Bas
			 
			
			- 
				Ik dacht ergens gelezen, of gezien, te hebben dat DCC-EX gelimiteerd is tot het gebruik van maximaal 2 x MCP23017.
Iemand die dat kan bevestigen en zo ja, hoe ik dan eventueel zelf de software aanpassen in deze?
			 
			
			- 
				DCC-EX is standaard geconfigureerd voor 2 x MCP23017, echter in de myHall.ccp kan je meerdere configureren.
In de myHall.example.ccp staat de regel welke je kan aanpassen. Er kunnen er dus 8 op.
Maar kijk ook eens in de documentatie van DCC-EX, je kan een MEGA als io-expander inzetten, heb je 62 IO.
De MEGA koppel je ook via i2c aan de centrale, in de file myHall.example.ccp (mijn tip haal .example weg en pas deze aan) staat hoe je dit configureer.
Succes
			 
			
			- 
				https://dcc-ex.com/reference/hardware/i2c-devices.html#gsc.tab=0 (https://dcc-ex.com/reference/hardware/i2c-devices.html#gsc.tab=0)
https://dcc-ex.com/reference/hardware/gpio-module.html#gsc.tab=0 (https://dcc-ex.com/reference/hardware/gpio-module.html#gsc.tab=0)
Ik lees niks over een limiet van 2.
Bas
			 
			
			- 
				Die extra Arduino op de I2C bus geeft wel de I/O die ik goed kan gebruiken.
Zal dit eens gaan bekijken, thanks!
			 
			
			- 
				Voordat er hier allerlei misinformatie wordt gedeeld, spring ik even puntsgewijs in:
- Op de MEGA zelf wordt aangeraden om de 40 pins uitbreidingsconnector te gebruiken, pin 22 t/m 49. 50-52 zijn ongeschikt omdat deze gereserveerd zijn voor de SPI bus.
 - Er bestaat geen limiet op het aantal te gebruiken expansion boards!!!
 - I²C is prima bruikbaar, ook over grotere lengtes (>200m). Daar zijn wel extra maatregelen en/of oplossingen voor nodig, bv een multiplexer, cat5 kabel gebruiken, I²C Extender/Active terminator.
 - Er zijn  standaard 2 MCP23017 en 2 PCA9685 voorgedefinieerd. Dat is om starters makkelijk op weg te helpen.
 - DCC-EX ondersteunt I²C Multiplexers. Daarmee kunnen 4 of 8 individuele I²C bussen worden gerealiseerd.
 
De meeste problemen met I²C hebben te maken met de op de bordjes aanwezige pull-up weerstanden en capacitieve problemen door verkeerde of lange kabels. Beide zijn oplosbaar.
Voor kleine afstanden helpt het bijvoorbeeld al om SCL en SDA draad  zo ver mogelijk uit elkaar te leggen.
			 
			
			- 
				
Voordat er hier allerlei misinformatie wordt gedeeld, spring ik even puntsgewijs in:
- Er zijn  standaard 2 MCP23017 en 2 PCA9685 voor gedefinieerd. Dat is om starters makkelijk op weg te helpen.
 
Dat dus! Maar hoe en waar kan ik de code aanpassen zodat ik meer dan twee MCP23017 printen kan gebruiken?
			 
			
			- 
				Daar hoef je geen code voor aan te passen.
Je kunt extra GPIO expanders aanmaken in myHal.cpp , maar kan dus ook zonder codeaanpassing in myAutomation.h (EXRAIL) met HAL(MCP23017, vPIN, GPIOs, ADRES)
Zie myHal.cpp_Example.txt in de installatiemap voor meer informatie of lees informatie over het aanmaken en werkend krijgen op 
https://dcc-ex.com/reference/developers/hal-config.html#other-drivers 
EXRAIL: https://dcc-ex.com/ex-rail/EX-RAIL-command-reference.html#hal-device-parameters-create-a-hal-device-in-myautomation-h
Kom je er niet uit, dan kan ik niet eerder dan vanavond verder helpen.
			 
			
			- 
				Zoals ik het lees, scant het ding zelf de I2C bus zodat hij minstens weet wat is aangesloten. 
En verdere configuraties over wat welke pin van welke module moet doen, komt van een computer programma af? Of moet je dat hardcoderen in myAutomation.h? en dan opnieuw software uploaden? 
maar kan dus ook zonder codeaanpassing in myAutomation.h
Daar dingen invoeren is toch een code aanpassen?  ;)
Bas
			 
			
			- 
				
Daar dingen invoeren is toch een code aanpassen?  ;)
Bas
Niet helemaal correct,alle my*.h files zijn configbestanden welke de gebruiker zelf kan invullen met behulp van voorbeelden. Dit is dus geen code aanpassen. 
			 
			
			- 
				Het hangt maar net af van je interpretatie van het woord 'code'.
Als iemand mij verteld dat je header files moet aanpassen dan is dat voor mij 'code', het wordt immers verwerkt door de compiler. (Voor de compiler doet het er niet veel toe of het in een .h of .cpp file staat, het gaat door dezelfde parser)
Als ik het goed begrijp is jouw definitie van 'code' alleen maar datgene dat origineel in de DCC-EX distributie zit? 
			 
			
			- 
				Hij doelt er denk ik op dat er heel veel macro's in zitten. Daarmee hebben ze feitelijk hun eigen taaltje (user defined language) gemaakt. Het is zodoende niet "echt" C++ code wat je daar moet neer kloppen.
Maar ik ben het met wel je eens. Je moet nog steeds letters op je toetsenbord inrammen en op de 'program' knop in de IDE rammen om iets gedaan te krijgen. Ik snap ook niet waarom ze het config bestanden en scripts noemen terwijl het gewoon doodnormale header bestanden zijn  ::) anyways my 2 cents.
Bas
			 
			
			- 
				@jeroen: ja je hebt gelijk qua interpretatie van het woord 'code' in deze. Ben zelf absoluut geen developer maar onder code versta ik het daarwerkelijke programmeren, terwijl de my*.h dat zeker niet zijn.
@bas: ja ik doelde inderdaad op het feit van de macro's. Dus nee, geen echte C++ code, maar blijft het feit dat het geen code aanpassen is zoals je het zelf noemt. 
 Maar ben het roerend met jullie eens dat de extensie .h misschien verwarrend is. 
			 
			
			- 
				Het is nog in ontwikkeling maar de EX-IOExpander is al beschikbaar:
https://dcc-ex.com/ex-ioexpander/overview.html#gsc.tab=0 (https://dcc-ex.com/ex-ioexpander/overview.html#gsc.tab=0)
			 
			
			- 
				Hoe zit dat nou als je servo's moet fine tunen op het oog? Kan je dat alleen maar hardcoderen en dan opnieuw programma flashen of kan je achteraf met een programma oid nieuwe standen opsturen zodat je ten minste kan zoeken naar de goede posities? Lijkt me zo'n gedoe allemaal?
Die PCA9685 dingen zijn opzich wel leuk aan een kant, maar aan de kant zijn ze ook 'dom' in de zin dat die niet zelf kunnen denken. Ik geloof zelf meer in standalone modules die je per module kan inregelen. Om nou elke laatste servo positie hard te coderen...
Mvg,
Bas
			 
			
			- 
				Finetunen van Servo's kan via wifi met (Android) APP EX-Toolbox. 
Het kan ook eventueel met de opdracht <D SERVO vPIN Waarde> (Waarde tussen 105 en 450 zijn meest gangbaar) maar dat werkt minder intuitief.
De waardes die daaruit komen moet je als vaste waardes meegeven in de servodefinities in myAutomation.h OF in myHal.cpp, waarna je de software weer upload.
Vind je dat onhandig, dan kun je een DCC servodecoder met voorinstellingen gebruiken.
			 
			
			- 
				Bedankt allen voor jullie antwoorden, ik kan weer verder